]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - config/cfgroot/general-functions.pl
Revert "General-functions.pl: rewrite IpInSubnet replace inet_ntoa"
[people/teissler/ipfire-2.x.git] / config / cfgroot / general-functions.pl
index ebf621420185971def522b6a8a0ac0694e0ae806..dbac0d7a1d9dd64a359f60250278b19f80960f32 100644 (file)
@@ -773,21 +773,12 @@ sub validportrange # used to check a port range
 # Return: TRUE/FALSE
 sub IpInSubnet
 {
-       my $addr = shift;
-       my $network = shift;
-       my $netmask = shift;
-
-       my $addr_num = &Socket::inet_pton(AF_INET,$addr);
-       my $network_num = &Socket::inet_pton(AF_INET,$network);
-       my $netmask_num = &Socket::inet_pton(AF_INET,$netmask);
-
-       # Find start address
-       my $network_start = $network_num & $netmask_num;
-
-       # Find end address
-       my $network_end = $network_start ^ ~$netmask_num;
-
-       return (($addr_num ge $network_start) && ($addr_num le $network_end));
+    my $ip = unpack('N', &Socket::inet_aton(shift));
+    my $start = unpack('N', &Socket::inet_aton(shift));
+    my $mask  = unpack('N', &Socket::inet_aton(shift));
+       $start &= $mask;  # base of subnet...
+    my $end   = $start + ~$mask;
+    return (($ip >= $start) && ($ip <= $end));
 }
 
 #