From 46c535e873df15f431ea826903ffcf724c79fe5c Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Fri, 3 Jun 2022 21:43:24 +0100 Subject: [PATCH] additional debug and logic fixes in handling of remote_is_discoverable --- .../Worker/Plugin/Discover/PortProperties.pm | 32 ++++++++++++++----- share/views/ajax/device/ports.tt | 17 +++++----- share/views/sidebar/device/ports.tt | 3 +- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm b/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm index 29772cb3..7cb6cccd 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm @@ -85,16 +85,32 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my $remote_cap = $c_cap->{$idx} || []; my $remote_type = Encode::decode('UTF-8', $c_platform->{$idx} || ''); - $properties{ $port }->{remote_is_wap} = 'true' - if scalar grep {match_to_setting($_, 'wap_capabilities')} @$remote_cap - or match_to_setting($remote_type, 'wap_platforms'); + $properties{ $port }->{remote_is_wap} = 'false'; + $properties{ $port }->{remote_is_phone} = 'false'; + $properties{ $port }->{remote_is_discoverable} = 'true'; - $properties{ $port }->{remote_is_phone} = 'true' - if scalar grep {match_to_setting($_, 'phone_capabilities')} @$remote_cap - or match_to_setting($remote_type, 'phone_platforms'); + if (scalar grep {match_to_setting($_, 'wap_capabilities')} @$remote_cap + or match_to_setting($remote_type, 'wap_platforms')) { - $properties{ $port }->{remote_is_discoverable} = 'false' - unless is_discoverable($device_ports->{$port}->remote_ip, $remote_type, $remote_cap); + $properties{ $port }->{remote_is_wap} = 'true'; + debug sprintf ' [%s] properties/lldpcap - remote on port %s is a WAP', + $device->ip, $port; + } + + if (scalar grep {match_to_setting($_, 'phone_capabilities')} @$remote_cap + or match_to_setting($remote_type, 'phone_platforms')) { + + $properties{ $port }->{remote_is_phone} = 'true'; + debug sprintf ' [%s] properties/lldpcap - remote on port %s is a Phone', + $device->ip, $port; + } + + if (! is_discoverable($device_ports->{$port}->remote_ip, $remote_type, $remote_cap)) { + + $properties{ $port }->{remote_is_discoverable} = 'false'; + debug sprintf ' [%s] properties/lldpcap - remote on port %s is denied discovery', + $device->ip, $port; + } next unless scalar grep {defined && m/^inventory$/} @{ $rem_media_cap->{$idx} }; diff --git a/share/views/ajax/device/ports.tt b/share/views/ajax/device/ports.tt index a69a24ea..e2af5c8f 100644 --- a/share/views/ajax/device/ports.tt +++ b/share/views/ajax/device/ports.tt @@ -294,7 +294,7 @@ [% END %] [% row.get_column('neighbor_dns').remove(settings.domain_suffix) || row.get_column('neighbor_ip') | html_entity %] - [% IF row.remote_port and row.remote_is_discoverable %] + [% IF row.remote_port %] - [% row.remote_port | html_entity %] @@ -308,18 +308,17 @@ [% ' type: '_ row.remote_type IF row.remote_type %])
[% END %] [% ELSIF row.remote_ip %] - [% ' ' IF row.remote_is_discoverable %] +   [% IF row.remote_is_phone %]   [% ELSIF row.remote_is_wap %]   [% END %] - - [% row.remote_ip | html_entity %] - [% IF row.remote_port and row.remote_is_discoverable %] - - [% row.remote_port | html_entity %] - [% END %] -
+ [% row.remote_ip | html_entity %] + [% IF row.remote_port %] + - [% row.remote_port | html_entity %] + [% END %] +
[% IF params.n_inventory and row.remote_inventory %] [% row.remote_inventory | html_entity %]
[% END %] @@ -328,7 +327,7 @@ [% ' type: '_ row.remote_type IF row.remote_type %])
[% END %] [% ELSE %] - [% '  (possible uplink)' IF row.remote_is_discoverable %] + [% '  (possible uplink)' %] [% END %] [% END %] [% IF params.c_nodes %] diff --git a/share/views/sidebar/device/ports.tt b/share/views/sidebar/device/ports.tt index 10865200..90207322 100644 --- a/share/views/sidebar/device/ports.tt +++ b/share/views/sidebar/device/ports.tt @@ -42,7 +42,8 @@
  •   PoE Enabled
  •   Manual Topology
  •   Neighbor Device
  • -
  •   Neighbor Inacessible
  • +
  •   Neighbor Not Polled
  • +
  •   Neighbor Forbidden
  •   IP Phone
  •   Wireless Client
  •   Wireless Access Point