/** * parse IP address * * IP must be in CIDR format - '192.168.0.50/16' */ function parseIpAddress($ip, $mask) { /* IPv4 address */ if (IdentifyAddress($ip) == "IPv4") { require 'PEAR/Net/IPv4.php'; $Net_IPv4 = new Net_IPv4(); $net = $Net_IPv4->parseAddress($ip . '/' . $mask); $out['network'] = $net->network; // 192.168.0.0 $out['ip'] = $net->ip; // 192.168.0.50 $out['broadcast'] = $net->broadcast; // 192.168.255.255 $out['bitmask'] = $net->bitmask; // 16 $out['netmask'] = $net->netmask; // 255.255.0.0 } else { require 'PEAR/Net/IPv6.php'; $Net_IPv6 = new Net_IPv6(); $out['network'] = $ip; // 2a34:120:feel:: $out['bitmask'] = $mask; // 48 $out['netmask'] = $mask; // 48 - we just duplicate it //broadcast - we fake it with highest IP in subnet $net = $Net_IPv6->parseaddress($ip . '/' . $mask); $out['broadcast'] = $net['end']; // 2a34:120:feel::ffff:ffff:ffff:ffff:ffff } return $out; }
/** * parse IP address * * IP must be in CIDR format - '192.168.0.50/16' */ function parseIpAddress($ip, $mask) { /* IPv4 address */ if (IdentifyAddress($ip) == "IPv4") { // <eNovance> // Changed to require_once, since it was causing errors when called in a loop require_once dirname(__FILE__) . '/PEAR/Net/IPv4.php'; $Net_IPv4 = new Net_IPv4(); // </eNovance> $net = $Net_IPv4->parseAddress($ip . '/' . $mask); $out['network'] = $net->network; // 192.168.0.0 $out['ip'] = $net->ip; // 192.168.0.50 $out['broadcast'] = $net->broadcast; // 192.168.255.255 $out['bitmask'] = $net->bitmask; // 16 $out['netmask'] = $net->netmask; // 255.255.0.0 } else { require 'PEAR/Net/IPv6.php'; $Net_IPv6 = new Net_IPv6(); $out['network'] = $ip; // 2a34:120:feel:: $out['bitmask'] = $mask; // 48 $out['netmask'] = $mask; // 48 - we just duplicate it //broadcast - we fake it with highest IP in subnet $net = $Net_IPv6->parseaddress($ip . '/' . $mask); $out['broadcast'] = $net['end']; // 2a34:120:feel::ffff:ffff:ffff:ffff:ffff } return $out; }