X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Finclude%2Fsockaddr.h;h=a1c30f9bea5da5746f80668c5463ba11fc2e7f6f;hp=9af25439c7d59c60ec5fca8bcafad53be185a5ff;hb=88d745b004cc0d57ce668829ca08c5d5dc3e6a9e;hpb=6318d601cf182d2848d397af323ca9c4fbdecb97 diff --git a/support/include/sockaddr.h b/support/include/sockaddr.h index 9af2543..a1c30f9 100644 --- a/support/include/sockaddr.h +++ b/support/include/sockaddr.h @@ -20,7 +20,13 @@ #ifndef NFS_UTILS_SOCKADDR_H #define NFS_UTILS_SOCKADDR_H +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef HAVE_LIBIO_H #include +#endif #include #include #include @@ -193,16 +199,14 @@ compare_sockaddr6(const struct sockaddr *sa1, const struct sockaddr *sa2) { const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sa1; const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sa2; + const struct in6_addr *saddr1 = &sin1->sin6_addr; + const struct in6_addr *saddr2 = &sin2->sin6_addr; - if ((IN6_IS_ADDR_LINKLOCAL((char *)&sin1->sin6_addr) && - IN6_IS_ADDR_LINKLOCAL((char *)&sin2->sin6_addr)) || - (IN6_IS_ADDR_SITELOCAL((char *)&sin1->sin6_addr) && - IN6_IS_ADDR_SITELOCAL((char *)&sin2->sin6_addr))) + if (IN6_IS_ADDR_LINKLOCAL(saddr1) && IN6_IS_ADDR_LINKLOCAL(saddr2)) if (sin1->sin6_scope_id != sin2->sin6_scope_id) return false; - return IN6_ARE_ADDR_EQUAL((char *)&sin1->sin6_addr, - (char *)&sin2->sin6_addr); + return IN6_ARE_ADDR_EQUAL(saddr1, saddr2); } #else /* !IPV6_SUPPORTED */ static inline _Bool