Lines Matching refs:ipcp

163 ipcp_AddInOctets(struct ipcp *ipcp, int n)  in ipcp_AddInOctets()  argument
165 throughput_addin(&ipcp->throughput, n); in ipcp_AddInOctets()
169 ipcp_AddOutOctets(struct ipcp *ipcp, int n) in ipcp_AddOutOctets() argument
171 throughput_addout(&ipcp->throughput, n); in ipcp_AddOutOctets()
175 ipcp_LoadDNS(struct ipcp *ipcp) in ipcp_LoadDNS() argument
179 ipcp->ns.dns[0].s_addr = ipcp->ns.dns[1].s_addr = INADDR_NONE; in ipcp_LoadDNS()
181 if (ipcp->ns.resolv != NULL) { in ipcp_LoadDNS()
182 free(ipcp->ns.resolv); in ipcp_LoadDNS()
183 ipcp->ns.resolv = NULL; in ipcp_LoadDNS()
185 if (ipcp->ns.resolv_nons != NULL) { in ipcp_LoadDNS()
186 free(ipcp->ns.resolv_nons); in ipcp_LoadDNS()
187 ipcp->ns.resolv_nons = NULL; in ipcp_LoadDNS()
189 ipcp->ns.resolver = 0; in ipcp_LoadDNS()
201 if ((ipcp->ns.resolv_nons = (char *)malloc(st.st_size + 1)) == NULL) in ipcp_LoadDNS()
204 else if ((ipcp->ns.resolv = (char *)malloc(st.st_size + 1)) == NULL) { in ipcp_LoadDNS()
207 free(ipcp->ns.resolv_nons); in ipcp_LoadDNS()
208 ipcp->ns.resolv_nons = NULL; in ipcp_LoadDNS()
209 } else if ((got = read(fd, ipcp->ns.resolv, st.st_size)) != st.st_size) { in ipcp_LoadDNS()
217 free(ipcp->ns.resolv_nons); in ipcp_LoadDNS()
218 ipcp->ns.resolv_nons = NULL; in ipcp_LoadDNS()
219 free(ipcp->ns.resolv); in ipcp_LoadDNS()
220 ipcp->ns.resolv = NULL; in ipcp_LoadDNS()
225 ipcp->ns.resolv[st.st_size] = '\0'; in ipcp_LoadDNS()
226 ipcp->ns.resolver = 1; in ipcp_LoadDNS()
228 cp_nons = ipcp->ns.resolv_nons; in ipcp_LoadDNS()
229 cp = ipcp->ns.resolv; in ipcp_LoadDNS()
252 if (n < 2 && inet_aton(cp, ipcp->ns.dns)) in ipcp_LoadDNS()
267 while (cp_nons >= ipcp->ns.resolv_nons && *cp_nons == '\n') in ipcp_LoadDNS()
269 if (n == 2 && ipcp->ns.dns[0].s_addr == INADDR_ANY) { in ipcp_LoadDNS()
270 ipcp->ns.dns[0].s_addr = ipcp->ns.dns[1].s_addr; in ipcp_LoadDNS()
271 ipcp->ns.dns[1].s_addr = INADDR_ANY; in ipcp_LoadDNS()
273 bundle_AdjustDNS(ipcp->fsm.bundle); in ipcp_LoadDNS()
284 ipcp_WriteDNS(struct ipcp *ipcp) in ipcp_WriteDNS() argument
290 if (ipcp->ns.dns[0].s_addr == INADDR_ANY && in ipcp_WriteDNS()
291 ipcp->ns.dns[1].s_addr == INADDR_ANY) { in ipcp_WriteDNS()
297 if (ipcp->ns.dns[0].s_addr == INADDR_ANY) { in ipcp_WriteDNS()
298 ipcp->ns.dns[0].s_addr = ipcp->ns.dns[1].s_addr; in ipcp_WriteDNS()
299 ipcp->ns.dns[1].s_addr = INADDR_ANY; in ipcp_WriteDNS()
305 if (ipcp->ns.resolv_nons) in ipcp_WriteDNS()
306 fputs(ipcp->ns.resolv_nons, fp); in ipcp_WriteDNS()
307 paddr = inet_ntoa(ipcp->ns.dns[0]); in ipcp_WriteDNS()
310 if (ipcp->ns.dns[1].s_addr != INADDR_ANY && in ipcp_WriteDNS()
311 ipcp->ns.dns[1].s_addr != INADDR_NONE && in ipcp_WriteDNS()
312 ipcp->ns.dns[1].s_addr != ipcp->ns.dns[0].s_addr) { in ipcp_WriteDNS()
313 paddr = inet_ntoa(ipcp->ns.dns[1]); in ipcp_WriteDNS()
332 ipcp_RestoreDNS(struct ipcp *ipcp) in ipcp_RestoreDNS() argument
334 if (ipcp->ns.resolver) { in ipcp_RestoreDNS()
339 len = strlen(ipcp->ns.resolv); in ipcp_RestoreDNS()
340 if ((got = write(fd, ipcp->ns.resolv, len)) != len) { in ipcp_RestoreDNS()
361 struct ipcp *ipcp = &arg->bundle->ncp.ipcp; in ipcp_Show() local
363 prompt_Printf(arg->prompt, "%s [%s]\n", ipcp->fsm.name, in ipcp_Show()
364 State2Nam(ipcp->fsm.state)); in ipcp_Show()
365 if (ipcp->fsm.state == ST_OPENED) { in ipcp_Show()
367 inet_ntoa(ipcp->peer_ip), vj2asc(ipcp->peer_compproto)); in ipcp_Show()
369 inet_ntoa(ipcp->my_ip), vj2asc(ipcp->my_compproto)); in ipcp_Show()
371 (unsigned long)ipcp_QueueLen(ipcp)); in ipcp_Show()
376 " REQ%s, %u Term REQ%s\n", ipcp->cfg.fsm.timeout, in ipcp_Show()
377 ipcp->cfg.fsm.maxreq, ipcp->cfg.fsm.maxreq == 1 ? "" : "s", in ipcp_Show()
378 ipcp->cfg.fsm.maxtrm, ipcp->cfg.fsm.maxtrm == 1 ? "" : "s"); in ipcp_Show()
380 ncprange_ntoa(&ipcp->cfg.my_range)); in ipcp_Show()
381 if (ipcp->cfg.HaveTriggerAddress) in ipcp_Show()
383 inet_ntoa(ipcp->cfg.TriggerAddress)); in ipcp_Show()
386 "compression)\n", command_ShowNegval(ipcp->cfg.vj.neg), in ipcp_Show()
387 ipcp->cfg.vj.slots, ipcp->cfg.vj.slotcomp ? "with" : "without"); in ipcp_Show()
389 if (iplist_isvalid(&ipcp->cfg.peer_list)) in ipcp_Show()
391 ipcp->cfg.peer_list.src); in ipcp_Show()
394 ncprange_ntoa(&ipcp->cfg.peer_range)); in ipcp_Show()
397 ipcp->cfg.ns.dns[0].s_addr == INADDR_NONE ? in ipcp_Show()
398 "none" : inet_ntoa(ipcp->cfg.ns.dns[0])); in ipcp_Show()
399 if (ipcp->cfg.ns.dns[1].s_addr != INADDR_NONE) in ipcp_Show()
401 inet_ntoa(ipcp->cfg.ns.dns[1])); in ipcp_Show()
403 command_ShowNegval(ipcp->cfg.ns.dns_neg)); in ipcp_Show()
405 ipcp->ns.dns[0].s_addr == INADDR_NONE ? in ipcp_Show()
406 "none" : inet_ntoa(ipcp->ns.dns[0])); in ipcp_Show()
407 if (ipcp->ns.dns[1].s_addr != INADDR_NONE && in ipcp_Show()
408 ipcp->ns.dns[1].s_addr != ipcp->ns.dns[0].s_addr) in ipcp_Show()
410 inet_ntoa(ipcp->ns.dns[1])); in ipcp_Show()
412 inet_ntoa(ipcp->cfg.ns.nbns[0])); in ipcp_Show()
414 inet_ntoa(ipcp->cfg.ns.nbns[1])); in ipcp_Show()
416 throughput_disp(&ipcp->throughput, arg->prompt); in ipcp_Show()
432 arg->bundle->ncp.ipcp.cfg.vj.slots = slots; in ipcp_vjset()
436 arg->bundle->ncp.ipcp.cfg.vj.slotcomp = 1; in ipcp_vjset()
438 arg->bundle->ncp.ipcp.cfg.vj.slotcomp = 0; in ipcp_vjset()
447 ipcp_Init(struct ipcp *ipcp, struct bundle *bundle, struct link *l, in ipcp_Init() argument
456 fsm_Init(&ipcp->fsm, "IPCP", PROTO_IPCP, 1, IPCP_MAXCODE, LogIPCP, in ipcp_Init()
459 ipcp->cfg.vj.slots = DEF_VJ_STATES; in ipcp_Init()
460 ipcp->cfg.vj.slotcomp = 1; in ipcp_Init()
461 memset(&ipcp->cfg.my_range, '\0', sizeof ipcp->cfg.my_range); in ipcp_Init()
464 ipcp->cfg.netmask.s_addr = INADDR_ANY; in ipcp_Init()
470 ncprange_setip4(&ipcp->cfg.my_range, host, ipcp->cfg.netmask); in ipcp_Init()
471 ncprange_setip4(&ipcp->cfg.peer_range, ipcp->cfg.netmask, ipcp->cfg.netmask); in ipcp_Init()
473 iplist_setsrc(&ipcp->cfg.peer_list, ""); in ipcp_Init()
474 ipcp->cfg.HaveTriggerAddress = 0; in ipcp_Init()
476 ipcp->cfg.ns.dns[0].s_addr = INADDR_NONE; in ipcp_Init()
477 ipcp->cfg.ns.dns[1].s_addr = INADDR_NONE; in ipcp_Init()
478 ipcp->cfg.ns.dns_neg = 0; in ipcp_Init()
479 ipcp->cfg.ns.nbns[0].s_addr = INADDR_ANY; in ipcp_Init()
480 ipcp->cfg.ns.nbns[1].s_addr = INADDR_ANY; in ipcp_Init()
482 ipcp->cfg.fsm.timeout = DEF_FSMRETRY; in ipcp_Init()
483 ipcp->cfg.fsm.maxreq = DEF_FSMTRIES; in ipcp_Init()
484 ipcp->cfg.fsm.maxtrm = DEF_FSMTRIES; in ipcp_Init()
485 ipcp->cfg.vj.neg = NEG_ENABLED|NEG_ACCEPTED; in ipcp_Init()
487 memset(&ipcp->vj, '\0', sizeof ipcp->vj); in ipcp_Init()
489 ipcp->ns.resolv = NULL; in ipcp_Init()
490 ipcp->ns.resolv_nons = NULL; in ipcp_Init()
491 ipcp->ns.writable = 1; in ipcp_Init()
492 ipcp_LoadDNS(ipcp); in ipcp_Init()
494 throughput_init(&ipcp->throughput, SAMPLE_PERIOD); in ipcp_Init()
495 memset(ipcp->Queue, '\0', sizeof ipcp->Queue); in ipcp_Init()
496 ipcp_Setup(ipcp, INADDR_NONE); in ipcp_Init()
500 ipcp_Destroy(struct ipcp *ipcp) in ipcp_Destroy() argument
502 throughput_destroy(&ipcp->throughput); in ipcp_Destroy()
504 if (ipcp->ns.resolv != NULL) { in ipcp_Destroy()
505 free(ipcp->ns.resolv); in ipcp_Destroy()
506 ipcp->ns.resolv = NULL; in ipcp_Destroy()
508 if (ipcp->ns.resolv_nons != NULL) { in ipcp_Destroy()
509 free(ipcp->ns.resolv_nons); in ipcp_Destroy()
510 ipcp->ns.resolv_nons = NULL; in ipcp_Destroy()
515 ipcp_SetLink(struct ipcp *ipcp, struct link *l) in ipcp_SetLink() argument
517 ipcp->fsm.link = l; in ipcp_SetLink()
521 ipcp_Setup(struct ipcp *ipcp, u_int32_t mask) in ipcp_Setup() argument
523 struct iface *iface = ipcp->fsm.bundle->iface; in ipcp_Setup()
529 ipcp->fsm.open_mode = 0; in ipcp_Setup()
530 ipcp->ifmask.s_addr = mask == INADDR_NONE ? ipcp->cfg.netmask.s_addr : mask; in ipcp_Setup()
532 if (iplist_isvalid(&ipcp->cfg.peer_list)) { in ipcp_Setup()
537 if ((pos = iplist_ip2pos(&ipcp->cfg.peer_list, peer)) != -1) { in ipcp_Setup()
538 ncpaddr_setip4(&ipaddr, iplist_setcurpos(&ipcp->cfg.peer_list, pos)); in ipcp_Setup()
544 ncpaddr_setip4(&ipaddr, iplist_setrandpos(&ipcp->cfg.peer_list)); in ipcp_Setup()
546 ncprange_sethost(&ipcp->cfg.peer_range, &ipaddr); in ipcp_Setup()
549 ipcp->heis1172 = 0; in ipcp_Setup()
550 ipcp->peer_req = 0; in ipcp_Setup()
551 ncprange_getip4addr(&ipcp->cfg.peer_range, &ipcp->peer_ip); in ipcp_Setup()
552 ipcp->peer_compproto = 0; in ipcp_Setup()
554 if (ipcp->cfg.HaveTriggerAddress) { in ipcp_Setup()
560 ipcp->my_ip = ipcp->cfg.TriggerAddress; in ipcp_Setup()
562 inet_ntoa(ipcp->cfg.TriggerAddress)); in ipcp_Setup()
572 if (ncprange_contains(&ipcp->cfg.my_range, &ipaddr)) { in ipcp_Setup()
573 ncpaddr_getip4(&ipaddr, &ipcp->my_ip); in ipcp_Setup()
578 ncprange_getip4addr(&ipcp->cfg.my_range, &ipcp->my_ip); in ipcp_Setup()
581 if (IsEnabled(ipcp->cfg.vj.neg) in ipcp_Setup()
583 || (ipcp->fsm.bundle->radius.valid && ipcp->fsm.bundle->radius.vj) in ipcp_Setup()
586 ipcp->my_compproto = (PROTO_VJCOMP << 16) + in ipcp_Setup()
587 ((ipcp->cfg.vj.slots - 1) << 8) + in ipcp_Setup()
588 ipcp->cfg.vj.slotcomp; in ipcp_Setup()
590 ipcp->my_compproto = 0; in ipcp_Setup()
591 sl_compress_init(&ipcp->vj.cslc, ipcp->cfg.vj.slots - 1); in ipcp_Setup()
593 ipcp->peer_reject = 0; in ipcp_Setup()
594 ipcp->my_reject = 0; in ipcp_Setup()
597 if (ipcp->cfg.ns.dns[0].s_addr != INADDR_NONE) in ipcp_Setup()
598 memcpy(ipcp->ns.dns, ipcp->cfg.ns.dns, sizeof ipcp->ns.dns); in ipcp_Setup()
620 ipcp_proxyarp(struct ipcp *ipcp, in ipcp_proxyarp() argument
624 struct bundle *bundle = ipcp->fsm.bundle; in ipcp_proxyarp()
663 ipcp_SetIPaddress(struct ipcp *ipcp, struct in_addr myaddr, in ipcp_SetIPaddress() argument
666 struct bundle *bundle = ipcp->fsm.bundle; in ipcp_SetIPaddress()
683 if (ipcp->ifmask.s_addr != INADDR_ANY && in ipcp_SetIPaddress()
684 (ipcp->ifmask.s_addr & mask.s_addr) == mask.s_addr) in ipcp_SetIPaddress()
685 ncprange_setip4mask(&myrange, ipcp->ifmask); in ipcp_SetIPaddress()
718 for (f = 0; f < bundle->ncp.ipcp.cfg.peer_list.nItems; f++) { in ChooseHisAddr()
719 try = iplist_next(&bundle->ncp.ipcp.cfg.peer_list); in ChooseHisAddr()
722 if (ipcp_SetIPaddress(&bundle->ncp.ipcp, gw, try)) { in ChooseHisAddr()
728 if (f == bundle->ncp.ipcp.cfg.peer_list.nItems) { in ChooseHisAddr()
740 struct ipcp *ipcp = fsm2ipcp(fp); in IpcpInitRestartCounter() local
742 fp->FsmTimer.load = ipcp->cfg.fsm.timeout * SECTICKS; in IpcpInitRestartCounter()
745 fp->restart = ipcp->cfg.fsm.maxreq; in IpcpInitRestartCounter()
748 fp->restart = ipcp->cfg.fsm.maxtrm; in IpcpInitRestartCounter()
761 struct ipcp *ipcp = fsm2ipcp(fp); in IpcpSendConfigReq() local
767 if ((p && !physical_IsSync(p)) || !REJECTED(ipcp, TY_IPADDR)) { in IpcpSendConfigReq()
768 memcpy(o->data, &ipcp->my_ip.s_addr, 4); in IpcpSendConfigReq()
772 if (ipcp->my_compproto && !REJECTED(ipcp, TY_COMPPROTO)) { in IpcpSendConfigReq()
773 if (ipcp->heis1172) { in IpcpSendConfigReq()
781 req.proto = htons(ipcp->my_compproto >> 16); in IpcpSendConfigReq()
782 req.slots = (ipcp->my_compproto >> 8) & 255; in IpcpSendConfigReq()
783 req.compcid = ipcp->my_compproto & 1; in IpcpSendConfigReq()
789 if (IsEnabled(ipcp->cfg.ns.dns_neg)) { in IpcpSendConfigReq()
790 if (!REJECTED(ipcp, TY_PRIMARY_DNS - TY_ADJUST_NS)) { in IpcpSendConfigReq()
791 memcpy(o->data, &ipcp->ns.dns[0].s_addr, 4); in IpcpSendConfigReq()
795 if (!REJECTED(ipcp, TY_SECONDARY_DNS - TY_ADJUST_NS)) { in IpcpSendConfigReq()
796 memcpy(o->data, &ipcp->ns.dns[1].s_addr, 4); in IpcpSendConfigReq()
822 struct ipcp *ipcp = fsm2ipcp(fp); in IpcpLayerStart() local
825 throughput_start(&ipcp->throughput, "IPCP throughput", in IpcpLayerStart()
827 fp->more.reqs = fp->more.naks = fp->more.rejs = ipcp->cfg.fsm.maxreq * 3; in IpcpLayerStart()
828 ipcp->peer_req = 0; in IpcpLayerStart()
835 struct ipcp *ipcp = fsm2ipcp(fp); in IpcpLayerFinish() local
838 throughput_stop(&ipcp->throughput); in IpcpLayerFinish()
839 throughput_log(&ipcp->throughput, LogIPCP, NULL); in IpcpLayerFinish()
846 ipcp_IfaceAddrAdded(struct ipcp *ipcp, const struct iface_addr *addr) in ipcp_IfaceAddrAdded() argument
848 struct bundle *bundle = ipcp->fsm.bundle; in ipcp_IfaceAddrAdded()
851 ipcp_proxyarp(ipcp, arp_SetProxy, addr); in ipcp_IfaceAddrAdded()
858 ipcp_IfaceAddrDeleted(struct ipcp *ipcp, const struct iface_addr *addr) in ipcp_IfaceAddrDeleted() argument
860 struct bundle *bundle = ipcp->fsm.bundle; in ipcp_IfaceAddrDeleted()
863 ipcp_proxyarp(ipcp, arp_ClearProxy, addr); in ipcp_IfaceAddrDeleted()
870 struct ipcp *ipcp = fsm2ipcp(fp); in IpcpLayerDown() local
875 snprintf(addr, sizeof addr, "%s", inet_ntoa(ipcp->my_ip)); in IpcpLayerDown()
881 fp->bundle->links, RAD_STOP, &ipcp->throughput); in IpcpLayerDown()
902 ipcp_Setup(ipcp, INADDR_NONE); in IpcpLayerDown()
908 ipcp_InterfaceUp(struct ipcp *ipcp) in ipcp_InterfaceUp() argument
910 if (!ipcp_SetIPaddress(ipcp, ipcp->my_ip, ipcp->peer_ip)) { in ipcp_InterfaceUp()
915 if (!iface_SetFlags(ipcp->fsm.bundle->iface->name, IFF_UP)) { in ipcp_InterfaceUp()
917 ipcp->fsm.bundle->iface->name); in ipcp_InterfaceUp()
922 if (ipcp->fsm.bundle->NatEnabled) in ipcp_InterfaceUp()
923 LibAliasSetAddress(la, ipcp->my_ip); in ipcp_InterfaceUp()
933 struct ipcp *ipcp = fsm2ipcp(fp); in IpcpLayerUp() local
937 snprintf(tbuff, sizeof tbuff, "%s", inet_ntoa(ipcp->my_ip)); in IpcpLayerUp()
939 tbuff, inet_ntoa(ipcp->peer_ip)); in IpcpLayerUp()
941 if (ipcp->peer_compproto >> 16 == PROTO_VJCOMP) in IpcpLayerUp()
942 sl_compress_init(&ipcp->vj.cslc, (ipcp->peer_compproto >> 8) & 255); in IpcpLayerUp()
944 if (!ipcp_InterfaceUp(ipcp)) in IpcpLayerUp()
948 radius_Account_Set_Ip(&fp->bundle->radacct, &ipcp->peer_ip, &ipcp->ifmask); in IpcpLayerUp()
950 RAD_START, &ipcp->throughput); in IpcpLayerUp()
971 fp->more.reqs = fp->more.naks = fp->more.rejs = ipcp->cfg.fsm.maxreq * 3; in IpcpLayerUp()
978 ipcp_ValidateReq(struct ipcp *ipcp, struct in_addr ip, struct fsm_decode *dec) in ipcp_ValidateReq() argument
980 struct bundle *bundle = ipcp->fsm.bundle; in ipcp_ValidateReq()
985 if (iplist_isvalid(&ipcp->cfg.peer_list)) { in ipcp_ValidateReq()
986 ncprange_getip4addr(&ipcp->cfg.my_range, &myaddr); in ipcp_ValidateReq()
988 iplist_ip2pos(&ipcp->cfg.peer_list, ip) < 0 || in ipcp_ValidateReq()
989 !ipcp_SetIPaddress(ipcp, myaddr, ip)) { in ipcp_ValidateReq()
1000 if (iplist_ip2pos(&ipcp->cfg.peer_list, peer) >= 0) { in ipcp_ValidateReq()
1001 ipcp->peer_ip = peer; in ipcp_ValidateReq()
1008 ipcp->peer_ip = ChooseHisAddr(bundle, myaddr); in ipcp_ValidateReq()
1011 if (ipcp->peer_ip.s_addr == INADDR_ANY) { in ipcp_ValidateReq()
1019 memcpy(dec->nakend, &ipcp->peer_ip.s_addr, 4); in ipcp_ValidateReq()
1025 !ncprange_containsip4(&ipcp->cfg.peer_range, ip)) { in ipcp_ValidateReq()
1033 if (ncprange_contains(&ipcp->cfg.peer_range, &iface->addr[n].peer)) { in ipcp_ValidateReq()
1040 memcpy(dec->nakend, &ipcp->peer_ip.s_addr, 4); in ipcp_ValidateReq()
1046 ipcp->peer_ip = ip; in ipcp_ValidateReq()
1059 struct ipcp *ipcp = fsm2ipcp(fp); in IpcpDecodeConfig() local
1083 ipcp->peer_req = 1; in IpcpDecodeConfig()
1084 ipcp_ValidateReq(ipcp, ipaddr, dec); in IpcpDecodeConfig()
1088 if (ncprange_containsip4(&ipcp->cfg.my_range, ipaddr)) { in IpcpDecodeConfig()
1091 inet_ntoa(ipcp->my_ip)); in IpcpDecodeConfig()
1093 ipcp->my_ip = ipaddr; in IpcpDecodeConfig()
1094 ncpaddr_setip4(&ncpaddr, ipcp->my_ip); in IpcpDecodeConfig()
1099 fsm_Close(&ipcp->fsm); in IpcpDecodeConfig()
1104 ipcp->peer_reject |= (1 << opt->hdr.id); in IpcpDecodeConfig()
1117 if (!IsAccepted(ipcp->cfg.vj.neg)) in IpcpDecodeConfig()
1125 ipcp->heis1172 = 1; in IpcpDecodeConfig()
1126 ipcp->peer_compproto = compproto; in IpcpDecodeConfig()
1141 ipcp->peer_compproto = compproto; in IpcpDecodeConfig()
1142 ipcp->heis1172 = 0; in IpcpDecodeConfig()
1146 ipcp->heis1172 = 0; in IpcpDecodeConfig()
1181 tbuff, ipcp->my_compproto, compproto); in IpcpDecodeConfig()
1182 ipcp->my_compproto = compproto; in IpcpDecodeConfig()
1186 ipcp->peer_reject |= (1 << opt->hdr.id); in IpcpDecodeConfig()
1215 if (!IsAccepted(ipcp->cfg.ns.dns_neg)) { in IpcpDecodeConfig()
1216 ipcp->my_reject |= (1 << (opt->hdr.id - TY_ADJUST_NS)); in IpcpDecodeConfig()
1220 have_ip = ipcp->ns.dns[opt->hdr.id == TY_PRIMARY_DNS ? 0 : 1]; in IpcpDecodeConfig()
1223 ipaddr.s_addr == ipcp->ns.dns[1].s_addr) { in IpcpDecodeConfig()
1225 ipcp->ns.dns[0] = ipcp->ns.dns[1]; in IpcpDecodeConfig()
1226 ipcp->ns.dns[1] = have_ip; in IpcpDecodeConfig()
1227 have_ip = ipcp->ns.dns[0]; in IpcpDecodeConfig()
1249 if (IsEnabled(ipcp->cfg.ns.dns_neg)) { in IpcpDecodeConfig()
1251 memcpy(&ipcp->ns.dns[opt->hdr.id == TY_PRIMARY_DNS ? 0 : 1].s_addr, in IpcpDecodeConfig()
1257 ipcp->peer_reject |= (1 << (opt->hdr.id - TY_ADJUST_NS)); in IpcpDecodeConfig()
1270 ipcp->cfg.ns.nbns[opt->hdr.id == TY_PRIMARY_NBNS ? 0 : 1].s_addr; in IpcpDecodeConfig()
1274 ipcp->my_reject |= (1 << (opt->hdr.id - TY_ADJUST_NS)); in IpcpDecodeConfig()
1300 ipcp->my_reject |= (1 << opt->hdr.id); in IpcpDecodeConfig()
1308 if (ipcp->ns.writable) { in IpcpDecodeConfig()
1310 if (!ipcp_WriteDNS(ipcp)) { in IpcpDecodeConfig()
1311 ipcp->peer_reject |= (1 << (TY_PRIMARY_DNS - TY_ADJUST_NS)); in IpcpDecodeConfig()
1312 ipcp->peer_reject |= (1 << (TY_SECONDARY_DNS - TY_ADJUST_NS)); in IpcpDecodeConfig()
1322 if (mode_type == MODE_REQ && !ipcp->peer_req) { in IpcpDecodeConfig()
1331 ipcp->peer_req = 1; in IpcpDecodeConfig()
1334 ipcp_ValidateReq(ipcp, ipaddr, dec); in IpcpDecodeConfig()
1346 fsm_Input(&bundle->ncp.ipcp.fsm, bp); in ipcp_Input()
1359 struct ipcp *ipcp = &bundle->ncp.ipcp; in ipcp_UseHisIPaddr() local
1362 memset(&ipcp->cfg.peer_range, '\0', sizeof ipcp->cfg.peer_range); in ipcp_UseHisIPaddr()
1363 iplist_reset(&ipcp->cfg.peer_list); in ipcp_UseHisIPaddr()
1364 ipcp->peer_ip = hisaddr; in ipcp_UseHisIPaddr()
1365 ncprange_setip4host(&ipcp->cfg.peer_range, hisaddr); in ipcp_UseHisIPaddr()
1366 ncprange_getip4addr(&ipcp->cfg.my_range, &myaddr); in ipcp_UseHisIPaddr()
1368 return ipcp_SetIPaddress(ipcp, myaddr, hisaddr); in ipcp_UseHisIPaddr()
1376 struct ipcp *ipcp = &ncp->ipcp; in ipcp_UseHisaddr() local
1380 memset(&ipcp->cfg.peer_range, '\0', sizeof ipcp->cfg.peer_range); in ipcp_UseHisaddr()
1381 iplist_reset(&ipcp->cfg.peer_list); in ipcp_UseHisaddr()
1383 iplist_setsrc(&ipcp->cfg.peer_list, hisaddr); in ipcp_UseHisaddr()
1384 if (iplist_isvalid(&ipcp->cfg.peer_list)) { in ipcp_UseHisaddr()
1385 iplist_setrandpos(&ipcp->cfg.peer_list); in ipcp_UseHisaddr()
1386 ipcp->peer_ip = ChooseHisAddr(bundle, ipcp->my_ip); in ipcp_UseHisaddr()
1387 if (ipcp->peer_ip.s_addr == INADDR_ANY) { in ipcp_UseHisaddr()
1388 log_Printf(LogWARN, "%s: None available !\n", ipcp->cfg.peer_list.src); in ipcp_UseHisaddr()
1391 ncprange_setip4host(&ipcp->cfg.peer_range, ipcp->peer_ip); in ipcp_UseHisaddr()
1396 } else if (ncprange_aton(&ipcp->cfg.peer_range, ncp, hisaddr) != 0) { in ipcp_UseHisaddr()
1397 if (ncprange_family(&ipcp->cfg.my_range) != AF_INET) { in ipcp_UseHisaddr()
1401 ncprange_getip4addr(&ipcp->cfg.my_range, &myaddr); in ipcp_UseHisaddr()
1402 ncprange_getip4addr(&ipcp->cfg.peer_range, &ipcp->peer_ip); in ipcp_UseHisaddr()
1404 if (setaddr && !ipcp_SetIPaddress(ipcp, myaddr, ipcp->peer_ip)) in ipcp_UseHisaddr()
1409 ncpaddr_setip4(&ncpaddr, ipcp->peer_ip); in ipcp_UseHisaddr()
1429 ipcp_QueueLen(struct ipcp *ipcp) in ipcp_QueueLen() argument
1435 for (q = ipcp->Queue; q < ipcp->Queue + IPCP_QUEUES(ipcp); q++) in ipcp_QueueLen()
1442 ipcp_PushPacket(struct ipcp *ipcp, struct link *l) in ipcp_PushPacket() argument
1444 struct bundle *bundle = ipcp->fsm.bundle; in ipcp_PushPacket()
1451 if (ipcp->fsm.state != ST_OPENED) in ipcp_PushPacket()
1462 queue = ipcp->Queue + IPCP_QUEUES(ipcp) - 1; in ipcp_PushPacket()
1476 ipcp_AddOutOctets(ipcp, m_len); in ipcp_PushPacket()
1479 } while (queue-- != ipcp->Queue); in ipcp_PushPacket()