2010-01-05 18:40:05 +00:00
< ? php
2010-07-05 19:21:36 +00:00
2015-07-13 20:10:26 +02:00
echo 'Discovery protocols:' ;
2010-01-05 18:40:05 +00:00
2011-05-04 09:13:32 +00:00
global $link_exists ;
2010-01-05 18:40:05 +00:00
$community = $device [ 'community' ];
2015-07-13 20:10:26 +02:00
if ( $device [ 'os' ] == 'ironware' && $config [ 'autodiscovery' ][ 'xdp' ] === true ) {
echo ' Brocade FDP: ' ;
$fdp_array = snmpwalk_cache_twopart_oid ( $device , 'snFdpCacheEntry' , array (), 'FOUNDRY-SN-SWITCH-GROUP-MIB' );
if ( $fdp_array ) {
unset ( $fdp_links );
foreach ( array_keys ( $fdp_array ) as $key ) {
$interface = dbFetchRow ( 'SELECT * FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?' , array ( $device [ 'device_id' ], $key ));
$fdp_if_array = $fdp_array [ $key ];
foreach ( array_keys ( $fdp_if_array ) as $entry_key ) {
$fdp = $fdp_if_array [ $entry_key ];
$remote_device_id = dbFetchCell ( 'SELECT `device_id` FROM `devices` WHERE `sysName` = ? OR `hostname` = ?' , array ( $fdp [ 'snFdpCacheDeviceId' ], $fdp [ 'snFdpCacheDeviceId' ]));
if ( ! $remote_device_id ) {
$remote_device_id = discover_new_device ( $fdp [ 'snFdpCacheDeviceId' ], $device , 'FDP' , $interface );
}
if ( $remote_device_id ) {
$if = $fdp [ 'snFdpCacheDevicePort' ];
$remote_port_id = dbFetchCell ( 'SELECT port_id FROM `ports` WHERE (`ifDescr` = ? OR `ifName` = ?) AND `device_id` = ?' , array ( $if , $if , $remote_device_id ));
}
else {
$remote_port_id = '0' ;
}
discover_link ( $interface [ 'port_id' ], $fdp [ 'snFdpCacheVendorId' ], $remote_port_id , $fdp [ 'snFdpCacheDeviceId' ], $fdp [ 'snFdpCacheDevicePort' ], $fdp [ 'snFdpCachePlatform' ], $fdp [ 'snFdpCacheVersion' ], $device [ 'device_id' ], $remote_device_id );
}
} //end foreach
} //end if
} //end if
echo ' CISCO-CDP-MIB: ' ;
2010-08-03 15:33:20 +00:00
unset ( $cdp_array );
2015-07-13 20:10:26 +02:00
$cdp_array = snmpwalk_cache_twopart_oid ( $device , 'cdpCache' , array (), 'CISCO-CDP-MIB' );
if ( $cdp_array && $config [ 'autodiscovery' ][ 'xdp' ] === true ) {
unset ( $cdp_links );
foreach ( array_keys ( $cdp_array ) as $key ) {
$interface = dbFetchRow ( 'SELECT * FROM `ports` WHERE device_id = ? AND `ifIndex` = ?' , array ( $device [ 'device_id' ], $key ));
$cdp_if_array = $cdp_array [ $key ];
foreach ( array_keys ( $cdp_if_array ) as $entry_key ) {
$cdp = $cdp_if_array [ $entry_key ];
if ( is_valid_hostname ( $cdp [ 'cdpCacheDeviceId' ])) {
$remote_device_id = dbFetchCell ( 'SELECT `device_id` FROM `devices` WHERE `sysName` = ? OR `hostname` = ?' , array ( $cdp [ 'cdpCacheDeviceId' ], $cdp [ 'cdpCacheDeviceId' ]));
if ( ! $remote_device_id ) {
$remote_device_id = discover_new_device ( $cdp [ 'cdpCacheDeviceId' ], $device , 'CDP' , $interface );
}
if ( $remote_device_id ) {
$if = $cdp [ 'cdpCacheDevicePort' ];
$remote_port_id = dbFetchCell ( 'SELECT port_id FROM `ports` WHERE (`ifDescr` = ? OR `ifName` = ?) AND `device_id` = ?' , array ( $if , $if , $remote_device_id ));
}
else {
$remote_port_id = '0' ;
}
if ( $interface [ 'port_id' ] && $cdp [ 'cdpCacheDeviceId' ] && $cdp [ 'cdpCacheDevicePort' ]) {
discover_link ( $interface [ 'port_id' ], 'cdp' , $remote_port_id , $cdp [ 'cdpCacheDeviceId' ], $cdp [ 'cdpCacheDevicePort' ], $cdp [ 'cdpCachePlatform' ], $cdp [ 'cdpCacheVersion' ], $device [ 'device_id' ], $remote_device_id );
}
}
else {
echo 'X' ;
} //end if
} //end foreach
} //end foreach
} //end if
echo ' LLDP-MIB: ' ;
2010-01-05 18:40:05 +00:00
unset ( $lldp_array );
2015-07-13 20:10:26 +02:00
$lldp_array = snmpwalk_cache_threepart_oid ( $device , 'lldpRemoteSystemsData' , array (), 'LLDP-MIB' );
$dot1d_array = snmpwalk_cache_oid ( $device , 'dot1dBasePortIfIndex' , array (), 'BRIDGE-MIB' );
if ( $lldp_array && $config [ 'autodiscovery' ][ 'xdp' ] === true ) {
$lldp_links = '' ;
foreach ( array_keys ( $lldp_array ) as $key ) {
$lldp_if_array = $lldp_array [ $key ];
foreach ( array_keys ( $lldp_if_array ) as $entry_key ) {
if ( is_numeric ( $dot1d_array [ $entry_key ][ 'dot1dBasePortIfIndex' ])) {
$ifIndex = $dot1d_array [ $entry_key ][ 'dot1dBasePortIfIndex' ];
}
else {
$ifIndex = $entry_key ;
}
$interface = dbFetchRow ( 'SELECT * FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?' , array ( $device [ 'device_id' ], $ifIndex ));
$lldp_instance = $lldp_if_array [ $entry_key ];
foreach ( array_keys ( $lldp_instance ) as $entry_instance ) {
$lldp = $lldp_instance [ $entry_instance ];
$remote_device_id = dbFetchCell ( 'SELECT `device_id` FROM `devices` WHERE `sysName` = ? OR `hostname` = ?' , array ( $lldp [ 'lldpRemSysName' ], $lldp [ 'lldpRemSysName' ]));
if ( ! $remote_device_id && is_valid_hostname ( $lldp [ 'lldpRemSysName' ])) {
$remote_device_id = discover_new_device ( $lldp [ 'lldpRemSysName' ], $device , 'LLDP' , $interface );
}
if ( $remote_device_id ) {
$if = $lldp [ 'lldpRemPortDesc' ];
$id = $lldp [ 'lldpRemPortId' ];
$remote_port_id = dbFetchCell ( 'SELECT `port_id` FROM `ports` WHERE (`ifDescr` = ? OR `ifName` = ? OR `ifDescr` = ? OR `ifName` = ?) AND `device_id` = ?' , array ( $if , $if , $id , $id , $remote_device_id ));
}
else {
$remote_port_id = '0' ;
}
if ( is_numeric ( $interface [ 'port_id' ]) && isset ( $lldp [ 'lldpRemSysName' ]) && isset ( $lldp [ 'lldpRemPortId' ])) {
discover_link ( $interface [ 'port_id' ], 'lldp' , $remote_port_id , $lldp [ 'lldpRemSysName' ], $lldp [ 'lldpRemPortId' ], null , $lldp [ 'lldpRemSysDesc' ], $device [ 'device_id' ], $remote_device_id );
}
} //end foreach
} //end foreach
} //end foreach
} //end if
echo 'OSPF Discovery: ' ;
if ( $config [ 'autodiscovery' ][ 'ospf' ] === true ) {
2015-04-11 15:01:14 +01:00
echo " enabled \n " ;
2015-07-13 20:10:26 +02:00
foreach ( dbFetchRows ( 'SELECT DISTINCT(`ospfNbrIpAddr`),`device_id` FROM `ospf_nbrs` WHERE `device_id`=?' , array ( $device [ 'device_id' ])) as $nbr ) {
2015-04-11 15:01:14 +01:00
$ip = $nbr [ 'ospfNbrIpAddr' ];
if ( match_network ( $config [ 'autodiscovery' ][ 'nets-exclude' ], $ip )) {
2015-07-13 20:10:26 +02:00
echo 'x' ;
2015-04-11 15:01:14 +01:00
continue ;
}
2015-07-13 20:10:26 +02:00
2015-04-11 15:01:14 +01:00
if ( ! match_network ( $config [ 'nets' ], $ip )) {
2015-07-13 20:10:26 +02:00
echo 'i' ;
2015-04-11 15:01:14 +01:00
continue ;
}
2015-07-13 20:10:26 +02:00
$name = gethostbyaddr ( $ip );
2015-07-13 11:52:38 +01:00
$remote_device_id = discover_new_device ( $name , $device , 'OSPF' );
2015-04-11 15:01:14 +01:00
}
2015-07-13 20:10:26 +02:00
}
else {
echo " disabled \n " ;
2015-04-11 15:01:14 +01:00
}
2015-07-13 20:10:26 +02:00
if ( $debug ) {
print_r ( $link_exists );
}
2010-02-15 23:56:30 +00:00
2012-05-16 13:25:50 +00:00
$sql = " SELECT * FROM `links` AS L, `ports` AS I WHERE L.local_port_id = I.port_id AND I.device_id = ' " . $device [ 'device_id' ] . " ' " ;
2015-07-13 20:10:26 +02:00
foreach ( dbFetchRows ( $sql ) as $test ) {
$local_port_id = $test [ 'local_port_id' ];
2010-02-15 23:56:30 +00:00
$remote_hostname = $test [ 'remote_hostname' ];
2015-07-13 20:10:26 +02:00
$remote_port = $test [ 'remote_port' ];
if ( $debug ) {
echo " $local_port_id -> $remote_hostname -> $remote_port \n " ;
2010-02-15 23:56:30 +00:00
}
2010-01-05 18:40:05 +00:00
2015-07-13 20:10:26 +02:00
if ( ! $link_exists [ $local_port_id ][ $remote_hostname ][ $remote_port ]) {
echo '-' ;
$rows = dbDelete ( 'links' , '`id` = ?' , array ( $test [ 'id' ]));
if ( $debug ) {
echo " $rows deleted " ;
}
}
}
2010-01-05 18:40:05 +00:00
2015-07-13 20:10:26 +02:00
unset ( $link_exists );
echo " \n " ;