From: Matthias Bolte Date: Fri, 24 Jun 2011 15:32:56 +0000 (+0200) Subject: tests: Improve IPv6 detection for virNetSocket tests X-Git-Tag: v0.9.3-rc1~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d772167f6d757f283d819f7860b8e7d18b6ed861;p=thirdparty%2Flibvirt.git tests: Improve IPv6 detection for virNetSocket tests getifaddrs can return an IPv6 address, but getaddrinfo can fail for an IPv6 address. Cover this combination. --- diff --git a/tests/virnetsockettest.c b/tests/virnetsockettest.c index f686a15c50..f6c72743c6 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);