diff options
Diffstat (limited to 'node/Network.cpp')
| -rw-r--r-- | node/Network.cpp | 20 |
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; |
