|
@@ -271,16 +271,18 @@ ip_vs_svc_hashkey(struct net *net, int af, unsigned int proto,
|
|
|
{
|
|
|
register unsigned int porth = ntohs(port);
|
|
|
__be32 addr_fold = addr->ip;
|
|
|
+ __u32 ahash;
|
|
|
|
|
|
#ifdef CONFIG_IP_VS_IPV6
|
|
|
if (af == AF_INET6)
|
|
|
addr_fold = addr->ip6[0]^addr->ip6[1]^
|
|
|
addr->ip6[2]^addr->ip6[3];
|
|
|
#endif
|
|
|
- addr_fold ^= ((size_t)net>>8);
|
|
|
+ ahash = ntohl(addr_fold);
|
|
|
+ ahash ^= ((size_t) net >> 8);
|
|
|
|
|
|
- return (proto^ntohl(addr_fold)^(porth>>IP_VS_SVC_TAB_BITS)^porth)
|
|
|
- & IP_VS_SVC_TAB_MASK;
|
|
|
+ return (proto ^ ahash ^ (porth >> IP_VS_SVC_TAB_BITS) ^ porth) &
|
|
|
+ IP_VS_SVC_TAB_MASK;
|
|
|
}
|
|
|
|
|
|
/*
|