bool use_ipv6;
int af;
-#ifdef AF_INET6
+#ifdef HAVE_GETADDRINFO
use_ipv6 = true;
af = AF_INET6;
#else
} else {
// - Socket creation succeeded
if (use_ipv6) {
+#ifdef IPV6_V6ONLY
// - We made an IPv6-capable socket, and we need it to do IPv4 too
int opt = 0;
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &opt, sizeof(opt));
+#else
+ vlog.error("IPV6_V6ONLY support is missing. "
+ "IPv4 clients may not be able to connect.");
+#endif
}
}
// - Bind it to the desired port
struct sockaddr_in addr;
+#ifdef HAVE_GETADDRINFO
struct sockaddr_in6 addr6;
+#endif
struct sockaddr *sa;
int sa_len;
+
+#ifdef HAVE_GETADDRINFO
if (use_ipv6) {
memset(&addr6, 0, (sa_len = sizeof(addr6)));
addr6.sin6_family = af;
if (use_ipv6)
sa = (struct sockaddr *)&addr6;
}
+#endif
if (!use_ipv6) {
memset(&addr, 0, (sa_len = sizeof(addr)));