mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-05 03:53:44 +02:00
Fix (some) compile-time warnings on Windows
This commit is contained in:
parent
7faaa55436
commit
13481cea18
3 changed files with 79 additions and 37 deletions
108
node/Bond.cpp
108
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)oldestFlow->second->age(now),
|
||||||
(unsigned long long)(_peer->_id.address().toInt()),
|
(unsigned long long)(_peer->_id.address().toInt()),
|
||||||
(_flows.size() - 1));
|
(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;
|
_maxAcceptablePacketLossRatio = 0.10f;
|
||||||
_maxAcceptablePacketErrorRatio = 0.10;
|
_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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -25,10 +25,6 @@ class Link {
|
||||||
friend class SharedPtr<Link>;
|
friend class SharedPtr<Link>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Link()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param ifnameStr
|
* @param ifnameStr
|
||||||
|
|
Loading…
Add table
Reference in a new issue