Add check for is_arpnipable and is_macsuckable in Util::Device

Checks to make sure the device is in storage when checking if L2/L3
is supported on the device. Fixes #669.
This commit is contained in:
Ryan Gasik
2019-10-30 09:03:58 -07:00
committed by Ryan Gasik
parent 0e8f9ad194
commit 441ac59661

View File

@@ -237,7 +237,7 @@ sub is_arpnipable {
my $device = get_device($ip) or return 0; my $device = get_device($ip) or return 0;
return _bail_msg("is_arpnipable: $device has no layer 3 capability") return _bail_msg("is_arpnipable: $device has no layer 3 capability")
unless $device->has_layer(3); unless ($device->has_layer(3) || !$device->in_storage());
return _bail_msg("is_arpnipable: $device matched arpnip_no") return _bail_msg("is_arpnipable: $device matched arpnip_no")
if check_acl_no($device, 'arpnip_no'); if check_acl_no($device, 'arpnip_no');
@@ -288,9 +288,8 @@ Returns false if the host is not permitted to macsuck the target device.
sub is_macsuckable { sub is_macsuckable {
my $ip = shift; my $ip = shift;
my $device = get_device($ip) or return 0; my $device = get_device($ip) or return 0;
return _bail_msg("is_macsuckable: $device has no layer 2 capability") return _bail_msg("is_macsuckable: $device has no layer 2 capability")
unless $device->has_layer(2); unless ($device->has_layer(2) || !$device->in_storage());
return _bail_msg("is_macsuckable: $device matched macsuck_no") return _bail_msg("is_macsuckable: $device matched macsuck_no")
if check_acl_no($device, 'macsuck_no'); if check_acl_no($device, 'macsuck_no');