Subject: Re: [PATCH 1/2] IPv6: conntrack: Use protocol-related initialization routine to initial queues of IPv6 connection track

From: Shan Wei <[email-masked]>
Date: Tue, 26 Jan 2010 20:40:38 +0800

David Miller wrote, at 01/26/2010 03:32 PM:
> From: Shan Wei <[email-masked]>
> Date: Tue, 26 Jan 2010 10:31:10 +0800
> 
>> IPv6 connection track and IPv6 stack separately use a different queue to 
>> manage received fragments. The former uses nf_ct_frag6_queue structure, 
>> the latter uses frag_queue structure.
>>
>> When creating new queue for IPv6 connection track, ip6_frag_init() 
>> that belongs to IPv6 stack is called to initial nf_ct_frag6_queue structure. 
>> This broken the saddr&daddr member in nf_ct_frag6_queue, and then hash value 
>> generated by nf_hashfn() is not equal with that generated by fq_find(). 
>> So, a new received fragment can't be inserted to right queue.
>>  
>> The patch fixes the bug with protocol-related initialization routine.
>> The patch-set have been tested.
>>
>> Signed-off-by: Shan Wei <[email-masked]>
> 
> This breakage was recently introduced by:
> 
> commit 0b5ccb2ee250136dd7385b1c7da28417d0d4d32d
> Author: Patrick McHardy <[email-masked]>
> Date:   Tue Dec 15 16:59:18 2009 +0100
> 
>     ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery

Yes, this patch adds user member to frag_queue structure，but not to nf_ct_frag6_queue structure.

Please ignore the patch-set. 
Can you apply the following patch(bug-fix) to your net-tree?

--
[PATCH]IPv6: conntrack: Add member of user to  nf_ct_frag6_queue structure

The commit 0b5ccb2(title:ipv6: reassembly: use seperate reassembly queues for 
conntrack and local delivery) has broken the saddr&&daddr member of 
nf_ct_frag6_queue when creating new queue.  And then hash value
generated by nf_hashfn() was not equal with that generated by fq_find(). 
So, a new received fragment can't be inserted to right queue.

The patch fixes the bug with adding member of user to nf_ct_frag6_queue structure.

Signed-off-by: Shan Wei <[email-masked]>
---
 net/ipv6/netfilter/nf_conntrack_reasm.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
index 312c20a..624a548 100644
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -63,6 +63,7 @@ struct nf_ct_frag6_queue
 	struct inet_frag_queue	q;
 
 	__be32			id;		/* fragment id		*/
+	u32			user;
 	struct in6_addr		saddr;
 	struct in6_addr		daddr;
 
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to [email-masked]
More majordomo info at  http://vger.kernel.org/majordomo-info.html