From af1d29cc6f02545c1c359c3adf7006041b07d699 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 25 May 2015 11:54:32 -0700 Subject: Remove obsolete method. --- node/Address.hpp | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'node') diff --git a/node/Address.hpp b/node/Address.hpp index 7548d56e..137e4f4f 100644 --- a/node/Address.hpp +++ b/node/Address.hpp @@ -166,23 +166,6 @@ public: return _a; } - /** - * Test whether this address is within a multicast propagation prefix - * - * Multicast propagation prefixes are (right-to-left a.k.a. LSB to MSB) - * bit pattern prefixes of prefixBits bits that restrict which peers are - * visited along a given multicast graph traversal path. - * - * @param prefix Prefix bit pattern (LSB to MSB) - * @param prefixBits Number of bits in prefix bit pattern - * @return True if address is within prefix - */ - inline bool withinMulticastPropagationPrefix(uint64_t prefix,unsigned int prefixBits) const - throw() - { - return ((_a & (0xffffffffffffffffULL >> (64 - prefixBits))) == prefix); - } - /** * @return Hexadecimal string */ -- cgit v1.2.3 From 5e3c6d9e0d89b8284cf60978b658dab12d2814d1 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 25 May 2015 14:21:05 -0700 Subject: Some nodeJS work, and apply fix from GitHub issue #166 plus a small optimization to avoid repeated calls to _allMulticastGroups(). --- node/Network.cpp | 40 +++++++++++++++++++++------------------- node/Network.hpp | 7 ++++++- nodejs-zt1-client/index.js | 23 +++++++++++++++++++++++ 3 files changed, 50 insertions(+), 20 deletions(-) (limited to 'node') diff --git a/node/Network.cpp b/node/Network.cpp index ebff1a5d..deb05d1c 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -139,21 +139,6 @@ Network::~Network() } } -std::vector Network::allMulticastGroups() const -{ - Mutex::Lock _l(_lock); - std::vector mgs(_myMulticastGroups); - std::vector::iterator oldend(mgs.end()); - for(std::map< MulticastGroup,uint64_t >::const_iterator i(_multicastGroupsBehindMe.begin());i!=_multicastGroupsBehindMe.end();++i) { - if (!std::binary_search(mgs.begin(),oldend,i->first)) - mgs.push_back(i->first); - } - if ((_config)&&(_config->enableBroadcast())) - mgs.push_back(Network::BROADCAST); - std::sort(mgs.begin(),mgs.end()); - return mgs; -} - bool Network::subscribedToMulticastGroup(const MulticastGroup &mg,bool includeBridgedGroups) const { Mutex::Lock _l(_lock); @@ -510,6 +495,22 @@ bool Network::_isAllowed(const Address &peer) const return false; // default position on any failure } +std::vector Network::_allMulticastGroups() const +{ + // Assumes _lock is locked + std::vector mgs(_myMulticastGroups); + std::vector::iterator oldend(mgs.end()); + for(std::map< MulticastGroup,uint64_t >::const_iterator i(_multicastGroupsBehindMe.begin());i!=_multicastGroupsBehindMe.end();++i) { + if (!std::binary_search(mgs.begin(),oldend,i->first)) + mgs.push_back(i->first); + } + if ((_config)&&(_config->enableBroadcast())) + mgs.push_back(Network::BROADCAST); + std::sort(mgs.begin(),mgs.end()); + std::unique(mgs.begin(),mgs.end()); + return mgs; +} + // Used in Network::_announceMulticastGroups() class _AnnounceMulticastGroupsToPeersWithActiveDirectPaths { @@ -518,7 +519,8 @@ public: RR(renv), _now(renv->node->now()), _network(nw), - _supernodeAddresses(renv->topology->supernodeAddresses()) + _supernodeAddresses(renv->topology->supernodeAddresses()), + _allMulticastGroups(nw->_allMulticastGroups()) {} inline void operator()(Topology &t,const SharedPtr &p) @@ -526,9 +528,8 @@ public: if ( ( (p->hasActiveDirectPath(_now)) && (_network->_isAllowed(p->address())) ) || (std::find(_supernodeAddresses.begin(),_supernodeAddresses.end(),p->address()) != _supernodeAddresses.end()) ) { Packet outp(p->address(),RR->identity.address(),Packet::VERB_MULTICAST_LIKE); - std::vector mgs(_network->allMulticastGroups()); - for(std::vector::iterator mg(mgs.begin());mg!=mgs.end();++mg) { - if ((outp.size() + 18) > ZT_UDP_DEFAULT_PAYLOAD_MTU) { + for(std::vector::iterator mg(_allMulticastGroups.begin());mg!=_allMulticastGroups.end();++mg) { + if ((outp.size() + 18) >= ZT_UDP_DEFAULT_PAYLOAD_MTU) { outp.armor(p->key(),true); p->send(RR,outp.data(),outp.size(),_now); outp.reset(p->address(),RR->identity.address(),Packet::VERB_MULTICAST_LIKE); @@ -552,6 +553,7 @@ private: uint64_t _now; Network *_network; std::vector
_supernodeAddresses; + std::vector _allMulticastGroups; }; void Network::_announceMulticastGroups() diff --git a/node/Network.hpp b/node/Network.hpp index f99ea525..7976d901 100644 --- a/node/Network.hpp +++ b/node/Network.hpp @@ -106,7 +106,11 @@ public: /** * @return All multicast groups including learned groups that are behind any bridges we're attached to */ - std::vector allMulticastGroups() const; + inline std::vector allMulticastGroups() const + { + Mutex::Lock _l(_lock); + return _allMulticastGroups(); + } /** * @param mg Multicast group @@ -356,6 +360,7 @@ private: void _externalConfig(ZT1_VirtualNetworkConfig *ec) const; // assumes _lock is locked bool _isAllowed(const Address &peer) const; void _announceMulticastGroups(); + std::vector _allMulticastGroups() const; const RuntimeEnvironment *RR; uint64_t _id; diff --git a/nodejs-zt1-client/index.js b/nodejs-zt1-client/index.js index f61e3b54..55f7fb24 100644 --- a/nodejs-zt1-client/index.js +++ b/nodejs-zt1-client/index.js @@ -8,6 +8,25 @@ function ZT1Client(url,authToken) this.authToken = authToken; } +// Generate new ZeroTier identity -- mostly for testing +ZT1Client.prototype.newIdentity = function(callback) +{ + request({ + url: this.url + 'newIdentity', + method: 'GET', + json: false, + headers: { + 'X-ZT1-Auth': this.authToken + } + },function(error,response,body) { + if (error) + return callback(error,null); + if (response.statusCode === 200) + return callback(null,body); + return callback(new Error('server responded with error: '+response.statusCode),''); + }); +} + ZT1Client.prototype._jsonGet = function(getPath,callback) { request({ @@ -134,4 +153,8 @@ ZT1Client.prototype.saveControllerNetwork = function(network,callback) }); }; +ZT1Client.prototype.getControllerNetworkMember = function(nwid,address,callback) { + this._jsonGet('controller/network/' + nwid + '/member/' + address,callback); +}; + exports.ZT1Client = ZT1Client; -- cgit v1.2.3