]> git.ipfire.org Git - people/ms/libloc.git/blobdiff - src/loc/private.h
Fix getting wrong bits in IP addresses
[people/ms/libloc.git] / src / loc / private.h
index 7008fdf09e1f9ce9723dc7c0edea55926dcc7835..ce4c357f2a0757eb911c9373ecd4abf1c9cccd76 100644 (file)
@@ -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