From a6f250f5c6d079badc4a1274b19a21a52de6acec Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 20 Dec 1998 13:57:49 +0000 Subject: New hash functions according to benchmarks posted yesterday. (The IPv6 version has not been benchmarked yet due to insufficient test data.) Now ipa_hash() returns a uniformely distributed 16-bit value. --- lib/ipv4.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/ipv4.h') diff --git a/lib/ipv4.h b/lib/ipv4.h index c37ea80..4ae3e95 100644 --- a/lib/ipv4.h +++ b/lib/ipv4.h @@ -61,10 +61,12 @@ typedef u32 ip_addr; int ipv4_classify(u32); u32 ipv4_class_mask(u32); -/* FIXME: Is this hash function uniformly distributed over standard routing tables? */ static inline unsigned ipv4_hash(u32 a) { - return a ^ (a >> 16) ^ (a >> 24); + /* Returns a 16-bit value */ + a ^= a >> 16; + a ^= a << 10; + return a & 0xffff; } #endif -- cgit v1.2.3