summaryrefslogtreecommitdiff
path: root/controller/EmbeddedNetworkController.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2018-10-25 12:43:35 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2018-10-25 12:43:35 -0700
commit96e1df58540fcec2f251a9cb9ab0550e4c6563ba (patch)
treef826bd2e3698d2d836beba1723ca809bd5578424 /controller/EmbeddedNetworkController.cpp
parent2e44b90f633acfa0fbcf262a99f9690fec2d3e3f (diff)
parent5a0adba798effa9690160bc11658abb50b38805d (diff)
downloadinfinitytier-96e1df58540fcec2f251a9cb9ab0550e4c6563ba.tar.gz
infinitytier-96e1df58540fcec2f251a9cb9ab0550e4c6563ba.zip
Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev
Diffstat (limited to 'controller/EmbeddedNetworkController.cpp')
-rw-r--r--controller/EmbeddedNetworkController.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp
index 27d7658a..baed88e6 100644
--- a/controller/EmbeddedNetworkController.cpp
+++ b/controller/EmbeddedNetworkController.cpp
@@ -1610,18 +1610,20 @@ void EmbeddedNetworkController::_request(
if ( (ipRangeStartIA.ss_family == AF_INET) && (ipRangeEndIA.ss_family == AF_INET) ) {
uint32_t ipRangeStart = Utils::ntoh((uint32_t)(reinterpret_cast<struct sockaddr_in *>(&ipRangeStartIA)->sin_addr.s_addr));
uint32_t ipRangeEnd = Utils::ntoh((uint32_t)(reinterpret_cast<struct sockaddr_in *>(&ipRangeEndIA)->sin_addr.s_addr));
+
if ((ipRangeEnd < ipRangeStart)||(ipRangeStart == 0))
continue;
uint32_t ipRangeLen = ipRangeEnd - ipRangeStart;
-
+
// Start with the LSB of the member's address
uint32_t ipTrialCounter = (uint32_t)(identity.address().toInt() & 0xffffffff);
for(uint32_t k=ipRangeStart,trialCount=0;((k<=ipRangeEnd)&&(trialCount < 1000));++k,++trialCount) {
uint32_t ip = (ipRangeLen > 0) ? (ipRangeStart + (ipTrialCounter % ipRangeLen)) : ipRangeStart;
++ipTrialCounter;
- if ((ip & 0x000000ff) == 0x000000ff)
+ if ((ip & 0x000000ff) == 0x000000ff) {
continue; // don't allow addresses that end in .255
+ }
// Check if this IP is within a local-to-Ethernet routed network
int routedNetmaskBits = -1;
@@ -1659,7 +1661,7 @@ void EmbeddedNetworkController::_request(
}
}
}
-
+
// Issue a certificate of ownership for all static IPs
if (nc->staticIpCount) {
nc->certificatesOfOwnership[0] = CertificateOfOwnership(nwid,now,identity.address(),1);