示例#1
0
 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;
     }
 }