From 8a13cfdacee72a4af90336a329aaecb0ed38c33d Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 20 Apr 2015 17:14:16 -0700 Subject: Add per-network relays to NetworkConfig. --- node/NetworkConfig.cpp | 12 ++++++++++++ node/NetworkConfig.hpp | 2 ++ 2 files changed, 14 insertions(+) (limited to 'node') diff --git a/node/NetworkConfig.cpp b/node/NetworkConfig.cpp index 6cab4b41..491c9493 100644 --- a/node/NetworkConfig.cpp +++ b/node/NetworkConfig.cpp @@ -181,6 +181,18 @@ void NetworkConfig::_fromDictionary(const Dictionary &d) _multicastRates[MulticastGroup(i->first)] = MulticastRate(Utils::hexStrToUInt(params[0].c_str()),Utils::hexStrToUInt(params[1].c_str()),Utils::hexStrToUInt(params[2].c_str())); } + std::vector relaysSplit(Utils::split(d.get(ZT_NETWORKCONFIG_DICT_KEY_RELAYS,"").c_str(),",","","")); + for(std::vector::const_iterator r(relaysSplit.begin());r!=relaysSplit.end();++r) { + std::size_t semi(r->find(';')); // address;ip/port,... + if ((semi == ZT_ADDRESS_LENGTH)&&(r->length() > (ZT_ADDRESS_LENGTH + 1))) { + std::pair relay(Address(r->substr(0,semi)),InetAddress(r->substr(semi+1))); + if ((relay.first)&&(relay.second)) + _relays.push_back(relay); + } + } + std::sort(_relays.begin(),_relays.end()); + std::unique(_relays.begin(),_relays.end()); + _com.fromString(d.get(ZT_NETWORKCONFIG_DICT_KEY_CERTIFICATE_OF_MEMBERSHIP,std::string())); } diff --git a/node/NetworkConfig.hpp b/node/NetworkConfig.hpp index 02c5ba3f..89d1aec5 100644 --- a/node/NetworkConfig.hpp +++ b/node/NetworkConfig.hpp @@ -147,6 +147,7 @@ public: inline const std::string &description() const throw() { return _description; } inline const std::vector &staticIps() const throw() { return _staticIps; } inline const std::vector
&activeBridges() const throw() { return _activeBridges; } + inline const std::vector< std::pair > &relays() const throw() { return _relays; } inline const CertificateOfMembership &com() const throw() { return _com; } inline bool enableBroadcast() const throw() { return _enableBroadcast; } @@ -188,6 +189,7 @@ private: std::string _description; std::vector _staticIps; std::vector
_activeBridges; + std::vector< std::pair > _relays; std::map _multicastRates; CertificateOfMembership _com; -- cgit v1.2.3