yii\validators\IpValidator::inRange PHP Method

inRange() private method

Checks whether the IP is in subnet range
private inRange ( string $ip, integer $cidr, string $range ) : boolean
$ip string an IPv4 or IPv6 address
$cidr integer
$range string subnet in CIDR format e.g. `10.0.0.0/8` or `2001:af::/64`
return boolean
    private function inRange($ip, $cidr, $range)
    {
        $ipVersion = $this->getIpVersion($ip);
        $binIp = $this->ip2bin($ip);
        $parts = explode('/', $range);
        $net = array_shift($parts);
        $range_cidr = array_shift($parts);
        $netVersion = $this->getIpVersion($net);
        if ($ipVersion !== $netVersion) {
            return false;
        }
        if ($range_cidr === null) {
            $range_cidr = $netVersion === 4 ? static::IPV4_ADDRESS_LENGTH : static::IPV6_ADDRESS_LENGTH;
        }
        $binNet = $this->ip2bin($net);
        return substr($binIp, 0, $range_cidr) === substr($binNet, 0, $range_cidr) && $cidr >= $range_cidr;
    }