diff --git a/includes/discovery/discovery-protocols.inc.php b/includes/discovery/discovery-protocols.inc.php index b58d3ba6d..0a66cc1ef 100644 --- a/includes/discovery/discovery-protocols.inc.php +++ b/includes/discovery/discovery-protocols.inc.php @@ -41,12 +41,7 @@ if ($device['os'] == 'ironware' && $config['autodiscovery']['xdp'] === true) { echo ' CISCO-CDP-MIB: '; unset($cdp_array); if ($config['autodiscovery']['xdp'] === true) { - if ($device['os'] == 'pbn') { - $cdp_array = snmpwalk_cache_oid($device, 'cdpCache', array(), 'CISCO-CDP-MIB'); - } - else { - $cdp_array = snmpwalk_cache_twopart_oid($device, 'cdpCache', array(), 'CISCO-CDP-MIB'); - } + $cdp_array = snmpwalk_cache_twopart_oid($device, 'cdpCache', array(), 'CISCO-CDP-MIB'); d_echo($cdp_array); if ($cdp_array) { unset($cdp_links); @@ -83,11 +78,44 @@ if ($config['autodiscovery']['xdp'] === true) { }//end if }//end if -echo ' LLDP-MIB: '; unset($lldp_array); -if ($config['autodiscovery']['xdp'] === true) { +if ($device['os'] == 'pbn' && $config['autodiscovery']['xdp'] === true) { + + echo ' NMS-LLDP-MIB: '; + $lldp_array = snmpwalk_cache_oid($device, 'lldpRemoteSystemsData', array(), 'NMS-LLDP-MIB'); + d_echo($lldp_array); + if ($lldp_array) { + unset($lldp_links); + foreach (array_keys($lldp_array) as $key) { + $lldp = $lldp_array[$key]; + d_echo($lldp); + $interface = dbFetchRow('SELECT * FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?', array($device['device_id'], $lldp['lldpRemLocalPortNum'])); + $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 if + +} elseif ($config['autodiscovery']['xdp'] === true) { + + echo ' LLDP-MIB: '; $lldp_array = snmpwalk_cache_threepart_oid($device, 'lldpRemoteSystemsData', array(), 'LLDP-MIB'); d_echo($lldp_array); $dot1d_array = snmpwalk_cache_oid($device, 'dot1dBasePortIfIndex', array(), 'BRIDGE-MIB'); @@ -132,7 +160,7 @@ if ($config['autodiscovery']['xdp'] === true) { }//end foreach }//end foreach }//end if -}//end if +}//end elseif echo 'OSPF Discovery: ';