function get_all_ip($parent = NULL, $family = NULL) { $all_ip = array(); if ($parent === NULL) { $parent_query = "parent IS NULL"; } else { if (is_numeric($parent)) { $parent_query = "parent = '" . $parent . "'"; } else { if ($parent == "ALL") { $parent_query = "1"; } else { $error; return false; } } } $family_query = "1"; if ($family == 4) { $family_query = "family = '4'"; } else { if ($family == 6) { $family_query = "family = '6'"; } } $query = "SELECT netblock_id, base_addr, subnet_size FROM ipmanager_netblocks WHERE " . $parent_query . " AND " . $family_query . ""; $result = mysql_query($query) or die('Error, query failed. ' . mysql_error()); // get all entries if (!$result) { #$this->error = mysql_error(); return false; } $n_result = array(); if (mysql_num_rows($result) == 0) { return $n_result; } $index = array(); $t_ip_arr = array(); //substring the netblock into 4 different 32 bits and multi sort all 4 of these while ($obj = mysql_fetch_object($result)) { //array_push($t_ip_arr, array("netblock"=>$obj->netblock_id, "addr"=>$obj->base_addr, "subnet"=>$obj->subnet_size)); $addr = str_pad($obj->base_addr, 40, 0, STR_PAD_LEFT); $str1 = substr($addr, 0, 10); $str2 = substr($addr, 9, 10); $str3 = substr($addr, 19, 10); $str4 = substr($addr, 29, 10); $str5 = substr($addr, 39, 10); //give the argument for sorting $all_ip[$obj->netblock_id] = array("real_addr" => $obj->base_addr, "addr1" => $str1, "addr2" => $str2, "addr3" => $str3, "addr4" => $str4, "addr5" => $str5, "subnet" => $obj->subnet_size); $index[$obj->base_addr . "/" . $obj->subnet_size] = $obj->netblock_id; } //rearrange the result and put them in again based on the sorting argument $s_result = IP_Database::multisort($all_ip, array("addr1", "addr2", "addr3", "addr4", "addr5", "subnet")); foreach ($s_result as $id => $content) { //$addr = explode(".", bcmul($content["addr"],100000)); $ip_id = $index[$content["real_addr"] . "/" . $content["subnet"]]; $n_result[$ip_id] = $content["real_addr"] . "/" . $content["subnet"]; } //print_r($s_result); //print_r($n_result); return $n_result; }