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

Function nd6_prefix_rtrequest

freebsd/netinet6/nd6_rtr.c:2027–2057  ·  view source on GitHub ↗

* Add or remove interface route specified by @dst, @netmask and @ifp. * ifa can be NULL. * Returns 0 on success */

Source from the content-addressed store, hash-verified

2025 * Returns 0 on success
2026 */
2027static int
2028nd6_prefix_rtrequest(uint32_t fibnum, int cmd, struct sockaddr_in6 *dst,
2029 struct sockaddr_in6 *netmask, struct ifnet *ifp, struct ifaddr *ifa)
2030{
2031 struct epoch_tracker et;
2032 int error;
2033
2034 /* Prepare gateway */
2035 struct sockaddr_dl_short sdl = {
2036 .sdl_family = AF_LINK,
2037 .sdl_len = sizeof(struct sockaddr_dl_short),
2038 .sdl_type = ifp->if_type,
2039 .sdl_index = ifp->if_index,
2040 };
2041
2042 struct rt_addrinfo info = {
2043 .rti_ifa = ifa,
2044 .rti_flags = RTF_PINNED | ((netmask != NULL) ? 0 : RTF_HOST),
2045 .rti_info = {
2046 [RTAX_DST] = (struct sockaddr *)dst,
2047 [RTAX_NETMASK] = (struct sockaddr *)netmask,
2048 [RTAX_GATEWAY] = (struct sockaddr *)&sdl,
2049 },
2050 };
2051 /* Don't set additional per-gw filters on removal */
2052
2053 NET_EPOCH_ENTER(et);
2054 error = rib_handle_ifaddr_info(fibnum, cmd, &info);
2055 NET_EPOCH_EXIT(et);
2056 return (error);
2057}
2058
2059static int
2060nd6_prefix_onlink_rtrequest(struct nd_prefix *pr, struct ifaddr *ifa)

Callers 2

nd6_prefix_offlinkFunction · 0.85

Calls 1

rib_handle_ifaddr_infoFunction · 0.85

Tested by

no test coverage detected