From: Michael Tremer Date: Tue, 29 Jul 2014 10:14:23 +0000 (+0200) Subject: Revert "General-functions.pl: rewrite IpInSubnet replace inet_ntoa" X-Git-Tag: v2.15-core80~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cea4fc3aaf3fb9b776a2209ccdaff6452e099f8e;p=ipfire-2.x.git Revert "General-functions.pl: rewrite IpInSubnet replace inet_ntoa" This reverts commit ab92dc0c84cc6c11f90e753439567d80bac23e2b. See comment in last commit --- diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index ebf6214201..dbac0d7a1d 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -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)); } #