summaryrefslogtreecommitdiff
path: root/node/NetworkConfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/NetworkConfig.cpp')
-rw-r--r--node/NetworkConfig.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/node/NetworkConfig.cpp b/node/NetworkConfig.cpp
index 6acc48ea..fe7393e8 100644
--- a/node/NetworkConfig.cpp
+++ b/node/NetworkConfig.cpp
@@ -21,7 +21,6 @@
#include <algorithm>
#include "NetworkConfig.hpp"
-#include "Utils.hpp"
namespace ZeroTier {
@@ -138,6 +137,13 @@ bool NetworkConfig::toDictionary(Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY> &d,b
}
tmp->clear();
+ for(unsigned int i=0;i<this->certificateOfOwnershipCount;++i)
+ this->certificatesOfOwnership[i].serialize(*tmp);
+ if (tmp->size()) {
+ if (!d.add(ZT_NETWORKCONFIG_DICT_KEY_CERTIFICATES_OF_OWNERSHIP,*tmp)) return false;
+ }
+
+ tmp->clear();
for(unsigned int i=0;i<this->specialistCount;++i)
tmp->append((uint64_t)this->specialists[i]);
if (tmp->size()) {
@@ -258,7 +264,7 @@ bool NetworkConfig::fromDictionary(const Dictionary<ZT_NETWORKCONFIG_DICT_CAPACI
if (d.get(ZT_NETWORKCONFIG_DICT_KEY_ACTIVE_BRIDGES_OLD,tmp2,sizeof(tmp2)) > 0) {
char *saveptr = (char *)0;
for(char *f=Utils::stok(tmp2,",",&saveptr);(f);f=Utils::stok((char *)0,",",&saveptr)) {
- this->addSpecialist(Address(f),ZT_NETWORKCONFIG_SPECIALIST_TYPE_ACTIVE_BRIDGE);
+ this->addSpecialist(Address(Utils::hexStrToU64(f)),ZT_NETWORKCONFIG_SPECIALIST_TYPE_ACTIVE_BRIDGE);
}
}
#else
@@ -297,10 +303,23 @@ bool NetworkConfig::fromDictionary(const Dictionary<ZT_NETWORKCONFIG_DICT_CAPACI
std::sort(&(this->tags[0]),&(this->tags[this->tagCount]));
}
+ if (d.get(ZT_NETWORKCONFIG_DICT_KEY_CERTIFICATES_OF_OWNERSHIP,*tmp)) {
+ unsigned int p = 0;
+ while (p < tmp->size()) {
+ if (certificateOfOwnershipCount < ZT_MAX_CERTIFICATES_OF_OWNERSHIP)
+ p += certificatesOfOwnership[certificateOfOwnershipCount++].deserialize(*tmp,p);
+ else {
+ CertificateOfOwnership foo;
+ p += foo.deserialize(*tmp,p);
+ }
+ }
+ }
+
if (d.get(ZT_NETWORKCONFIG_DICT_KEY_SPECIALISTS,*tmp)) {
unsigned int p = 0;
- while (((p + 8) <= tmp->size())&&(specialistCount < ZT_MAX_NETWORK_SPECIALISTS)) {
- this->specialists[this->specialistCount++] = tmp->at<uint64_t>(p);
+ while ((p + 8) <= tmp->size()) {
+ if (specialistCount < ZT_MAX_NETWORK_SPECIALISTS)
+ this->specialists[this->specialistCount++] = tmp->at<uint64_t>(p);
p += 8;
}
}