Commit f7550295 authored by Martin Pool's avatar Martin Pool

compare_addrinfo_sockaddr: Add code to compare AF_INET6 addresses.

parent 974f27e7
...@@ -185,6 +185,7 @@ int compare_addrinfo_sockaddr(const struct addrinfo *ai, ...@@ -185,6 +185,7 @@ int compare_addrinfo_sockaddr(const struct addrinfo *ai,
{ {
int ss_family = get_sockaddr_family(ss); int ss_family = get_sockaddr_family(ss);
const char fn[] = "compare_addrinfo_sockaddr"; const char fn[] = "compare_addrinfo_sockaddr";
size_t valid_len;
if (ai->ai_family != ss_family) { if (ai->ai_family != ss_family) {
rprintf(FERROR, rprintf(FERROR,
...@@ -193,25 +194,21 @@ int compare_addrinfo_sockaddr(const struct addrinfo *ai, ...@@ -193,25 +194,21 @@ int compare_addrinfo_sockaddr(const struct addrinfo *ai,
return 1; return 1;
} }
/* The comparison method depends on the particular AF. */ switch (ss_family) {
if (ss_family == AF_INET) { case AF_INET:
const struct sockaddr_in *sin1, *sin2; valid_len = sizeof (struct sockaddr_in);
break;
sin1 = (const struct sockaddr_in *) ss;
sin2 = (const struct sockaddr_in *) ai->ai_addr;
return memcmp(sin1, sin2, sizeof *sin1);
}
#ifdef INET6 #ifdef INET6
else if (ss_family == AF_INET6) { case AF_INET6:
/* XXXX */ valid_len = sizeof (struct sockaddr_in6);
return 1; break;
} #endif
#endif /* INET6 */ default:
else { /* Don't know what to do! */
/* don't know */
return 1; return 1;
} }
return memcmp(ss, ai->ai_addr, valid_len);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment