From 8364eb102b118c55683ac7ce0bf404956c5c6cb6 Mon Sep 17 00:00:00 2001 From: Tom Laermans Date: Wed, 5 Oct 2011 13:46:16 +0000 Subject: [PATCH] filter out weird entries from CDP link discovery, generated at least by hp procurve switches git-svn-id: http://www.observium.org/svn/observer/trunk@2649 61d68cd4-352d-0410-923a-c4978735b2b8 --- .../discovery/discovery-protocols.inc.php | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/includes/discovery/discovery-protocols.inc.php b/includes/discovery/discovery-protocols.inc.php index 342af5944..16d9a778c 100755 --- a/includes/discovery/discovery-protocols.inc.php +++ b/includes/discovery/discovery-protocols.inc.php @@ -57,28 +57,31 @@ if ($cdp_array) foreach (array_keys($cdp_if_array) as $entry_key) { $cdp = $cdp_if_array[$entry_key]; - $remote_device_id = @mysql_result(mysql_query("SELECT `device_id` FROM `devices` WHERE `sysName` = '".$cdp['cdpCacheDeviceId']."' OR `hostname`='".$cdp['cdpCacheDeviceId']."'"), 0); - - if (!$remote_device_id) + if (ctype_alnum($cdp['cdpCacheDeviceId'])) { - $remote_device_id = discover_new_device($cdp['cdpCacheDeviceId']); + $remote_device_id = @mysql_result(mysql_query("SELECT `device_id` FROM `devices` WHERE `sysName` = '".$cdp['cdpCacheDeviceId']."' OR `hostname`='".$cdp['cdpCacheDeviceId']."'"), 0); + + if (!$remote_device_id) + { + $remote_device_id = discover_new_device($cdp['cdpCacheDeviceId']); + if ($remote_device_id) + { + $int = ifNameDescr($interface); + log_event("Device autodiscovered through CDP on " . $device['hostname'] . " (port " . $int['label'] . ")", $remote_device_id, 'interface', $int['interface_id']); + } + } + if ($remote_device_id) { - $int = ifNameDescr($interface); - log_event("Device autodiscovered through CDP on " . $device['hostname'] . " (port " . $int['label'] . ")", $remote_device_id, 'interface', $int['interface_id']); + $if = $cdp['cdpCacheDevicePort']; + $remote_interface_id = @mysql_result(mysql_query("SELECT interface_id FROM `ports` WHERE (`ifDescr` = '$if' OR `ifName`='$if') AND `device_id` = '".$remote_device_id."'"),0); + } else { $remote_interface_id = "0"; } + + if ($interface['interface_id'] && $cdp['cdpCacheDeviceId'] && $cdp['cdpCacheDevicePort']) + { + discover_link($interface['interface_id'], 'cdp', $remote_interface_id, $cdp['cdpCacheDeviceId'], $cdp['cdpCacheDevicePort'], $cdp['cdpCachePlatform'], $cdp['cdpCacheVersion']); } } - - if ($remote_device_id) - { - $if = $cdp['cdpCacheDevicePort']; - $remote_interface_id = @mysql_result(mysql_query("SELECT interface_id FROM `ports` WHERE (`ifDescr` = '$if' OR `ifName`='$if') AND `device_id` = '".$remote_device_id."'"),0); - } else { $remote_interface_id = "0"; } - - if ($interface['interface_id'] && $cdp['cdpCacheDeviceId'] && $cdp['cdpCacheDevicePort']) - { - discover_link($interface['interface_id'], 'cdp', $remote_interface_id, $cdp['cdpCacheDeviceId'], $cdp['cdpCacheDevicePort'], $cdp['cdpCachePlatform'], $cdp['cdpCacheVersion']); - } } } }