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