Skip to content

Instantly share code, notes, and snippets.

@zyphlar
Last active August 29, 2015 14:03
Show Gist options
  • Save zyphlar/8e7b2017a5d925ddd12c to your computer and use it in GitHub Desktop.
Save zyphlar/8e7b2017a5d925ddd12c to your computer and use it in GitHub Desktop.
Javascript / JQuery for testing if a given IP is in the IANA reserved range
alert( is_iana_reserved_ip("192.168.5.5") );
alert( is_iana_reserved_ip("192.200.5.5") );
function IPnumber(IPaddress) {
var ip = IPaddress.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
if(ip) {
return (+ip[1]<<24) + (+ip[2]<<16) + (+ip[3]<<8) + (+ip[4]);
}
// else ... ?
return null;
}
function IPmask(maskSize) {
return -1<<(32-maskSize)
}
function is_iana_reserved_ip(ip){
// "ip": maskbits
// per http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml
var reserved = {
"0.0.0.0": 8,
"10.0.0.0": 8,
"100.64.0.0": 10,
"127.0.0.0": 8,
"169.254.0.0": 16,
"172.16.0.0": 12,
"192.0.0.0": 24,
"192.0.2.0": 24,
"192.88.99.0": 24,
"192.168.0.0": 16,
"198.18.0.0": 15,
"198.51.100.0": 24,
"203.0.113.0": 24,
"224.0.0.0": 8,
"225.0.0.0": 8,
"226.0.0.0": 8,
"227.0.0.0": 8,
"228.0.0.0": 8,
"229.0.0.0": 8,
"230.0.0.0": 8,
"231.0.0.0": 8,
"232.0.0.0": 8,
"233.0.0.0": 8,
"234.0.0.0": 8,
"235.0.0.0": 8,
"236.0.0.0": 8,
"237.0.0.0": 8,
"238.0.0.0": 8,
"239.0.0.0": 8,
"255.255.255.255": 32,
};
var results = $.map(reserved, function(m, i){
return (IPnumber(i) & IPmask(m)) == (IPnumber(ip) & IPmask(m));
});
if( results.indexOf(true) > -1){
return true;
}
else {
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment