summaryrefslogtreecommitdiff
path: root/node/Network.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-06-26 17:05:07 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-06-26 17:05:07 -0700
commit45a1e048bbab5f2759b32fddd983d490e4f7f0ef (patch)
tree7fd8ac10e0df4c33c4c7a3e15b4d977e300d6352 /node/Network.cpp
parent40bd460b1cc633ebc50ba57a429b9e3e8e3fd9f6 (diff)
downloadinfinitytier-45a1e048bbab5f2759b32fddd983d490e4f7f0ef.tar.gz
infinitytier-45a1e048bbab5f2759b32fddd983d490e4f7f0ef.zip
Add enabled/disabled status to network.
Diffstat (limited to 'node/Network.cpp')
-rw-r--r--node/Network.cpp11
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)