ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery
authorPatrick McHardy <kaber@trash.net>
Tue, 15 Dec 2009 15:59:18 +0000 (16:59 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 6 Jan 2010 23:04:39 +0000 (15:04 -0800)
commit89cf4f4c853f1f9619d58d89aa7d1fc56e24ee3a
tree7d2567e5276a8582df519779ea95d09b738e0f60
parentee6bfc69e69474840cacb2f665831aff29bdbb40
ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery

commit 0b5ccb2ee250136dd7385b1c7da28417d0d4d32d upstream.

Currently the same reassembly queue might be used for packets reassembled
by conntrack in different positions in the stack (PREROUTING/LOCAL_OUT),
as well as local delivery. This can cause "packet jumps" when the fragment
completing a reassembled packet is queued from a different position in the
stack than the previous ones.

Add a "user" identifier to the reassembly queue key to seperate the queues
of each caller, similar to what we do for IPv4.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
include/net/ipv6.h
include/net/netfilter/ipv6/nf_conntrack_ipv6.h
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/reassembly.c