|
|
|
|
@ -236,8 +236,14 @@ InetAddress InetAddress::netmask() const
|
|
|
|
|
case AF_INET6: { |
|
|
|
|
uint64_t nm[2]; |
|
|
|
|
const unsigned int bits = netmaskBits(); |
|
|
|
|
nm[0] = Utils::hton((uint64_t)((bits >= 64) ? 0xffffffffffffffffULL : (0xffffffffffffffffULL << (64 - bits)))); |
|
|
|
|
nm[1] = Utils::hton((uint64_t)((bits <= 64) ? 0ULL : (0xffffffffffffffffULL << (128 - bits)))); |
|
|
|
|
if(bits) { |
|
|
|
|
nm[0] = Utils::hton((uint64_t)((bits >= 64) ? 0xffffffffffffffffULL : (0xffffffffffffffffULL << (64 - bits)))); |
|
|
|
|
nm[1] = Utils::hton((uint64_t)((bits <= 64) ? 0ULL : (0xffffffffffffffffULL << (128 - bits)))); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
nm[0] = 0; |
|
|
|
|
nm[1] = 0; |
|
|
|
|
} |
|
|
|
|
memcpy(reinterpret_cast<struct sockaddr_in6 *>(&r)->sin6_addr.s6_addr,nm,16); |
|
|
|
|
} break; |
|
|
|
|
} |
|
|
|
|
|