summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-04-20 17:14:16 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-04-20 17:14:16 -0700
commit8a13cfdacee72a4af90336a329aaecb0ed38c33d (patch)
tree6c4c4b67ef8936dc1d3624a59fe9f9429a931087 /node
parent86c87875a78efc84b123cf1661a31cb06f240f59 (diff)
downloadinfinitytier-8a13cfdacee72a4af90336a329aaecb0ed38c33d.tar.gz
infinitytier-8a13cfdacee72a4af90336a329aaecb0ed38c33d.zip
Add per-network relays to NetworkConfig.
Diffstat (limited to 'node')
-rw-r--r--node/NetworkConfig.cpp12
-rw-r--r--node/NetworkConfig.hpp2
2 files changed, 14 insertions, 0 deletions
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<std::string> relaysSplit(Utils::split(d.get(ZT_NETWORKCONFIG_DICT_KEY_RELAYS,"").c_str(),",","",""));
+ for(std::vector<std::string>::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<Address,InetAddress> 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<InetAddress> &staticIps() const throw() { return _staticIps; }
inline const std::vector<Address> &activeBridges() const throw() { return _activeBridges; }
+ inline const std::vector< std::pair<Address,InetAddress> > &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<InetAddress> _staticIps;
std::vector<Address> _activeBridges;
+ std::vector< std::pair<Address,InetAddress> > _relays;
std::map<MulticastGroup,MulticastRate> _multicastRates;
CertificateOfMembership _com;