protected static function processWithSlash($range)
{
list($range, $netmask) = explode('/', $range, 2);
if (self::$isv6) {
if (strpos($netmask, ':') !== false) {
$netmask = str_replace('*', '0', $netmask);
$netmask_dec = self::ip2long($netmask);
return (self::ip2long(self::$ip) & $netmask_dec) == (self::ip2long($range) & $netmask_dec);
} else {
$x = explode(':', $range);
while (count($x) < 8) {
$x[] = '0';
}
list($a, $b, $c, $d, $e, $f, $g, $h) = $x;
$range = sprintf("%u:%u:%u:%u:%u:%u:%u:%u", empty($a) ? '0' : $a, empty($b) ? '0' : $b, empty($c) ? '0' : $c, empty($d) ? '0' : $d, empty($e) ? '0' : $e, empty($f) ? '0' : $f, empty($g) ? '0' : $g, empty($h) ? '0' : $h);
$range_dec = self::ip2long($range);
$ip_dec = self::ip2long(self::$ip);
$wildcard_dec = pow(2, 32 - $netmask) - 1;
$netmask_dec = ~$wildcard_dec;
return ($ip_dec & $netmask_dec) == ($range_dec & $netmask_dec);
}
} else {
if (strpos($netmask, '.') !== false) {
$netmask = str_replace('*', '0', $netmask);
$netmask_dec = self::ip2long($netmask);
return (self::ip2long(self::$ip) & $netmask_dec) == (self::ip2long($range) & $netmask_dec);
} else {
$x = explode('.', $range);
while (count($x) < 4) {
$x[] = '0';
}
list($a, $b, $c, $d) = $x;
$range = sprintf("%u.%u.%u.%u", empty($a) ? '0' : $a, empty($b) ? '0' : $b, empty($c) ? '0' : $c, empty($d) ? '0' : $d);
$range_dec = self::ip2long($range);
$ip_dec = self::ip2long(self::$ip);
$wildcard_dec = pow(2, 32 - $netmask) - 1;
$netmask_dec = ~$wildcard_dec;
return ($ip_dec & $netmask_dec) == ($range_dec & $netmask_dec);
}
}
return false;
}