From c5845006a11484eeebeae240b292a40664ad4312 Mon Sep 17 00:00:00 2001 From: Neil Lathwood Date: Fri, 9 Sep 2016 17:22:01 +0100 Subject: [PATCH] refactor: Updated arp-table discovery to use ipNetToPhysicalPhysAddress (#4367) --- includes/discovery/arp-table.inc.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/includes/discovery/arp-table.inc.php b/includes/discovery/arp-table.inc.php index 812430e640..7bce3b623b 100644 --- a/includes/discovery/arp-table.inc.php +++ b/includes/discovery/arp-table.inc.php @@ -11,15 +11,14 @@ if (key_exists('vrf_lite_cisco', $device) && (count($device['vrf_lite_cisco'])!= foreach ($vrfs_lite_cisco as $vrf) { $device['context_name']=$vrf['context_name']; - $ipNetToMedia_data = snmp_walk($device, 'ipNetToMediaPhysAddress', '-Oq', 'IP-MIB'); - $ipNetToMedia_data = str_replace('ipNetToMediaPhysAddress.', '', trim($ipNetToMedia_data)); - $ipNetToMedia_data = str_replace('IP-MIB::', '', trim($ipNetToMedia_data)); - - foreach (explode("\n", $ipNetToMedia_data) as $data) { + $ipNetToPhysical_data = snmp_walk($device, 'ipNetToPhysicalPhysAddress', '-Oq', 'IP-MIB'); + $ipNetToPhysical_data = str_replace('IP-MIB::ipNetToPhysicalPhysAddress.', '', trim($ipNetToPhysical_data)); + $ipNetToPhysical_data = str_replace('"', '', trim($ipNetToPhysical_data)); + foreach (explode("\n", $ipNetToPhysical_data) as $data) { list($oid, $mac) = explode(' ', $data); - list($if, $first, $second, $third, $fourth) = explode('.', $oid); + list($if, $ipv, $first, $second, $third, $fourth) = explode('.', $oid); $ip = $first.'.'.$second.'.'.$third.'.'.$fourth; - if ($ip != '...') { + if ($ip != '...' && $ipv === 'ipv4' && $mac != '0:0:0:0:0:0') { $interface = dbFetchRow('SELECT * FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?', array($device['device_id'], $if)); list($m_a, $m_b, $m_c, $m_d, $m_e, $m_f) = explode(':', $mac);