summaryrefslogtreecommitdiff
path: root/node/Network.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Network.cpp')
-rw-r--r--node/Network.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/node/Network.cpp b/node/Network.cpp
index 94eef23f..a93740f8 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -104,6 +104,17 @@ bool Network::Certificate::qualifyMembership(const Network::Certificate &mc) con
return true;
}
+const char *Network::statusString(const Status s)
+ throw()
+{
+ switch(s) {
+ case NETWORK_WAITING_FOR_FIRST_AUTOCONF: return "WAITING_FOR_FIRST_AUTOCONF";
+ case NETWORK_OK: return "OK";
+ case NETWORK_ACCESS_DENIED: return "ACCESS_DENIED";
+ }
+ return "(invalid)";
+}
+
Network::~Network()
{
delete _tap;
@@ -202,6 +213,7 @@ void Network::clean()
std::string mcdbPath(_r->homePath + ZT_PATH_SEPARATOR_S + "networks.d" + ZT_PATH_SEPARATOR_S + toString() + ".mcerts");
Mutex::Lock _l(_lock);
+
if (_configuration.isOpen()) {
_membershipCertificates.clear();
Utils::rm(mcdbPath);
@@ -242,6 +254,14 @@ void Network::clean()
}
}
+Network::Status Network::status() const
+{
+ Mutex::Lock _l(_lock);
+ if (_configuration.containsAllFields())
+ return NETWORK_OK;
+ return NETWORK_WAITING_FOR_FIRST_AUTOCONF;
+}
+
void Network::_CBhandleTapData(void *arg,const MAC &from,const MAC &to,unsigned int etherType,const Buffer<4096> &data)
{
const RuntimeEnvironment *_r = ((Network *)arg)->_r;