diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-28 12:21:08 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-28 12:21:08 -0700 |
commit | e1fbf7b34c0e9db6c6845238bc553fc470857fef (patch) | |
tree | 050c25d12b2e7d28c19d987a25ef7f3bf1ba6298 /node | |
parent | 7e90ab3534e414ef9dde93ec5a74ee2717092fb8 (diff) | |
download | infinitytier-e1fbf7b34c0e9db6c6845238bc553fc470857fef.tar.gz infinitytier-e1fbf7b34c0e9db6c6845238bc553fc470857fef.zip |
Check multicast limit on send after NDP emulation code.
Diffstat (limited to 'node')
-rw-r--r-- | node/Switch.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/node/Switch.cpp b/node/Switch.cpp index 6611d6b6..75898d21 100644 --- a/node/Switch.cpp +++ b/node/Switch.cpp @@ -349,11 +349,6 @@ void Switch::onLocalEthernet(const SharedPtr<Network> &network,const MAC &from,c } if (to.isMulticast()) { - if (network->config().multicastLimit == 0) { - TRACE("%.16llx: dropped multicast: not allowed on network",network->id()); - return; - } - MulticastGroup multicastGroup(to,0); if (to.isBroadcast()) { @@ -457,6 +452,12 @@ void Switch::onLocalEthernet(const SharedPtr<Network> &network,const MAC &from,c } // else no NDP emulation } + // Check this after NDP emulation, since that has to be allowed in exactly this case + if (network->config().multicastLimit == 0) { + TRACE("%.16llx: dropped multicast: not allowed on network",network->id()); + return; + } + /* Learn multicast groups for bridged-in hosts. * Note that some OSes, most notably Linux, do this for you by learning * multicast addresses on bridge interfaces and subscribing each slave. |