2008-10-28 18:25:53 +00:00
< ? php
2017-09-11 15:26:41 -05:00
use LibreNMS\Config ;
if ( Config :: get ( 'enable_pseudowires' ) && $device [ 'os_group' ] == 'cisco' ) {
2015-07-13 20:10:26 +02:00
unset ( $cpw_count );
unset ( $cpw_exists );
// 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 '.' ;
2016-08-28 12:32:58 -05:00
} else {
2015-07-13 20:10:26 +02:00
$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 '+' ;
2012-05-02 17:23:27 +00:00
}
2015-07-13 20:10:26 +02:00
2012-05-02 17:23:27 +00:00
$device [ 'pws' ][ $pw [ 'cpwVcID' ]] = $pseudowire_id ;
2015-07-13 20:10:26 +02:00
} //end foreach
2009-05-12 15:59:47 +00:00
2015-07-13 20:10:26 +02:00
// 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 ])) {
2017-01-07 17:32:38 +00:00
dbDelete ( 'pseudowires' , '`pseudowire_id` = ?' , array ( $pseudowire_id ));
2015-07-13 20:10:26 +02:00
}
}
2009-03-24 15:24:18 +00:00
2015-07-13 20:10:26 +02:00
echo " \n " ;
} //end if