* Ian Grant <ian.a.n.gr...@googlemail.com> [2014-10-25 18:15]:
> #ifdef INET6
>     /* if reassembled packet passed, create new fragments */
>     if (pf_status.reass && action == PF_PASS && *m0 && fwdir == PF_FWD) {
>         struct m_tag    *mtag;
> 
>         if ((mtag = m_tag_find(*m0, PACKET_TAG_PF_REASSEMBLED, NULL)))
>             action = pf_refragment6(m0, mtag, fwdir);
>     }
> #endif
> 
> But from pf.c, the fn pf_test is only ever called with fwdir == PF_OUT
> and the only other places from which it is called are in if_bridge.c,
> and they set fwdir to either PF_OUT or PF_IN (aliased as BRIDGE_OUT
> and BRIDGE_IN respectively, when PF is enabled).  Therefore fwdir ==
> PF_FWD never holds, and so reassembled IPv6 packets are never
> refragmented, contradicting the manual page pf.conf(5).

you need to improve your grepping skills :)

netinet6/ip6_forward.c:348:                 pf_test(AF_INET6, PF_FWD, encif, 
&m, NULL) != PF_PASS) {
netinet6/ip6_forward.c:459:     if (pf_test(AF_INET6, PF_FWD, rt->rt_ifp, &m, 
NULL) != PF_PASS) {

-- 
Henning Brauer, h...@bsws.de, henn...@openbsd.org
BS Web Services GmbH, http://bsws.de, Full-Service ISP
Secure Hosting, Mail and DNS. Virtual & Dedicated Servers, Root to Fully Managed
Henning Brauer Consulting, http://henningbrauer.com/

Reply via email to