$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` = ?';
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'); }