diff options
Diffstat (limited to 'lib/sockunion.c')
| -rw-r--r-- | lib/sockunion.c | 26 |
1 files changed, 4 insertions, 22 deletions
diff --git a/lib/sockunion.c b/lib/sockunion.c index c37ab1d6dd..7acb5004db 100644 --- a/lib/sockunion.c +++ b/lib/sockunion.c @@ -403,8 +403,7 @@ int sockunion_same(const union sockunion *su1, const union sockunion *su2) sizeof(struct in_addr)); break; case AF_INET6: - ret = memcmp(&su1->sin6.sin6_addr, &su2->sin6.sin6_addr, - sizeof(struct in6_addr)); + ret = IPV6_ADDR_CMP(&su1->sin6.sin6_addr, &su2->sin6.sin6_addr); if ((ret == 0) && IN6_IS_ADDR_LINKLOCAL(&su1->sin6.sin6_addr)) { /* compare interface indices */ if (su1->sin6.sin6_scope_id && su2->sin6.sin6_scope_id) @@ -588,23 +587,6 @@ static void __attribute__((unused)) sockunion_print(const union sockunion *su) } } -int in6addr_cmp(const struct in6_addr *addr1, const struct in6_addr *addr2) -{ - unsigned int i; - const uint8_t *p1, *p2; - - p1 = (const uint8_t *)addr1; - p2 = (const uint8_t *)addr2; - - for (i = 0; i < sizeof(struct in6_addr); i++) { - if (p1[i] > p2[i]) - return 1; - else if (p1[i] < p2[i]) - return -1; - } - return 0; -} - int sockunion_cmp(const union sockunion *su1, const union sockunion *su2) { if (su1->sa.sa_family > su2->sa.sa_family) @@ -621,7 +603,8 @@ int sockunion_cmp(const union sockunion *su1, const union sockunion *su2) return -1; } if (su1->sa.sa_family == AF_INET6) - return in6addr_cmp(&su1->sin6.sin6_addr, &su2->sin6.sin6_addr); + return IPV6_ADDR_CMP(&su1->sin6.sin6_addr, &su2->sin6.sin6_addr); + return 0; } @@ -727,8 +710,7 @@ int sockunion_is_null(const union sockunion *su) case AF_INET: return (su->sin.sin_addr.s_addr == 0); case AF_INET6: - return !memcmp(su->sin6.sin6_addr.s6_addr, null_s6_addr, - sizeof(null_s6_addr)); + return !IPV6_ADDR_CMP(su->sin6.sin6_addr.s6_addr, null_s6_addr); default: return 0; } |
