From: <ma...@pr...> - 2004-08-01 11:30:53
|
Update of /cvsroot/meshdb/www/ipdb/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11180/include Added Files: network.php Log Message: first vaguely operating ipdb prototype (browses structure only) --- NEW FILE: network.php --- <?php function cidr_split($cidr_address, $cidr_index, $cidr_bits) { $before_first = substr($cidr_address, 0, strpos($cidr_address, "/")); $before_netmask = substr(strstr($cidr_address, "/"), 1); $after_netmask = $before_netmask + $cidr_bits; if ($after_netmask > 32) { return NULL; } else { if ($cidr_index > (pow(2,$cidr_bits)-1)) { return NULL; } else { $start = substr(str_pad(decbin(ip2long($before_first)), 32, "0", STR_PAD_LEFT), 0, $before_netmask); $middle = str_pad(decbin($cidr_index), $cidr_bits, "0", STR_PAD_LEFT); $end = str_repeat("0", 32 - $after_netmask); $ip = long2ip(bindec($start.$middle.$end)); return $ip."/".$after_netmask; } } } function cidr_network($cidr) { return substr($cidr, 0, strpos($cidr, "/")); } function cidr_netmask($cidr) { return substr(strstr($cidr, "/"), 1); } function cidr_firstip($cidr) { $bits = cidr_netmask($cidr); return cidr_host(cidr_split($cidr, 1, 32-$bits)); } function cidr_lastip($cidr) { $bits = cidr_netmask($cidr); return cidr_host(cidr_split($cidr, pow(2, 32-$bits)-2, 32-$bits)); } function cidr_numhosts($cidr) { $bits = cidr_netmask($cidr); return pow(2, 32-$bits) - 2; } function cidr_host($cidr) { $bits = cidr_netmask($cidr); if ($bits = 32) { return cidr_network($cidr); } else { return $cidr; } } function cidr_summary($cidr) { return cidr_firstip($cidr) . " - " . cidr_lastip($cidr) . " (" . cidr_numhosts(cidr) + " hosts)"; } function cidr_conv($cidr) { $first = substr($cidr, 0, strpos($cidr, "/")); $netmask = substr(strstr($cidr, "/"), 1); $first_bin = str_pad(decbin(ip2long($first)), 32, "0", STR_PAD_LEFT); $netmask_bin = str_pad(str_repeat("1", (integer)$netmask), 32, "0", STR_PAD_RIGHT); for ($i = 0; $i < 32; $i++) { if ($netmask_bin[$i] == "1") $last_bin .= $first_bin[$i]; else $last_bin .= "1"; } $last = long2ip(bindec($last_bin)); return "$first - $last"; } ?> |