summaryrefslogtreecommitdiff
path: root/node/EthernetTap.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/EthernetTap.hpp')
-rw-r--r--node/EthernetTap.hpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/node/EthernetTap.hpp b/node/EthernetTap.hpp
index 1b35aefb..02bd25ae 100644
--- a/node/EthernetTap.hpp
+++ b/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
}
/**