Bit more netconf cleanup...

This commit is contained in:
Adam Ierymenko 2013-09-06 15:06:51 -04:00
parent 37931d8589
commit 56d8bbf780
3 changed files with 21 additions and 58 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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);
}