diff --git a/lib/hash.h b/lib/hash.h index f4a953a3..b0641466 100644 --- a/lib/hash.h +++ b/lib/hash.h @@ -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> 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); }