Lines Matching refs:pcb
83 static void upap_init(ppp_pcb *pcb);
84 static void upap_lowerup(ppp_pcb *pcb);
85 static void upap_lowerdown(ppp_pcb *pcb);
86 static void upap_input(ppp_pcb *pcb, u_char *inpacket, int l);
87 static void upap_protrej(ppp_pcb *pcb);
124 static void upap_rauthreq(ppp_pcb *pcb, u_char *inp, int id, int len);
126 static void upap_rauthack(ppp_pcb *pcb, u_char *inp, int id, int len);
127 static void upap_rauthnak(ppp_pcb *pcb, u_char *inp, int id, int len);
128 static void upap_sauthreq(ppp_pcb *pcb);
130 static void upap_sresp(ppp_pcb *pcb, u_char code, u_char id, const char *msg, int msglen);
137 static void upap_init(ppp_pcb *pcb) { in upap_init() argument
138 pcb->upap.us_user = NULL; in upap_init()
139 pcb->upap.us_userlen = 0; in upap_init()
140 pcb->upap.us_passwd = NULL; in upap_init()
141 pcb->upap.us_passwdlen = 0; in upap_init()
142 pcb->upap.us_clientstate = UPAPCS_INITIAL; in upap_init()
144 pcb->upap.us_serverstate = UPAPSS_INITIAL; in upap_init()
146 pcb->upap.us_id = 0; in upap_init()
155 void upap_authwithpeer(ppp_pcb *pcb, const char *user, const char *password) { in upap_authwithpeer() argument
161 pcb->upap.us_user = user; in upap_authwithpeer()
162 pcb->upap.us_userlen = LWIP_MIN(strlen(user), 0xff); in upap_authwithpeer()
163 pcb->upap.us_passwd = password; in upap_authwithpeer()
164 pcb->upap.us_passwdlen = LWIP_MIN(strlen(password), 0xff); in upap_authwithpeer()
165 pcb->upap.us_transmits = 0; in upap_authwithpeer()
168 if (pcb->upap.us_clientstate == UPAPCS_INITIAL || in upap_authwithpeer()
169 pcb->upap.us_clientstate == UPAPCS_PENDING) { in upap_authwithpeer()
170 pcb->upap.us_clientstate = UPAPCS_PENDING; in upap_authwithpeer()
174 upap_sauthreq(pcb); /* Start protocol */ in upap_authwithpeer()
183 void upap_authpeer(ppp_pcb *pcb) { in upap_authpeer() argument
186 if (pcb->upap.us_serverstate == UPAPSS_INITIAL || in upap_authpeer()
187 pcb->upap.us_serverstate == UPAPSS_PENDING) { in upap_authpeer()
188 pcb->upap.us_serverstate = UPAPSS_PENDING; in upap_authpeer()
192 pcb->upap.us_serverstate = UPAPSS_LISTEN; in upap_authpeer()
193 if (pcb->settings.pap_req_timeout > 0) in upap_authpeer()
194 TIMEOUT(upap_reqtimeout, pcb, pcb->settings.pap_req_timeout); in upap_authpeer()
202 ppp_pcb *pcb = (ppp_pcb*)arg; in upap_timeout() local
204 if (pcb->upap.us_clientstate != UPAPCS_AUTHREQ) in upap_timeout()
207 if (pcb->upap.us_transmits >= pcb->settings.pap_max_transmits) { in upap_timeout()
210 pcb->upap.us_clientstate = UPAPCS_BADAUTH; in upap_timeout()
211 auth_withpeer_fail(pcb, PPP_PAP); in upap_timeout()
215 upap_sauthreq(pcb); /* Send Authenticate-Request */ in upap_timeout()
224 ppp_pcb *pcb = (ppp_pcb*)arg; in upap_reqtimeout() local
226 if (pcb->upap.us_serverstate != UPAPSS_LISTEN) in upap_reqtimeout()
229 auth_peer_fail(pcb, PPP_PAP); in upap_reqtimeout()
230 pcb->upap.us_serverstate = UPAPSS_BADAUTH; in upap_reqtimeout()
240 static void upap_lowerup(ppp_pcb *pcb) { in upap_lowerup() argument
242 if (pcb->upap.us_clientstate == UPAPCS_INITIAL) in upap_lowerup()
243 pcb->upap.us_clientstate = UPAPCS_CLOSED; in upap_lowerup()
244 else if (pcb->upap.us_clientstate == UPAPCS_PENDING) { in upap_lowerup()
245 upap_sauthreq(pcb); /* send an auth-request */ in upap_lowerup()
249 if (pcb->upap.us_serverstate == UPAPSS_INITIAL) in upap_lowerup()
250 pcb->upap.us_serverstate = UPAPSS_CLOSED; in upap_lowerup()
251 else if (pcb->upap.us_serverstate == UPAPSS_PENDING) { in upap_lowerup()
252 pcb->upap.us_serverstate = UPAPSS_LISTEN; in upap_lowerup()
253 if (pcb->settings.pap_req_timeout > 0) in upap_lowerup()
254 TIMEOUT(upap_reqtimeout, pcb, pcb->settings.pap_req_timeout); in upap_lowerup()
265 static void upap_lowerdown(ppp_pcb *pcb) { in upap_lowerdown() argument
267 if (pcb->upap.us_clientstate == UPAPCS_AUTHREQ) /* Timeout pending? */ in upap_lowerdown()
268 UNTIMEOUT(upap_timeout, pcb); /* Cancel timeout */ in upap_lowerdown()
270 if (pcb->upap.us_serverstate == UPAPSS_LISTEN && pcb->settings.pap_req_timeout > 0) in upap_lowerdown()
271 UNTIMEOUT(upap_reqtimeout, pcb); in upap_lowerdown()
274 pcb->upap.us_clientstate = UPAPCS_INITIAL; in upap_lowerdown()
276 pcb->upap.us_serverstate = UPAPSS_INITIAL; in upap_lowerdown()
286 static void upap_protrej(ppp_pcb *pcb) { in upap_protrej() argument
288 if (pcb->upap.us_clientstate == UPAPCS_AUTHREQ) { in upap_protrej()
290 auth_withpeer_fail(pcb, PPP_PAP); in upap_protrej()
293 if (pcb->upap.us_serverstate == UPAPSS_LISTEN) { in upap_protrej()
295 auth_peer_fail(pcb, PPP_PAP); in upap_protrej()
298 upap_lowerdown(pcb); in upap_protrej()
305 static void upap_input(ppp_pcb *pcb, u_char *inpacket, int l) { in upap_input() argument
338 upap_rauthreq(pcb, inp, id, len); in upap_input()
343 upap_rauthack(pcb, inp, id, len); in upap_input()
347 upap_rauthnak(pcb, inp, id, len); in upap_input()
359 static void upap_rauthreq(ppp_pcb *pcb, u_char *inp, int id, int len) { in upap_rauthreq() argument
368 if (pcb->upap.us_serverstate < UPAPSS_LISTEN) in upap_rauthreq()
375 if (pcb->upap.us_serverstate == UPAPSS_OPEN) { in upap_rauthreq()
376 upap_sresp(pcb, UPAP_AUTHACK, id, "", 0); /* return auth-ack */ in upap_rauthreq()
379 if (pcb->upap.us_serverstate == UPAPSS_BADAUTH) { in upap_rauthreq()
380 upap_sresp(pcb, UPAP_AUTHNAK, id, "", 0); /* return auth-nak */ in upap_rauthreq()
411 if (auth_check_passwd(pcb, ruser, ruserlen, rpasswd, rpasswdlen, &msg, &msglen)) { in upap_rauthreq()
435 upap_sresp(pcb, retcode, id, msg, msglen); in upap_rauthreq()
441 pcb->upap.us_serverstate = UPAPSS_OPEN; in upap_rauthreq()
443 auth_peer_success(pcb, PPP_PAP, 0, ruser, ruserlen); in upap_rauthreq()
445 pcb->upap.us_serverstate = UPAPSS_BADAUTH; in upap_rauthreq()
447 auth_peer_fail(pcb, PPP_PAP); in upap_rauthreq()
450 if (pcb->settings.pap_req_timeout > 0) in upap_rauthreq()
451 UNTIMEOUT(upap_reqtimeout, pcb); in upap_rauthreq()
458 static void upap_rauthack(ppp_pcb *pcb, u_char *inp, int id, int len) { in upap_rauthack() argument
463 if (pcb->upap.us_clientstate != UPAPCS_AUTHREQ) /* XXX */ in upap_rauthack()
484 pcb->upap.us_clientstate = UPAPCS_OPEN; in upap_rauthack()
486 auth_withpeer_success(pcb, PPP_PAP, 0); in upap_rauthack()
493 static void upap_rauthnak(ppp_pcb *pcb, u_char *inp, int id, int len) { in upap_rauthnak() argument
498 if (pcb->upap.us_clientstate != UPAPCS_AUTHREQ) /* XXX */ in upap_rauthnak()
519 pcb->upap.us_clientstate = UPAPCS_BADAUTH; in upap_rauthnak()
522 auth_withpeer_fail(pcb, PPP_PAP); in upap_rauthnak()
529 static void upap_sauthreq(ppp_pcb *pcb) { in upap_sauthreq() argument
535 pcb->upap.us_userlen + pcb->upap.us_passwdlen; in upap_sauthreq()
548 PUTCHAR(++pcb->upap.us_id, outp); in upap_sauthreq()
550 PUTCHAR(pcb->upap.us_userlen, outp); in upap_sauthreq()
551 MEMCPY(outp, pcb->upap.us_user, pcb->upap.us_userlen); in upap_sauthreq()
552 INCPTR(pcb->upap.us_userlen, outp); in upap_sauthreq()
553 PUTCHAR(pcb->upap.us_passwdlen, outp); in upap_sauthreq()
554 MEMCPY(outp, pcb->upap.us_passwd, pcb->upap.us_passwdlen); in upap_sauthreq()
556 ppp_write(pcb, p); in upap_sauthreq()
558 TIMEOUT(upap_timeout, pcb, pcb->settings.pap_timeout_time); in upap_sauthreq()
559 ++pcb->upap.us_transmits; in upap_sauthreq()
560 pcb->upap.us_clientstate = UPAPCS_AUTHREQ; in upap_sauthreq()
567 static void upap_sresp(ppp_pcb *pcb, u_char code, u_char id, const char *msg, int msglen) { in upap_sresp() argument
590 ppp_write(pcb, p); in upap_sresp()
642 if (!pcb->settings.hide_password) in upap_printpkt()