diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-21 08:13:48 -0400 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-21 08:13:48 -0400 |
commit | 2536352e5d166719acc87535ed17a805e7bd3c26 (patch) | |
tree | eb676d506f419c410e0dda711273f5dcfcc6bb79 /node | |
parent | dbb509a30234059fb6de10cfcd9ba1aade6a0138 (diff) | |
download | infinitytier-2536352e5d166719acc87535ed17a805e7bd3c26.tar.gz infinitytier-2536352e5d166719acc87535ed17a805e7bd3c26.zip |
Make that an arbitrary tag to identify persistent taps...
Diffstat (limited to 'node')
-rw-r--r-- | node/EthernetTap.cpp | 4 | ||||
-rw-r--r-- | node/EthernetTap.hpp | 3 | ||||
-rw-r--r-- | node/Network.cpp | 5 | ||||
-rw-r--r-- | node/Utils.hpp | 1 |
4 files changed, 9 insertions, 4 deletions
diff --git a/node/EthernetTap.cpp b/node/EthernetTap.cpp index 88096470..1cc15c14 100644 --- a/node/EthernetTap.cpp +++ b/node/EthernetTap.cpp @@ -146,9 +146,9 @@ static Mutex __tapCreateLock; #ifdef __LINUX__ EthernetTap::EthernetTap( const RuntimeEnvironment *renv, + const char *tag, const MAC &mac, unsigned int mtu, - const char *desc, void (*handler)(void *,const MAC &,const MAC &,unsigned int,const Buffer<4096> &), void *arg) throw(std::runtime_error) : @@ -247,9 +247,9 @@ EthernetTap::EthernetTap( #ifdef __APPLE__ EthernetTap::EthernetTap( const RuntimeEnvironment *renv, + const char *tag, const MAC &mac, unsigned int mtu, - const char *desc, void (*handler)(void *,const MAC &,const MAC &,unsigned int,const Buffer<4096> &), void *arg) throw(std::runtime_error) : diff --git a/node/EthernetTap.hpp b/node/EthernetTap.hpp index 2083e9e9..29cb1d88 100644 --- a/node/EthernetTap.hpp +++ b/node/EthernetTap.hpp @@ -60,6 +60,7 @@ public: * Handler arguments: arg,from,to,etherType,data * * @param renv Runtime environment + * @param tag A tag used to identify persistent taps at the OS layer (e.g. nwid in hex) * @param mac MAC address of device * @param mtu MTU of device * @param desc If non-NULL, a description (not used on all OSes) @@ -69,9 +70,9 @@ public: */ EthernetTap( const RuntimeEnvironment *renv, + const char *tag, const MAC &mac, unsigned int mtu, - const char *desc, void (*handler)(void *,const MAC &,const MAC &,unsigned int,const Buffer<4096> &), void *arg) throw(std::runtime_error); diff --git a/node/Network.cpp b/node/Network.cpp index d974c5d2..496e58fe 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -139,6 +139,9 @@ Network::~Network() SharedPtr<Network> Network::newInstance(const RuntimeEnvironment *renv,uint64_t id) throw(std::runtime_error) { + char tag[32]; + sprintf(tag,"%.16llx",(unsigned long long)id); + // We construct Network via a static method to ensure that it is immediately // wrapped in a SharedPtr<>. Otherwise if there is traffic on the Ethernet // tap device, a SharedPtr<> wrap can occur in the Ethernet frame handler @@ -150,7 +153,7 @@ SharedPtr<Network> Network::newInstance(const RuntimeEnvironment *renv,uint64_t nw->_rlLimit.bytesPerSecond = ZT_MULTICAST_DEFAULT_BYTES_PER_SECOND; nw->_rlLimit.maxBalance = ZT_MULTICAST_DEFAULT_RATE_MAX_BALANCE; nw->_rlLimit.minBalance = ZT_MULTICAST_DEFAULT_RATE_MIN_BALANCE; - nw->_tap = new EthernetTap(renv,renv->identity.address().toMAC(),ZT_IF_MTU,(const char *)0,&_CBhandleTapData,nw.ptr()); + nw->_tap = new EthernetTap(renv,tag,renv->identity.address().toMAC(),ZT_IF_MTU,&_CBhandleTapData,nw.ptr()); nw->_id = id; nw->_lastConfigUpdate = 0; nw->_destroyOnDelete = false; diff --git a/node/Utils.hpp b/node/Utils.hpp index 76448294..ff88124b 100644 --- a/node/Utils.hpp +++ b/node/Utils.hpp @@ -118,6 +118,7 @@ public: * @return Number of characters actually written */ static unsigned int unhex(const char *hex,void *buf,unsigned int len); + static inline unsigned int unhex(const std::string &hex,void *buf,unsigned int len) { return unhex(hex.c_str(),buf,len); } /** * @param buf Buffer to fill |