diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-01-26 22:14:10 -0500 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-01-26 22:14:10 -0500 |
| commit | f7019d9e80efa81e31ee7fa303be4f0e0a85c0fc (patch) | |
| tree | 22bc630e86c2ec1c549cdf546e245811d6d5c0b1 /node/IncomingPacket.cpp | |
| parent | 6d8e1e87830eb24a1ecd6b0a115c39ed43914b5c (diff) | |
| download | infinitytier-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.cpp | 6 |
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); } |
