mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-07 19:24:13 +00:00
Don't bind to temporary Ipv6 addresses (windows)
This commit is contained in:
parent
810e2a761f
commit
198e6f765c
@ -135,21 +135,25 @@ public:
|
||||
while (a) {
|
||||
PIP_ADAPTER_UNICAST_ADDRESS ua = a->FirstUnicastAddress;
|
||||
while (ua) {
|
||||
InetAddress ip(ua->Address.lpSockaddr);
|
||||
char strBuf[128] = { 0 };
|
||||
wcstombs(strBuf, a->FriendlyName, sizeof(strBuf));
|
||||
if (ifChecker.shouldBindInterface(strBuf,ip)) {
|
||||
switch(ip.ipScope()) {
|
||||
default: break;
|
||||
case InetAddress::IP_SCOPE_PSEUDOPRIVATE:
|
||||
case InetAddress::IP_SCOPE_GLOBAL:
|
||||
case InetAddress::IP_SCOPE_SHARED:
|
||||
case InetAddress::IP_SCOPE_PRIVATE:
|
||||
for(int x=0;x<(int)portCount;++x) {
|
||||
ip.setPort(ports[x]);
|
||||
localIfAddrs.insert(std::pair<InetAddress,std::string>(ip,std::string()));
|
||||
}
|
||||
break;
|
||||
// Don't bind temporary/random IPv6 addresses
|
||||
if (ua->SuffixOrigin != IpSuffixOriginRandom) {
|
||||
InetAddress ip(ua->Address.lpSockaddr);
|
||||
char strBuf[128] = { 0 };
|
||||
wcstombs(strBuf, a->FriendlyName, sizeof(strBuf));
|
||||
if (ifChecker.shouldBindInterface(strBuf, ip)) {
|
||||
switch (ip.ipScope()) {
|
||||
default:
|
||||
break;
|
||||
case InetAddress::IP_SCOPE_PSEUDOPRIVATE:
|
||||
case InetAddress::IP_SCOPE_GLOBAL:
|
||||
case InetAddress::IP_SCOPE_SHARED:
|
||||
case InetAddress::IP_SCOPE_PRIVATE:
|
||||
for (int x = 0; x < (int)portCount; ++x) {
|
||||
ip.setPort(ports[x]);
|
||||
localIfAddrs.insert(std::pair<InetAddress, std::string>(ip, std::string()));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
ua = ua->Next;
|
||||
|
Loading…
x
Reference in New Issue
Block a user