Пример #1
0
/**
 * 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;
}
Пример #2
0
/**
 * 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;
}