|
@@ -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.
|