5 #include <linux/socket.h>
24 static inline unsigned int __xfrm6_daddr_saddr_hash(
const xfrm_address_t *daddr,
27 return ntohl(daddr->
a6[2] ^ daddr->
a6[3] ^
28 saddr->
a6[2] ^ saddr->
a6[3]);
31 static inline unsigned int __xfrm_dst_hash(
const xfrm_address_t *daddr,
33 u32 reqid,
unsigned short family,
36 unsigned int h = family ^ reqid;
39 h ^= __xfrm4_daddr_saddr_hash(daddr, saddr);
42 h ^= __xfrm6_daddr_saddr_hash(daddr, saddr);
45 return (h ^ (h >> 16)) & hmask;
48 static inline unsigned int __xfrm_src_hash(
const xfrm_address_t *daddr,
50 unsigned short family,
56 h ^= __xfrm4_daddr_saddr_hash(daddr, saddr);
59 h ^= __xfrm6_daddr_saddr_hash(daddr, saddr);
62 return (h ^ (h >> 16)) & hmask;
65 static inline unsigned int
67 unsigned short family,
unsigned int hmask)
72 h ^= __xfrm4_addr_hash(daddr);
75 h ^= __xfrm6_addr_hash(daddr);
78 return (h ^ (h >> 10) ^ (h >> 20)) & hmask;
81 static inline unsigned int __idx_hash(u32
index,
unsigned int hmask)
83 return (index ^ (index >> 8)) & hmask;
87 unsigned short family,
unsigned int hmask)
99 h = __xfrm4_daddr_saddr_hash(daddr, saddr);
107 h = __xfrm6_daddr_saddr_hash(daddr, saddr);
114 static inline unsigned int __addr_hash(
const xfrm_address_t *daddr,
116 unsigned short family,
unsigned int hmask)
122 h = __xfrm4_daddr_saddr_hash(daddr, saddr);
126 h = __xfrm6_daddr_saddr_hash(daddr, saddr);