mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
59 lines
2.4 KiB
PHP
Executable File
59 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
if ($config['enable_pseudowires'] && $device['os_group'] == "cisco")
|
|
{
|
|
unset($cpw_count);
|
|
unset($cpw_exists);
|
|
|
|
echo("Cisco Pseudowires : ");
|
|
|
|
// Pre-cache the existing state of pseudowires for this device from the database
|
|
$pws_db_raw = dbFetchRows("SELECT * FROM `pseudowires` WHERE `device_id` = ?", array($device['device_id']));
|
|
foreach ($pws_db_raw as $pw_db)
|
|
{
|
|
$device['pws_db'][$pw_db['cpwVcID']] = $pw_db['pseudowire_id'];
|
|
}
|
|
unset($pws_db_raw); unset($pw_db);
|
|
|
|
$pws = snmpwalk_cache_oid($device, "cpwVcID", array(), "CISCO-IETF-PW-MPLS-MIB");
|
|
$pws = snmpwalk_cache_oid($device, "cpwVcName", $pws, "CISCO-IETF-PW-MPLS-MIB");
|
|
$pws = snmpwalk_cache_oid($device, "cpwVcType", $pws, "CISCO-IETF-PW-MPLS-MIB");
|
|
$pws = snmpwalk_cache_oid($device, "cpwVcPsnType", $pws, "CISCO-IETF-PW-MPLS-MIB");
|
|
$pws = snmpwalk_cache_oid($device, "cpwVcDescr", $pws, "CISCO-IETF-PW-MPLS-MIB");
|
|
|
|
// For MPLS pseudowires
|
|
$pws = snmpwalk_cache_oid($device, "cpwVcMplsPeerLdpID", $pws, "CISCO-IETF-PW-MPLS-MIB");
|
|
|
|
foreach ($pws as $pw_id => $pw)
|
|
{
|
|
list($cpw_remote_id) = explode(":", $pw['cpwVcMplsPeerLdpID']);
|
|
$cpw_remote_device = dbFetchCell("SELECT device_id from ipv4_addresses AS A, ports AS I WHERE A.ipv4_address=? AND A.port_id=I.port_id",array($cpw_remote_id));
|
|
$if_id = dbFetchCell("SELECT port_id from ports WHERE `ifDescr`=? AND `device_id`=?",array($pw['cpwVcName'],$device['device_id']));
|
|
if (!empty($device['pws_db'][$pw['cpwVcID']]))
|
|
{
|
|
$pseudowire_id = $device['pws_db'][$pw['cpwVcID']];
|
|
echo(".");
|
|
}
|
|
else
|
|
{
|
|
$pseudowire_id = dbInsert(array('device_id' => $device['device_id'], 'port_id' => $if_id, 'peer_device_id' => $cpw_remote_device, 'peer_ldp_id' => $cpw_remote_id,
|
|
'cpwVcID' => $pw['cpwVcID'], 'cpwOid' => $pw_id, 'pw_type' => $pw['cpwVcType'], 'pw_descr' => $pw['cpwVcDescr'], 'pw_psntype' => $pw['cpwVcPsnType']), 'pseudowires');
|
|
echo("+");
|
|
}
|
|
$device['pws'][$pw['cpwVcID']] = $pseudowire_id;
|
|
}
|
|
|
|
// Cycle the list of pseudowires we cached earlier and make sure we saw them again.
|
|
foreach ($device['pws_db'] as $pw_id => $pseudowire_id)
|
|
{
|
|
if (empty($device['pws'][$pw_id]))
|
|
{
|
|
dbDelete('vlans', "`pseudowire_id` = ?", array($pseudowire_id));
|
|
}
|
|
}
|
|
echo("\n");
|
|
|
|
} # enable_pseudowires + os_group=cisco
|
|
|
|
?>
|