diff options
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() { |