Merge pull request #5167
2d06c0f
Add missing reserved address spaces. (Matt Corallo)
This commit is contained in:
commit
4f5f490ce0
2 changed files with 21 additions and 1 deletions
|
@ -667,11 +667,28 @@ bool CNetAddr::IsRFC1918() const
|
||||||
(GetByte(3) == 172 && (GetByte(2) >= 16 && GetByte(2) <= 31)));
|
(GetByte(3) == 172 && (GetByte(2) >= 16 && GetByte(2) <= 31)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CNetAddr::IsRFC2544() const
|
||||||
|
{
|
||||||
|
return IsIPv4() && GetByte(3) == 198 && (GetByte(2) == 18 || GetByte(2) == 19);
|
||||||
|
}
|
||||||
|
|
||||||
bool CNetAddr::IsRFC3927() const
|
bool CNetAddr::IsRFC3927() const
|
||||||
{
|
{
|
||||||
return IsIPv4() && (GetByte(3) == 169 && GetByte(2) == 254);
|
return IsIPv4() && (GetByte(3) == 169 && GetByte(2) == 254);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CNetAddr::IsRFC6598() const
|
||||||
|
{
|
||||||
|
return IsIPv4() && GetByte(3) == 100 && GetByte(2) >= 64 && GetByte(2) <= 127;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CNetAddr::IsRFC5737() const
|
||||||
|
{
|
||||||
|
return IsIPv4() && ((GetByte(3) == 192 && GetByte(2) == 0 && GetByte(1) == 2) ||
|
||||||
|
(GetByte(3) == 198 && GetByte(2) == 51 && GetByte(1) == 100) ||
|
||||||
|
(GetByte(3) == 203 && GetByte(2) == 0 && GetByte(1) == 113));
|
||||||
|
}
|
||||||
|
|
||||||
bool CNetAddr::IsRFC3849() const
|
bool CNetAddr::IsRFC3849() const
|
||||||
{
|
{
|
||||||
return GetByte(15) == 0x20 && GetByte(14) == 0x01 && GetByte(13) == 0x0D && GetByte(12) == 0xB8;
|
return GetByte(15) == 0x20 && GetByte(14) == 0x01 && GetByte(13) == 0x0D && GetByte(12) == 0xB8;
|
||||||
|
@ -778,7 +795,7 @@ bool CNetAddr::IsValid() const
|
||||||
|
|
||||||
bool CNetAddr::IsRoutable() const
|
bool CNetAddr::IsRoutable() const
|
||||||
{
|
{
|
||||||
return IsValid() && !(IsRFC1918() || IsRFC3927() || IsRFC4862() || (IsRFC4193() && !IsTor()) || IsRFC4843() || IsLocal());
|
return IsValid() && !(IsRFC1918() || IsRFC2544() || IsRFC3927() || IsRFC4862() || IsRFC6598() || IsRFC5737() || (IsRFC4193() && !IsTor()) || IsRFC4843() || IsLocal());
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Network CNetAddr::GetNetwork() const
|
enum Network CNetAddr::GetNetwork() const
|
||||||
|
|
|
@ -61,6 +61,9 @@ class CNetAddr
|
||||||
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)
|
||||||
|
bool IsRFC2544() const; // IPv4 inter-network communcations (192.18.0.0/15)
|
||||||
|
bool IsRFC6598() const; // IPv4 ISP-level NAT (100.64.0.0/10)
|
||||||
|
bool IsRFC5737() const; // IPv4 documentation addresses (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24)
|
||||||
bool IsRFC3849() const; // IPv6 documentation address (2001:0DB8::/32)
|
bool IsRFC3849() const; // IPv6 documentation address (2001:0DB8::/32)
|
||||||
bool IsRFC3927() const; // IPv4 autoconfig (169.254.0.0/16)
|
bool IsRFC3927() const; // IPv4 autoconfig (169.254.0.0/16)
|
||||||
bool IsRFC3964() const; // IPv6 6to4 tunnelling (2002::/16)
|
bool IsRFC3964() const; // IPv6 6to4 tunnelling (2002::/16)
|
||||||
|
|
Loading…
Reference in a new issue