$oids_ipv6 = array('ipv6AddrPfxLength', 'ipv6AddrType');
    //.1.3.6.1.2.1.55.1.8.1.2.6105.16.254.128.0.0.0.0.0.0.2.26.169.255.254.23.134.97 = 64
    //.1.3.6.1.2.1.55.1.8.1.3.6105.16.254.128.0.0.0.0.0.0.2.26.169.255.254.23.134.97 = stateful
    //Types: stateless(1), stateful(2), unknown(3)
    $oid_data = array();
    foreach ($oids_ipv6 as $oid) {
        $oid_data = snmpwalk_cache_oid_num2($device, $oid, $oid_data, 'IPV6-MIB', mib_dirs());
    }
    // Rewrite IPV6-MIB array
    foreach ($oid_data as $key => $entry) {
        list($ifIndex, $ip_address) = explode('.', $key, 2);
        $ip_address = snmp2ipv6($ip_address);
        if (!is_numeric($entry['ipv6AddrPfxLength'])) {
            $entry['ipv6AddrPfxLength'] = '128';
        }
        if (is_ipv6_valid($ip_address, $entry['ipv6AddrPfxLength']) === FALSE) {
            continue;
        }
        $ip_data[$ifIndex][$ip_address]['ipAddressIfIndex'] = $ifIndex;
        $ip_data[$ifIndex][$ip_address]['ipAddressPrefix'] = $entry['ipv6AddrPfxLength'];
        $ip_data[$ifIndex][$ip_address]['ipAddressOrigin'] = $entry['ipv6AddrType'];
    }
    if ($debug && $ip_data) {
        echo "IPV6-MIB\n";
        print_vars($ip_data);
    }
}
// Caching old IPv6 addresses table
$query = 'SELECT * FROM `ipv6_addresses` AS A
          LEFT JOIN `ports` AS I ON A.`port_id` = I.`port_id`
          WHERE I.`device_id` = ?';
Esempio n. 2
0
         print_debug("Address '{$ip_compressed}/{$ip_prefix}' skipped as invalid.");
         continue;
     }
     $addr = Net_IPv4::parseAddress($ip_address . '/' . $ip_prefix);
     $ip_cidr = $addr->bitmask;
     $ip_network = $addr->network . '/' . $ip_cidr;
     $full_address = $ip_address . '/' . $ip_cidr;
     $new_address = array('port_id' => $port_id, 'ipv4_address' => $ip_address, 'ipv4_prefixlen' => $ip_cidr);
 } else {
     if (!is_numeric($entry['prefix'])) {
         $entry['prefix'] = '128';
     }
     $ip_prefix = $entry['prefix'];
     $ip_origin = $entry['origin'];
     $ip_compressed = Net_IPv6::compress($ip_address, TRUE);
     if (is_ipv6_valid($ip_address, $ip_prefix) === FALSE) {
         print_debug("Address '{$ip_compressed}/{$ip_prefix}' skipped as invalid.");
         continue;
     }
     $full_address = $ip_compressed . '/' . $ip_prefix;
     $ip_network = Net_IPv6::getNetmask($full_address) . '/' . $ip_prefix;
     //$full_compressed = $ip_compressed.'/'.$ipv6_prefixlen;
     $new_address = array('port_id' => $port_id, 'ipv6_address' => $ip_address, 'ipv6_compressed' => $ip_compressed, 'ipv6_prefixlen' => $ip_prefix, 'ipv6_origin' => $ip_origin);
 }
 // Check network
 $ip_network_id = dbFetchCell('SELECT `' . $ip_version . '_network_id` FROM `' . $ip_version . '_networks` WHERE `' . $ip_version . '_network` = ?', array($ip_network));
 if (empty($ip_network_id)) {
     // Add new network
     $ip_network_id = dbInsert(array($ip_version . '_network' => $ip_network), $ip_version . '_networks');
     //echo('N');
 }