Răsfoiți Sursa

Fix (some) compile-time warnings on Windows

Joseph Henry 4 ani în urmă
părinte
comite
13481cea18
3 a modificat fișierele cu 79 adăugiri și 37 ștergeri
  1. 77 31
      node/Bond.cpp
  2. 2 2
      node/Bond.hpp
  3. 0 4
      osdep/Link.hpp

+ 77 - 31
node/Bond.cpp

@@ -89,7 +89,13 @@ void Bond::nominatePath(const SharedPtr<Path>& path, int64_t now)
 		for (int i = 0; i < ZT_MAX_PEER_NETWORK_PATHS; ++i) {
 		for (int i = 0; i < ZT_MAX_PEER_NETWORK_PATHS; ++i) {
 			if (! _paths[i]) {
 			if (! _paths[i]) {
 				_paths[i] = path;
 				_paths[i] = path;
-				sprintf(traceMsg, "%s (bond) Nominating link %s/%s to peer %llx. It has now entered its trial period", OSUtils::humanReadableTimestamp().c_str(), getLink(path)->ifname().c_str(), pathStr, (unsigned long long)(_peer->_id.address().toInt()));
+				sprintf(
+					traceMsg,
+					"%s (bond) Nominating link %s/%s to peer %llx. It has now entered its trial period",
+					OSUtils::humanReadableTimestamp().c_str(),
+					getLink(path)->ifname().c_str(),
+					pathStr,
+					(unsigned long long)(_peer->_id.address().toInt()));
 				RR->t->bondStateMessage(NULL, traceMsg);
 				RR->t->bondStateMessage(NULL, traceMsg);
 				_paths[i]->startTrial(now);
 				_paths[i]->startTrial(now);
 				break;
 				break;
@@ -357,7 +363,7 @@ bool Bond::assignFlowToBondedPath(SharedPtr<Flow>& flow, int64_t now)
 			(unsigned long long)(_peer->_id.address().toInt()),
 			(unsigned long long)(_peer->_id.address().toInt()),
 			link->ifname().c_str(),
 			link->ifname().c_str(),
 			curPathStr,
 			curPathStr,
-			_flows.size());
+			(unsigned long)_flows.size());
 		RR->t->bondStateMessage(NULL, traceMsg);
 		RR->t->bondStateMessage(NULL, traceMsg);
 		flow->assignPath(_paths[_bondedIdx[idx]], now);
 		flow->assignPath(_paths[_bondedIdx[idx]], now);
 		++(_paths[_bondedIdx[idx]]->_assignedFlowCount);
 		++(_paths[_bondedIdx[idx]]->_assignedFlowCount);
@@ -429,7 +435,7 @@ bool Bond::assignFlowToBondedPath(SharedPtr<Flow>& flow, int64_t now)
 		(unsigned long long)(_peer->_id.address().toInt()),
 		(unsigned long long)(_peer->_id.address().toInt()),
 		link->ifname().c_str(),
 		link->ifname().c_str(),
 		curPathStr,
 		curPathStr,
-		_flows.size());
+		(unsigned long)_flows.size());
 	RR->t->bondStateMessage(NULL, traceMsg);
 	RR->t->bondStateMessage(NULL, traceMsg);
 	return true;
 	return true;
 }
 }
@@ -445,7 +451,12 @@ SharedPtr<Flow> Bond::createFlow(const SharedPtr<Path>& path, int32_t flowId, un
 		return SharedPtr<Flow>();
 		return SharedPtr<Flow>();
 	}
 	}
 	if (_flows.size() >= ZT_FLOW_MAX_COUNT) {
 	if (_flows.size() >= ZT_FLOW_MAX_COUNT) {
-		sprintf(traceMsg, "%s (bond) Maximum number of flows on bond to peer %llx reached (%d), forcibly forgetting oldest flow\n", OSUtils::humanReadableTimestamp().c_str(), (unsigned long long)(_peer->_id.address().toInt()), ZT_FLOW_MAX_COUNT);
+		sprintf(
+			traceMsg,
+			"%s (bond) Maximum number of flows on bond to peer %llx reached (%d), forcibly forgetting oldest flow\n",
+			OSUtils::humanReadableTimestamp().c_str(),
+			(unsigned long long)(_peer->_id.address().toInt()),
+			ZT_FLOW_MAX_COUNT);
 		RR->t->bondStateMessage(NULL, traceMsg);
 		RR->t->bondStateMessage(NULL, traceMsg);
 		forgetFlowsWhenNecessary(0, true, now);
 		forgetFlowsWhenNecessary(0, true, now);
 	}
 	}
@@ -469,7 +480,7 @@ SharedPtr<Flow> Bond::createFlow(const SharedPtr<Path>& path, int32_t flowId, un
 			(unsigned long long)(_peer->_id.address().toInt()),
 			(unsigned long long)(_peer->_id.address().toInt()),
 			link->ifname().c_str(),
 			link->ifname().c_str(),
 			curPathStr,
 			curPathStr,
-			_flows.size());
+			(unsigned long)_flows.size());
 		RR->t->bondStateMessage(NULL, traceMsg);
 		RR->t->bondStateMessage(NULL, traceMsg);
 	}
 	}
 	/**
 	/**
@@ -491,7 +502,13 @@ void Bond::forgetFlowsWhenNecessary(uint64_t age, bool oldest, int64_t now)
 	if (age) {	 // Remove by specific age
 	if (age) {	 // Remove by specific age
 		while (it != _flows.end()) {
 		while (it != _flows.end()) {
 			if (it->second->age(now) > age) {
 			if (it->second->age(now) > age) {
-				sprintf(traceMsg, "%s (bond) Forgetting flow %x between this node and peer %llx, %lu active flow(s)", OSUtils::humanReadableTimestamp().c_str(), it->first, (unsigned long long)(_peer->_id.address().toInt()), (_flows.size() - 1));
+				sprintf(
+					traceMsg,
+					"%s (bond) Forgetting flow %x between this node and peer %llx, %lu active flow(s)",
+					OSUtils::humanReadableTimestamp().c_str(),
+					it->first,
+					(unsigned long long)(_peer->_id.address().toInt()),
+					(unsigned long)(_flows.size() - 1));
 				RR->t->bondStateMessage(NULL, traceMsg);
 				RR->t->bondStateMessage(NULL, traceMsg);
 				it->second->assignedPath()->_assignedFlowCount--;
 				it->second->assignedPath()->_assignedFlowCount--;
 				it = _flows.erase(it);
 				it = _flows.erase(it);
@@ -516,9 +533,9 @@ void Bond::forgetFlowsWhenNecessary(uint64_t age, bool oldest, int64_t now)
 				"%s (bond) Forgetting oldest flow %x (of age %llu) between this node and peer %llx, %lu active flow(s)",
 				"%s (bond) Forgetting oldest flow %x (of age %llu) between this node and peer %llx, %lu active flow(s)",
 				OSUtils::humanReadableTimestamp().c_str(),
 				OSUtils::humanReadableTimestamp().c_str(),
 				oldestFlow->first,
 				oldestFlow->first,
-				oldestFlow->second->age(now),
-				 (unsigned long long)(_peer->_id.address().toInt()),
-				(_flows.size() - 1));
+				(unsigned long long)oldestFlow->second->age(now),
+				(unsigned long long)(_peer->_id.address().toInt()),
+				(unsigned long)(_flows.size() - 1));
 			RR->t->bondStateMessage(NULL, traceMsg);
 			RR->t->bondStateMessage(NULL, traceMsg);
 			oldestFlow->second->assignedPath()->_assignedFlowCount--;
 			oldestFlow->second->assignedPath()->_assignedFlowCount--;
 			_flows.erase(oldestFlow);
 			_flows.erase(oldestFlow);
@@ -546,7 +563,7 @@ void Bond::processIncomingPathNegotiationRequest(uint64_t now, SharedPtr<Path>&
 			traceMsg,
 			traceMsg,
 			"%s (bond) Peer %llx suggests using alternate link %s/%s. Remote utility (%d) is GREATER than local utility (%d), switching to said link\n",
 			"%s (bond) Peer %llx suggests using alternate link %s/%s. Remote utility (%d) is GREATER than local utility (%d), switching to said link\n",
 			OSUtils::humanReadableTimestamp().c_str(),
 			OSUtils::humanReadableTimestamp().c_str(),
-			 (unsigned long long)(_peer->_id.address().toInt()),
+			(unsigned long long)(_peer->_id.address().toInt()),
 			link->ifname().c_str(),
 			link->ifname().c_str(),
 			pathStr,
 			pathStr,
 			remoteUtility,
 			remoteUtility,
@@ -559,7 +576,7 @@ void Bond::processIncomingPathNegotiationRequest(uint64_t now, SharedPtr<Path>&
 			traceMsg,
 			traceMsg,
 			"%s (bond) Peer %llx suggests using alternate link %s/%s. Remote utility (%d) is LESS than local utility (%d), not switching\n",
 			"%s (bond) Peer %llx suggests using alternate link %s/%s. Remote utility (%d) is LESS than local utility (%d), not switching\n",
 			OSUtils::humanReadableTimestamp().c_str(),
 			OSUtils::humanReadableTimestamp().c_str(),
-			 (unsigned long long)(_peer->_id.address().toInt()),
+			(unsigned long long)(_peer->_id.address().toInt()),
 			link->ifname().c_str(),
 			link->ifname().c_str(),
 			pathStr,
 			pathStr,
 			remoteUtility,
 			remoteUtility,
@@ -571,7 +588,7 @@ void Bond::processIncomingPathNegotiationRequest(uint64_t now, SharedPtr<Path>&
 			traceMsg,
 			traceMsg,
 			"%s (bond) Peer %llx suggests using alternate link %s/%s. Remote utility (%d) is equal to local utility (%d)\n",
 			"%s (bond) Peer %llx suggests using alternate link %s/%s. Remote utility (%d) is equal to local utility (%d)\n",
 			OSUtils::humanReadableTimestamp().c_str(),
 			OSUtils::humanReadableTimestamp().c_str(),
-			_peer->_id.address().toInt(),
+			(unsigned long long)(_peer->_id.address().toInt()),
 			link->ifname().c_str(),
 			link->ifname().c_str(),
 			pathStr,
 			pathStr,
 			remoteUtility,
 			remoteUtility,
@@ -656,7 +673,7 @@ void Bond::sendPATH_NEGOTIATION_REQUEST(void* tPtr, const SharedPtr<Path>& path)
 		traceMsg,
 		traceMsg,
 		"%s (bond) Sending link negotiation request to peer %llx via link %s/%s, local utility is %d",
 		"%s (bond) Sending link negotiation request to peer %llx via link %s/%s, local utility is %d",
 		OSUtils::humanReadableTimestamp().c_str(),
 		OSUtils::humanReadableTimestamp().c_str(),
-		 (unsigned long long)(_peer->_id.address().toInt()),
+		(unsigned long long)(_peer->_id.address().toInt()),
 		getLink(path)->ifname().c_str(),
 		getLink(path)->ifname().c_str(),
 		pathStr,
 		pathStr,
 		_localUtility);
 		_localUtility);
@@ -865,7 +882,7 @@ void Bond::curateBond(const int64_t now, bool rebuildBond)
 				OSUtils::humanReadableTimestamp().c_str(),
 				OSUtils::humanReadableTimestamp().c_str(),
 				getLink(_paths[i])->ifname().c_str(),
 				getLink(_paths[i])->ifname().c_str(),
 				pathStr,
 				pathStr,
-				 (unsigned long long)(_peer->_id.address().toInt()),
+				(unsigned long long)(_peer->_id.address().toInt()),
 				_paths[i]->_lastEligibilityState,
 				_paths[i]->_lastEligibilityState,
 				currEligibility);
 				currEligibility);
 			RR->t->bondStateMessage(NULL, traceMsg);
 			RR->t->bondStateMessage(NULL, traceMsg);
@@ -883,14 +900,20 @@ void Bond::curateBond(const int64_t now, bool rebuildBond)
 						OSUtils::humanReadableTimestamp().c_str(),
 						OSUtils::humanReadableTimestamp().c_str(),
 						getLink(_paths[i])->ifname().c_str(),
 						getLink(_paths[i])->ifname().c_str(),
 						pathStr,
 						pathStr,
-						_peer->_id.address().toInt());
+						(unsigned long long)(_peer->_id.address().toInt()));
 					RR->t->bondStateMessage(NULL, traceMsg);
 					RR->t->bondStateMessage(NULL, traceMsg);
 					rebuildBond = true;
 					rebuildBond = true;
 					_paths[i]->_shouldReallocateFlows = _paths[i]->bonded();
 					_paths[i]->_shouldReallocateFlows = _paths[i]->bonded();
 					_paths[i]->setBonded(false);
 					_paths[i]->setBonded(false);
 				}
 				}
 				else {
 				else {
-					sprintf(traceMsg, "%s (bond) Link %s/%s to peer %llx was not bonded, no allocation consequences", OSUtils::humanReadableTimestamp().c_str(), getLink(_paths[i])->ifname().c_str(), pathStr, (unsigned long long)(_peer->_id.address().toInt()));
+					sprintf(
+						traceMsg,
+						"%s (bond) Link %s/%s to peer %llx was not bonded, no allocation consequences",
+						OSUtils::humanReadableTimestamp().c_str(),
+						getLink(_paths[i])->ifname().c_str(),
+						pathStr,
+						(unsigned long long)(_peer->_id.address().toInt()));
 					RR->t->bondStateMessage(NULL, traceMsg);
 					RR->t->bondStateMessage(NULL, traceMsg);
 				}
 				}
 			}
 			}
@@ -1027,7 +1050,6 @@ void Bond::curateBond(const int64_t now, bool rebuildBond)
 
 
 void Bond::estimatePathQuality(const int64_t now)
 void Bond::estimatePathQuality(const int64_t now)
 {
 {
-	char pathStr[128];
 	uint32_t totUserSpecifiedLinkSpeed = 0;
 	uint32_t totUserSpecifiedLinkSpeed = 0;
 	if (_numBondedPaths) {	 // Compute relative user-specified speeds of links
 	if (_numBondedPaths) {	 // Compute relative user-specified speeds of links
 		for (unsigned int i = 0; i < _numBondedPaths; ++i) {
 		for (unsigned int i = 0; i < _numBondedPaths; ++i) {
@@ -1039,7 +1061,7 @@ void Bond::estimatePathQuality(const int64_t now)
 		for (unsigned int i = 0; i < _numBondedPaths; ++i) {
 		for (unsigned int i = 0; i < _numBondedPaths; ++i) {
 			SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _paths[i]->localSocket());
 			SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _paths[i]->localSocket());
 			if (_paths[i] && _paths[i]->allowed()) {
 			if (_paths[i] && _paths[i]->allowed()) {
-				link->setRelativeSpeed(round(((float)link->speed() / (float)totUserSpecifiedLinkSpeed) * 255));
+				link->setRelativeSpeed((uint8_t)round(((float)link->speed() / (float)totUserSpecifiedLinkSpeed) * 255));
 			}
 			}
 		}
 		}
 	}
 	}
@@ -1125,7 +1147,7 @@ void Bond::estimatePathQuality(const int64_t now)
 	// Normalize to 8-bit allocation values
 	// Normalize to 8-bit allocation values
 	for (unsigned int i = 0; i < ZT_MAX_PEER_NETWORK_PATHS; ++i) {
 	for (unsigned int i = 0; i < ZT_MAX_PEER_NETWORK_PATHS; ++i) {
 		if (_paths[i] && _paths[i]->bonded()) {
 		if (_paths[i] && _paths[i]->bonded()) {
-			alloc[i] = std::ceil((quality[i] / totQuality) * (float)255);
+			alloc[i] = (uint8_t)(std::ceil((quality[i] / totQuality) * (float)255));
 			_paths[i]->_allocation = alloc[i];
 			_paths[i]->_allocation = alloc[i];
 		}
 		}
 	}
 	}
@@ -1144,7 +1166,7 @@ void Bond::processBalanceTasks(const int64_t now)
 			totalAllocation += _paths[i]->_allocation;
 			totalAllocation += _paths[i]->_allocation;
 		}
 		}
 	}
 	}
-	unsigned char minimumAllocationValue = 0.33 * ((float)totalAllocation / (float)_numBondedPaths);
+	unsigned char minimumAllocationValue = (uint8_t)(0.33 * ((float)totalAllocation / (float)_numBondedPaths));
 
 
 	if (_allowFlowHashing) {
 	if (_allowFlowHashing) {
 		/**
 		/**
@@ -1397,7 +1419,13 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 					_paths[i]->address().toString(curPathStr);
 					_paths[i]->address().toString(curPathStr);
 					SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _paths[i]->localSocket());
 					SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _paths[i]->localSocket());
 					if (link) {
 					if (link) {
-						sprintf(traceMsg, "%s (active-backup) Found eligible link %s/%s to peer %llx", OSUtils::humanReadableTimestamp().c_str(), getLink(_paths[i])->ifname().c_str(), curPathStr, (unsigned long long)(_peer->_id.address().toInt()));
+						sprintf(
+							traceMsg,
+							"%s (active-backup) Found eligible link %s/%s to peer %llx",
+							OSUtils::humanReadableTimestamp().c_str(),
+							getLink(_paths[i])->ifname().c_str(),
+							curPathStr,
+							(unsigned long long)(_peer->_id.address().toInt()));
 						RR->t->bondStateMessage(NULL, traceMsg);
 						RR->t->bondStateMessage(NULL, traceMsg);
 					}
 					}
 					_abPath = _paths[i];
 					_abPath = _paths[i];
@@ -1437,7 +1465,13 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 					_abPath->address().toString(curPathStr);
 					_abPath->address().toString(curPathStr);
 					SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _abPath->localSocket());
 					SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _abPath->localSocket());
 					if (link) {
 					if (link) {
-						sprintf(traceMsg, "%s (active-backup) Found preferred primary link %s/%s to peer %llx", OSUtils::humanReadableTimestamp().c_str(), getLink(_abPath)->ifname().c_str(), curPathStr, (unsigned long long)(_peer->_id.address().toInt()));
+						sprintf(
+							traceMsg,
+							"%s (active-backup) Found preferred primary link %s/%s to peer %llx",
+							OSUtils::humanReadableTimestamp().c_str(),
+							getLink(_abPath)->ifname().c_str(),
+							curPathStr,
+							(unsigned long long)(_peer->_id.address().toInt()));
 						RR->t->bondStateMessage(NULL, traceMsg);
 						RR->t->bondStateMessage(NULL, traceMsg);
 					}
 					}
 				}
 				}
@@ -1472,7 +1506,13 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 					SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _abPath->localSocket());
 					SharedPtr<Link> link = RR->bc->getLinkBySocket(_policyAlias, _abPath->localSocket());
 					if (link) {
 					if (link) {
 						_abPath->address().toString(curPathStr);
 						_abPath->address().toString(curPathStr);
-						sprintf(traceMsg, "%s (active-backup) Selected non-primary link %s/%s to peer %llx", OSUtils::humanReadableTimestamp().c_str(), getLink(_abPath)->ifname().c_str(), curPathStr, (unsigned long long)(_peer->_id.address().toInt()));
+						sprintf(
+							traceMsg,
+							"%s (active-backup) Selected non-primary link %s/%s to peer %llx",
+							OSUtils::humanReadableTimestamp().c_str(),
+							getLink(_abPath)->ifname().c_str(),
+							curPathStr,
+							(unsigned long long)(_peer->_id.address().toInt()));
 						RR->t->bondStateMessage(NULL, traceMsg);
 						RR->t->bondStateMessage(NULL, traceMsg);
 					}
 					}
 				}
 				}
@@ -1497,7 +1537,7 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 						OSUtils::humanReadableTimestamp().c_str(),
 						OSUtils::humanReadableTimestamp().c_str(),
 						getLink(_abPath)->ifname().c_str(),
 						getLink(_abPath)->ifname().c_str(),
 						curPathStr,
 						curPathStr,
-						 (unsigned long long)(_peer->_id.address().toInt()),
+						(unsigned long long)(_peer->_id.address().toInt()),
 						_abFailoverQueue.size());
 						_abFailoverQueue.size());
 					RR->t->bondStateMessage(NULL, traceMsg);
 					RR->t->bondStateMessage(NULL, traceMsg);
 				}
 				}
@@ -1573,7 +1613,7 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 							OSUtils::humanReadableTimestamp().c_str(),
 							OSUtils::humanReadableTimestamp().c_str(),
 							getLink(_abPath)->ifname().c_str(),
 							getLink(_abPath)->ifname().c_str(),
 							curPathStr,
 							curPathStr,
-							 (unsigned long long)(_peer->_id.address().toInt()),
+							(unsigned long long)(_peer->_id.address().toInt()),
 							_abFailoverQueue.size());
 							_abFailoverQueue.size());
 						RR->t->bondStateMessage(NULL, traceMsg);
 						RR->t->bondStateMessage(NULL, traceMsg);
 					}
 					}
@@ -1625,7 +1665,7 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 							OSUtils::humanReadableTimestamp().c_str(),
 							OSUtils::humanReadableTimestamp().c_str(),
 							getLink(_paths[i])->ifname().c_str(),
 							getLink(_paths[i])->ifname().c_str(),
 							curPathStr,
 							curPathStr,
-							 (unsigned long long)(_peer->_id.address().toInt()),
+							(unsigned long long)(_peer->_id.address().toInt()),
 							_abFailoverQueue.size());
 							_abFailoverQueue.size());
 						RR->t->bondStateMessage(NULL, traceMsg);
 						RR->t->bondStateMessage(NULL, traceMsg);
 					}
 					}
@@ -1651,13 +1691,19 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 			OSUtils::humanReadableTimestamp().c_str(),
 			OSUtils::humanReadableTimestamp().c_str(),
 			getLink(_abPath)->ifname().c_str(),
 			getLink(_abPath)->ifname().c_str(),
 			curPathStr,
 			curPathStr,
-			 (unsigned long long)(_peer->_id.address().toInt()),
+			(unsigned long long)(_peer->_id.address().toInt()),
 			_abFailoverQueue.size());
 			_abFailoverQueue.size());
 		RR->t->bondStateMessage(NULL, traceMsg);
 		RR->t->bondStateMessage(NULL, traceMsg);
 		if (! _abFailoverQueue.empty()) {
 		if (! _abFailoverQueue.empty()) {
 			dequeueNextActiveBackupPath(now);
 			dequeueNextActiveBackupPath(now);
 			_abPath->address().toString(curPathStr);
 			_abPath->address().toString(curPathStr);
-			sprintf(traceMsg, "%s (active-backup) Active link to peer %llx has been switched to %s/%s", OSUtils::humanReadableTimestamp().c_str(), (unsigned long long)(_peer->_id.address().toInt()), getLink(_abPath)->ifname().c_str(), curPathStr);
+			sprintf(
+				traceMsg,
+				"%s (active-backup) Active link to peer %llx has been switched to %s/%s",
+				OSUtils::humanReadableTimestamp().c_str(),
+				(unsigned long long)(_peer->_id.address().toInt()),
+				getLink(_abPath)->ifname().c_str(),
+				curPathStr);
 			RR->t->bondStateMessage(NULL, traceMsg);
 			RR->t->bondStateMessage(NULL, traceMsg);
 		}
 		}
 		else {
 		else {
@@ -1728,7 +1774,7 @@ void Bond::processActiveBackupTasks(void* tPtr, const int64_t now)
 					int prevFScore = _abPath->_failoverScore;
 					int prevFScore = _abPath->_failoverScore;
 					// Establish a minimum switch threshold to prevent flapping
 					// Establish a minimum switch threshold to prevent flapping
 					int failoverScoreDifference = _abFailoverQueue.front()->_failoverScore - _abPath->_failoverScore;
 					int failoverScoreDifference = _abFailoverQueue.front()->_failoverScore - _abPath->_failoverScore;
-					int thresholdQuantity = (ZT_MULTIPATH_ACTIVE_BACKUP_OPTIMIZE_MIN_THRESHOLD * (float)_abPath->_allocation);
+					int thresholdQuantity = (int)(ZT_MULTIPATH_ACTIVE_BACKUP_OPTIMIZE_MIN_THRESHOLD * (float)_abPath->_allocation);
 					if ((failoverScoreDifference > 0) && (failoverScoreDifference > thresholdQuantity)) {
 					if ((failoverScoreDifference > 0) && (failoverScoreDifference > thresholdQuantity)) {
 						SharedPtr<Path> oldPath = _abPath;
 						SharedPtr<Path> oldPath = _abPath;
 						_abPath->address().toString(prevPathStr);
 						_abPath->address().toString(prevPathStr);
@@ -1796,8 +1842,8 @@ void Bond::setReasonableDefaults(int policy, SharedPtr<Bond> templateBond, bool
 
 
 	_maxAcceptableLatency = 100;
 	_maxAcceptableLatency = 100;
 	_maxAcceptablePacketDelayVariance = 50;
 	_maxAcceptablePacketDelayVariance = 50;
-	_maxAcceptablePacketLossRatio = 0.10;
-	_maxAcceptablePacketErrorRatio = 0.10;
+	_maxAcceptablePacketLossRatio = 0.10f;
+	_maxAcceptablePacketErrorRatio = 0.10f;
 	_userHasSpecifiedLinkSpeeds = 0;
 	_userHasSpecifiedLinkSpeeds = 0;
 
 
 	/* ZT_MULTIPATH_FLOW_REBALANCE_STRATEGY_PASSIVE is the most conservative strategy and is
 	/* ZT_MULTIPATH_FLOW_REBALANCE_STRATEGY_PASSIVE is the most conservative strategy and is

+ 2 - 2
node/Bond.hpp

@@ -15,9 +15,9 @@
 #define ZT_BOND_HPP
 #define ZT_BOND_HPP
 
 
 #include "Flow.hpp"
 #include "Flow.hpp"
+#include "Packet.hpp"
 #include "Path.hpp"
 #include "Path.hpp"
 #include "Peer.hpp"
 #include "Peer.hpp"
-#include "Packet.hpp"
 
 
 #include <list>
 #include <list>
 #include <map>
 #include <map>
@@ -351,7 +351,7 @@ class Bond {
 	 */
 	 */
 	void setMinAcceptableAllocation(float minAlloc)
 	void setMinAcceptableAllocation(float minAlloc)
 	{
 	{
-		_minAcceptableAllocation = minAlloc * 255;
+		_minAcceptableAllocation = (uint8_t)(minAlloc * 255);
 	}
 	}
 
 
 	/**
 	/**

+ 0 - 4
osdep/Link.hpp

@@ -25,10 +25,6 @@ class Link {
 	friend class SharedPtr<Link>;
 	friend class SharedPtr<Link>;
 
 
   public:
   public:
-	Link()
-	{
-	}
-
 	/**
 	/**
 	 *
 	 *
 	 * @param ifnameStr
 	 * @param ifnameStr