diff options
author | Jonas M. Gastal <jgastal@profusion.mobi> | 2012-05-04 10:18:39 -0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-21 13:00:27 +0200 |
commit | 2c790b251d9e3a30abe8ac63ab50f81c9c7631ce (patch) | |
tree | ee36d0b9fb5e51673314689f0f714a1d40854978 /tests/auto/network-settings.h | |
parent | 63ed8bf07e11a7be236494608e91150e7f084028 (diff) |
Fallback to IPv4 when IPv6 is not present.
In tests when IPv6 is not present QSKIP IPv6 tests.
Task-number: QTBUG-23660
Change-Id: I02abc7322d765a93cbf661e53c76257f03dca73e
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
Diffstat (limited to 'tests/auto/network-settings.h')
-rw-r--r-- | tests/auto/network-settings.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/network-settings.h b/tests/auto/network-settings.h index 4c36e2d308..72ff9bbc33 100644 --- a/tests/auto/network-settings.h +++ b/tests/auto/network-settings.h @@ -44,6 +44,12 @@ #include <QtNetwork/QHostInfo> #endif +#ifdef Q_OS_UNIX +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#endif + class QtNetworkSettings { public: @@ -112,6 +118,27 @@ public: return false; } + static bool hasIPv6() + { +#ifdef Q_OS_UNIX + int s = ::socket(AF_INET6, SOCK_DGRAM, 0); + if (s == -1) + return false; + else { + struct sockaddr_in6 addr; + memset(&addr, 0, sizeof(addr)); + addr.sin6_family = AF_INET6; + memcpy(&addr.sin6_addr, &in6addr_loopback, sizeof(in6_addr)); + if (-1 == ::bind(s, (sockaddr*)&addr, sizeof(addr))) { + ::close(s); + return false; + } + } +#endif + return true; + } + + #ifdef QT_NETWORK_LIB static bool verifyTestNetworkSettings() { |