mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-08 03:34:14 +00:00
Netconf support for ARP and NDP caching TTLs.
This commit is contained in:
parent
dd7758e33e
commit
e6eb65be00
@ -245,11 +245,13 @@ int main(int argc,char **argv)
|
||||
unsigned int multicastDepth = 0;
|
||||
bool emulateArp = false;
|
||||
bool emulateNdp = false;
|
||||
unsigned int arpCacheTtl = 0;
|
||||
unsigned int ndpCacheTtl = 0;
|
||||
std::string name;
|
||||
std::string desc;
|
||||
{
|
||||
Query q = dbCon->query();
|
||||
q << "SELECT name,`desc`,isOpen,multicastPrefixBits,multicastDepth,emulateArp,emulateNdp FROM Network WHERE id = " << nwid;
|
||||
q << "SELECT name,`desc`,isOpen,multicastPrefixBits,multicastDepth,emulateArp,emulateNdp,arpCacheTtl,ndpCacheTtl FROM Network WHERE id = " << nwid;
|
||||
StoreQueryResult rs = q.store();
|
||||
if (rs.num_rows() > 0) {
|
||||
name = rs[0]["name"].c_str();
|
||||
@ -257,6 +259,8 @@ int main(int argc,char **argv)
|
||||
isOpen = ((int)rs[0]["isOpen"] > 0);
|
||||
emulateArp = ((int)rs[0]["emulateArp"] > 0);
|
||||
emulateNdp = ((int)rs[0]["emulateNdp"] > 0);
|
||||
arpCacheTtl = (unsigned int)rs[0]["arpCacheTtl"];
|
||||
ndpCacheTtl = (unsigned int)rs[0]["ndpCacheTtl"];
|
||||
multicastPrefixBits = (unsigned int)rs[0]["multicastPrefixBits"];
|
||||
multicastDepth = (unsigned int)rs[0]["multicastDepth"];
|
||||
} else {
|
||||
@ -427,6 +431,10 @@ int main(int argc,char **argv)
|
||||
netconf["ts"] = buf;
|
||||
netconf["eARP"] = (emulateArp ? "1" : "0");
|
||||
netconf["eNDP"] = (emulateNdp ? "1" : "0");
|
||||
sprintf(buf,"%x",arpCacheTtl);
|
||||
netconf["cARP"] = buf;
|
||||
sprintf(buf,"%x",ndpCacheTtl);
|
||||
netconf["cNDP"] = buf;
|
||||
if (multicastPrefixBits) {
|
||||
sprintf(buf,"%x",multicastPrefixBits);
|
||||
netconf["mpb"] = buf;
|
||||
|
@ -91,6 +91,8 @@ SharedPtr<Network> Network::newInstance(const RuntimeEnvironment *renv,uint64_t
|
||||
nw->_isOpen = false;
|
||||
nw->_emulateArp = false;
|
||||
nw->_emulateNdp = false;
|
||||
nw->_arpCacheTtl = 0;
|
||||
nw->_ndpCacheTtl = 0;
|
||||
nw->_multicastPrefixBits = ZT_DEFAULT_MULTICAST_PREFIX_BITS;
|
||||
nw->_multicastDepth = ZT_DEFAULT_MULTICAST_DEPTH;
|
||||
nw->_status = NETWORK_WAITING_FOR_FIRST_AUTOCONF;
|
||||
@ -120,6 +122,8 @@ void Network::setConfiguration(const Network::Config &conf,bool saveToDisk)
|
||||
_isOpen = conf.isOpen();
|
||||
_emulateArp = conf.emulateArp();
|
||||
_emulateNdp = conf.emulateNdp();
|
||||
_arpCacheTtl = conf.arpCacheTtl();
|
||||
_ndpCacheTtl = conf.ndpCacheTtl();
|
||||
_multicastPrefixBits = conf.multicastPrefixBits();
|
||||
_multicastDepth = conf.multicastDepth();
|
||||
|
||||
@ -153,6 +157,8 @@ void Network::setConfiguration(const Network::Config &conf,bool saveToDisk)
|
||||
_isOpen = false;
|
||||
_emulateArp = false;
|
||||
_emulateNdp = false;
|
||||
_arpCacheTtl = 0;
|
||||
_ndpCacheTtl = 0;
|
||||
_status = NETWORK_WAITING_FOR_FIRST_AUTOCONF;
|
||||
|
||||
_lastConfigUpdate = 0;
|
||||
|
@ -272,6 +272,28 @@ public:
|
||||
else return (e->second == "1");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ARP cache TTL in seconds or 0 for no ARP caching
|
||||
*/
|
||||
inline unsigned int arpCacheTtl() const
|
||||
{
|
||||
const_iterator ttl(find("cARP"));
|
||||
if (ttl == end())
|
||||
return 0;
|
||||
return Utils::hexStrToUInt(ttl->second.c_str());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return NDP cache TTL in seconds or 0 for no NDP caching
|
||||
*/
|
||||
inline unsigned int ndpCacheTtl() const
|
||||
{
|
||||
const_iterator ttl(find("cNDP"));
|
||||
if (ttl == end())
|
||||
return 0;
|
||||
return Utils::hexStrToUInt(ttl->second.c_str());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Multicast rates for this network
|
||||
*/
|
||||
@ -684,6 +706,8 @@ private:
|
||||
bool _isOpen;
|
||||
bool _emulateArp;
|
||||
bool _emulateNdp;
|
||||
unsigned int _arpCacheTtl;
|
||||
unsigned int _ndpCacheTtl;
|
||||
unsigned int _multicastPrefixBits;
|
||||
unsigned int _multicastDepth;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user