1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-26 01:19:03 +00:00

Update ip_is_reserved(): I decided to go through the existing address checks

to verify their correctness and to check more than just the table in
ipv4-address-space.  Beyond comment changes and some code movement:

* 198.51.100.0/24 and 203.0.113.0/24 are reserved by RFC5737 (Jan 2010)
* Fix 198.18.0.0/15, which was implemented wrongly.  This goes back a while
and was handled somewhat like 198.18.0.0/18.
This commit is contained in:
kris
2010-03-13 01:31:11 +00:00
parent 8e0d0c2929
commit 599bb361a4
2 changed files with 19 additions and 13 deletions

28
nmap.cc
View File

@@ -362,6 +362,8 @@ static int ip_is_reserved(struct in_addr *ip)
case 49: /* 049/8 is IANA reserved */
case 55: /* misc. U.S.A. Armed forces */
case 127: /* 127/8 is reserved for loopback */
case 176: /* 176/8 is IANA reserved */
case 177: /* 177/8 is IANA reserved */
case 179: /* 179/8 is IANA reserved */
case 181: /* 181/8 is IANA reserved */
case 185: /* 185/8 is IANA reserved */
@@ -379,30 +381,34 @@ static int ip_is_reserved(struct in_addr *ip)
if (i1 == 172 && i2 >= 16 && i2 <= 31)
return 1;
/* 176-177/8 is IANA reserved */
if (i1 >= 176 && i1 <= 177)
return 1;
/* 192.168.0.0/16 is reserved for private nets by RFC1819 */
/* 192.0.2.0/24 is reserved for documentation and examples */
/* 192.0.2.0/24 is reserved for documentation and examples (RFC5737) */
/* 192.88.99.0/24 is used as 6to4 Relay anycast prefix by RFC3068 */
/* 192.168.0.0/16 is reserved for private nets by RFC1819 */
if (i1 == 192) {
if (i2 == 168)
return 1;
if (i2 == 0 && i3 == 2)
return 1;
if (i2 == 88 && i3 == 99)
return 1;
if (i2 == 168)
return 1;
}
/* 198.18.0.0/15 is used for benchmark tests by RFC2544 */
if (i1 == 198 && i2 == 18 && i3 >= 1 && i3 <= 64) {
return 1;
/* 198.51.100.0/24 is reserved for documentation (RFC5737) */
if (i1 == 198) {
if (i2 == 18 || i2 == 19)
return 1;
if (i2 == 51 && i3 == 100)
return 1;
}
/* reserved for DHCP clients seeking addresses, not routable outside LAN */
/* 169.254.0.0/16 is reserved for DHCP clients seeking addresses */
if (i1 == 169 && i2 == 254)
return 1;
/* 203.0.113.0/24 is reserved for documentation (RFC5737) */
if (i1 == 203 && i2 == 0 && i3 == 113)
return 1;
/* 224-239/8 is all multicast stuff */
/* 240-255/8 is IANA reserved */