]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/net/inet6_hashtables.h
autofs4: indirect dentry must almost always be positive
[linux-2.6-omap-h63xx.git] / include / net / inet6_hashtables.h
index fdff630708ce864470a3f422cd9a1f0deea3fabe..e48989f04c2451e6301db0e519376ea90cbe62ab 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,10 +48,12 @@ 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 inet_hashinfo *hashinfo, struct sock *sk);
+extern void __inet6_hash(struct sock *sk);
 
 /*
  * Sockets in TCP_CLOSE state are _always_ taken out of the hash, so