getifaddrs can return an IPv6 address, but getaddrinfo can fail for an IPv6 address. Cover this combination. --- This is only tested on my system with broken IPv6. Could someone test this on an IPv6 capable system and ensure that the IPv6 tests aren't skipped now by running cd tests make virnetsockettest PATH=`pwd`:$PATH LIBVIRT_DEBUG=1 ./virnetsockettest This should print something like this 17:35:09.810: 4102: debug : checkProtocols:83 : Protocols: v4 1 v6 1 on an IPv6 capable system. tests/virnetsockettest.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/tests/virnetsockettest.c b/tests/virnetsockettest.c index f686a15..f6c7274 100644 --- a/tests/virnetsockettest.c +++ b/tests/virnetsockettest.c @@ -45,12 +45,16 @@ checkProtocols(bool *hasIPv4, bool *hasIPv6, int *freePort) { struct ifaddrs *ifaddr = NULL, *ifa; + struct addrinfo hints; + struct addrinfo *ai = NULL; struct sockaddr_in in4; struct sockaddr_in6 in6; int s4 = -1, s6 = -1; int i; int ret = -1; + memset(&hints, 0, sizeof hints); + *hasIPv4 = *hasIPv6 = false; *freePort = 0; @@ -67,6 +71,15 @@ checkProtocols(bool *hasIPv4, bool *hasIPv6, *hasIPv6 = true; } + hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; + hints.ai_family = AF_INET6; + hints.ai_socktype = SOCK_STREAM; + + if (getaddrinfo("::1", "5672", &hints, &ai) != 0) + *hasIPv6 = false; + + freeaddrinfo(ai); + VIR_DEBUG("Protocols: v4 %d v6 %d\n", *hasIPv4, *hasIPv6); freeifaddrs(ifaddr); -- 1.7.0.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list