95 lines
3.3 KiB
PHP
95 lines
3.3 KiB
PHP
<?php
|
|
/**
|
|
* Observium
|
|
*
|
|
* This file is part of Observium.
|
|
*
|
|
* @package observium
|
|
* @subpackage discovery
|
|
* @copyright (C) Adam Armstrong
|
|
*
|
|
*/
|
|
|
|
if (safe_count($discovery_vrf)) {
|
|
// VRF already discovered by better MIBs
|
|
return;
|
|
}
|
|
|
|
// CISCO-VRF-MIB::cvVrfName.1 = STRING: ISP-VZ
|
|
// CISCO-VRF-MIB::cvVrfName.2 = STRING: VPN-CLIENT
|
|
// CISCO-VRF-MIB::cvVrfVnetTag.1 = Gauge32: 0
|
|
// CISCO-VRF-MIB::cvVrfVnetTag.2 = Gauge32: 0
|
|
// CISCO-VRF-MIB::cvVrfOperStatus.1 = INTEGER: up(1)
|
|
// CISCO-VRF-MIB::cvVrfOperStatus.2 = INTEGER: up(1)
|
|
// CISCO-VRF-MIB::cvVrfRouteDistProt.1 = BITS: 42 other(1) bgp(6)
|
|
// CISCO-VRF-MIB::cvVrfRouteDistProt.2 = BITS: 42 other(1) bgp(6)
|
|
// CISCO-VRF-MIB::cvVrfStorageType.1 = INTEGER: nonVolatile(3)
|
|
// CISCO-VRF-MIB::cvVrfStorageType.2 = INTEGER: nonVolatile(3)
|
|
// CISCO-VRF-MIB::cvVrfRowStatus.1 = INTEGER: active(1)
|
|
// CISCO-VRF-MIB::cvVrfRowStatus.2 = INTEGER: active(1)
|
|
$vrfs = snmpwalk_cache_oid($device, 'cvVrfTable', [], 'CISCO-VRF-MIB');
|
|
$vrf_discovered = snmp_endtime();
|
|
print_debug_vars($vrf);
|
|
|
|
$vrf_ids = [];
|
|
foreach ($vrfs as $index => $entry) {
|
|
if ($entry['cvVrfRowStatus'] !== 'active') {
|
|
continue;
|
|
} // Skip inactive
|
|
|
|
$vrf_name = $entry['cvVrfName'];
|
|
|
|
$discovery_vrf[$vrf_name] = [
|
|
'vrf_mib' => $mib,
|
|
'vrf_name' => $vrf_name,
|
|
'vrf_descr' => '',
|
|
'vrf_rd' => '',
|
|
|
|
'vrf_admin_status' => 'up',
|
|
'vrf_oper_status' => $entry['cvVrfOperStatus'],
|
|
/*
|
|
'vrf_active_ports' => $entry['mplsL3VpnVrfActiveInterfaces'],
|
|
'vrf_total_ports' => $entry['mplsL3VpnVrfAssociatedInterfaces'],
|
|
'vrf_added_routes' => $entry['mplsL3VpnVrfPerfRoutesAdded'],
|
|
'vrf_deleted_routes' => $entry['mplsL3VpnVrfPerfRoutesDeleted'],
|
|
'vrf_total_routes' => $entry['mplsL3VpnVrfPerfCurrNumRoutes'],
|
|
//'vrf_added' => $vrf_discovered - timeticks_to_sec($entry['mplsL3VpnVrfCreationTime']),
|
|
'vrf_added' => $device['last_rebooted'] + timeticks_to_sec($entry['mplsL3VpnVrfCreationTime']),
|
|
'vrf_last_change' => $device['last_rebooted'] + timeticks_to_sec($entry['mplsL3VpnVrfConfLastChanged']),
|
|
*/
|
|
];
|
|
|
|
$vrf_ids[$index] = $vrf_name;
|
|
}
|
|
|
|
// CISCO-VRF-MIB::cvVrfInterfaceType.1.2 = INTEGER: vrfEdge(3)
|
|
// CISCO-VRF-MIB::cvVrfInterfaceType.2.3 = INTEGER: vrfEdge(3)
|
|
// CISCO-VRF-MIB::cvVrfInterfaceVnetTagOverride.1.2 = Gauge32: 0
|
|
// CISCO-VRF-MIB::cvVrfInterfaceVnetTagOverride.2.3 = Gauge32: 0
|
|
// CISCO-VRF-MIB::cvVrfInterfaceStorageType.1.2 = INTEGER: nonVolatile(3)
|
|
// CISCO-VRF-MIB::cvVrfInterfaceStorageType.2.3 = INTEGER: nonVolatile(3)
|
|
// CISCO-VRF-MIB::cvVrfInterfaceRowStatus.1.2 = INTEGER: active(1)
|
|
// CISCO-VRF-MIB::cvVrfInterfaceRowStatus.2.3 = INTEGER: active(1)
|
|
$vrf_interfaces = snmpwalk_cache_twopart_oid($device, 'cvVrfInterfaceTable', [], 'CISCO-VRF-MIB');
|
|
print_debug_vars($vrf_interfaces);
|
|
|
|
foreach ($vrf_interfaces as $vrf_id => $int) {
|
|
if (!isset($vrf_ids[$vrf_id])) {
|
|
continue;
|
|
} // skip unknown VRFs
|
|
|
|
$vrf_name = $vrf_ids[$vrf_id];
|
|
|
|
foreach ($int as $vrf_ifIndex => $entry) {
|
|
if ($entry['cvVrfInterfaceRowStatus'] !== 'active') {
|
|
continue;
|
|
} // Skip inactive
|
|
|
|
$discovery_vrf[$vrf_name]['ifIndex'][] = $vrf_ifIndex;
|
|
}
|
|
}
|
|
|
|
unset($vrfs, $vrf_interfaces, $vrf_ids, $int);
|
|
|
|
// EOF
|