Check multicast limit on send after NDP emulation code.

This commit is contained in:
Adam Ierymenko 2016-09-28 12:21:08 -07:00
parent 7e90ab3534
commit e1fbf7b34c

View File

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