From 33a51bc592e744198211bb9fd9f2b772bc15f949 Mon Sep 17 00:00:00 2001 From: CirnoT <1447794+CirnoT@users.noreply.github.com> Date: Mon, 29 Apr 2019 18:52:32 +0200 Subject: [PATCH] Store IPv4 networks as network address and fix address search page showing networks not addresses (#10144) * Store IPv4 networks as network address, not device address * Properly display addresses, not networks on address search page --- includes/discovery/ipv4-addresses.inc.php | 3 ++- includes/html/table/address-search.inc.php | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/includes/discovery/ipv4-addresses.inc.php b/includes/discovery/ipv4-addresses.inc.php index 0c678b8b9a..9e58c839d8 100644 --- a/includes/discovery/ipv4-addresses.inc.php +++ b/includes/discovery/ipv4-addresses.inc.php @@ -17,7 +17,8 @@ foreach ($vrfs_lite_cisco as $vrf) { list($oid,$ifIndex) = explode(' ', $data); $mask = trim(snmp_get($device, "ipAdEntNetMask.$oid", '-Oqv', 'IP-MIB')); $cidr = IPv4::netmask2cidr($mask); - $network = "$oid/$cidr"; + $ipv4 = new IPv4("$oid/$cidr"); + $network = $ipv4->getNetworkAddress() . '/' . $ipv4->cidr; if (dbFetchCell('SELECT COUNT(*) FROM `ports` WHERE device_id = ? AND `ifIndex` = ?', array($device['device_id'], $ifIndex)) != '0' && $oid != '0.0.0.0' && $oid != 'ipAdEntIfIndex') { diff --git a/includes/html/table/address-search.inc.php b/includes/html/table/address-search.inc.php index 47df5850ce..8aa2299f66 100644 --- a/includes/html/table/address-search.inc.php +++ b/includes/html/table/address-search.inc.php @@ -85,11 +85,11 @@ foreach (dbFetchRows($sql, $param) as $interface) { $type = humanmedia($interface['ifType']); if ($vars['search_type'] == 'ipv6') { - $address = (string)IP::parse($interface['ipv6_network'], true); + $address = (string)IP::parse($interface['ipv6_address'], true) . '/' . $interface['ipv6_prefixlen']; } elseif ($vars['search_type'] == 'mac') { $address = formatMac($interface['ifPhysAddress']); } else { - $address = (string)IP::parse($interface['ipv4_network'], true); + $address = (string)IP::parse($interface['ipv4_address'], true) . '/' . $interface['ipv4_prefixlen']; } if ($interface['in_errors'] > 0 || $interface['out_errors'] > 0) {