Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
[pandora-kernel.git] / include / net / inet6_hashtables.h
index 62a5b69..e48989f 100644 (file)
 #include <net/inet_sock.h>
 
 #include <net/ipv6.h>
+#include <net/netns/hash.h>
 
 struct inet_hashinfo;
 
 /* I have no idea if this is a good hash for v6 or not. -DaveM */
-static inline unsigned int inet6_ehashfn(const struct in6_addr *laddr, const u16 lport,
+static inline unsigned int inet6_ehashfn(struct net *net,
+                               const struct in6_addr *laddr, const u16 lport,
                                const struct in6_addr *faddr, const __be16 fport)
 {
        u32 ports = (lport ^ (__force u16)fport);
 
        return jhash_3words((__force u32)laddr->s6_addr32[3],
                            (__force u32)faddr->s6_addr32[3],
-                           ports, inet_ehash_secret);
+                           ports, inet_ehash_secret + net_hash_mix(net));
 }
 
 static inline int inet6_sk_ehashfn(const struct sock *sk)
@@ -46,7 +48,9 @@ static inline int inet6_sk_ehashfn(const struct sock *sk)
        const struct in6_addr *faddr = &np->daddr;
        const __u16 lport = inet->num;
        const __be16 fport = inet->dport;
-       return inet6_ehashfn(laddr, lport, faddr, fport);
+       struct net *net = sock_net(sk);
+
+       return inet6_ehashfn(net, laddr, lport, faddr, fport);
 }
 
 extern void __inet6_hash(struct sock *sk);