Daniel Lafraia www.lafraia.com 
Home > Certificação Cisco > Documentação > IP Calculator > Source Code

  • 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));
    }
    

  • Copyright © 2002-2005 by Daniel Lafraia