ctdb_sys_have_ip: fix ipv6 support for aix, too.
authorMichael Adam <obnox@samba.org>
Mon, 19 Jan 2009 18:08:37 +0000 (19:08 +0100)
committerMichael Adam <obnox@samba.org>
Mon, 19 Jan 2009 21:49:12 +0000 (22:49 +0100)
Michael

Signed-off-by: Michael Adam <obnox@samba.org>
(This used to be ctdb commit 8b5f1e80e3e2e9ca2198e1baee8af36aa5d6c5b5)

ctdb/common/system_aix.c

index 8fe630d8a39e04bf86bc2e54345e3f8a7dc52cff..d5ca4778646a8e4c8619ad5af525bd018ba9e38b 100644 (file)
@@ -194,12 +194,22 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
   we try to bind to it, and if that fails then we don't have that IP
   on an interface
  */
-bool ctdb_sys_have_ip(ctdb_sock_addr *addr)
+bool ctdb_sys_have_ip(ctdb_sock_addr *_addr)
 {
        int s;
        int ret;
+       ctdb_sock_addr __addr = *_addr;
+       ctdb_sock_addr *addr = &__addr;
        
-       addr->ip.sin_port = 0;
+       switch (addr->sa.sa_family) {
+       case AF_INET:
+               addr->ip.sin_port = 0;
+               break;
+       case AF_INET6:
+               addr->ip6.sin6_port = 0;
+               break;
+       }
+
        s = socket(addr->sa.sa_family, SOCK_STREAM, IPPROTO_TCP);
        if (s == -1) {
                return false;