summaryrefslogtreecommitdiffstats
path: root/sys/netpfil
diff options
context:
space:
mode:
authorkp <kp@FreeBSD.org>2015-06-11 13:26:16 +0000
committerkp <kp@FreeBSD.org>2015-06-11 13:26:16 +0000
commitf42205596d204f7c57d83aa1eade1ba6a1f9759d (patch)
tree797e90b1d15829afa0353a285e5a453abf67983c /sys/netpfil
parent628de4933c8bc383f3892c2a4f874827570b2a01 (diff)
downloadFreeBSD-src-f42205596d204f7c57d83aa1eade1ba6a1f9759d.zip
FreeBSD-src-f42205596d204f7c57d83aa1eade1ba6a1f9759d.tar.gz
pf: Save the protocol number in the pf_fragment
When we try to look up a pf_fragment with pf_find_fragment() we compare (see pf_frag_compare()) addresses (and family), id but also protocol. We failed to save the protocol to the pf_fragment in pf_fragcache(), resulting in failing reassembly. Differential Revision: https://reviews.freebsd.org/D2772
Diffstat (limited to 'sys/netpfil')
-rw-r--r--sys/netpfil/pf/pf_norm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c
index 3888ef6..abf878f 100644
--- a/sys/netpfil/pf/pf_norm.c
+++ b/sys/netpfil/pf/pf_norm.c
@@ -824,6 +824,7 @@ pf_fragcache(struct mbuf **m0, struct ip *h, struct pf_fragment **frag, int mff,
(*frag)->fr_src.v4 = h->ip_src;
(*frag)->fr_dst.v4 = h->ip_dst;
(*frag)->fr_af = AF_INET;
+ (*frag)->fr_proto = h->ip_p;
(*frag)->fr_id = h->ip_id;
(*frag)->fr_timeout = time_uptime;
OpenPOWER on IntegriCloud