ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery
commit1e856b3bc1a27e2a41b64af46296112a8aa6a7bd
authorPatrick McHardy <kaber@trash.net>
Tue, 15 Dec 2009 15:59:18 +0000 (15 16:59 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 6 Jan 2010 22:26:41 +0000 (6 14:26 -0800)
treeaeea2694379ad2bae4936a6615dda5341a9b8f0c
parentb167b0c6a4ae732370eba9486b6274d6637fdd06
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