From d1d4c947ce1dc00069d3ebc7667f42ebd15add02 Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 30 Sep 2003 04:46:08 +0000 Subject: Correct pfil_run_hooks return handling: if the return value is non-zero then the mbuf has been consumed by a hook; otherwise beware of a null mbuf return (gack). In particular the bridge was doing the wrong thing. While in the ipv6 code make it's handling of pfil_run_hooks identical to netbsd. Pointed out by: Pyun YongHyeon --- sys/netinet6/ip6_forward.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'sys/netinet6/ip6_forward.c') diff --git a/sys/netinet6/ip6_forward.c b/sys/netinet6/ip6_forward.c index 9233aba..b625f0a 100644 --- a/sys/netinet6/ip6_forward.c +++ b/sys/netinet6/ip6_forward.c @@ -522,10 +522,9 @@ ip6_forward(m, srcrt) /* * Run through list of hooks for output packets. */ - if (pfil_run_hooks(&inet6_pfil_hook, &m, rt->rt_ifp, PFIL_OUT) != 0) { - error = EHOSTUNREACH; - goto freecopy; - } + error = pfil_run_hooks(&inet6_pfil_hook, &m, rt->rt_ifp, PFIL_OUT); + if (error != 0) + goto senderr; if (m == NULL) goto freecopy; ip6 = mtod(m, struct ip6_hdr *); @@ -545,6 +544,9 @@ ip6_forward(m, srcrt) goto freecopy; } } +#ifdef PFIL_HOOKS +senderr: +#endif if (mcopy == NULL) return; switch (error) { -- cgit v1.1