diff options
author | Matt Corallo <git@bluematt.me> | 2014-10-28 23:54:06 -0700 |
---|---|---|
committer | Matt Corallo <git@bluematt.me> | 2014-10-28 23:54:39 -0700 |
commit | 2d06c0febfbe073c166717e4108deceefba38830 (patch) | |
tree | 6d542048d1f95eff0c90f4929a1a79c713f2415d /src/netbase.cpp | |
parent | 65e4e8427d900b27f579dc12af6c74b3ec628286 (diff) |
Add missing reserved address spaces.
Diffstat (limited to 'src/netbase.cpp')
-rw-r--r-- | src/netbase.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/netbase.cpp b/src/netbase.cpp index b3d1001547..ea05b8766f 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -667,11 +667,28 @@ bool CNetAddr::IsRFC1918() const (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 { 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 { 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 { - 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 |