sub ip_2_int {
my ($ip) = @_;
$ip =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/
or die "$ip is an invalid address";
return ($1<<24)|($2<<16)|($3<<8)|$4;
}
####
if (($ipaddress|$netmask)==$network) {
# then $ipaddress is in the range $network/$netmask defines
}
####
sub isInNetwork {
my ($cidr_str, $ipaddress_str) = @_;
my ($network_str, $netmask_str) = split ('/', $cidr_str);
my ($network, $ip) = (ip_2_int ($network_str),
ip_2_int ($ipaddress_str));
return ($network==($ip|(2**$network-1));
}
print "10.0.50.12 is in 10/8!\n"
if isInNetwork ('10.0.0.0/8', '10.0.50.12');