diff options
author | Kristof Provost <kp@FreeBSD.org> | 2015-06-11 13:26:16 +0000 |
---|---|---|
committer | Kristof Provost <kp@FreeBSD.org> | 2015-06-11 13:26:16 +0000 |
commit | 837b925abaf9db35055f689ad83a82627cc8b961 (patch) | |
tree | 797e90b1d15829afa0353a285e5a453abf67983c /sys/netpfil/pf | |
parent | 49672bcc54d103349b8bc0f3d99ce7734b694319 (diff) | |
download | src-837b925abaf9db35055f689ad83a82627cc8b961.tar.gz src-837b925abaf9db35055f689ad83a82627cc8b961.zip |
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
Notes
Notes:
svn path=/head/; revision=284260
Diffstat (limited to 'sys/netpfil/pf')
-rw-r--r-- | sys/netpfil/pf/pf_norm.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c index 3888ef65b2ba..abf878f72ef7 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; |