mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	* refactor: use the Config class includes/discovery * fix issue with $config variable not accessible in include-dir.inc.php * improved whitespace * Tidy up discovery_by_ip
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use LibreNMS\Config;
 | 
						|
 | 
						|
if (Config::get('enable_pseudowires') && $device['os_group'] == 'cisco') {
 | 
						|
    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 '.';
 | 
						|
        } 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;
 | 
						|
    }//end foreach
 | 
						|
 | 
						|
    // 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('pseudowires', '`pseudowire_id` = ?', array($pseudowire_id));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    echo "\n";
 | 
						|
} //end if
 |