diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-06-26 17:05:07 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-06-26 17:05:07 -0700 |
| commit | 45a1e048bbab5f2759b32fddd983d490e4f7f0ef (patch) | |
| tree | 7fd8ac10e0df4c33c4c7a3e15b4d977e300d6352 /node/Network.cpp | |
| parent | 40bd460b1cc633ebc50ba57a429b9e3e8e3fd9f6 (diff) | |
| download | infinitytier-45a1e048bbab5f2759b32fddd983d490e4f7f0ef.tar.gz infinitytier-45a1e048bbab5f2759b32fddd983d490e4f7f0ef.zip | |
Add enabled/disabled status to network.
Diffstat (limited to 'node/Network.cpp')
| -rw-r--r-- | node/Network.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/node/Network.cpp b/node/Network.cpp index d465c9df..f45d6c2f 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -60,6 +60,7 @@ const char *Network::statusString(const Status s) case NETWORK_ACCESS_DENIED: return "ACCESS_DENIED"; case NETWORK_NOT_FOUND: return "NOT_FOUND"; case NETWORK_INITIALIZATION_FAILED: return "INITIALIZATION_FAILED"; + case NETWORK_NO_MORE_DEVICES: return "NO_MORE_DEVICES"; } return "(invalid)"; } @@ -107,6 +108,7 @@ SharedPtr<Network> Network::newInstance(const RuntimeEnvironment *renv,NodeConfi nw->_mac.fromAddress(renv->identity.address(),id); nw->_r = renv; nw->_tap = (EthernetTap *)0; + nw->_enabled = true; nw->_lastConfigUpdate = 0; nw->_destroyOnDelete = false; nw->_netconfFailure = NETCONF_FAILURE_NONE; @@ -309,7 +311,7 @@ Network::Status Network::status() const void Network::_CBhandleTapData(void *arg,const MAC &from,const MAC &to,unsigned int etherType,const Buffer<4096> &data) { - if (((Network *)arg)->status() != NETWORK_OK) + if ((!((Network *)arg)->_enabled)||(((Network *)arg)->status() != NETWORK_OK)) return; const RuntimeEnvironment *_r = ((Network *)arg)->_r; @@ -417,6 +419,13 @@ void Network::learnBridgeRoute(const MAC &mac,const Address &addr) } } +void Network::setEnabled(bool enabled) +{ + Mutex::Lock _l(_lock); + _enabled = enabled; + // TODO: bring OS network device to "down" state if enabled == false +} + void Network::_restoreState() { if (!_id) |
