2008-10-28 18:25:53 +00:00
< ? php
2015-07-13 20:10:26 +02:00
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 '.' ;
2011-09-20 14:22:34 +00:00
}
2015-07-13 20:10:26 +02:00
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 '+' ;
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 ])) {
dbDelete ( 'vlans' , '`pseudowire_id` = ?' , array ( $pseudowire_id ));
}
}
2009-03-24 15:24:18 +00:00
2015-07-13 20:10:26 +02:00
echo " \n " ;
} //end if