From 2a3e646b943724641a5304178109d9b8041bfa36 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Sat, 1 Feb 2014 14:02:14 -0800 Subject: [PATCH] Manually generate IPv6 link-local address only on Mac. --- node/EthernetTap.hpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/node/EthernetTap.hpp b/node/EthernetTap.hpp index 1b35aefbc..02bd25ae7 100644 --- a/node/EthernetTap.hpp +++ b/node/EthernetTap.hpp @@ -148,15 +148,23 @@ public: for(std::set::iterator i(allIps.begin());i!=allIps.end();++i) addIP(*i); std::set myIps(ips()); +#ifdef __APPLE__ bool haveV6LinkLocal = false; for(std::set::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::iterator i(myIps.begin());i!=myIps.end();++i) { + if ((!i->isLinkLocal())&&(!allIps.count(*i))) + removeIP(*i); + } +#endif } /**