diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-10-25 12:43:35 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-10-25 12:43:35 -0700 |
| commit | 96e1df58540fcec2f251a9cb9ab0550e4c6563ba (patch) | |
| tree | f826bd2e3698d2d836beba1723ca809bd5578424 /controller/EmbeddedNetworkController.cpp | |
| parent | 2e44b90f633acfa0fbcf262a99f9690fec2d3e3f (diff) | |
| parent | 5a0adba798effa9690160bc11658abb50b38805d (diff) | |
| download | infinitytier-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.cpp | 8 |
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); |
