Lines Matching refs:ipv6cp
197 ipcp_SetIPv6address(struct ipv6cp *ipv6cp, u_char *myifid, u_char *hisifid) in ipcp_SetIPv6address() argument
199 struct bundle *bundle = ipv6cp->fsm.bundle; in ipcp_SetIPv6address()
227 ncpaddr_setip6(&ipv6cp->myaddr, &myaddr); in ipcp_SetIPv6address()
228 ncpaddr_setip6(&ipv6cp->hisaddr, &hisaddr); in ipcp_SetIPv6address()
229 ncprange_set(&myrange, &ipv6cp->myaddr, 64); in ipcp_SetIPv6address()
231 if (!iface_Add(bundle->iface, &bundle->ncp, &myrange, &ipv6cp->hisaddr, in ipcp_SetIPv6address()
241 rt_Set(bundle, RTM_ADD, &range, &ipv6cp->myaddr, 1, 0); in ipcp_SetIPv6address()
245 if (ncpaddr_isset(&ipv6cp->hisaddr)) in ipcp_SetIPv6address()
246 ncpaddr_getsa(&ipv6cp->hisaddr, &ssdst); in ipcp_SetIPv6address()
253 route_Change(bundle, bundle->ncp.route, &ipv6cp->myaddr, &ipv6cp->hisaddr); in ipcp_SetIPv6address()
257 route_Change(bundle, bundle->radius.ipv6routes, &ipv6cp->myaddr, in ipcp_SetIPv6address()
258 &ipv6cp->hisaddr); in ipcp_SetIPv6address()
265 ipv6cp_Init(struct ipv6cp *ipv6cp, struct bundle *bundle, struct link *l, in ipv6cp_Init() argument
272 fsm_Init(&ipv6cp->fsm, "IPV6CP", PROTO_IPV6CP, 1, IPV6CP_MAXCODE, LogIPV6CP, in ipv6cp_Init()
275 ipv6cp->cfg.fsm.timeout = DEF_FSMRETRY; in ipv6cp_Init()
276 ipv6cp->cfg.fsm.maxreq = DEF_FSMTRIES; in ipv6cp_Init()
277 ipv6cp->cfg.fsm.maxtrm = DEF_FSMTRIES; in ipv6cp_Init()
279 SetInterfaceID(ipv6cp->my_ifid, 0); in ipv6cp_Init()
281 SetInterfaceID(ipv6cp->his_ifid, 1); in ipv6cp_Init()
282 } while (memcmp(ipv6cp->his_ifid, ipv6cp->my_ifid, IPV6CP_IFIDLEN) == 0); in ipv6cp_Init()
287 !ipcp_SetIPv6address(ipv6cp, ipv6cp->my_ifid, ipv6cp->his_ifid)) { in ipv6cp_Init()
290 SetInterfaceID(ipv6cp->my_ifid, 1); in ipv6cp_Init()
292 && memcmp(ipv6cp->his_ifid, ipv6cp->my_ifid, IPV6CP_IFIDLEN) == 0); in ipv6cp_Init()
296 throughput_init(&ipv6cp->throughput, SAMPLE_PERIOD); in ipv6cp_Init()
297 memset(ipv6cp->Queue, '\0', sizeof ipv6cp->Queue); in ipv6cp_Init()
298 ipv6cp_Setup(ipv6cp); in ipv6cp_Init()
302 ipv6cp_Destroy(struct ipv6cp *ipv6cp) in ipv6cp_Destroy() argument
304 throughput_destroy(&ipv6cp->throughput); in ipv6cp_Destroy()
308 ipv6cp_Setup(struct ipv6cp *ipv6cp) in ipv6cp_Setup() argument
310 ncpaddr_init(&ipv6cp->myaddr); in ipv6cp_Setup()
311 ncpaddr_init(&ipv6cp->hisaddr); in ipv6cp_Setup()
313 ipv6cp->his_reject = 0; in ipv6cp_Setup()
314 ipv6cp->my_reject = 0; in ipv6cp_Setup()
318 ipv6cp_SetLink(struct ipv6cp *ipv6cp, struct link *l) in ipv6cp_SetLink() argument
320 ipv6cp->fsm.link = l; in ipv6cp_SetLink()
326 struct ipv6cp *ipv6cp = &arg->bundle->ncp.ipv6cp; in ipv6cp_Show() local
328 prompt_Printf(arg->prompt, "%s [%s]\n", ipv6cp->fsm.name, in ipv6cp_Show()
329 State2Nam(ipv6cp->fsm.state)); in ipv6cp_Show()
330 if (ipv6cp->fsm.state == ST_OPENED) { in ipv6cp_Show()
332 ncpaddr_ntoa(&ipv6cp->hisaddr)); in ipv6cp_Show()
334 ncpaddr_ntoa(&ipv6cp->myaddr)); in ipv6cp_Show()
336 (unsigned long)ipv6cp_QueueLen(ipv6cp)); in ipv6cp_Show()
341 " REQ%s, %u Term REQ%s\n\n", ipv6cp->cfg.fsm.timeout, in ipv6cp_Show()
342 ipv6cp->cfg.fsm.maxreq, ipv6cp->cfg.fsm.maxreq == 1 ? "" : "s", in ipv6cp_Show()
343 ipv6cp->cfg.fsm.maxtrm, ipv6cp->cfg.fsm.maxtrm == 1 ? "" : "s"); in ipv6cp_Show()
345 throughput_disp(&ipv6cp->throughput, arg->prompt); in ipv6cp_Show()
356 fsm_Input(&bundle->ncp.ipv6cp.fsm, bp); in ipv6cp_Input()
367 ipv6cp_AddInOctets(struct ipv6cp *ipv6cp, int n) in ipv6cp_AddInOctets() argument
369 throughput_addin(&ipv6cp->throughput, n); in ipv6cp_AddInOctets()
373 ipv6cp_AddOutOctets(struct ipv6cp *ipv6cp, int n) in ipv6cp_AddOutOctets() argument
375 throughput_addout(&ipv6cp->throughput, n); in ipv6cp_AddOutOctets()
379 ipv6cp_IfaceAddrAdded(struct ipv6cp *ipv6cp __unused, in ipv6cp_IfaceAddrAdded()
385 ipv6cp_IfaceAddrDeleted(struct ipv6cp *ipv6cp __unused, in ipv6cp_IfaceAddrDeleted()
391 ipv6cp_InterfaceUp(struct ipv6cp *ipv6cp) in ipv6cp_InterfaceUp() argument
393 if (!ipcp_SetIPv6address(ipv6cp, ipv6cp->my_ifid, ipv6cp->his_ifid)) { in ipv6cp_InterfaceUp()
398 if (!iface_SetFlags(ipv6cp->fsm.bundle->iface->name, IFF_UP)) { in ipv6cp_InterfaceUp()
400 " flag on %s\n", ipv6cp->fsm.bundle->iface->name); in ipv6cp_InterfaceUp()
408 ipv6cp_QueueLen(struct ipv6cp *ipv6cp) in ipv6cp_QueueLen() argument
414 for (q = ipv6cp->Queue; q < ipv6cp->Queue + IPV6CP_QUEUES(ipv6cp); q++) in ipv6cp_QueueLen()
421 ipv6cp_PushPacket(struct ipv6cp *ipv6cp, struct link *l) in ipv6cp_PushPacket() argument
423 struct bundle *bundle = ipv6cp->fsm.bundle; in ipv6cp_PushPacket()
430 if (ipv6cp->fsm.state != ST_OPENED) in ipv6cp_PushPacket()
441 queue = ipv6cp->Queue + IPV6CP_QUEUES(ipv6cp) - 1; in ipv6cp_PushPacket()
455 ipv6cp_AddOutOctets(ipv6cp, m_len); in ipv6cp_PushPacket()
458 } while (queue-- != ipv6cp->Queue); in ipv6cp_PushPacket()
467 struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); in ipv6cp_LayerUp() local
471 if (!ipv6cp_InterfaceUp(ipv6cp)) in ipv6cp_LayerUp()
474 snprintf(tbuff, sizeof tbuff, "%s", ncpaddr_ntoa(&ipv6cp->myaddr)); in ipv6cp_LayerUp()
476 tbuff, ncpaddr_ntoa(&ipv6cp->hisaddr)); in ipv6cp_LayerUp()
479 radius_Account_Set_Ipv6(&fp->bundle->radacct6, ipv6cp->his_ifid); in ipv6cp_LayerUp()
481 fp->bundle->links, RAD_START, &ipv6cp->throughput); in ipv6cp_LayerUp()
513 fp->more.reqs = fp->more.naks = fp->more.rejs = ipv6cp->cfg.fsm.maxreq * 3; in ipv6cp_LayerUp()
523 struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); in ipv6cp_LayerDown() local
528 snprintf(addr, sizeof addr, "%s", ncpaddr_ntoa(&ipv6cp->myaddr)); in ipv6cp_LayerDown()
534 fp->bundle->links, RAD_STOP, &ipv6cp->throughput); in ipv6cp_LayerDown()
566 ipv6cp_Setup(ipv6cp); in ipv6cp_LayerDown()
575 struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); in ipv6cp_LayerStart() local
578 throughput_start(&ipv6cp->throughput, "IPV6CP throughput", in ipv6cp_LayerStart()
580 fp->more.reqs = fp->more.naks = fp->more.rejs = ipv6cp->cfg.fsm.maxreq * 3; in ipv6cp_LayerStart()
581 ipv6cp->peer_tokenreq = 0; in ipv6cp_LayerStart()
588 struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); in ipv6cp_LayerFinish() local
591 throughput_stop(&ipv6cp->throughput); in ipv6cp_LayerFinish()
592 throughput_log(&ipv6cp->throughput, LogIPV6CP, NULL); in ipv6cp_LayerFinish()
599 struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); in ipv6cp_InitRestartCounter() local
601 fp->FsmTimer.load = ipv6cp->cfg.fsm.timeout * SECTICKS; in ipv6cp_InitRestartCounter()
604 fp->restart = ipv6cp->cfg.fsm.maxreq; in ipv6cp_InitRestartCounter()
607 fp->restart = ipv6cp->cfg.fsm.maxtrm; in ipv6cp_InitRestartCounter()
620 struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); in ipv6cp_SendConfigReq() local
626 if ((p && !physical_IsSync(p)) || !REJECTED(ipv6cp, TY_TOKEN)) { in ipv6cp_SendConfigReq()
627 memcpy(o->data, ipv6cp->my_ifid, IPV6CP_IFIDLEN); in ipv6cp_SendConfigReq()
660 ipv6cp_ValidateInterfaceID(struct ipv6cp *ipv6cp, u_char *ifid, in ipv6cp_ValidateInterfaceID() argument
669 && memcmp(ifid, ipv6cp->my_ifid, IPV6CP_IFIDLEN) != 0) in ipv6cp_ValidateInterfaceID()
670 memcpy(ipv6cp->his_ifid, ifid, IPV6CP_IFIDLEN); in ipv6cp_ValidateInterfaceID()
674 memcpy(opt.data, &ipv6cp->his_ifid, IPV6CP_IFIDLEN); in ipv6cp_ValidateInterfaceID()
675 if (memcmp(ifid, ipv6cp->his_ifid, IPV6CP_IFIDLEN) == 0) in ipv6cp_ValidateInterfaceID()
686 struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); in ipv6cp_DecodeConfig() local
709 ipv6cp->peer_tokenreq = 1; in ipv6cp_DecodeConfig()
710 ipv6cp_ValidateInterfaceID(ipv6cp, ifid, dec); in ipv6cp_DecodeConfig()
717 fsm_Close(&ipv6cp->fsm); in ipv6cp_DecodeConfig()
718 } else if (memcmp(ifid, ipv6cp->his_ifid, IPV6CP_IFIDLEN) == 0) { in ipv6cp_DecodeConfig()
724 } else if (memcmp(ifid, ipv6cp->my_ifid, IPV6CP_IFIDLEN) != 0) { in ipv6cp_DecodeConfig()
726 while (n && !ipcp_SetIPv6address(ipv6cp, ifid, ipv6cp->his_ifid)) { in ipv6cp_DecodeConfig()
730 } while (n && memcmp(ifid, ipv6cp->his_ifid, IPV6CP_IFIDLEN) == 0); in ipv6cp_DecodeConfig()
736 fsm_Close(&ipv6cp->fsm); in ipv6cp_DecodeConfig()
741 ipv6cp->my_ifid[0], ipv6cp->my_ifid[1], in ipv6cp_DecodeConfig()
742 ipv6cp->my_ifid[2], ipv6cp->my_ifid[3], in ipv6cp_DecodeConfig()
743 ipv6cp->my_ifid[4], ipv6cp->my_ifid[5], in ipv6cp_DecodeConfig()
744 ipv6cp->my_ifid[6], ipv6cp->my_ifid[7], in ipv6cp_DecodeConfig()
747 memcpy(ipv6cp->my_ifid, ifid, IPV6CP_IFIDLEN); in ipv6cp_DecodeConfig()
748 bundle_AdjustFilters(fp->bundle, &ipv6cp->myaddr, NULL); in ipv6cp_DecodeConfig()
754 ipv6cp->his_reject |= (1 << opt->hdr.id); in ipv6cp_DecodeConfig()
761 ipv6cp->my_reject |= (1 << opt->hdr.id); in ipv6cp_DecodeConfig()
769 if (mode_type == MODE_REQ && !ipv6cp->peer_tokenreq) { in ipv6cp_DecodeConfig()
778 ipv6cp->peer_tokenreq = 1; in ipv6cp_DecodeConfig()
781 ipv6cp_ValidateInterfaceID(ipv6cp, ifid, dec); in ipv6cp_DecodeConfig()