Always use IPv6 for the server if a "dual stack" is available. This means a server on vista (as well as most linux systems) will support IPv6 by default. IPv4 requests will be mapped by the OS.
This commit is contained in:
@@ -21,20 +21,20 @@
|
||||
#include <net/socket_helper.h>
|
||||
|
||||
|
||||
bool
|
||||
socket_has_sctp()
|
||||
{
|
||||
#ifdef IPPROTO_SCTP
|
||||
SOCKET test = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
|
||||
|
||||
if (test == INVALID_SOCKET)
|
||||
return false;
|
||||
CLOSESOCKET(test);
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
bool
|
||||
socket_has_sctp()
|
||||
{
|
||||
#ifdef IPPROTO_SCTP
|
||||
SOCKET test = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
|
||||
|
||||
if (test == INVALID_SOCKET)
|
||||
return false;
|
||||
CLOSESOCKET(test);
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
socket_has_ipv6()
|
||||
@@ -47,3 +47,19 @@ socket_has_ipv6()
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
socket_has_dual_stack()
|
||||
{
|
||||
bool retVal = false;
|
||||
SOCKET test = socket(AF_INET6, SOCK_STREAM, 0);
|
||||
|
||||
if (test != INVALID_SOCKET)
|
||||
{
|
||||
int ipv6only = 0;
|
||||
if (setsockopt(test, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&ipv6only, sizeof(ipv6only)) == 0)
|
||||
retVal = true;
|
||||
CLOSESOCKET(test);
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user