From 20e3a06f9e082a62a925b2b1de7d1d78f4c6368f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 31 Jan 2018 21:45:21 +0000 Subject: [PATCH] Fix getting wrong bits in IP addresses Signed-off-by: Michael Tremer --- src/loc/private.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/loc/private.h b/src/loc/private.h index 7008fdf..ce4c357 100644 --- a/src/loc/private.h +++ b/src/loc/private.h @@ -70,11 +70,11 @@ static inline int in6_addr_cmp(const struct in6_addr* a1, const struct in6_addr* } static inline int in6_addr_get_bit(const struct in6_addr* address, unsigned int i) { - return ((address->s6_addr[i / 8] >> (i % 8)) & 1); + return ((address->s6_addr[i / 8] >> (7 - (i % 8))) & 1); } static inline void in6_addr_set_bit(struct in6_addr* address, unsigned int i, unsigned int val) { - address->s6_addr[i / 8] ^= (-val ^ address->s6_addr[i / 8]) & (1 << (i % 8)); + address->s6_addr[i / 8] ^= (-val ^ address->s6_addr[i / 8]) & (1 << (7 - (i % 8))); } #endif -- 2.39.2