diff options
author | Renato Botelho <renato@netgate.com> | 2015-11-11 11:08:21 -0200 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2015-11-11 11:08:21 -0200 |
commit | 4119672798028ff673a738690b48575973689004 (patch) | |
tree | 6a05ea1f50fa6610fe798bbf45852d32a83ab41a /sys/netpfil | |
parent | 5e6268df600406a1570e822ac652576059d820e3 (diff) | |
parent | 2867f2c1d4795c2446a1c1d0b30db57d3aaca364 (diff) | |
download | FreeBSD-src-4119672798028ff673a738690b48575973689004.zip FreeBSD-src-4119672798028ff673a738690b48575973689004.tar.gz |
Merge remote-tracking branch 'origin/stable/10' into devel
Diffstat (limited to 'sys/netpfil')
-rw-r--r-- | sys/netpfil/pf/pf.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index a535ddf..c4f1b9d 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -6025,6 +6025,13 @@ pf_route6(struct mbuf **m, struct pf_rule *r, int dir, struct ifnet *oifp, if (ifp->if_flags & IFF_LOOPBACK) m0->m_flags |= M_SKIP_FIREWALL; + if (m0->m_pkthdr.csum_flags & CSUM_DELAY_DATA_IPV6 & + ~ifp->if_hwassist) { + uint32_t plen = m0->m_pkthdr.len - sizeof(*ip6); + in6_delayed_cksum(m0, plen, sizeof(struct ip6_hdr)); + m0->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA_IPV6; + } + /* * If the packet is too large for the outgoing interface, * send back an icmp6 error. |