summaryrefslogtreecommitdiff
path: root/node/IncomingPacket.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2018-01-26 22:14:10 -0500
committerAdam Ierymenko <adam.ierymenko@gmail.com>2018-01-26 22:14:10 -0500
commitf7019d9e80efa81e31ee7fa303be4f0e0a85c0fc (patch)
tree22bc630e86c2ec1c549cdf546e245811d6d5c0b1 /node/IncomingPacket.cpp
parent6d8e1e87830eb24a1ecd6b0a115c39ed43914b5c (diff)
downloadinfinitytier-f7019d9e80efa81e31ee7fa303be4f0e0a85c0fc.tar.gz
infinitytier-f7019d9e80efa81e31ee7fa303be4f0e0a85c0fc.zip
Tie up the rest of hub and spoke designated replicator multicast mode.
Diffstat (limited to 'node/IncomingPacket.cpp')
-rw-r--r--node/IncomingPacket.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp
index 8a6f4bc5..ff4fc94b 100644
--- a/node/IncomingPacket.cpp
+++ b/node/IncomingPacket.cpp
@@ -1019,6 +1019,11 @@ bool IncomingPacket::_doMULTICAST_FRAME(const RuntimeEnvironment *RR,void *tPtr,
return true;
}
+ const uint8_t *const frameData = (const uint8_t *)field(offset + ZT_PROTO_VERB_MULTICAST_FRAME_IDX_FRAME,frameLen);
+
+ if ((flags & 0x08)&&(network->config().isMulticastReplicator(RR->identity.address())))
+ RR->mc->send(tPtr,RR->node->now(),network,peer->address(),to,from,etherType,frameData,frameLen);
+
if (from != MAC(peer->address(),nwid)) {
if (network->config().permitsBridging(peer->address())) {
network->learnBridgeRoute(from,peer->address());
@@ -1029,7 +1034,6 @@ bool IncomingPacket::_doMULTICAST_FRAME(const RuntimeEnvironment *RR,void *tPtr,
}
}
- const uint8_t *const frameData = (const uint8_t *)field(offset + ZT_PROTO_VERB_MULTICAST_FRAME_IDX_FRAME,frameLen);
if (network->filterIncomingPacket(tPtr,peer,RR->identity.address(),from,to.mac(),frameData,frameLen,etherType,0) > 0)
RR->node->putFrame(tPtr,nwid,network->userPtr(),from,to.mac(),etherType,0,(const void *)frameData,frameLen);
}