Lines Matching refs:pcb
218 void ppp_set_auth(ppp_pcb *pcb, u8_t authtype, const char *user, const char *passwd) { in ppp_set_auth() argument
220 pcb->settings.refuse_pap = !(authtype & PPPAUTHTYPE_PAP); in ppp_set_auth()
223 pcb->settings.refuse_chap = !(authtype & PPPAUTHTYPE_CHAP); in ppp_set_auth()
225 pcb->settings.refuse_mschap = !(authtype & PPPAUTHTYPE_MSCHAP); in ppp_set_auth()
226 pcb->settings.refuse_mschap_v2 = !(authtype & PPPAUTHTYPE_MSCHAP_V2); in ppp_set_auth()
230 pcb->settings.refuse_eap = !(authtype & PPPAUTHTYPE_EAP); in ppp_set_auth()
232 pcb->settings.user = user; in ppp_set_auth()
233 pcb->settings.passwd = passwd; in ppp_set_auth()
239 void ppp_set_mppe(ppp_pcb *pcb, u8_t flags) { in ppp_set_mppe() argument
241 pcb->settings.require_mppe = 0; in ppp_set_mppe()
245 pcb->settings.require_mppe = 1; in ppp_set_mppe()
246 pcb->settings.refuse_mppe_stateful = !(flags & PPP_MPPE_ALLOW_STATEFUL); in ppp_set_mppe()
247 pcb->settings.refuse_mppe_40 = !!(flags & PPP_MPPE_REFUSE_40); in ppp_set_mppe()
248 pcb->settings.refuse_mppe_128 = !!(flags & PPP_MPPE_REFUSE_128); in ppp_set_mppe()
253 void ppp_set_notify_phase_callback(ppp_pcb *pcb, ppp_notify_phase_cb_fn notify_phase_cb) { in ppp_set_notify_phase_callback() argument
254 pcb->notify_phase_cb = notify_phase_cb; in ppp_set_notify_phase_callback()
255 notify_phase_cb(pcb, pcb->phase, pcb->ctx_cb); in ppp_set_notify_phase_callback()
270 err_t ppp_connect(ppp_pcb *pcb, u16_t holdoff) { in ppp_connect() argument
271 if (pcb->phase != PPP_PHASE_DEAD) { in ppp_connect()
275 PPPDEBUG(LOG_DEBUG, ("ppp_connect[%d]: holdoff=%d\n", pcb->netif->num, holdoff)); in ppp_connect()
278 ppp_do_connect(pcb); in ppp_connect()
282 new_phase(pcb, PPP_PHASE_HOLDOFF); in ppp_connect()
283 sys_timeout((u32_t)(holdoff*1000), ppp_do_connect, pcb); in ppp_connect()
296 err_t ppp_listen(ppp_pcb *pcb) { in ppp_listen() argument
297 if (pcb->phase != PPP_PHASE_DEAD) { in ppp_listen()
301 PPPDEBUG(LOG_DEBUG, ("ppp_listen[%d]\n", pcb->netif->num)); in ppp_listen()
303 if (pcb->link_cb->listen) { in ppp_listen()
304 new_phase(pcb, PPP_PHASE_INITIALIZE); in ppp_listen()
305 pcb->link_cb->listen(pcb, pcb->link_ctx_cb); in ppp_listen()
324 ppp_close(ppp_pcb *pcb, u8_t nocarrier) in ppp_close() argument
326 pcb->err_code = PPPERR_USER; in ppp_close()
329 if (pcb->phase == PPP_PHASE_HOLDOFF) { in ppp_close()
330 sys_untimeout(ppp_do_connect, pcb); in ppp_close()
331 new_phase(pcb, PPP_PHASE_DEAD); in ppp_close()
335 if (pcb->phase == PPP_PHASE_DEAD) { in ppp_close()
336 pcb->link_status_cb(pcb, pcb->err_code, pcb->ctx_cb); in ppp_close()
341 if (pcb->phase >= PPP_PHASE_TERMINATE) { in ppp_close()
346 if (pcb->phase < PPP_PHASE_ESTABLISH) { in ppp_close()
347 new_phase(pcb, PPP_PHASE_DISCONNECT); in ppp_close()
348 ppp_link_terminated(pcb); in ppp_close()
359 if (nocarrier && pcb->phase == PPP_PHASE_RUNNING) { in ppp_close()
360 PPPDEBUG(LOG_DEBUG, ("ppp_close[%d]: carrier lost -> lcp_lowerdown\n", pcb->netif->num)); in ppp_close()
361 lcp_lowerdown(pcb); in ppp_close()
363 link_terminated(pcb); in ppp_close()
368 PPPDEBUG(LOG_DEBUG, ("ppp_close[%d]: kill_link -> lcp_close\n", pcb->netif->num)); in ppp_close()
370 lcp_close(pcb, "User request"); in ppp_close()
384 err_t ppp_free(ppp_pcb *pcb) { in ppp_free() argument
386 if (pcb->phase != PPP_PHASE_DEAD) { in ppp_free()
390 PPPDEBUG(LOG_DEBUG, ("ppp_free[%d]\n", pcb->netif->num)); in ppp_free()
392 netif_remove(pcb->netif); in ppp_free()
394 err = pcb->link_cb->free(pcb, pcb->link_ctx_cb); in ppp_free()
396 LWIP_MEMPOOL_FREE(PPP_PCB, pcb); in ppp_free()
403 ppp_ioctl(ppp_pcb *pcb, u8_t cmd, void *arg) in ppp_ioctl() argument
405 if (pcb == NULL) { in ppp_ioctl()
416 || pcb->if4_up in ppp_ioctl()
419 || pcb->if6_up in ppp_ioctl()
428 *(int *)arg = (int)(pcb->err_code); in ppp_ioctl()
445 ppp_pcb *pcb = (ppp_pcb*)arg; in ppp_do_connect() local
447 …ase == PPP_PHASE_DEAD || pcb->phase == PPP_PHASE_HOLDOFF", pcb->phase == PPP_PHASE_DEAD || pcb->ph… in ppp_do_connect()
449 new_phase(pcb, PPP_PHASE_INITIALIZE); in ppp_do_connect()
450 pcb->link_cb->connect(pcb, pcb->link_ctx_cb); in ppp_do_connect()
501 ppp_pcb *pcb = (ppp_pcb*)netif->state; in ppp_netif_output() local
508 || (protocol == PPP_IP && !pcb->if4_up) in ppp_netif_output()
511 || (protocol == PPP_IPV6 && !pcb->if6_up) in ppp_netif_output()
514 PPPDEBUG(LOG_ERR, ("ppp_netif_output[%d]: link not up\n", pcb->netif->num)); in ppp_netif_output()
520 if (pcb->settings.require_mppe && pcb->ccp_transmit_method != CI_MPPE) { in ppp_netif_output()
521 PPPDEBUG(LOG_ERR, ("ppp_netif_output[%d]: MPPE required, not up\n", pcb->netif->num)); in ppp_netif_output()
531 if (protocol == PPP_IP && pcb->vj_enabled) { in ppp_netif_output()
532 switch (vj_compress_tcp(&pcb->vj_comp, &pb)) { in ppp_netif_output()
550 PPPDEBUG(LOG_WARNING, ("ppp_netif_output[%d]: bad IP packet\n", pcb->netif->num)); in ppp_netif_output()
553 MIB2_STATS_NETIF_INC(pcb->netif, ifoutdiscards); in ppp_netif_output()
560 switch (pcb->ccp_transmit_method) { in ppp_netif_output()
565 if ((err = mppe_compress(pcb, &pcb->mppe_comp, &pb, protocol)) != ERR_OK) { in ppp_netif_output()
582 PPPDEBUG(LOG_ERR, ("ppp_netif_output[%d]: bad CCP transmit method\n", pcb->netif->num)); in ppp_netif_output()
587 err = pcb->link_cb->netif_output(pcb, pcb->link_ctx_cb, pb, protocol); in ppp_netif_output()
643 ppp_pcb *pcb; in ppp_new() local
653 pcb = (ppp_pcb*)LWIP_MEMPOOL_ALLOC(PPP_PCB); in ppp_new()
654 if (pcb == NULL) { in ppp_new()
658 memset(pcb, 0, sizeof(ppp_pcb)); in ppp_new()
662 pcb->settings.pap_timeout_time = UPAP_DEFTIMEOUT; in ppp_new()
663 pcb->settings.pap_max_transmits = UPAP_DEFTRANSMITS; in ppp_new()
665 pcb->settings.pap_req_timeout = UPAP_DEFREQTIME; in ppp_new()
670 pcb->settings.chap_timeout_time = CHAP_DEFTIMEOUT; in ppp_new()
671 pcb->settings.chap_max_transmits = CHAP_DEFTRANSMITS; in ppp_new()
673 pcb->settings.chap_rechallenge_time = CHAP_DEFRECHALLENGETIME; in ppp_new()
678 pcb->settings.eap_req_time = EAP_DEFREQTIME; in ppp_new()
679 pcb->settings.eap_allow_req = EAP_DEFALLOWREQ; in ppp_new()
681 pcb->settings.eap_timeout_time = EAP_DEFTIMEOUT; in ppp_new()
682 pcb->settings.eap_max_transmits = EAP_DEFTRANSMITS; in ppp_new()
686 pcb->settings.lcp_loopbackfail = LCP_DEFLOOPBACKFAIL; in ppp_new()
687 pcb->settings.lcp_echo_interval = LCP_ECHOINTERVAL; in ppp_new()
688 pcb->settings.lcp_echo_fails = LCP_MAXECHOFAILS; in ppp_new()
690 pcb->settings.fsm_timeout_time = FSM_DEFTIMEOUT; in ppp_new()
691 pcb->settings.fsm_max_conf_req_transmits = FSM_DEFMAXCONFREQS; in ppp_new()
692 pcb->settings.fsm_max_term_transmits = FSM_DEFMAXTERMREQS; in ppp_new()
693 pcb->settings.fsm_max_nak_loops = FSM_DEFMAXNAKLOOPS; in ppp_new()
695 pcb->netif = pppif; in ppp_new()
697 if (!netif_add(pcb->netif, in ppp_new()
701 (void *)pcb, ppp_netif_init_cb, NULL)) { in ppp_new()
702 LWIP_MEMPOOL_FREE(PPP_PCB, pcb); in ppp_new()
707 pcb->link_cb = callbacks; in ppp_new()
708 pcb->link_ctx_cb = link_ctx_cb; in ppp_new()
709 pcb->link_status_cb = link_status_cb; in ppp_new()
710 pcb->ctx_cb = ctx_cb; in ppp_new()
716 (*protp->init)(pcb); in ppp_new()
719 new_phase(pcb, PPP_PHASE_DEAD); in ppp_new()
720 return pcb; in ppp_new()
724 void ppp_start(ppp_pcb *pcb) { in ppp_start() argument
725 PPPDEBUG(LOG_DEBUG, ("ppp_start[%d]\n", pcb->netif->num)); in ppp_start()
732 pcb->mppe_keys_set = 0; in ppp_start()
733 memset(&pcb->mppe_comp, 0, sizeof(pcb->mppe_comp)); in ppp_start()
734 memset(&pcb->mppe_decomp, 0, sizeof(pcb->mppe_decomp)); in ppp_start()
737 vj_compress_init(&pcb->vj_comp); in ppp_start()
741 new_phase(pcb, PPP_PHASE_ESTABLISH); in ppp_start()
742 lcp_open(pcb); in ppp_start()
743 lcp_lowerup(pcb); in ppp_start()
744 PPPDEBUG(LOG_DEBUG, ("ppp_start[%d]: finished\n", pcb->netif->num)); in ppp_start()
748 void ppp_link_failed(ppp_pcb *pcb) { in ppp_link_failed() argument
749 PPPDEBUG(LOG_DEBUG, ("ppp_link_failed[%d]\n", pcb->netif->num)); in ppp_link_failed()
750 new_phase(pcb, PPP_PHASE_DEAD); in ppp_link_failed()
751 pcb->err_code = PPPERR_OPEN; in ppp_link_failed()
752 pcb->link_status_cb(pcb, pcb->err_code, pcb->ctx_cb); in ppp_link_failed()
756 void ppp_link_end(ppp_pcb *pcb) { in ppp_link_end() argument
757 PPPDEBUG(LOG_DEBUG, ("ppp_link_end[%d]\n", pcb->netif->num)); in ppp_link_end()
758 new_phase(pcb, PPP_PHASE_DEAD); in ppp_link_end()
759 if (pcb->err_code == PPPERR_NONE) { in ppp_link_end()
760 pcb->err_code = PPPERR_CONNECT; in ppp_link_end()
762 pcb->link_status_cb(pcb, pcb->err_code, pcb->ctx_cb); in ppp_link_end()
769 void ppp_input(ppp_pcb *pcb, struct pbuf *pb) { in ppp_input() argument
778 PPPDEBUG(LOG_ERR, ("ppp_input[%d]: packet too short\n", pcb->netif->num)); in ppp_input()
784 ppp_dump_packet(pcb, "rcvd", (unsigned char *)pb->payload, pb->len); in ppp_input()
790 MIB2_STATS_NETIF_INC(pcb->netif, ifinucastpkts); in ppp_input()
791 MIB2_STATS_NETIF_ADD(pcb->netif, ifinoctets, pb->tot_len); in ppp_input()
796 if (protocol != PPP_LCP && pcb->lcp_fsm.state != PPP_FSM_OPENED) { in ppp_input()
805 if (pcb->phase <= PPP_PHASE_AUTHENTICATE in ppp_input()
820 ppp_dbglog("discarding proto 0x%x in phase %d", protocol, pcb->phase); in ppp_input()
832 if (pcb->settings.require_mppe && protocol != PPP_COMP && protocol < 0x8000) { in ppp_input()
833 …PPPDEBUG(LOG_ERR, ("ppp_input[%d]: MPPE required, received unencrypted data!\n", pcb->netif->num)); in ppp_input()
841 switch (pcb->ccp_receive_method) { in ppp_input()
844 if (mppe_decompress(pcb, &pcb->mppe_decomp, &pb) != ERR_OK) { in ppp_input()
850 PPPDEBUG(LOG_ERR, ("ppp_input[%d]: bad CCP receive method\n", pcb->netif->num)); in ppp_input()
875 PPPDEBUG(LOG_INFO, ("ppp_input[%d]: ip in pbuf len=%d\n", pcb->netif->num, pb->tot_len)); in ppp_input()
876 ip4_input(pb, pcb->netif); in ppp_input()
882 PPPDEBUG(LOG_INFO, ("ppp_input[%d]: ip6 in pbuf len=%d\n", pcb->netif->num, pb->tot_len)); in ppp_input()
883 ip6_input(pb, pcb->netif); in ppp_input()
893 PPPDEBUG(LOG_INFO, ("ppp_input[%d]: vj_comp in pbuf len=%d\n", pcb->netif->num, pb->tot_len)); in ppp_input()
894 if (pcb->vj_enabled && vj_uncompress_tcp(&pb, &pcb->vj_comp) >= 0) { in ppp_input()
895 ip4_input(pb, pcb->netif); in ppp_input()
899 PPPDEBUG(LOG_WARNING, ("ppp_input[%d]: Dropping VJ compressed\n", pcb->netif->num)); in ppp_input()
907 PPPDEBUG(LOG_INFO, ("ppp_input[%d]: vj_un in pbuf len=%d\n", pcb->netif->num, pb->tot_len)); in ppp_input()
908 if (pcb->vj_enabled && vj_uncompress_uncomp(pb, &pcb->vj_comp) >= 0) { in ppp_input()
909 ip4_input(pb, pcb->netif); in ppp_input()
913 PPPDEBUG(LOG_WARNING, ("ppp_input[%d]: Dropping VJ uncompressed\n", pcb->netif->num)); in ppp_input()
927 (*protp->input)(pcb, (u8_t*)pb->payload, pb->len); in ppp_input()
945 (*protp->datainput)(pcb, pb->payload, pb->len); in ppp_input()
961 lcp_sprotrej(pcb, (u8_t*)pb->payload, pb->len); in ppp_input()
968 MIB2_STATS_NETIF_INC(pcb->netif, ifindiscards); in ppp_input()
1008 err_t ppp_write(ppp_pcb *pcb, struct pbuf *p) { in ppp_write() argument
1010 ppp_dump_packet(pcb, "sent", (unsigned char *)p->payload+2, p->len-2); in ppp_write()
1012 return pcb->link_cb->write(pcb, pcb->link_ctx_cb, p); in ppp_write()
1015 void ppp_link_terminated(ppp_pcb *pcb) { in ppp_link_terminated() argument
1016 PPPDEBUG(LOG_DEBUG, ("ppp_link_terminated[%d]\n", pcb->netif->num)); in ppp_link_terminated()
1017 pcb->link_cb->disconnect(pcb, pcb->link_ctx_cb); in ppp_link_terminated()
1018 PPPDEBUG(LOG_DEBUG, ("ppp_link_terminated[%d]: finished.\n", pcb->netif->num)); in ppp_link_terminated()
1030 void new_phase(ppp_pcb *pcb, int p) { in new_phase() argument
1031 pcb->phase = p; in new_phase()
1032 PPPDEBUG(LOG_DEBUG, ("ppp phase changed[%d]: phase=%d\n", pcb->netif->num, pcb->phase)); in new_phase()
1034 if (pcb->notify_phase_cb != NULL) { in new_phase()
1035 pcb->notify_phase_cb(pcb, p, pcb->ctx_cb); in new_phase()
1044 int ppp_send_config(ppp_pcb *pcb, int mtu, u32_t accm, int pcomp, int accomp) { in ppp_send_config() argument
1048 if (pcb->link_cb->send_config) { in ppp_send_config()
1049 pcb->link_cb->send_config(pcb, pcb->link_ctx_cb, accm, pcomp, accomp); in ppp_send_config()
1052 PPPDEBUG(LOG_INFO, ("ppp_send_config[%d]\n", pcb->netif->num) ); in ppp_send_config()
1060 int ppp_recv_config(ppp_pcb *pcb, int mru, u32_t accm, int pcomp, int accomp) { in ppp_recv_config() argument
1063 if (pcb->link_cb->recv_config) { in ppp_recv_config()
1064 pcb->link_cb->recv_config(pcb, pcb->link_ctx_cb, accm, pcomp, accomp); in ppp_recv_config()
1067 PPPDEBUG(LOG_INFO, ("ppp_recv_config[%d]\n", pcb->netif->num)); in ppp_recv_config()
1075 int sifaddr(ppp_pcb *pcb, u32_t our_adr, u32_t his_adr, u32_t netmask) { in sifaddr() argument
1081 netif_set_addr(pcb->netif, &ip, &nm, &gw); in sifaddr()
1090 int cifaddr(ppp_pcb *pcb, u32_t our_adr, u32_t his_adr) { in cifaddr() argument
1094 netif_set_addr(pcb->netif, IP4_ADDR_ANY4, IP4_ADDR_BROADCAST, IP4_ADDR_ANY4); in cifaddr()
1104 int sifproxyarp(ppp_pcb *pcb, u32_t his_adr) {
1105 LWIP_UNUSED_ARG(pcb);
1115 int cifproxyarp(ppp_pcb *pcb, u32_t his_adr) {
1116 LWIP_UNUSED_ARG(pcb);
1126 int sdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2) { in sdns() argument
1128 LWIP_UNUSED_ARG(pcb); in sdns()
1141 int cdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2) { in cdns() argument
1144 LWIP_UNUSED_ARG(pcb); in cdns()
1165 int sifvjcomp(ppp_pcb *pcb, int vjcomp, int cidcomp, int maxcid) { in sifvjcomp() argument
1166 pcb->vj_enabled = vjcomp; in sifvjcomp()
1167 pcb->vj_comp.compressSlot = cidcomp; in sifvjcomp()
1168 pcb->vj_comp.maxSlotIndex = maxcid; in sifvjcomp()
1170 pcb->netif->num, vjcomp, cidcomp, maxcid)); in sifvjcomp()
1178 int sifup(ppp_pcb *pcb) { in sifup() argument
1179 pcb->if4_up = 1; in sifup()
1180 pcb->err_code = PPPERR_NONE; in sifup()
1181 netif_set_link_up(pcb->netif); in sifup()
1183 PPPDEBUG(LOG_DEBUG, ("sifup[%d]: err_code=%d\n", pcb->netif->num, pcb->err_code)); in sifup()
1184 pcb->link_status_cb(pcb, pcb->err_code, pcb->ctx_cb); in sifup()
1193 int sifdown(ppp_pcb *pcb) { in sifdown() argument
1195 pcb->if4_up = 0; in sifdown()
1200 && !pcb->if6_up in sifdown()
1204 netif_set_link_down(pcb->netif); in sifdown()
1206 PPPDEBUG(LOG_DEBUG, ("sifdown[%d]: err_code=%d\n", pcb->netif->num, pcb->err_code)); in sifdown()
1258 int sif6addr(ppp_pcb *pcb, eui64_t our_eui64, eui64_t his_eui64) { in sif6addr() argument
1263 netif_ip6_addr_set(pcb->netif, 0, &ip6); in sif6addr()
1264 netif_ip6_addr_set_state(pcb->netif, 0, IP6_ADDR_PREFERRED); in sif6addr()
1273 int cif6addr(ppp_pcb *pcb, eui64_t our_eui64, eui64_t his_eui64) { in cif6addr() argument
1277 netif_ip6_addr_set(pcb->netif, 0, IP6_ADDR_ANY6); in cif6addr()
1278 netif_ip6_addr_set_state(pcb->netif, 0, IP6_ADDR_INVALID); in cif6addr()
1285 int sif6up(ppp_pcb *pcb) { in sif6up() argument
1287 pcb->if6_up = 1; in sif6up()
1288 pcb->err_code = PPPERR_NONE; in sif6up()
1289 netif_set_link_up(pcb->netif); in sif6up()
1291 PPPDEBUG(LOG_DEBUG, ("sif6up[%d]: err_code=%d\n", pcb->netif->num, pcb->err_code)); in sif6up()
1292 pcb->link_status_cb(pcb, pcb->err_code, pcb->ctx_cb); in sif6up()
1301 int sif6down(ppp_pcb *pcb) { in sif6down() argument
1303 pcb->if6_up = 0; in sif6down()
1308 && !pcb->if4_up in sif6down()
1312 netif_set_link_down(pcb->netif); in sif6down()
1314 PPPDEBUG(LOG_DEBUG, ("sif6down[%d]: err_code=%d\n", pcb->netif->num, pcb->err_code)); in sif6down()
1323 int sifnpmode(ppp_pcb *pcb, int proto, enum NPmode mode) { in sifnpmode() argument
1324 LWIP_UNUSED_ARG(pcb); in sifnpmode()
1334 void netif_set_mtu(ppp_pcb *pcb, int mtu) { in netif_set_mtu() argument
1336 pcb->netif->mtu = mtu; in netif_set_mtu()
1337 PPPDEBUG(LOG_INFO, ("netif_set_mtu[%d]: mtu=%d\n", pcb->netif->num, mtu)); in netif_set_mtu()
1343 int netif_get_mtu(ppp_pcb *pcb) { in netif_get_mtu() argument
1345 return pcb->netif->mtu; in netif_get_mtu()
1354 ccp_test(ppp_pcb *pcb, u_char *opt_ptr, int opt_len, int for_transmit)
1356 LWIP_UNUSED_ARG(pcb);
1368 ccp_set(ppp_pcb *pcb, u8_t isopen, u8_t isup, u8_t receive_method, u8_t transmit_method) in ccp_set() argument
1372 pcb->ccp_receive_method = receive_method; in ccp_set()
1373 pcb->ccp_transmit_method = transmit_method; in ccp_set()
1375 pcb->netif->num, isopen, isup, receive_method, transmit_method)); in ccp_set()
1379 ccp_reset_comp(ppp_pcb *pcb) in ccp_reset_comp() argument
1381 switch (pcb->ccp_transmit_method) { in ccp_reset_comp()
1384 mppe_comp_reset(pcb, &pcb->mppe_comp); in ccp_reset_comp()
1393 ccp_reset_decomp(ppp_pcb *pcb) in ccp_reset_decomp() argument
1395 switch (pcb->ccp_receive_method) { in ccp_reset_decomp()
1398 mppe_decomp_reset(pcb, &pcb->mppe_decomp); in ccp_reset_decomp()
1413 ccp_fatal_error(ppp_pcb *pcb)
1415 LWIP_UNUSED_ARG(pcb);
1426 int get_idle_time(ppp_pcb *pcb, struct ppp_idle *ip) { in get_idle_time() argument
1428 LWIP_UNUSED_ARG(pcb); in get_idle_time()