From: Jan Moskyto Matejka Date: Fri, 13 May 2016 11:46:46 +0000 (+0200) Subject: Hash: Fix of previous commit X-Git-Tag: v2.0.0-pre0~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d39d41fbda2ec86ea2bac27308eb4fb16ecc4702;p=thirdparty%2Fbird.git Hash: Fix of previous commit --- diff --git a/lib/hash.h b/lib/hash.h index b86a2eb13..c2fd8bca5 100644 --- a/lib/hash.h +++ b/lib/hash.h @@ -178,34 +178,35 @@ #define HASH_WALK_FILTER_END } while (0) -typedef mem_hash_t u64; - static inline void -mem_hash_init(mem_hash_t *h) +mem_hash_init(u64 *h) { *h = 0x001047d54778bcafULL; } static inline void -mem_hash_mix(mem_hash_t *h, void *p, int s) +mem_hash_mix(u64 *h, void *p, int s) { const u64 multiplier = 0xb38bc09a61202731ULL; const char *pp = p; uint i; - for (i=0; i> 32) ^ (value & 0xffffffff)); + return ((*h >> 32) ^ (*h & 0xffffffff)); } static inline uint mem_hash(void *p, int s) { - static mem_hash_t h; + static u64 h; mem_hash_init(&h); mem_hash_mix(&h, p, s); return mem_hash_value(&h); diff --git a/nest/rt-attr.c b/nest/rt-attr.c index 62340530a..6ec69a7fd 100644 --- a/nest/rt-attr.c +++ b/nest/rt-attr.c @@ -946,9 +946,9 @@ rta_alloc_hash(void) static inline uint rta_hash(rta *a) { - mem_hash_t h; + u64 h; mem_hash_init(&h); -#define MIX(f) mem_hash_mix(&h, &(rta->f), sizeof(rta->f)); +#define MIX(f) mem_hash_mix(&h, &(a->f), sizeof(a->f)); MIX(src); MIX(hostentry); MIX(iface); @@ -961,6 +961,7 @@ rta_hash(rta *a) MIX(dest); MIX(flags); MIX(aflags); +#undef MIX return mem_hash_value(&h) ^ mpnh_hash(a->nexthops) ^ ea_hash(a->eattrs); }