public static function netmask_range($ip, $netmask, &$min, &$max, $raw = false) { $addr = self::type($ip, $type); if ($type === self::IP4) { $long_ip = ip2long($ip); $netmask = $netmask !== '' ? $netmask : 32; $mask = self::netmask($netmask, self::IP4); if ($mask === false) { return false; } $min = $long_ip & $mask; $max = $min ^ ~$mask & 0xffffffff; if (!$raw) { $min = long2ip($min); $max = long2ip($max); } return true; } elseif ($type === self::IP6) { $netmask = $netmask !== '' ? $netmask : 128; $mask = self::netmask($netmask, self::IP6); if ($mask === false) { return false; } $range = _string::bin_range($addr, $min, $max, $mask); if ($range === false) { return false; } if (!$raw) { $min = self::addr2ip($min); $max = self::addr2ip($max); } return true; } else { return false; } }