diff options
Diffstat (limited to 'zerotierone/node/InetAddress.cpp')
| -rw-r--r-- | zerotierone/node/InetAddress.cpp | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/zerotierone/node/InetAddress.cpp b/zerotierone/node/InetAddress.cpp index 1244690..dca772e 100644 --- a/zerotierone/node/InetAddress.cpp +++ b/zerotierone/node/InetAddress.cpp @@ -113,7 +113,7 @@ void InetAddress::set(const std::string &ip,unsigned int port) sin6->sin6_port = Utils::hton((uint16_t)port); if (inet_pton(AF_INET6,ip.c_str(),(void *)&(sin6->sin6_addr.s6_addr)) <= 0) memset(this,0,sizeof(InetAddress)); - } else if (ip.find('.') != std::string::npos) { + } else { struct sockaddr_in *sin = reinterpret_cast<struct sockaddr_in *>(this); ss_family = AF_INET; sin->sin_port = Utils::hton((uint16_t)port); @@ -279,8 +279,6 @@ bool InetAddress::containsAddress(const InetAddress &addr) const switch(ss_family) { case AF_INET: { const unsigned int bits = netmaskBits(); - if (bits == 0) - return true; return ( (Utils::ntoh((uint32_t)reinterpret_cast<const struct sockaddr_in *>(&addr)->sin_addr.s_addr) >> (32 - bits)) == (Utils::ntoh((uint32_t)reinterpret_cast<const struct sockaddr_in *>(this)->sin_addr.s_addr) >> (32 - bits)) ); } case AF_INET6: { @@ -395,6 +393,7 @@ bool InetAddress::operator<(const InetAddress &a) const } InetAddress InetAddress::makeIpv6LinkLocal(const MAC &mac) + throw() { struct sockaddr_in6 sin6; sin6.sin6_family = AF_INET6; @@ -419,6 +418,7 @@ InetAddress InetAddress::makeIpv6LinkLocal(const MAC &mac) } InetAddress InetAddress::makeIpv6rfc4193(uint64_t nwid,uint64_t zeroTierAddress) + throw() { InetAddress r; struct sockaddr_in6 *const sin6 = reinterpret_cast<struct sockaddr_in6 *>(&r); @@ -443,25 +443,4 @@ InetAddress InetAddress::makeIpv6rfc4193(uint64_t nwid,uint64_t zeroTierAddress) return r; } -InetAddress InetAddress::makeIpv66plane(uint64_t nwid,uint64_t zeroTierAddress) -{ - nwid ^= (nwid >> 32); - InetAddress r; - struct sockaddr_in6 *const sin6 = reinterpret_cast<struct sockaddr_in6 *>(&r); - sin6->sin6_family = AF_INET6; - sin6->sin6_addr.s6_addr[0] = 0xfc; - sin6->sin6_addr.s6_addr[1] = (uint8_t)(nwid >> 24); - sin6->sin6_addr.s6_addr[2] = (uint8_t)(nwid >> 16); - sin6->sin6_addr.s6_addr[3] = (uint8_t)(nwid >> 8); - sin6->sin6_addr.s6_addr[4] = (uint8_t)nwid; - sin6->sin6_addr.s6_addr[5] = (uint8_t)(zeroTierAddress >> 32); - sin6->sin6_addr.s6_addr[6] = (uint8_t)(zeroTierAddress >> 24); - sin6->sin6_addr.s6_addr[7] = (uint8_t)(zeroTierAddress >> 16); - sin6->sin6_addr.s6_addr[8] = (uint8_t)(zeroTierAddress >> 8); - sin6->sin6_addr.s6_addr[9] = (uint8_t)zeroTierAddress; - sin6->sin6_addr.s6_addr[15] = 0x01; - sin6->sin6_port = Utils::hton((uint16_t)40); - return r; -} - } // namespace ZeroTier |
