|
@@ -100,15 +100,28 @@ Network::Network(const RuntimeEnvironment *renv,uint64_t nwid) :
|
|
|
|
|
|
Network::~Network()
|
|
Network::~Network()
|
|
{
|
|
{
|
|
|
|
+ char n[128];
|
|
if (_destroyed) {
|
|
if (_destroyed) {
|
|
- char n[128];
|
|
|
|
Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.conf",_id);
|
|
Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.conf",_id);
|
|
RR->node->dataStoreDelete(n);
|
|
RR->node->dataStoreDelete(n);
|
|
Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.mcerts",_id);
|
|
Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.mcerts",_id);
|
|
RR->node->dataStoreDelete(n);
|
|
RR->node->dataStoreDelete(n);
|
|
} else {
|
|
} else {
|
|
clean();
|
|
clean();
|
|
- _dumpMembershipCerts();
|
|
|
|
|
|
+
|
|
|
|
+ std::string buf("ZTMCD0");
|
|
|
|
+ Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.mcerts",_id);
|
|
|
|
+ Mutex::Lock _l(_lock);
|
|
|
|
+
|
|
|
|
+ if ((!_config)||(_config.isPublic())||(_membershipCertificates.size() == 0)) {
|
|
|
|
+ RR->node->dataStoreDelete(n);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for(std::map<Address,CertificateOfMembership>::iterator c(_membershipCertificates.begin());c!=_membershipCertificates.end();++c)
|
|
|
|
+ c->second.serialize2(buf);
|
|
|
|
+
|
|
|
|
+ RR->node->dataStorePut(n,buf,true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -420,24 +433,4 @@ void Network::destroy()
|
|
_tap = (EthernetTap *)0;
|
|
_tap = (EthernetTap *)0;
|
|
}
|
|
}
|
|
|
|
|
|
-void Network::_dumpMembershipCerts()
|
|
|
|
-{
|
|
|
|
- char n[128];
|
|
|
|
- std::string buf("ZTMCD0");
|
|
|
|
-
|
|
|
|
- Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.mcerts",_id);
|
|
|
|
-
|
|
|
|
- Mutex::Lock _l(_lock);
|
|
|
|
-
|
|
|
|
- if ((!_config)||(_config.isPublic())||(_membershipCertificates.size() == 0)) {
|
|
|
|
- RR->node->dataStoreDelete(n);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- for(std::map<Address,CertificateOfMembership>::iterator c(_membershipCertificates.begin());c!=_membershipCertificates.end();++c)
|
|
|
|
- c->second.serialize2(buf);
|
|
|
|
-
|
|
|
|
- RR->node->dataStorePut(n,buf,true);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
} // namespace ZeroTier
|
|
} // namespace ZeroTier
|