summaryrefslogtreecommitdiff
path: root/lib/sockunion.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sockunion.c')
-rw-r--r--lib/sockunion.c26
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;
}