| 423 | bool CNetAddr::IsCJDNS() const { return m_net == NET_CJDNS; } |
| 424 | |
| 425 | bool CNetAddr::IsLocal() const |
| 426 | { |
| 427 | // IPv4 loopback (127.0.0.0/8 or 0.0.0.0/8) |
| 428 | if (IsIPv4() && (m_addr[0] == 127 || m_addr[0] == 0)) { |
| 429 | return true; |
| 430 | } |
| 431 | |
| 432 | // IPv6 loopback (::1/128) |
| 433 | static const unsigned char pchLocal[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}; |
| 434 | if (IsIPv6() && memcmp(m_addr.data(), pchLocal, sizeof(pchLocal)) == 0) { |
| 435 | return true; |
| 436 | } |
| 437 | |
| 438 | return false; |
| 439 | } |
| 440 | |
| 441 | /** |
| 442 | * @returns Whether or not this network address is a valid address that @a could |