#581 skip storing and displaying fabricated vlan 0

This commit is contained in:
Oliver Gorwits
2019-05-30 06:58:34 +01:00
parent 7d9c86cee1
commit 2c138a5690
6 changed files with 25 additions and 8 deletions

View File

@@ -48,6 +48,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
my $type = $i_vlan_type->{$entry};
foreach my $vlan (@{ $i_vlan_membership_untagged->{$entry} || [] }) {
next unless $vlan;
next if $this_port_vlans{$vlan};
my $native = ((defined $i_vlan->{$entry})
and ($vlan eq $i_vlan->{$entry})) ? 't' : 'f';
@@ -66,6 +67,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
}
foreach my $vlan (@{ $i_vlan_membership->{$entry} || [] }) {
next unless $vlan;
next if $this_port_vlans{$vlan};
my $native = ((defined $i_vlan->{$entry})
and ($vlan eq $i_vlan->{$entry})) ? 't' : 'f';
@@ -100,6 +102,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
# add named vlans to the device
foreach my $entry (keys %$v_name) {
my $vlan = $v_index->{$entry};
next unless $vlan;
next unless defined $vlan and $vlan;
++$d_seen{$vlan};
@@ -112,6 +115,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
# also add unnamed vlans to the device
foreach my $vlan (keys %p_seen) {
next unless $vlan;
next if $d_seen{$vlan};
push @devicevlans, {
vlan => $vlan,

View File

@@ -54,8 +54,9 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
# reverse sort allows vlan 0 entries to be included only as fallback
foreach my $vlan (reverse sort keys %$fwtable) {
foreach my $port (keys %{ $fwtable->{$vlan} }) {
my $vlabel = ($vlan ? $vlan : 'unknown');
debug sprintf ' [%s] macsuck - port %s vlan %s : %s nodes',
$device->ip, $port, $vlan, scalar keys %{ $fwtable->{$vlan}->{$port} };
$device->ip, $port, $vlabel, scalar keys %{ $fwtable->{$vlan}->{$port} };
# make sure this port is UP in netdisco (unless it's a lag master,
# because we can still see nodes without a functioning aggregate)
@@ -200,7 +201,7 @@ sub get_vlan_list {
}
debug sprintf ' [%s] macsuck - VLANs: %s', $device->ip,
(join ',', sort keys %vlans);
(join ',', sort grep {$_} keys %vlans);
my @ok_vlans = ();
foreach my $vlan (sort keys %vlans) {
@@ -240,11 +241,12 @@ sub get_vlan_list {
next;
}
if ($vlan == 0 or $vlan > 4094) {
if ($vlan > 4094) {
debug sprintf ' [%s] macsuck - invalid VLAN number %s',
$device->ip, $vlan;
next;
}
next if $vlan == 0; # quietly skip
# check in use by a port on this device
if (!$vlans{$vlan} && !setting('macsuck_all_vlans')) {