IP Calculator
by Daniel Lafraia
function ipcalc ($ip,$mask) {
# Created by Daniel Lafraia
# www.lafraia.com
# Please do not remove this header
$return = array();
$octets = array("ip" => preg_split('/\./',$ip),
"mask" => preg_split('/\./',$mask));
foreach ($octets as $obj => $split) {
foreach ($split as $val) {
if ($val >= 0 && $val <= 255) {
$octets[$obj]['binary'] .= str_repeat("0",8-strlen(decbin($val))).decbin($val);
} else {
print "Erro: Item '$obj' inválido";
return -1;
}
}
}
if (! preg_match("/^(1+)0+$/",$octets['mask']['binary'],$matches)) {
print "Erro: Item 'mask' inválido";
return -1;
} else {
$return["maskbits"] = strlen($matches[1]);
}
$return['netid'] = bintoIP(substr($octets['ip']['binary'],0,$return["maskbits"]).str_repeat("0",32-$return["maskbits"]));
$return['broadcast'] = bintoIP(substr($octets['ip']['binary'],0,$return["maskbits"]).str_repeat("1",32-$return["maskbits"]));
$return['netstart'] = bintoIP(substr($octets['ip']['binary'],0,$return["maskbits"]).str_repeat("0",32-$return["maskbits"]-1)."1");
$return['netend'] = bintoIP(substr($octets['ip']['binary'],0,$return["maskbits"]).str_repeat("1",32-$return["maskbits"]-1)."0");
$return['wildcard'] = preg_replace(array("/1/","/0/"),array("a","b"),$octets['mask']['binary']);
$return['wildcard'] = bintoIP(preg_replace(array("/a/","/b/"),array("0","1"),$return['wildcard']));
return $return;
}
function bintoIP ($bin) {
return bindec(substr($bin,0,8)).".".
bindec(substr($bin,8,8)).".".
bindec(substr($bin,16,8)).".".
bindec(substr($bin,24,8));
}
|