function validate_ip_range_range($ip_range) { $parts = explode('-', $ip_range); if (2 < ($parts_count = count($parts))) { return false; } if (validate_ipv4($parts[0], $arr)) { $ip_parts = explode('.', $parts[0]); if ($parts_count == 2) { if (!ereg('^[0-9]{1,3}$', $parts[1])) { return false; } sscanf($ip_parts[3], "%d", $from_value); sscanf($parts[1], "%d", $to_value); if ($to_value > 255 || $from_value > $to_value) { return false; } } } else { if (defined('ZBX_HAVE_IPV6') && validate_ipv6($parts[0], $arr)) { $ip_parts = explode(':', $parts[0]); $ip_parts_count = count($ip_parts); if ($parts_count == 2) { if (!ereg('^[A-Fa-f0-9]{1,4}$', $parts[1])) { return false; } sscanf($ip_parts[$ip_parts_count - 1], "%x", $from_value); sscanf($parts[1], "%x", $to_value); if ($from_value > $to_value) { return false; } } } else { return false; } } return true; }
function validate_ip_range_range($ip_range) { $parts = explode('-', $ip_range); if (($parts_count = count($parts)) > 2) { return false; } if (validate_ipv4($parts[0], $arr)) { $ip_parts = explode('.', $parts[0]); if ($parts_count == 2) { if (!preg_match('/^([0-9]{1,3})$/', $parts[1])) { return false; } sscanf($ip_parts[3], "%d", $from_value); sscanf($parts[1], "%d", $to_value); if ($to_value > 255 || $from_value > $to_value) { return false; } } } elseif (ZBX_HAVE_IPV6 && validate_ipv6($parts[0])) { $ip_parts = explode(':', $parts[0]); $ip_parts_count = count($ip_parts); if ($parts_count == 2) { if (!preg_match('/^([a-f0-9]{1,4})$/i', $parts[1])) { return false; } sscanf($ip_parts[$ip_parts_count - 1], "%x", $from_value); sscanf($parts[1], "%x", $to_value); if ($from_value > $to_value) { return false; } } } else { return false; } return true; }