Changeset View
Changeset View
Standalone View
Standalone View
sys/net/route.c
Show First 20 Lines • Show All 761 Lines • ▼ Show 20 Lines | rt_routemsg_info(int cmd, struct rt_addrinfo *info, int fibnum) | ||||
KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), | KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), | ||||
("%s: fib out of range 0 <=%d<%d", __func__, fibnum, rt_numfibs)); | ("%s: fib out of range 0 <=%d<%d", __func__, fibnum, rt_numfibs)); | ||||
KASSERT(info->rti_info[RTAX_DST] != NULL, (":%s: RTAX_DST must be supplied", __func__)); | KASSERT(info->rti_info[RTAX_DST] != NULL, (":%s: RTAX_DST must be supplied", __func__)); | ||||
return (rtsock_routemsg_info(cmd, info, fibnum)); | return (rtsock_routemsg_info(cmd, info, fibnum)); | ||||
} | } | ||||
/* | |||||
* This is called to generate messages from the routing socket | |||||
* indicating a network interface has had addresses associated with it. | |||||
*/ | |||||
void | |||||
rt_newaddrmsg_fib(int cmd, struct ifaddr *ifa, struct rtentry *rt, int fibnum) | |||||
{ | |||||
KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, | |||||
("unexpected cmd %u", cmd)); | |||||
KASSERT((fibnum >= 0 && fibnum < rt_numfibs), | |||||
("%s: fib out of range 0 <=%d<%d", __func__, fibnum, rt_numfibs)); | |||||
if (cmd == RTM_ADD) { | |||||
rt_addrmsg(cmd, ifa, fibnum); | |||||
if (rt != NULL) | |||||
rt_routemsg(cmd, rt, nhop_select(rt->rt_nhop, 0), fibnum); | |||||
} else { | |||||
if (rt != NULL) | |||||
rt_routemsg(cmd, rt, nhop_select(rt->rt_nhop, 0), fibnum); | |||||
rt_addrmsg(cmd, ifa, fibnum); | |||||
} | |||||
} |