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 @@