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

Function defrouter_delreq

freebsd/netinet6/nd6_rtr.c:712–747  ·  view source on GitHub ↗

* Remove the default route for a given router. * This is just a subroutine function for defrouter_select_fib(), and * should not be called from anywhere else. */

Source from the content-addressed store, hash-verified

710 * should not be called from anywhere else.
711 */
712static void
713defrouter_delreq(struct nd_defrouter *dr)
714{
715 struct sockaddr_in6 def, mask, gate;
716 struct rt_addrinfo info;
717 struct rib_cmd_info rc;
718 struct epoch_tracker et;
719 unsigned int fibnum;
720 int error;
721
722 bzero(&def, sizeof(def));
723 bzero(&mask, sizeof(mask));
724 bzero(&gate, sizeof(gate));
725
726 def.sin6_len = mask.sin6_len = gate.sin6_len =
727 sizeof(struct sockaddr_in6);
728 def.sin6_family = gate.sin6_family = AF_INET6;
729 gate.sin6_addr = dr->rtaddr;
730 fibnum = dr->ifp->if_fib;
731
732 bzero((caddr_t)&info, sizeof(info));
733 info.rti_flags = RTF_GATEWAY;
734 info.rti_info[RTAX_DST] = (struct sockaddr *)&def;
735 info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&gate;
736 info.rti_info[RTAX_NETMASK] = (struct sockaddr *)&mask;
737
738 NET_EPOCH_ENTER(et);
739 error = rib_action(fibnum, RTM_DELETE, &info, &rc);
740 if (error == 0) {
741 struct nhop_object *nh = nhop_select_func(rc.rc_nh_old, 0);
742 rt_routemsg(RTM_DELETE, rc.rc_rt, nh, fibnum);
743 }
744 NET_EPOCH_EXIT(et);
745
746 dr->installed = 0;
747}
748
749static void
750defrouter_del(struct nd_defrouter *dr)

Callers 3

defrouter_delFunction · 0.85
defrouter_resetFunction · 0.85
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