private function cidr4Match($ip, $range)
{
// Split CIDR on /
list($subnet, $bits) = explode('/', $range);
// Convert ip's to long
$ip = ip2long($ip);
$subnet = ip2long($subnet);
// Generate mask and align the subnet if necessary
$mask = -1 << 32 - $bits;
$subnet &= $mask;
// Check for match
return ($ip & $mask) === $subnet;
}