MCPcopy Create free account
hub / github.com/F-Stack/f-stack / defrouter_addreq

Function defrouter_addreq

freebsd/netinet6/nd6_rtr.c:673–705  ·  view source on GitHub ↗

Default router list processing sub routines. */

Source from the content-addressed store, hash-verified

671
672/* Default router list processing sub routines. */
673static void
674defrouter_addreq(struct nd_defrouter *new)
675{
676 struct sockaddr_in6 def, mask, gate;
677 struct rt_addrinfo info;
678 struct rib_cmd_info rc;
679 unsigned int fibnum;
680 int error;
681
682 bzero(&def, sizeof(def));
683 bzero(&mask, sizeof(mask));
684 bzero(&gate, sizeof(gate));
685
686 def.sin6_len = mask.sin6_len = gate.sin6_len =
687 sizeof(struct sockaddr_in6);
688 def.sin6_family = gate.sin6_family = AF_INET6;
689 gate.sin6_addr = new->rtaddr;
690 fibnum = new->ifp->if_fib;
691
692 bzero((caddr_t)&info, sizeof(info));
693 info.rti_flags = RTF_GATEWAY;
694 info.rti_info[RTAX_DST] = (struct sockaddr *)&def;
695 info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&gate;
696 info.rti_info[RTAX_NETMASK] = (struct sockaddr *)&mask;
697
698 NET_EPOCH_ASSERT();
699 error = rib_action(fibnum, RTM_ADD, &info, &rc);
700 if (error == 0) {
701 struct nhop_object *nh = nhop_select_func(rc.rc_nh_new, 0);
702 rt_routemsg(RTM_ADD, rc.rc_rt, nh, fibnum);
703 new->installed = 1;
704 }
705}
706
707/*
708 * Remove the default route for a given router.

Callers 1

defrouter_select_fibFunction · 0.85

Calls 4

bzeroFunction · 0.85
rib_actionFunction · 0.85
nhop_select_funcFunction · 0.85
rt_routemsgFunction · 0.85

Tested by

no test coverage detected