From 2eaac3891ec5f6da0ba9577bd032fd692392dd40 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Sat, 6 Jul 2013 15:56:12 -0400 Subject: Enable ff:ff:ff:ff:ff:ff w/no ADI a.k.a. broadcast. YOLO. --- node/EthernetTap.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'node/EthernetTap.cpp') diff --git a/node/EthernetTap.cpp b/node/EthernetTap.cpp index 596cc5c2..68884464 100644 --- a/node/EthernetTap.cpp +++ b/node/EthernetTap.cpp @@ -31,6 +31,10 @@ #include "Logger.hpp" #include "RuntimeEnvironment.hpp" #include "Mutex.hpp" +#include "MulticastGroup.hpp" + +// ff:ff:ff:ff:ff:ff with no ADI +static const ZeroTier::MulticastGroup _blindWildcardMulticastGroup(ZeroTier::MAC(0xff),0); /* ======================================================================== */ #if defined(__linux__) || defined(linux) || defined(__LINUX__) || defined(__linux) @@ -337,6 +341,8 @@ bool EthernetTap::updateMulticastGroups(std::set &groups) bool changed = false; + newGroups.insert(_blindWildcardMulticastGroup); // always join this + for(std::set::iterator mg(newGroups.begin());mg!=newGroups.end();++mg) { if (!groups.count(*mg)) { groups.insert(*mg); @@ -658,6 +664,8 @@ bool EthernetTap::updateMulticastGroups(std::set &groups) bool changed = false; + newGroups.insert(_blindWildcardMulticastGroup); // always join this + for(std::set::iterator mg(newGroups.begin());mg!=newGroups.end();++mg) { if (!groups.count(*mg)) { groups.insert(*mg); -- cgit v1.2.3