|
|
|
|
@ -416,6 +416,27 @@ public:
|
|
|
|
|
return std::set<InetAddress>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param mac MAC address |
|
|
|
|
* @return ZeroTier address of bridge to this MAC or null address if not found |
|
|
|
|
*/ |
|
|
|
|
inline Address findBridgeTo(const MAC &mac) const |
|
|
|
|
{ |
|
|
|
|
Mutex::Lock _l(_lock); |
|
|
|
|
std::map<MAC,Address>::const_iterator br(_bridgeRoutes.find(mac)); |
|
|
|
|
if (br == _bridgeRoutes.end()) |
|
|
|
|
return Address(); |
|
|
|
|
return br->second; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set a bridge route |
|
|
|
|
* |
|
|
|
|
* @param mac MAC address of destination |
|
|
|
|
* @param addr Bridge this MAC is reachable behind |
|
|
|
|
*/ |
|
|
|
|
void learnBridgeRoute(const MAC &mac,const Address &addr); |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
static void _CBhandleTapData(void *arg,const MAC &from,const MAC &to,unsigned int etherType,const Buffer<4096> &data); |
|
|
|
|
|
|
|
|
|
@ -424,24 +445,33 @@ private:
|
|
|
|
|
void _dumpMulticastCerts(); |
|
|
|
|
|
|
|
|
|
uint64_t _id; |
|
|
|
|
NodeConfig *_nc; |
|
|
|
|
MAC _mac; |
|
|
|
|
NodeConfig *_nc; // parent NodeConfig object
|
|
|
|
|
MAC _mac; // local MAC address
|
|
|
|
|
const RuntimeEnvironment *_r; |
|
|
|
|
EthernetTap *volatile _tap; |
|
|
|
|
EthernetTap *volatile _tap; // tap device or NULL if not initialized yet
|
|
|
|
|
|
|
|
|
|
std::set<MulticastGroup> _multicastGroups; |
|
|
|
|
std::map< std::pair<Address,MulticastGroup>,BandwidthAccount > _multicastRateAccounts; |
|
|
|
|
|
|
|
|
|
std::map<Address,CertificateOfMembership> _membershipCertificates; |
|
|
|
|
std::map<Address,uint64_t> _lastPushedMembershipCertificate; |
|
|
|
|
|
|
|
|
|
std::map<MAC,Address> _bridgeRoutes; |
|
|
|
|
|
|
|
|
|
SharedPtr<NetworkConfig> _config; |
|
|
|
|
volatile uint64_t _lastConfigUpdate; |
|
|
|
|
|
|
|
|
|
volatile bool _destroyOnDelete; |
|
|
|
|
|
|
|
|
|
volatile enum { |
|
|
|
|
NETCONF_FAILURE_NONE, |
|
|
|
|
NETCONF_FAILURE_ACCESS_DENIED, |
|
|
|
|
NETCONF_FAILURE_NOT_FOUND, |
|
|
|
|
NETCONF_FAILURE_INIT_FAILED |
|
|
|
|
} _netconfFailure; |
|
|
|
|
|
|
|
|
|
Thread _setupThread; |
|
|
|
|
|
|
|
|
|
Mutex _lock; |
|
|
|
|
|
|
|
|
|
AtomicCounter __refCount; |
|
|
|
|
|