mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-14 14:26:35 +00:00
Bit more netconf cleanup...
This commit is contained in:
parent
37931d8589
commit
56d8bbf780
@ -231,11 +231,23 @@ int main(int argc,char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
std::string etherTypeWhitelist;
|
||||
std::string etherTypeWhitelistOld;
|
||||
{
|
||||
Query q = dbCon->query();
|
||||
q << "SELECT DISTINCT etherType FROM NetworkEthertypes WHERE Network_id = " << nwid;
|
||||
StoreQueryResult rs = q.store();
|
||||
for(unsigned long i=0;i<rs.num_rows();++i) {
|
||||
if (etherTypeWhitelistOld.length() > 0)
|
||||
etherTypeWhitelistOld.push_back(',');
|
||||
etherTypeWhitelistOld.append(rs[i]["etherType"].c_str());
|
||||
}
|
||||
}
|
||||
|
||||
std::string etherTypeWhitelist;
|
||||
{
|
||||
Query q = dbCon->query();
|
||||
q << "SELECT DISTINCT LOWER(HEX(etherType)) AS etherType FROM NetworkEthertypes WHERE Network_id = " << nwid;
|
||||
StoreQueryResult rs = q.store();
|
||||
for(unsigned long i=0;i<rs.num_rows();++i) {
|
||||
if (etherTypeWhitelist.length() > 0)
|
||||
etherTypeWhitelist.push_back(',');
|
||||
@ -251,7 +263,7 @@ int main(int argc,char **argv)
|
||||
netconf["o"] = (isOpen ? "1" : "0");
|
||||
netconf["name"] = name;
|
||||
netconf["desc"] = desc;
|
||||
netconf["etherTypes"] = etherTypeWhitelist; // TODO: remove, old name
|
||||
netconf["etherTypes"] = etherTypeWhitelistOld; // TODO: remove, old name
|
||||
netconf["et"] = etherTypeWhitelist;
|
||||
sprintf(buf,"%llx",(unsigned long long)Utils::now());
|
||||
netconf["ts"] = buf;
|
||||
|
@ -80,21 +80,15 @@ bool Network::Certificate::qualifyMembership(const Network::Certificate &mc) con
|
||||
// indicates a floating point comparison. Otherwise an integer
|
||||
// comparison occurs.
|
||||
if (deltaField->second.find('.') != std::string::npos) {
|
||||
double my = strtod(myField->second.c_str(),(char **)0);
|
||||
double their = strtod(theirField->second.c_str(),(char **)0);
|
||||
double delta = strtod(deltaField->second.c_str(),(char **)0);
|
||||
double my = Utils::strToDouble(myField->second.c_str());
|
||||
double their = Utils::strToDouble(theirField->second.c_str());
|
||||
double delta = Utils::strToDouble(deltaField->second.c_str());
|
||||
if (fabs(my - their) > delta)
|
||||
return false;
|
||||
} else {
|
||||
#ifdef __WINDOWS__
|
||||
int64_t my = _strtoi64(myField->second.c_str(),(char **)0,10);
|
||||
int64_t their = _strtoi64(theirField->second.c_str(),(char **)0,10);
|
||||
int64_t delta = _strtoi64(deltaField->second.c_str(),(char **)0,10);
|
||||
#else
|
||||
int64_t my = strtoll(myField->second.c_str(),(char **)0,10);
|
||||
int64_t their = strtoll(theirField->second.c_str(),(char **)0,10);
|
||||
int64_t delta = strtoll(deltaField->second.c_str(),(char **)0,10);
|
||||
#endif
|
||||
uint64_t my = Utils::hexStrToU64(myField->second.c_str());
|
||||
uint64_t their = Utils::hexStrToU64(theirField->second.c_str());
|
||||
uint64_t delta = Utils::hexStrToU64(deltaField->second.c_str());
|
||||
if (my > their) {
|
||||
if ((my - their) > delta)
|
||||
return false;
|
||||
|
@ -91,49 +91,6 @@ public:
|
||||
Certificate(const std::string &s) : Dictionary(s) {}
|
||||
inline std::string toString() const { return Dictionary::toString(); }
|
||||
|
||||
inline void setNetworkId(uint64_t id)
|
||||
{
|
||||
char buf[32];
|
||||
Utils::snprintf(buf,sizeof(buf),"%.16llx",(unsigned long long)id);
|
||||
(*this)["nwid"] = buf;
|
||||
}
|
||||
|
||||
inline uint64_t networkId() const
|
||||
throw(std::invalid_argument)
|
||||
{
|
||||
#ifdef __WINDOWS__
|
||||
return _strtoui64(get("nwid").c_str(),(char **)0,16);
|
||||
#else
|
||||
return strtoull(get("nwid").c_str(),(char **)0,16);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void setPeerAddress(Address &a)
|
||||
{
|
||||
(*this)["peer"] = a.toString();
|
||||
}
|
||||
|
||||
inline Address peerAddress() const
|
||||
throw(std::invalid_argument)
|
||||
{
|
||||
return Address(get("peer"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the timestamp and timestamp max-delta
|
||||
*
|
||||
* @param ts Timestamp in ms since epoch
|
||||
* @param maxDelta Maximum difference between two peers on the same network
|
||||
*/
|
||||
inline void setTimestamp(uint64_t ts,uint64_t maxDelta)
|
||||
{
|
||||
char foo[32];
|
||||
Utils::snprintf(foo,sizeof(foo),"%llu",(unsigned long long)ts);
|
||||
(*this)["ts"] = foo;
|
||||
Utils::snprintf(foo,sizeof(foo),"%llu",(unsigned long long)maxDelta);
|
||||
(*this)["~ts"] = foo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sign this certificate
|
||||
*
|
||||
@ -381,7 +338,7 @@ public:
|
||||
if (!Utils::scopy(tmp,sizeof(tmp),get("et","").c_str()))
|
||||
return et; // sanity check, packet can't really be that big
|
||||
for(char *f=Utils::stok(tmp,",",&saveptr);(f);f=Utils::stok((char *)0,",",&saveptr)) {
|
||||
unsigned int t = Utils::strToUInt(f);
|
||||
unsigned int t = Utils::hexStrToUInt(f);
|
||||
if (t)
|
||||
et.insert(t);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user