From d1fdf574e33d2454f00a28c0b04b494b45d8a920 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Tue, 3 Sep 2019 08:55:41 +0100 Subject: [PATCH] move pseudo and layer checks to is_able from is_able_now --- lib/App/Netdisco/Util/Device.pm | 41 +++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/lib/App/Netdisco/Util/Device.pm b/lib/App/Netdisco/Util/Device.pm index ae87331c..cce78fa9 100644 --- a/lib/App/Netdisco/Util/Device.pm +++ b/lib/App/Netdisco/Util/Device.pm @@ -158,6 +158,8 @@ If C<$device_type> is also given, then C will be checked. Also respects C and C if either are set to false. +Also checks if the device is a pseudo device (vendor is C). + Returns false if the host is not permitted to discover the target device. =cut @@ -168,6 +170,9 @@ sub is_discoverable { $remote_type ||= ''; $remote_cap ||= []; + return _bail_msg("is_discoverable: $device is pseudo-device") + if $device->is_pseudo; + return _bail_msg("is_discoverable: $device matches wap_platforms but discover_waps is not enabled") if ((not setting('discover_waps')) and (match_to_setting($remote_type, 'wap_platforms') or @@ -193,8 +198,7 @@ sub is_discoverable { =head2 is_discoverable_now( $ip, $device_type? ) Same as C, but also compares the C field -of the C to the C configuration. Also checks -for pseudo devicea. +of the C to the C configuration. Returns false if the host is not permitted to discover the target device. @@ -204,9 +208,6 @@ sub is_discoverable_now { my ($ip, $remote_type) = @_; my $device = get_device($ip) or return 0; - return _bail_msg("is_discoverable: $device is pseudo-device") - if $device->is_pseudo; - if ($device->in_storage and $device->since_last_discover and setting('discover_min_age') and $device->since_last_discover < setting('discover_min_age')) { @@ -225,6 +226,9 @@ the local configuration to arpnip the device. The configuration items C and C are checked against the given IP. +Also checks if the device is a pseudo device (vendor is C) and +that it has reported layer 3 capability. + Returns false if the host is not permitted to arpnip the target device. =cut @@ -233,6 +237,12 @@ sub is_arpnipable { my $ip = shift; my $device = get_device($ip) or return 0; + return _bail_msg("is_arpnipable: $device is pseudo-device") + if $device->is_pseudo; + + return _bail_msg("is_arpnipable: $device has no layer 3 capability") + unless $device->has_layer(3); + return _bail_msg("is_arpnipable: $device matched arpnip_no") if check_acl_no($device, 'arpnip_no'); @@ -257,12 +267,6 @@ sub is_arpnipable_now { my ($ip) = @_; my $device = get_device($ip) or return 0; - return _bail_msg("is_arpnipable: $device is pseudo-device") - if $device->is_pseudo; - - return _bail_msg("is_arpnipable: $device has no layer 3 capability") - unless $device->has_layer(3); - if ($device->in_storage and $device->since_last_arpnip and setting('arpnip_min_age') and $device->since_last_arpnip < setting('arpnip_min_age')) { @@ -281,6 +285,9 @@ the local configuration to macsuck the device. The configuration items C and C are checked against the given IP. +Also checks if the device is a pseudo device (vendor is C) and +that it has reported layer 2 capability. + Returns false if the host is not permitted to macsuck the target device. =cut @@ -289,6 +296,12 @@ sub is_macsuckable { my $ip = shift; my $device = get_device($ip) or return 0; + return _bail_msg("is_macsuckable: $device is pseudo-device") + if $device->is_pseudo; + + return _bail_msg("is_macsuckable: $device has no layer 2 capability") + unless $device->has_layer(2); + return _bail_msg("is_macsuckable: $device matched macsuck_no") if check_acl_no($device, 'macsuck_no'); @@ -313,12 +326,6 @@ sub is_macsuckable_now { my ($ip) = @_; my $device = get_device($ip) or return 0; - return _bail_msg("is_macsuckable: $device is pseudo-device") - if $device->is_pseudo; - - return _bail_msg("is_macsuckable: $device has no layer 2 capability") - unless $device->has_layer(2); - if ($device->in_storage and $device->since_last_macsuck and setting('macsuck_min_age') and $device->since_last_macsuck < setting('macsuck_min_age')) {