Set IPV6_PROTECTION_LEVEL to PROTECTION_LEVEL_UNRESTRICTED for relay sockets

This commit is contained in:
Cameron Gutman 2019-08-08 00:11:16 -07:00
parent 7b395a9f2f
commit a19f510724

View File

@ -296,6 +296,7 @@ int StartTcpRelay(unsigned short Port)
SOCKADDR_IN6 addr6;
HANDLE thread;
PLISTENER_TUPLE tuple;
DWORD val;
listeningSocket = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
if (listeningSocket == INVALID_SOCKET) {
@ -303,6 +304,11 @@ int StartTcpRelay(unsigned short Port)
return WSAGetLastError();
}
val = PROTECTION_LEVEL_UNRESTRICTED;
if (setsockopt(listeningSocket, IPPROTO_IPV6, IPV6_PROTECTION_LEVEL, (char*)&val, sizeof(val)) == SOCKET_ERROR) {
printf("setsockopt(IPV6_PROTECTION_LEVEL) failed: %d\n", WSAGetLastError());
}
RtlZeroMemory(&addr6, sizeof(addr6));
addr6.sin6_family = AF_INET6;
addr6.sin6_port = htons(Port);
@ -513,6 +519,11 @@ int StartUdpRelay(unsigned short Port)
return WSAGetLastError();
}
val = PROTECTION_LEVEL_UNRESTRICTED;
if (setsockopt(ipv6Socket, IPPROTO_IPV6, IPV6_PROTECTION_LEVEL, (char*)&val, sizeof(val)) == SOCKET_ERROR) {
printf("setsockopt(IPV6_PROTECTION_LEVEL) failed: %d\n", WSAGetLastError());
}
RtlZeroMemory(&addr6, sizeof(addr6));
addr6.sin6_family = AF_INET6;
addr6.sin6_port = htons(Port);