Lines Matching refs:ipv6cp

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