Browse Source

Rip out network environment fingerprint. This will be replaced by constant monitoring of actual external address surface.

Adam Ierymenko 10 years ago
parent
commit
b7148c107d
4 changed files with 0 additions and 63 deletions
  1. 0 5
      node/Constants.hpp
  2. 0 13
      node/Node.cpp
  3. 0 35
      node/RoutingTable.cpp
  4. 0 10
      node/RoutingTable.hpp

+ 0 - 5
node/Constants.hpp

@@ -274,11 +274,6 @@
  */
 #define ZT_PING_CHECK_DELAY 10000
 
-/**
- * Delay between checks of network configuration fingerprint
- */
-#define ZT_NETWORK_FINGERPRINT_CHECK_DELAY 5000
-
 /**
  * Delay between ordinary case pings of direct links
  */

+ 0 - 13
node/Node.cpp

@@ -391,7 +391,6 @@ Node::ReasonForTermination Node::run()
 		uint64_t lastNetworkAutoconfCheck = Utils::now() - 5000ULL; // check autoconf again after 5s for startup
 		uint64_t lastPingCheck = 0;
 		uint64_t lastClean = Utils::now(); // don't need to do this immediately
-		uint64_t lastNetworkFingerprintCheck = 0;
 		uint64_t lastMulticastCheck = 0;
 		uint64_t lastSupernodePingCheck = 0;
 		uint64_t lastBeacon = 0;
@@ -399,7 +398,6 @@ Node::ReasonForTermination Node::run()
 		uint64_t lastShutdownIfUnreadableCheck = 0;
 		long lastDelayDelta = 0;
 
-		uint64_t networkConfigurationFingerprint = 0;
 		RR->timeOfLastResynchronize = Utils::now();
 
 		// We are up and running
@@ -432,17 +430,6 @@ Node::ReasonForTermination Node::run()
 				Thread::sleep(ZT_SLEEP_WAKE_SETTLE_TIME);
 			}
 
-			// If our network environment looks like it changed, resynchronize.
-			if ((resynchronize)||((now - lastNetworkFingerprintCheck) >= ZT_NETWORK_FINGERPRINT_CHECK_DELAY)) {
-				lastNetworkFingerprintCheck = now;
-				uint64_t fp = RR->routingTable->networkEnvironmentFingerprint(RR->nc->networkTapDeviceNames());
-				if (fp != networkConfigurationFingerprint) {
-					LOG("netconf fingerprint change: %.16llx != %.16llx, resyncing with network",networkConfigurationFingerprint,fp);
-					networkConfigurationFingerprint = fp;
-					resynchronize = true;
-				}
-			}
-
 			// Supernodes do not resynchronize unless explicitly ordered via SIGHUP.
 			if ((resynchronize)&&(RR->topology->amSupernode()))
 				resynchronize = false;

+ 0 - 35
node/RoutingTable.cpp

@@ -74,39 +74,4 @@ RoutingTable::~RoutingTable()
 {
 }
 
-uint64_t RoutingTable::networkEnvironmentFingerprint(const std::vector<std::string> &ignoreInterfaces) const
-{
-	uint64_t fp = 0;
-	std::vector<Entry> rtab(get());
-	for(std::vector<Entry>::const_iterator re(rtab.begin());re!=rtab.end();++re) {
-		bool skip = false;
-		for(std::vector<std::string>::const_iterator ii(ignoreInterfaces.begin());ii!=ignoreInterfaces.end();++ii) {
-			if (*ii == re->device) {
-				skip = true;
-				break;
-			}
-		}
-		if (skip)
-			continue;
-		++fp;
-		if (re->destination.isV4()) {
-			fp = Utils::sdbmHash(re->destination.rawIpData(),4,fp);
-			fp = Utils::sdbmHash((uint16_t)re->destination.netmaskBits(),fp);
-		} else if (re->destination.isV6()) {
-			fp = Utils::sdbmHash(re->destination.rawIpData(),16,fp);
-			fp = Utils::sdbmHash((uint16_t)re->destination.netmaskBits(),fp);
-		}
-		if (re->gateway.isV4()) {
-			fp = Utils::sdbmHash(re->gateway.rawIpData(),4,fp);
-			fp = Utils::sdbmHash((uint16_t)re->gateway.netmaskBits(),fp);
-		} else if (re->gateway.isV6()) {
-			fp = Utils::sdbmHash(re->gateway.rawIpData(),16,fp);
-			fp = Utils::sdbmHash((uint16_t)re->gateway.netmaskBits(),fp);
-		}
-		fp = Utils::sdbmHash(re->device,fp);
-		fp = Utils::sdbmHash((uint32_t)re->metric,fp);
-	}
-	return fp;
-}
-
 } // namespace ZeroTier

+ 0 - 10
node/RoutingTable.hpp

@@ -115,16 +115,6 @@ public:
 	 * @return Entry or null entry on failure (or delete)
 	 */
 	virtual RoutingTable::Entry set(const InetAddress &destination,const InetAddress &gateway,const char *device,int metric) = 0;
-
-	/**
-	 * Compute a 64-bit value that hashes the current state of the network environment
-	 *
-	 * This shouldn't be overridden -- uses get() to get underlying routing table.
-	 *
-	 * @param ignoreInterfaces Names of interfaces to exclude from fingerprint (e.g. my own)
-	 * @return Integer CRC-type fingerprint of current network environment
-	 */
-	uint64_t networkEnvironmentFingerprint(const std::vector<std::string> &ignoreInterfaces) const;
 };
 
 } // namespace ZeroTier