diff options
-rw-r--r-- | lib/hash.h | 3 | ||||
-rw-r--r-- | nest/rt-attr.c | 2 |
2 files changed, 3 insertions, 2 deletions
@@ -184,7 +184,8 @@ mem_hash(void *p, int s) const char *pp = p; const u64 multiplier = 0xb38bc09a61202731ULL; u64 value = 0x001047d54778bcafULL; - for (int i=0;i<s;i++) + int i; + for (i=0;i<s;i++) value = value*multiplier + pp[i]; return ((value >> 32) ^ (value & 0xffffffff)); diff --git a/nest/rt-attr.c b/nest/rt-attr.c index 9777a2d2..7d9605c2 100644 --- a/nest/rt-attr.c +++ b/nest/rt-attr.c @@ -946,7 +946,7 @@ rta_alloc_hash(void) static inline uint rta_hash(rta *a) { - return mem_hash(a + offsetof(rta, src), sizeof(rta) - offsetof(rta, src)) ^ + return mem_hash(((void *)a) + offsetof(rta, src), sizeof(rta) - offsetof(rta, src)) ^ mpnh_hash(a->nexthops) ^ ea_hash(a->eattrs); } |