Many of our supported platforms do not have this declaration, for example solaris2.6 thru 2.7. Lack of ss_family implies no IPV6 support, so we can wrap all the ss_family references in an ifndef NO_IPV6, and assume sockaddr_in otherwise. Actually, the test for setting NO_IPV6 at configure time is still too optimistic and I have to manually pass '-DNO_IPV6' in CPPFLAGS at build time on aix-5.2.0.0 and earlier, and irix-6.5 and older for them to pick up the right branch. --- daemon.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/daemon.c b/daemon.c index 6bc1c23..c9ea500 100644 --- a/daemon.c +++ b/daemon.c @@ -591,17 +591,23 @@ static int execute(struct sockaddr *addr) static int addrcmp(const struct sockaddr_storage *s1, const struct sockaddr_storage *s2) { +#ifndef NO_IPV6 if (s1->ss_family != s2->ss_family) return s1->ss_family - s2->ss_family; if (s1->ss_family == AF_INET) return memcmp(&((struct sockaddr_in *)s1)->sin_addr, &((struct sockaddr_in *)s2)->sin_addr, sizeof(struct in_addr)); -#ifndef NO_IPV6 if (s1->ss_family == AF_INET6) return memcmp(&((struct sockaddr_in6 *)s1)->sin6_addr, &((struct sockaddr_in6 *)s2)->sin6_addr, sizeof(struct in6_addr)); +#else + /* Assume AF_INET or equivalent for the likes of Solaris 2.7, + HP/UX 11.00 and others do not implement ss_family */ + return memcmp(&((struct sockaddr_in *)s1)->sin_addr, + &((struct sockaddr_in *)s2)->sin_addr, + sizeof(struct in_addr)); #endif return 0; } -- 1.7.0.2 -- Gary V. Vaughan (gary@xxxxxxxxxxxxxxxxxx) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html