|
|
|
|
@ -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<MulticastGroup> &groups)
|
|
|
|
|
|
|
|
|
|
bool changed = false; |
|
|
|
|
|
|
|
|
|
newGroups.insert(_blindWildcardMulticastGroup); // always join this
|
|
|
|
|
|
|
|
|
|
for(std::set<MulticastGroup>::iterator mg(newGroups.begin());mg!=newGroups.end();++mg) { |
|
|
|
|
if (!groups.count(*mg)) { |
|
|
|
|
groups.insert(*mg); |
|
|
|
|
@ -658,6 +664,8 @@ bool EthernetTap::updateMulticastGroups(std::set<MulticastGroup> &groups)
|
|
|
|
|
|
|
|
|
|
bool changed = false; |
|
|
|
|
|
|
|
|
|
newGroups.insert(_blindWildcardMulticastGroup); // always join this
|
|
|
|
|
|
|
|
|
|
for(std::set<MulticastGroup>::iterator mg(newGroups.begin());mg!=newGroups.end();++mg) { |
|
|
|
|
if (!groups.count(*mg)) { |
|
|
|
|
groups.insert(*mg); |
|
|
|
|
|