inet6: add struct net argument to inet6_ehashfn

Same as for inet_hashfn, prepare its ipv6 incarnation.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Pavel Emelyanov 2008-06-16 17:13:48 -07:00 коммит произвёл David S. Miller
Родитель 9f26b3add3
Коммит 33de014c63
2 изменённых файлов: 8 добавлений и 5 удалений

Просмотреть файл

@ -28,7 +28,8 @@
struct inet_hashinfo; struct inet_hashinfo;
/* I have no idea if this is a good hash for v6 or not. -DaveM */ /* 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) const struct in6_addr *faddr, const __be16 fport)
{ {
u32 ports = (lport ^ (__force u16)fport); u32 ports = (lport ^ (__force u16)fport);
@ -46,7 +47,9 @@ static inline int inet6_sk_ehashfn(const struct sock *sk)
const struct in6_addr *faddr = &np->daddr; const struct in6_addr *faddr = &np->daddr;
const __u16 lport = inet->num; const __u16 lport = inet->num;
const __be16 fport = inet->dport; 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); extern void __inet6_hash(struct sock *sk);

Просмотреть файл

@ -68,7 +68,7 @@ struct sock *__inet6_lookup_established(struct net *net,
/* Optimize here for direct hit, only listening connections can /* Optimize here for direct hit, only listening connections can
* have wildcards anyways. * have wildcards anyways.
*/ */
unsigned int hash = inet6_ehashfn(daddr, hnum, saddr, sport); unsigned int hash = inet6_ehashfn(net, daddr, hnum, saddr, sport);
struct inet_ehash_bucket *head = inet_ehash_bucket(hashinfo, hash); struct inet_ehash_bucket *head = inet_ehash_bucket(hashinfo, hash);
rwlock_t *lock = inet_ehash_lockp(hashinfo, hash); rwlock_t *lock = inet_ehash_lockp(hashinfo, hash);
@ -166,14 +166,14 @@ static int __inet6_check_established(struct inet_timewait_death_row *death_row,
const struct in6_addr *saddr = &np->daddr; const struct in6_addr *saddr = &np->daddr;
const int dif = sk->sk_bound_dev_if; const int dif = sk->sk_bound_dev_if;
const __portpair ports = INET_COMBINED_PORTS(inet->dport, lport); const __portpair ports = INET_COMBINED_PORTS(inet->dport, lport);
const unsigned int hash = inet6_ehashfn(daddr, lport, saddr, struct net *net = sock_net(sk);
const unsigned int hash = inet6_ehashfn(net, daddr, lport, saddr,
inet->dport); inet->dport);
struct inet_ehash_bucket *head = inet_ehash_bucket(hinfo, hash); struct inet_ehash_bucket *head = inet_ehash_bucket(hinfo, hash);
rwlock_t *lock = inet_ehash_lockp(hinfo, hash); rwlock_t *lock = inet_ehash_lockp(hinfo, hash);
struct sock *sk2; struct sock *sk2;
const struct hlist_node *node; const struct hlist_node *node;
struct inet_timewait_sock *tw; struct inet_timewait_sock *tw;
struct net *net = sock_net(sk);
prefetch(head->chain.first); prefetch(head->chain.first);
write_lock(lock); write_lock(lock);