From 373dfdd57b508fc53db33e7044c9d587eadfa62b Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 7 Feb 2013 18:50:07 +0100 Subject: cmake: Check correctly for IPv6. --- ConfigureChecks.cmake | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'ConfigureChecks.cmake') diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 6cb45d0..d68578f 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -91,8 +91,46 @@ check_prototype_definition(gettimeofday "sys/time.h" HAVE_GETTIMEOFDAY_TZ) -# TODO -set(HAVE_IPV6 TRUE) +# IPV6 +check_c_source_compiles(" + #include + #include + #include + #include + #include + +int main(void) { + struct sockaddr_storage sa_store; + struct addrinfo *ai = NULL; + struct in6_addr in6addr; + int idx = if_nametoindex(\"iface1\"); + int s = socket(AF_INET6, SOCK_STREAM, 0); + int ret = getaddrinfo(NULL, NULL, NULL, &ai); + if (ret != 0) { + const char *es = gai_strerror(ret); + } + + freeaddrinfo(ai); + { + int val = 1; +#ifdef HAVE_LINUX_IPV6_V6ONLY_26 +#define IPV6_V6ONLY 26 +#endif + ret = setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, + (const void *)&val, sizeof(val)); + } + + return 0; +}" HAVE_IPV6) + +check_c_source_compiles(" +#include + +int main(void) { + struct sockaddr_storage s; + + return 0; +}" HAVE_SOCKADDR_STORAGE) # ENDIAN if (NOT WIN32) -- cgit