diff options
author | kp <kp@FreeBSD.org> | 2015-06-11 13:26:16 +0000 |
---|---|---|
committer | kp <kp@FreeBSD.org> | 2015-06-11 13:26:16 +0000 |
commit | f42205596d204f7c57d83aa1eade1ba6a1f9759d (patch) | |
tree | 797e90b1d15829afa0353a285e5a453abf67983c | |
parent | 628de4933c8bc383f3892c2a4f874827570b2a01 (diff) | |
download | FreeBSD-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
-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 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; |