chap
sppp_auth_send(&chap, sp, CHAP_RESPONSE, h->ident,
sppp_auth_send(&chap, sp, CHAP_FAILURE, h->ident,
chap.tld(sp);
sppp_auth_send(&chap, sp, CHAP_SUCCESS, h->ident,
sppp_cp_change_state(&chap, sp, STATE_OPENED);
chap.tlu(sp);
chap.scr(sp);
sppp_cp_change_state(&chap, sp, STATE_REQ_SENT);
sppp_cp_change_state(&chap, sp, STATE_CLOSED);
chap.tld(sp);
sppp_cp_change_state(&chap, sp, STATE_CLOSED);
chap.scr(sp);
sppp_cp_change_state(&chap, sp, STATE_REQ_SENT);
UNTIMEOUT(chap.TO, (void *)sp, sp->ch[IDX_CHAP]);
sppp_auth_send(&chap, sp, CHAP_CHALLENGE, sp->confid[IDX_CHAP],
static const struct cp chap = {
&chap, /* IDX_CHAP */
static void chap_authenticate(chap *_this, u_char *, int);
static void chap_failure(chap *, const char *, int);
static void chap_response (chap *, int, u_char *, int);
static void chap_create_challenge (chap *);
static void chap_send_error (chap *, const char *);
static void md5chap_authenticate (chap *, int, char *, u_char *, int, u_char *);
static void mschapv2_send_error (chap *, int, int);
static void mschapv2_authenticate (chap *, int, char *, u_char *, int, u_char *);
static void chap_radius_authenticate (chap *, int, char *, u_char *, int, u_char *);
static void chap_log (chap *, uint32_t, const char *, ...) __printflike(3,4);
chap_init(chap *_this, npppd_ppp *ppp)
memset(_this, 0, sizeof(chap));
chap_start(chap *_this)
chap_stop(chap *_this)
chap_input(chap *_this, u_char *pktp, int len)
chap_failure(chap *_this, const char *msg, int mschapv2err)
chap_authenticate(chap *_this, u_char *response, int lresponse)
chap_response(chap *_this, int authok, u_char *pktp, int lpktp)
chap_create_challenge(chap *_this)
chap_proxy_authen_prepare(chap *_this, dialin_proxy_info *dpi)
md5chap_authenticate(chap *_this, int id, char *username, u_char *challenge,
chap_send_error(chap *_this, const char *msg)
mschapv2_send_error(chap *_this, int error, int can_retry)
mschapv2_authenticate(chap *_this, int id, char *username, u_char *challenge,
chap_radius_authenticate(chap *_this, int id, char *username,
chap *_this;
chap_log(chap *_this, uint32_t prio, const char *fmt, ...)
(!psm_opt_is_enabled(lcp, chap) || psm_opt_is_rejected(lcp, chap)) && \
psm_opt_set_enabled(_this, chap, 1);
psm_opt_set_rejected(_this, chap, 1);
chap_proxy_authen_prepare(&_this->fsm.ppp->chap, dpi);
LCP_OPT_ACCEPTED(chap);
else if (psm_opt_is_accepted(_this, chap))
if (psm_opt_is_rejected(_this, chap))
psm_opt_set_requested(_this, chap, 1);
LCP_OPT_ACCEPTED(chap);
psm_opt_set_rejected(_this, chap, 1);
if (psm_opt_is_requested(_this, chap))
chap, 1);
LCP_OPT_REJECTED(chap);
chap_init(&_this->chap, _this);
chap_stop(&_this->chap);
chap_stop(&_this->chap);
chap_start(&_this->chap);
chap_input(&_this->chap, inp, lpkt - (inp - pkt));
uint8_t chap;
chap chap; /** chap */
void chap_init (chap *, npppd_ppp *);
void chap_stop (chap *);
void chap_start (chap *);
void chap_input (chap *, u_char *, int);
int chap_proxy_authen_prepare (chap *, dialin_proxy_info *);
chap_state *cstate = &chap[unit];
chap_state *cstate = &chap[unit];
chap_state *cstate = &chap[unit];
chap_state *cstate = &chap[unit];
chap_state *cstate = &chap[unit];
chap_state *cstate = &chap[unit];
chap_state *cstate = &chap[unit];
chap_state chap[NUM_PPP]; /* CHAP state; one for each unit */
extern chap_state chap[];
return int_option(*argv, &chap[0].timeouttime);
return int_option(*argv, &chap[0].max_transmits);
return int_option(*argv, &chap[0].chal_interval);
struct chap chap;
struct chap chap;
static_assert(offsetof(struct eap_mschap_challenge, chap) == 5, "");
struct chap chap;
static_assert(offsetof(struct eap_mschap_response, chap) == 5, "");
chall->chap.code = CHAP_CHALLENGE;
chall->chap.id = ++req->chap_id;
chall->chap.length = htons(msgsiz -
offsetof(struct eap_mschap_challenge, chap));
RADIUS_PACKET *pkt, struct eap_chap *chap)
eapsiz = ntohs(chap->eap.length);
switch (chap->chap.code) {
resp = (struct eap_mschap_response *)chap;
htons(resp->chap.length) <
offsetof(struct eap_mschap_response, chap)) {
ntohs(resp->chap.length), resp->chap.value[9]);
namelen = ntohs(resp->chap.length) -
offsetof(struct eap_mschap_response, chap));
rr.ident = resp->chap.id;
if (chap->eap.code != EAP_CODE_RESPONSE) {
sizeof(buf)), chap->eap.code);
req->state, sizeof(req->state), buf, sizeof(buf)), chap->chap.code,
struct eap_chap chap;
eapsiz = offsetof(struct eap_chap, chap.value[respsiz - 1]);
eap.chap.eap.code = EAP_CODE_REQUEST;
eap.chap.eap.id = ++req->eap_id;
eap.chap.eap.length = htons(eapsiz);
eap.chap.eap_type = EAP_TYPE_MSCHAPV2;
eap.chap.chap.id = resp[0];
eap.chap.chap.length = htons(
offsetof(struct chap, value[respsiz - 1]));
memcpy(eap.chap.chap.value, resp + 1, respsiz - 1);
eap.chap.chap.code = CHAP_SUCCESS;
eap.chap.chap.code = CHAP_FAILURE;