netfilter: conntrack: make netns address part of nat bysrc hash
authorFlorian Westphal <fw@strlen.de>
Mon, 9 May 2016 14:24:30 +0000 (16:24 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 9 May 2016 14:45:49 +0000 (16:45 +0200)
Will be needed soon when we place all in the same hash table.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_nat_core.c

index d74e7167499d868f6d87e91d1d048fdcebe36bb2..069912c370b519cc6f5b9344943a5c4efb11be9a 100644 (file)
@@ -118,7 +118,7 @@ EXPORT_SYMBOL(nf_xfrm_me_harder);
 
 /* We keep an extra hash for each conntrack, for fast searching. */
 static inline unsigned int
-hash_by_src(const struct net *net, const struct nf_conntrack_tuple *tuple)
+hash_by_src(const struct net *n, const struct nf_conntrack_tuple *tuple)
 {
        unsigned int hash;
 
@@ -126,9 +126,9 @@ hash_by_src(const struct net *net, const struct nf_conntrack_tuple *tuple)
 
        /* Original src, to ensure we map it consistently if poss. */
        hash = jhash2((u32 *)&tuple->src, sizeof(tuple->src) / sizeof(u32),
-                     tuple->dst.protonum ^ nf_nat_hash_rnd);
+                     tuple->dst.protonum ^ nf_nat_hash_rnd ^ net_hash_mix(n));
 
-       return reciprocal_scale(hash, net->ct.nat_htable_size);
+       return reciprocal_scale(hash, n->ct.nat_htable_size);
 }
 
 /* Is this tuple already taken? (not by us) */