From 51f46a009a7de20153ff9594a407c55684468a1e Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 6 Apr 2015 18:27:24 -0700 Subject: Multicast group join/leave and group membership announcement. --- node/Node.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'node/Node.cpp') diff --git a/node/Node.cpp b/node/Node.cpp index 29262eda..2167d9c1 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -151,10 +151,18 @@ ZT1_ResultCode Node::leave(uint64_t nwid) ZT1_ResultCode Node::multicastSubscribe(uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi) { + Mutex::Lock _l(_networks_m); + std::map< uint64_t,SharedPtr >::iterator nw(_networks.find(nwid)); + if (nw != _networks.end()) + nw->second->multicastSubscribe(MulticastGroup(MAC(multicastGroup,(uint32_t)(multicastAdi & 0xffffffff)))); } ZT1_ResultCode Node::multicastUnsubscribe(uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi) { + Mutex::Lock _l(_networks_m); + std::map< uint64_t,SharedPtr >::iterator nw(_networks.find(nwid)); + if (nw != _networks.end()) + nw->second->multicastUnsubscribe(MulticastGroup(MAC(multicastGroup,(uint32_t)(multicastAdi & 0xffffffff)))); } void Node::status(ZT1_NodeStatus *status) @@ -167,9 +175,17 @@ ZT1_PeerList *Node::peers() ZT1_VirtualNetworkConfig *Node::networkConfig(uint64_t nwid) { + Mutex::Lock _l(_networks_m); + std::map< uint64_t,SharedPtr >::iterator nw(_networks.find(nwid)); + if (nw != _networks.end()) { + ZT1_VirtualNetworkConfig *nc = (ZT1_VirtualNetworkConfig *)::malloc(sizeof(ZT1_VirtualNetworkConfig)); + nw->second->externalConfig(nc); + return nc; + } + return (ZT1_VirtualNetworkConfig *)0; } -ZT1_VirtualNetworkList *Node::listNetworks() +ZT1_VirtualNetworkList *Node::networks() { } @@ -344,7 +360,7 @@ void ZT1_Node_status(ZT1_Node *node,ZT1_NodeStatus *status) ZT1_PeerList *ZT1_Node_peers(ZT1_Node *node) { try { - return reinterpret_cast(node)->peers(); + return reinterpret_cast(node)->listPeers(); } catch ( ... ) { return (ZT1_PeerList *)0; } @@ -359,7 +375,7 @@ ZT1_VirtualNetworkConfig *ZT1_Node_networkConfig(ZT1_Node *node,uint64_t nwid) } } -ZT1_VirtualNetworkList *ZT1_Node_listNetworks(ZT1_Node *node) +ZT1_VirtualNetworkList *ZT1_Node_networks(ZT1_Node *node) { try { return reinterpret_cast(node)->listNetworks(); -- cgit v1.2.3