summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-09-06 15:06:51 -0400
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-09-06 15:06:51 -0400
commit56d8bbf780240be34759c5f6c9ff67d09d231468 (patch)
tree71a90f0fb4f2b2ebe69ae5fee82dd334404edd1b
parent37931d8589359580c05baef64b6752315dccbe66 (diff)
downloadinfinitytier-56d8bbf780240be34759c5f6c9ff67d09d231468.tar.gz
infinitytier-56d8bbf780240be34759c5f6c9ff67d09d231468.zip
Bit more netconf cleanup...
-rw-r--r--netconf-service/netconf.cpp16
-rw-r--r--node/Network.cpp18
-rw-r--r--node/Network.hpp45
3 files changed, 21 insertions, 58 deletions
diff --git a/netconf-service/netconf.cpp b/netconf-service/netconf.cpp
index 08ff33d2..d0453431 100644
--- a/netconf-service/netconf.cpp
+++ b/netconf-service/netconf.cpp
@@ -231,12 +231,24 @@ 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(',');
etherTypeWhitelist.append(rs[i]["etherType"].c_str());
@@ -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;
diff --git a/node/Network.cpp b/node/Network.cpp
index 11e7c455..bc651661 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -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;
diff --git a/node/Network.hpp b/node/Network.hpp
index 6340c049..6e79705d 100644
--- a/node/Network.hpp
+++ b/node/Network.hpp
@@ -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);
}