Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/in6_gif.c
Show First 20 Lines • Show All 396 Lines • ▼ Show 20 Lines | CK_LIST_FOREACH(sc, &V_ipv6_list, chain) { | ||||
} | } | ||||
} | } | ||||
return (0); | return (0); | ||||
done: | done: | ||||
if ((GIF2IFP(sc)->if_flags & IFF_UP) == 0) | if ((GIF2IFP(sc)->if_flags & IFF_UP) == 0) | ||||
return (0); | return (0); | ||||
/* ingress filters on outer source */ | /* ingress filters on outer source */ | ||||
if ((GIF2IFP(sc)->if_flags & IFF_LINK2) == 0) { | if ((GIF2IFP(sc)->if_flags & IFF_LINK2) == 0) { | ||||
struct nhop6_basic nh6; | if (fib6_check_urpf(sc->gif_fibnum, &ip6->ip6_src, | ||||
ntohs(in6_getscope(&ip6->ip6_src)), NHR_NONE, | |||||
if (fib6_lookup_nh_basic(sc->gif_fibnum, &ip6->ip6_src, | m->m_pkthdr.rcvif) == 0) | ||||
ntohs(in6_getscope(&ip6->ip6_src)), 0, 0, &nh6) != 0) | |||||
return (0); | |||||
if (nh6.nh_ifp != m->m_pkthdr.rcvif) | |||||
return (0); | return (0); | ||||
} | } | ||||
*arg = sc; | *arg = sc; | ||||
return (ret); | return (ret); | ||||
} | } | ||||
static const struct srcaddrtab *ipv6_srcaddrtab; | static const struct srcaddrtab *ipv6_srcaddrtab; | ||||
static struct { | static struct { | ||||
▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines |