diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-08-09 08:32:42 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-08-09 08:32:42 -0700 |
| commit | 2ba93436077b4f4901db81687df2e03d7ce6c8c5 (patch) | |
| tree | 00578811c1765fc38fe263c26de4af893bdc3820 /node/Network.cpp | |
| parent | 51cf49a24fa5e953de0192006c624675090483f5 (diff) | |
| download | infinitytier-2ba93436077b4f4901db81687df2e03d7ce6c8c5.tar.gz infinitytier-2ba93436077b4f4901db81687df2e03d7ce6c8c5.zip | |
Encode and decode of tags and capabilities in NetworkConfig.
Diffstat (limited to 'node/Network.cpp')
| -rw-r--r-- | node/Network.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/node/Network.cpp b/node/Network.cpp index fd2fac2b..0fbdf5ba 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -358,18 +358,21 @@ Network::Network(const RuntimeEnvironment *renv,uint64_t nwid,void *uptr) : RR->node->dataStorePut(confn,"\n",1,false); } else { bool gotConf = false; + Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY> *dconf = new Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY>(); + NetworkConfig *nconf = new NetworkConfig(); try { std::string conf(RR->node->dataStoreGet(confn)); if (conf.length()) { - Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY> dconf(conf.c_str()); - NetworkConfig nconf; - if (nconf.fromDictionary(dconf)) { - this->setConfiguration(nconf,false); + dconf->load(conf.c_str()); + if (nconf->fromDictionary(*dconf)) { + this->setConfiguration(*nconf,false); _lastConfigUpdate = 0; // we still want to re-request a new config from the network gotConf = true; } } } catch ( ... ) {} // ignore invalids, we'll re-request + delete nconf; + delete dconf; if (!gotConf) { // Save a one-byte CR to persist membership while we request a real netconf @@ -591,14 +594,16 @@ void Network::requestConfiguration() if (_id == ZT_TEST_NETWORK_ID) // pseudo-network-ID, uses locally generated static config return; - Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY> rmd; + Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> rmd; rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_VERSION,(uint64_t)ZT_NETWORKCONFIG_VERSION); rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_PROTOCOL_VERSION,(uint64_t)ZT_PROTO_VERSION); rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_MAJOR_VERSION,(uint64_t)ZEROTIER_ONE_VERSION_MAJOR); rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_MINOR_VERSION,(uint64_t)ZEROTIER_ONE_VERSION_MINOR); rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_REVISION,(uint64_t)ZEROTIER_ONE_VERSION_REVISION); rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_MAX_NETWORK_RULES,(uint64_t)ZT_MAX_NETWORK_RULES); + rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_MAX_NETWORK_CAPABILITIES,(uint64_t)ZT_MAX_NETWORK_CAPABILITIES); rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_MAX_CAPABILITY_RULES,(uint64_t)ZT_MAX_CAPABILITY_RULES); + rmd.add(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_MAX_NETWORK_TAGS,(uint64_t)ZT_MAX_NETWORK_TAGS); if (controller() == RR->identity.address()) { if (RR->localNetworkController) { |
