Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/ip_fastfwd.c
Show First 20 Lines • Show All 226 Lines • ▼ Show 20 Lines | #endif | ||||
/* | /* | ||||
* Run through list of ipfilter hooks for input packets | * Run through list of ipfilter hooks for input packets | ||||
*/ | */ | ||||
if (!PFIL_HOOKED(&V_inet_pfil_hook)) | if (!PFIL_HOOKED(&V_inet_pfil_hook)) | ||||
goto passin; | goto passin; | ||||
if (pfil_run_hooks( | if (pfil_run_hooks( | ||||
&V_inet_pfil_hook, &m, m->m_pkthdr.rcvif, PFIL_IN, NULL) || | &V_inet_pfil_hook, &m, m->m_pkthdr.rcvif, PFIL_IN, 0, NULL) || | ||||
m == NULL) | m == NULL) | ||||
goto drop; | goto drop; | ||||
M_ASSERTVALID(m); | M_ASSERTVALID(m); | ||||
M_ASSERTPKTHDR(m); | M_ASSERTPKTHDR(m); | ||||
ip = mtod(m, struct ip *); /* m may have changed by pfil hook */ | ip = mtod(m, struct ip *); /* m may have changed by pfil hook */ | ||||
dest.s_addr = ip->ip_dst.s_addr; | dest.s_addr = ip->ip_dst.s_addr; | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | if (ip_findroute(&nh, dest, m) != 0) | ||||
return (NULL); /* icmp unreach already sent */ | return (NULL); /* icmp unreach already sent */ | ||||
/* | /* | ||||
* Step 5: outgoing firewall packet processing | * Step 5: outgoing firewall packet processing | ||||
*/ | */ | ||||
if (!PFIL_HOOKED(&V_inet_pfil_hook)) | if (!PFIL_HOOKED(&V_inet_pfil_hook)) | ||||
goto passout; | goto passout; | ||||
if (pfil_run_hooks(&V_inet_pfil_hook, &m, nh.nh_ifp, PFIL_OUT, NULL) || | if (pfil_run_hooks(&V_inet_pfil_hook, &m, nh.nh_ifp, PFIL_OUT, PFIL_FWD, | ||||
m == NULL) { | NULL) || m == NULL) { | ||||
goto drop; | goto drop; | ||||
} | } | ||||
M_ASSERTVALID(m); | M_ASSERTVALID(m); | ||||
M_ASSERTPKTHDR(m); | M_ASSERTPKTHDR(m); | ||||
ip = mtod(m, struct ip *); | ip = mtod(m, struct ip *); | ||||
dest.s_addr = ip->ip_dst.s_addr; | dest.s_addr = ip->ip_dst.s_addr; | ||||
▲ Show 20 Lines • Show All 120 Lines • Show Last 20 Lines |