diff options
author | sam <sam@FreeBSD.org> | 2003-09-23 17:54:04 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2003-09-23 17:54:04 +0000 |
commit | cd738e85741205de9f360fdbeaa49f30ce2038d9 (patch) | |
tree | c61b991702ec6f77c0e1b96cda74ae091fa2e749 /sys/netinet6/ip6_output.c | |
parent | 655247e0f5d689da4bda90e946a5227f58670ef2 (diff) | |
download | FreeBSD-src-cd738e85741205de9f360fdbeaa49f30ce2038d9.zip FreeBSD-src-cd738e85741205de9f360fdbeaa49f30ce2038d9.tar.gz |
o update PFIL_HOOKS support to current API used by netbsd
o revamp IPv4+IPv6+bridge usage to match API changes
o remove pfil_head instances from protosw entries (no longer used)
o add locking
o bump FreeBSD version for 3rd party modules
Heavy lifting by: "Max Laier" <max@love2party.net>
Supported by: FreeBSD Foundation
Obtained from: NetBSD (bits of pfil.h and pfil.c)
Diffstat (limited to 'sys/netinet6/ip6_output.c')
-rw-r--r-- | sys/netinet6/ip6_output.c | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index b18f9a7..7e81373 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -173,11 +173,6 @@ ip6_output(m0, opt, ro, flags, im6o, ifpp, inp) struct route_in6 *ro_pmtu = NULL; int hdrsplit = 0; int needipsec = 0; -#ifdef PFIL_HOOKS - struct packet_filter_hook *pfh; - struct mbuf *m1; - int rv; -#endif /* PFIL_HOOKS */ #ifdef IPSEC int needipsectun = 0; struct secpolicy *sp = NULL; @@ -931,20 +926,13 @@ skip_ipsec2:; /* * Run through list of hooks for output packets. */ - m1 = m; - pfh = pfil_hook_get(PFIL_OUT, &inet6sw[ip6_protox[IPPROTO_IPV6]].pr_pfh); - for (; pfh; pfh = pfh->pfil_link.tqe_next) - if (pfh->pfil_func) { - rv = pfh->pfil_func(ip6, sizeof(*ip6), ifp, 1, &m1); - if (rv) { - error = EHOSTUNREACH; - goto done; - } - m = m1; - if (m == NULL) - goto done; - ip6 = mtod(m, struct ip6_hdr *); - } + if (pfil_run_hooks(&inet6_pfil_hook, &m, ifp, PFIL_OUT) != 0) { + error = EHOSTUNREACH; + goto done; + } + if (m == NULL) + goto done; + ip6 = mtod(m, struct ip6_hdr *); #endif /* PFIL_HOOKS */ /* * Send the packet to the outgoing interface. |