CNetAddr: Add IsBindAny method to check for INADDR_ANY

pull/643/head
Luke Dashjr 6 years ago
parent 3615003952
commit d6a1287481

@ -83,6 +83,16 @@ unsigned int CNetAddr::GetByte(int n) const
return ip[15-n]; return ip[15-n];
} }
bool CNetAddr::IsBindAny() const
{
const int cmplen = IsIPv4() ? 4 : 16;
for (int i = 0; i < cmplen; ++i) {
if (GetByte(i)) return false;
}
return true;
}
bool CNetAddr::IsIPv4() const bool CNetAddr::IsIPv4() const
{ {
return (memcmp(ip, pchIPv4, sizeof(pchIPv4)) == 0); return (memcmp(ip, pchIPv4, sizeof(pchIPv4)) == 0);

@ -55,6 +55,7 @@ class CNetAddr
bool SetInternal(const std::string& name); bool SetInternal(const std::string& name);
bool SetSpecial(const std::string &strName); // for Tor addresses bool SetSpecial(const std::string &strName); // for Tor addresses
bool IsBindAny() const; // INADDR_ANY equivalent
bool IsIPv4() const; // IPv4 mapped address (::FFFF:0:0/96, 0.0.0.0/0) bool IsIPv4() const; // IPv4 mapped address (::FFFF:0:0/96, 0.0.0.0/0)
bool IsIPv6() const; // IPv6 address (not mapped IPv4, not Tor) bool IsIPv6() const; // IPv6 address (not mapped IPv4, not Tor)
bool IsRFC1918() const; // IPv4 private networks (10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12) bool IsRFC1918() const; // IPv4 private networks (10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12)

Loading…
Cancel
Save