/** * Reformat possible nun-full IPv4 address for search * * e.g. 10.10.10 -> 10.10.10.0 - 10.10.10.255 * * @access public * @param mixed $address * @return array high/low decimal address */ public function reformat_IPv4_for_search($address) { # remove % sign if present $address = str_replace("%", "", $address); # we need Addresses class $Addresses = new Addresses($this->Database); # if subnet is provided we have all data if (strpos($address, "/") > 0) { # Initialize PEAR NET object $this->initialize_pear_net_IPv4(); $net = $this->Net_IPv4->parseAddress($ip); $result['low'] = $Addresses->transform_to_decimal($net->network); $result['high'] = $Addresses->transform_to_decimal($net->broadcast); } else { # if subnet is not provided maye wildcard is, so explode it to array $address = array_filter(explode(".", $address)); # 4 pieces is ok, host if (sizeof($address) == 4) { $result['low'] = $result['high'] = $Addresses->transform_to_decimal(implode(".", $address)); } elseif (sizeof($address) == 3) { $result['low'] = $Addresses->transform_to_decimal(implode(".", array_merge($address, array(0)))); $result['high'] = $Addresses->transform_to_decimal(implode(".", array_merge($address, array(255)))); } elseif (sizeof($address) == 2) { $result['low'] = $Addresses->transform_to_decimal(implode(".", array_merge($address, array(0, 0)))); $result['high'] = $Addresses->transform_to_decimal(implode(".", array_merge($address, array(255, 255)))); } elseif (sizeof($address) == 1) { $result['low'] = $Addresses->transform_to_decimal(implode(".", array_merge($address, array(0, 0, 0)))); $result['high'] = $Addresses->transform_to_decimal(implode(".", array_merge($address, array(255, 255, 255)))); } else { $result['low'] = implode(".", $address); $result['high'] = implode(".", $address); } } # return result array low/high return $result; }