removed function signature
[ana-net.git] / src / xt_hash.h
blob4f52531e449e353157fad7c83875c40477eb5843
1 /*
2 * Lightweight Autonomic Network Architecture
4 * Copyright 2011 Daniel Borkmann <dborkma@tik.ee.ethz.ch>,
5 * Swiss federal institute of technology (ETH Zurich)
6 * Subject to the GPL.
7 */
9 #ifndef XT_HASH_H
10 #define XT_HASH_H
12 #include <linux/types.h>
14 /* Default: 512 slots */
15 #define HASHTPO2SIZ 9
16 #define HASHSIZE(n) ((__u32) 1 << (n))
17 #define HASHTSIZ (HASHSIZE(HASHTPO2SIZ))
18 #define HASHMASK(n) (HASHSIZE(n) - 1)
19 #define HASHSLOT(n) ((n) & HASHMASK(HASHTPO2SIZ))
20 #define HASHINITVAL 0xACDC
22 #define ROT(x,k) (((x) << (k)) | ((x) >> (32 - (k))))
24 #define MIX(a, b, c) { \
25 a -= c; a ^= ROT(c, 4); c += b; \
26 b -= a; b ^= ROT(a, 6); a += c; \
27 c -= b; c ^= ROT(b, 8); b += a; \
28 a -= c; a ^= ROT(c, 16); c += b; \
29 b -= a; b ^= ROT(a, 19); a += c; \
30 c -= b; c ^= ROT(b, 4); b += a; }
32 #define FINAL(a, b, c) { \
33 c ^= b; c -= ROT(b, 14); \
34 a ^= c; a -= ROT(c, 11); \
35 b ^= a; b -= ROT(a, 25); \
36 c ^= b; c -= ROT(b, 16); \
37 a ^= c; a -= ROT(c, 4); \
38 b ^= a; b -= ROT(a, 14); \
39 c ^= b; c -= ROT(b, 24); }
41 static inline __u32 hash_idp(const idp_t k)
43 return HASHSLOT(k);
46 static inline __u32 hash_idp2(const idp_t k)
48 __u32 a,b,c;
49 a = b = c = 0xdeadbeef + (((uint32_t) 1) << 2) + HASHINITVAL;
50 a =+ k;
51 FINAL(a, b, c);
52 return HASHSLOT(c);
55 #endif /* XT_HASH_H */