summaryrefslogtreecommitdiffstats
path: root/sys/netpfil
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2015-11-11 11:08:21 -0200
committerRenato Botelho <renato@netgate.com>2015-11-11 11:08:21 -0200
commit4119672798028ff673a738690b48575973689004 (patch)
tree6a05ea1f50fa6610fe798bbf45852d32a83ab41a /sys/netpfil
parent5e6268df600406a1570e822ac652576059d820e3 (diff)
parent2867f2c1d4795c2446a1c1d0b30db57d3aaca364 (diff)
downloadFreeBSD-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.c7
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.
OpenPOWER on IntegriCloud