Browse Source

Manually generate IPv6 link-local address only on Mac.

Adam Ierymenko 11 years ago
parent
commit
2a3e646b94
1 changed files with 11 additions and 3 deletions
  1. 11 3
      node/EthernetTap.hpp

+ 11 - 3
node/EthernetTap.hpp

@@ -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
 	}
 
 	/**