2007-04-03 16:18:19 +00:00
#!/usr/bin/php
2009-09-07 11:07:59 +00:00
< ? php
2007-04-03 16:18:19 +00:00
$community = $device [ 'community' ];
2009-11-10 15:43:13 +00:00
echo ( " CISCO-CDP-MIB: " );
2009-10-28 13:49:37 +00:00
2009-11-10 15:43:13 +00:00
unset ( $cdp_array );
$cdp_array = snmpwalk_cache_twopart_oid ( " cdpCache " , $device , $cdp_array , " CISCO-CDP-MIB " );
2009-10-28 13:49:37 +00:00
2009-11-10 15:43:13 +00:00
$cdp_array = $cdp_array [ $device [ device_id ]];
2009-10-28 13:49:37 +00:00
2009-11-10 15:43:13 +00:00
unset ( $cdp_links );
foreach ( array_keys ( $cdp_array ) as $key ) {
$interface = mysql_fetch_array ( mysql_query ( " SELECT * FROM `interfaces` WHERE device_id = ' " . $device [ 'device_id' ] . " ' AND `ifIndex` = ' " . $key . " ' " ));
$cdp_if_array = $cdp_array [ $key ];
foreach ( array_keys ( $cdp_if_array ) as $entry_key ) {
$cdp_entry_array = $cdp_if_array [ $entry_key ];
if ( $device [ 'hostname' ] && $interface [ 'ifDescr' ] && $cdp_entry_array [ 'cdpCacheDeviceId' ] && $cdp_entry_array [ 'cdpCacheDevicePort' ]){
$cdp_links .= $device [ 'hostname' ] . " , " . $interface [ 'ifDescr' ] . " , " . $cdp_entry_array [ 'cdpCacheDeviceId' ] . " , " . $cdp_entry_array [ 'cdpCacheDevicePort' ] . " \n " ;
}
}
}
2009-10-28 13:49:37 +00:00
2009-11-10 15:43:13 +00:00
#echo("$cdp_links");
2009-03-02 18:12:09 +00:00
2007-04-03 16:18:19 +00:00
foreach ( explode ( " \n " , $cdp_links ) as $link ) {
if ( $link == " " ) { break ; }
list ( $src_host , $src_if , $dst_host , $dst_if ) = explode ( " , " , $link );
2009-11-10 15:43:13 +00:00
$dst_host = strtolower ( $dst_host );
2007-04-03 16:18:19 +00:00
$dst_if = strtolower ( $dst_if );
$src_host = strtolower ( $src_host );
$src_if = strtolower ( $src_if );
$ip = gethostbyname ( $dst_host );
2009-11-10 15:43:13 +00:00
if ( match_network ( $config [ 'nets' ], $ip ) ) {
2009-03-02 18:12:09 +00:00
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `devices` WHERE `sysName` = ' $dst_host ' " ), 0 ) == '0' ) {
2009-03-16 15:19:44 +00:00
if ( $config [ 'cdp_autocreate' ]) {
echo ( " ++ Creating: $dst_host \n " );
createHost ( $dst_host , $community , " v2c " );
}
2009-11-10 15:43:13 +00:00
} else {
echo ( " . " );
2007-04-03 16:18:19 +00:00
}
2009-11-10 15:43:13 +00:00
} else {
echo ( " !( $dst_host ) " );
2009-03-02 18:12:09 +00:00
}
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `devices` WHERE `sysName` = ' $dst_host ' " ), 0 ) == '1' &&
2007-04-03 16:18:19 +00:00
mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `devices` WHERE `hostname` = ' $src_host ' " ), 0 ) == '1' &&
2009-03-02 18:12:09 +00:00
mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `interfaces` AS I, `devices` AS D WHERE `ifDescr` = ' $dst_if ' AND sysName = ' $dst_host ' AND D.device_id = I.device_id " ), 0 ) == '1' &&
2007-04-15 15:16:11 +00:00
mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `interfaces` AS I, `devices` AS D WHERE `ifDescr` = ' $src_if ' AND hostname = ' $src_host ' AND D.device_id = I.device_id " ), 0 ) == '1' )
2009-03-02 18:12:09 +00:00
{
$dst_if_id = mysql_result ( mysql_query ( " SELECT I.interface_id FROM `interfaces` AS I, `devices` AS D WHERE `ifDescr` = ' $dst_if ' AND sysName = ' $dst_host ' AND D.device_id = I.device_id " ), 0 );
2007-04-15 15:16:11 +00:00
$src_if_id = mysql_result ( mysql_query ( " SELECT I.interface_id FROM `interfaces` AS I, `devices` AS D WHERE `ifDescr` = ' $src_if ' AND hostname = ' $src_host ' AND D.device_id = I.device_id " ), 0 );
2007-04-03 16:18:19 +00:00
$linkalive [] = $src_if_id . " , " . $dst_if_id ;
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `links` WHERE `dst_if` = ' $dst_if_id ' AND `src_if` = ' $src_if_id ' " ), 0 ) == '0' )
{
$sql = " INSERT INTO `links` (`src_if`, `dst_if`, `cdp`) VALUES (' $src_if_id ', ' $dst_if_id ', '1') " ;
mysql_query ( $sql );
2009-04-13 19:16:22 +00:00
echo ( " \n ++( $src_host $src_if -> $dst_host $dst_if ) " );
2007-04-03 16:18:19 +00:00
} else {
2009-04-11 19:10:48 +00:00
echo ( " .. " );
2007-04-03 16:18:19 +00:00
}
2009-03-02 18:12:09 +00:00
} else {
2007-04-03 16:18:19 +00:00
}
2009-11-10 15:43:13 +00:00
# }
2007-04-03 16:18:19 +00:00
}
2009-11-10 15:43:13 +00:00
echo ( " \n " );
2007-04-03 16:18:19 +00:00
}
?>