Add test for "struct in6_addr" to the HAVE_IPV6 configure test.
authorGerald (Jerry) Carter <jerry@samba.org>
Fri, 19 Oct 2007 13:14:12 +0000 (08:14 -0500)
committerJeremy Allison <jra@samba.org>
Fri, 19 Oct 2007 20:09:26 +0000 (13:09 -0700)
Also make use of "if defined(HAVE_IPV6)" rather than testing for
AF_INET6 since this is not sufficient on HP-UX 11.11 to ensure
a working IPv6 implementation.
(This used to be commit 620785df4e57b72471ff0315e22e0d2f28a2b1a5)

source3/configure.in
source3/lib/interface.c
source3/lib/interfaces.c
source3/lib/util_sock.c
source3/smbd/utmp.c

index 5d236237a1959a49d15aa02aadf96d74317fa53f..a96e2d91f67285ee1601a34b2014f2d68cf98545 100644 (file)
@@ -3038,6 +3038,7 @@ AC_TRY_COMPILE([
 [
 struct sockaddr_storage sa_store;
 struct addrinfo *ai = NULL;
+struct in6_addr in6addr;
 int s = socket(AF_INET6, SOCK_STREAM, 0);
 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
 if (ret != 0) {
index 4892ec12486b19f4f488c688ce93dd861d476618..0696329fd66afd8e4140877cdcc3df7a6aadcc66 100644 (file)
@@ -339,7 +339,7 @@ bool make_netmask(struct sockaddr_storage *pss_out,
 {
        *pss_out = *pss_in;
        /* Now apply masklen bits of mask. */
-#if defined(AF_INET6)
+#if defined(HAVE_IPV6)
        if (pss_in->ss_family == AF_INET6) {
                char *p = (char *)&((struct sockaddr_in6 *)pss_out)->sin6_addr;
                unsigned int i;
@@ -386,7 +386,7 @@ static void make_bcast_or_net(struct sockaddr_storage *pss_out,
        *pss_out = *pss_in;
 
        /* Set all zero netmask bits to 1. */
-#if defined(AF_INET6)
+#if defined(HAVE_IPV6)
        if (pss_in->ss_family == AF_INET6) {
                p = (char *)&((struct sockaddr_in6 *)pss_out)->sin6_addr;
                pmask = (char *)&((struct sockaddr_in6 *)nmask)->sin6_addr;
index 2b93a5ba391629533ca7c825371640cc6272082f..3b15e3e87b96f41601dccbe8c8133e0d389326dc 100644 (file)
@@ -128,7 +128,7 @@ static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces)
                        continue;
                }
 
-#ifdef AF_INET6
+#if defined(HAVE_IPV6)
                if (ifptr->ifa_addr->sa_family == AF_INET6) {
                        copy_size = sizeof(struct sockaddr_in6);
                }
@@ -496,7 +496,7 @@ static int iface_comp(struct iface_struct *i1, struct iface_struct *i2)
 {
        int r;
 
-#ifdef AF_INET6
+#if defined(HAVE_IPV6)
        /*
         * If we have IPv6 - sort these interfaces lower
         * than any IPv4 ones.
index eb3b35339c181aa455b49eaec41a51db2c76a54e..c6b1311cf5b8bc494233d22dd28a50f468c4a60b 100644 (file)
@@ -52,7 +52,7 @@ bool is_ipaddress(const char *str)
 {
        int ret = -1;
 
-#if defined(AF_INET6)
+#if defined(HAVE_IPV6)
        struct in6_addr dest6;
 
        ret = inet_pton(AF_INET6, str, &dest6);
@@ -212,7 +212,7 @@ bool is_loopback_ip_v4(struct in_addr ip)
 
 bool is_loopback_addr(const struct sockaddr_storage *pss)
 {
-#if defined(AF_INET6)
+#if defined(HAVE_IPV6)
        if (pss->ss_family == AF_INET) {
                struct in6_addr *pin6 =
                        &((struct sockaddr_in6 *)pss)->sin6_addr;
@@ -243,7 +243,7 @@ bool is_zero_ip_v4(struct in_addr ip)
 
 bool is_zero_addr(const struct sockaddr_storage *pss)
 {
-#if defined(AF_INET6)
+#if defined(HAVE_IPV6)
        if (pss->ss_family == AF_INET) {
                struct in6_addr *pin6 =
                        &((struct sockaddr_in6 *)pss)->sin6_addr;
@@ -302,7 +302,7 @@ void in_addr_to_sockaddr_storage(struct sockaddr_storage *ss,
        sa->sin_addr = ip;
 }
 
-#ifdef AF_INET6
+#if defined(HAVE_IPV6)
 /*******************************************************************
  Convert an IPv6 struct in_addr to a struct sockaddr_storage.
 ********************************************************************/
@@ -330,7 +330,7 @@ bool same_net(const struct sockaddr_storage *ip1,
                return false;
        }
 
-#ifdef AF_INET6
+#if defined(HAVE_IPV6)
        if (ip1->ss_family == AF_INET6) {
                struct sockaddr_in6 ip1_6 = *(struct sockaddr_in6 *)ip1;
                struct sockaddr_in6 ip2_6 = *(struct sockaddr_in6 *)ip2;
@@ -370,7 +370,7 @@ bool addr_equal(const struct sockaddr_storage *ip1,
                return false;
        }
 
-#ifdef AF_INET6
+#if defined(HAVE_IPV6)
        if (ip1->ss_family == AF_INET6) {
                return (memcmp(&((const struct sockaddr_in6 *)ip1)->sin6_addr,
                                &((const struct sockaddr_in6 *)ip2)->sin6_addr,
@@ -392,7 +392,7 @@ bool addr_equal(const struct sockaddr_storage *ip1,
 
 bool is_address_any(const struct sockaddr_storage *psa)
 {
-#ifdef AF_INET6
+#if defined(HAVE_IPV6)
        if (psa->ss_family == AF_INET6) {
                struct sockaddr_in6 *si6 = (struct sockaddr_in6 *)psa;
                if (memcmp(&in6addr_any,
@@ -494,7 +494,7 @@ static int get_socket_port(int fd)
                return -1;
        }
 
-#ifdef AF_INET6
+#if defined(HAVE_IPV6)
        if (sa.ss_family == AF_INET6) {
                return ntohs(((struct sockaddr_in6 *)&sa)->sin6_port);
        }
index e36e2aa042be77dd9c5edbb352337405964d0362..c2908e33cc14bbf51ec825bb36223f18195e20f5 100644 (file)
@@ -525,7 +525,7 @@ static bool sys_utmp_fill(struct utmp *u,
 #if defined(HAVE_UT_UT_HOST)
        utmp_strcpy(u->ut_host, hostname, sizeof(u->ut_host));
 #endif
-#if defined(AF_INET6) && defined(HAVE_UT_UT_ADDR_V6)
+#if defined(HAVE_IPV6) && defined(HAVE_UT_UT_ADDR_V6)
        memset(&u->ut_addr_v6, '\0', sizeof(u->ut_addr_v6));
        if (ip_addr_str) {
                struct in6_addr addr;