Manually generate IPv6 link-local address only on Mac.

This commit is contained in:
Adam Ierymenko 2014-02-01 14:02:14 -08:00
parent 64231aa3f0
commit 2a3e646b94

View File

@ -148,15 +148,23 @@ public:
for(std::set<InetAddress>::iterator i(allIps.begin());i!=allIps.end();++i)
addIP(*i);
std::set<InetAddress> myIps(ips());
#ifdef __APPLE__
bool haveV6LinkLocal = false;
for(std::set<InetAddress>::iterator i(myIps.begin());i!=myIps.end();++i) {
if ((i->isV6())&&(i->isLinkLocal()))
haveV6LinkLocal = true;
else if (!allIps.count(*i))
if (i->isLinkLocal()) {
if (i->isV6())
haveV6LinkLocal = true;
} else if (!allIps.count(*i))
removeIP(*i);
}
if (!haveV6LinkLocal)
addIP(InetAddress::makeIpv6LinkLocal(_mac));
#else
for(std::set<InetAddress>::iterator i(myIps.begin());i!=myIps.end();++i) {
if ((!i->isLinkLocal())&&(!allIps.count(*i)))
removeIP(*i);
}
#endif
}
/**