From f75502950b37cf202332387df3af2dec27e65535 Mon Sep 17 00:00:00 2001 From: Martin Pool Date: Fri, 25 Jan 2002 02:37:20 +0000 Subject: [PATCH] compare_addrinfo_sockaddr: Add code to compare AF_INET6 addresses. --- clientname.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/clientname.c b/clientname.c index 41bdeda9..f83eb8d3 100644 --- a/clientname.c +++ b/clientname.c @@ -185,6 +185,7 @@ int compare_addrinfo_sockaddr(const struct addrinfo *ai, { int ss_family = get_sockaddr_family(ss); const char fn[] = "compare_addrinfo_sockaddr"; + size_t valid_len; if (ai->ai_family != ss_family) { rprintf(FERROR, @@ -193,25 +194,21 @@ int compare_addrinfo_sockaddr(const struct addrinfo *ai, return 1; } - /* The comparison method depends on the particular AF. */ - if (ss_family == AF_INET) { - const struct sockaddr_in *sin1, *sin2; - - sin1 = (const struct sockaddr_in *) ss; - sin2 = (const struct sockaddr_in *) ai->ai_addr; - - return memcmp(sin1, sin2, sizeof *sin1); - } + switch (ss_family) { + case AF_INET: + valid_len = sizeof (struct sockaddr_in); + break; #ifdef INET6 - else if (ss_family == AF_INET6) { - /* XXXX */ - return 1; - } -#endif /* INET6 */ - else { - /* don't know */ + case AF_INET6: + valid_len = sizeof (struct sockaddr_in6); + break; +#endif + default: + /* Don't know what to do! */ return 1; } + + return memcmp(ss, ai->ai_addr, valid_len); } -- 2.34.1