summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-28 12:21:08 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-28 12:21:08 -0700
commite1fbf7b34c0e9db6c6845238bc553fc470857fef (patch)
tree050c25d12b2e7d28c19d987a25ef7f3bf1ba6298 /node
parent7e90ab3534e414ef9dde93ec5a74ee2717092fb8 (diff)
downloadinfinitytier-e1fbf7b34c0e9db6c6845238bc553fc470857fef.tar.gz
infinitytier-e1fbf7b34c0e9db6c6845238bc553fc470857fef.zip
Check multicast limit on send after NDP emulation code.
Diffstat (limited to 'node')
-rw-r--r--node/Switch.cpp11
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.