From e14564aa73ca484094414db249b77dea80c800ed Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 30 Jan 2018 23:28:21 +0000 Subject: [PATCH] Refactor compating IP addresses memcmp does not seem to be the best choice here. This function is a naive implementation but does the job very well. Signed-off-by: Michael Tremer --- src/loc/private.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/loc/private.h b/src/loc/private.h index 2788705..7008fdf 100644 --- a/src/loc/private.h +++ b/src/loc/private.h @@ -58,7 +58,15 @@ void loc_log(struct loc_ctx *ctx, const char *format, ...) __attribute__((format(printf, 6, 7))); static inline int in6_addr_cmp(const struct in6_addr* a1, const struct in6_addr* a2) { - return memcmp(&a1->s6_addr, &a2->s6_addr, sizeof(a1->s6_addr)); + for (unsigned int i = 0; i < 16; i++) { + if (a1->s6_addr[i] > a2->s6_addr[i]) + return 1; + + else if (a1->s6_addr[i] < a2->s6_addr[i]) + return -1; + } + + return 0; } static inline int in6_addr_get_bit(const struct in6_addr* address, unsigned int i) { -- 2.39.2