Răsfoiți Sursa

Bit more netconf cleanup...

Adam Ierymenko 12 ani în urmă
părinte
comite
56d8bbf780
3 a modificat fișierele cu 21 adăugiri și 58 ștergeri
  1. 14 2
      netconf-service/netconf.cpp
  2. 6 12
      node/Network.cpp
  3. 1 44
      node/Network.hpp

+ 14 - 2
netconf-service/netconf.cpp

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

+ 6 - 12
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;

+ 1 - 44
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);
 			}