Merge branch 'master' of ssh://git.code.sf.net/p/netdisco/netdisco-ng
This commit is contained in:
@@ -193,13 +193,26 @@ sub _get_vlan_list {
|
|||||||
|
|
||||||
my (%vlans, %vlan_names);
|
my (%vlans, %vlan_names);
|
||||||
my $i_vlan = $snmp->i_vlan || {};
|
my $i_vlan = $snmp->i_vlan || {};
|
||||||
|
my $trunks = $snmp->i_vlan_membership || {};
|
||||||
|
my $i_type = $snmp->i_type || {};
|
||||||
|
|
||||||
# get list of vlans in use
|
# get list of vlans in use
|
||||||
while (my ($idx, $vlan) = each %$i_vlan) {
|
while (my ($idx, $vlan) = each %$i_vlan) {
|
||||||
# hack: if vlan id comes as 1.142 instead of 142
|
# hack: if vlan id comes as 1.142 instead of 142
|
||||||
$vlan =~ s/^\d+\.//;
|
$vlan =~ s/^\d+\.//;
|
||||||
|
|
||||||
++$vlans{$vlan};
|
# VLANs are ports interfaces capture VLAN, but don't count as in use
|
||||||
|
# Port channels are also 'propVirtual', but capture while checking
|
||||||
|
# trunk VLANs below
|
||||||
|
if (exists $i_type->{$idx} and $i_type->{$idx} eq 'propVirtual') {
|
||||||
|
$vlans{$vlan} ||= 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
++$vlans{$vlan};
|
||||||
|
}
|
||||||
|
foreach my $t_vlan (@{$trunks->{$idx}}) {
|
||||||
|
++$vlans{$t_vlan};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unless (scalar keys %vlans) {
|
unless (scalar keys %vlans) {
|
||||||
@@ -215,7 +228,8 @@ sub _get_vlan_list {
|
|||||||
(my $vlan = $idx) =~ s/^\d+\.//;
|
(my $vlan = $idx) =~ s/^\d+\.//;
|
||||||
|
|
||||||
# just in case i_vlan is different to v_name set
|
# just in case i_vlan is different to v_name set
|
||||||
++$vlans{$vlan};
|
# capture the VLAN, but it's not in use on a port
|
||||||
|
$vlans{$vlan} ||= 0;
|
||||||
|
|
||||||
$vlan_names{$vlan} = $name;
|
$vlan_names{$vlan} = $name;
|
||||||
}
|
}
|
||||||
@@ -268,8 +282,7 @@ sub _get_vlan_list {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# check in use by a port on this device
|
# check in use by a port on this device
|
||||||
if (scalar keys %$i_vlan and not exists $vlans{$vlan}
|
if (!$vlans{$vlan} && !setting('macsuck_all_vlans')) {
|
||||||
and not setting('macsuck_all_vlans')) {
|
|
||||||
|
|
||||||
debug sprintf
|
debug sprintf
|
||||||
' [%s] macsuck VLAN %s/%s - not in use by any port - skipping.',
|
' [%s] macsuck VLAN %s/%s - not in use by any port - skipping.',
|
||||||
|
|||||||
@@ -390,7 +390,8 @@ VLAN which is not defined in the VLAN database.
|
|||||||
|
|
||||||
=head3 C<macsuck_no_vlan>
|
=head3 C<macsuck_no_vlan>
|
||||||
|
|
||||||
Value: List of VLAN names or numbers. Default: Empty List.
|
Value: List of VLAN names or numbers. Default: fddi-default,
|
||||||
|
token-ring-default,fddinet-default,trnet-default.
|
||||||
|
|
||||||
On some devices, per-VLAN macsuck will timeout with specific VLAN numbers. You
|
On some devices, per-VLAN macsuck will timeout with specific VLAN numbers. You
|
||||||
can put those numbers (or their names) into this list to have them skipped.
|
can put those numbers (or their names) into this list to have them skipped.
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ macsuck_no: []
|
|||||||
macksuck_only: []
|
macksuck_only: []
|
||||||
macsuck_all_vlans: false
|
macsuck_all_vlans: false
|
||||||
macsuck_no_unnamed: false
|
macsuck_no_unnamed: false
|
||||||
macsuck_no_vlan: []
|
macsuck_no_vlan: [fddi-default,token-ring-default,fddinet-default,trnet-default]
|
||||||
macsuck_no_devicevlan: []
|
macsuck_no_devicevlan: []
|
||||||
macsuck_bleed: false
|
macsuck_bleed: false
|
||||||
macsuck_min_age: 0
|
macsuck_min_age: 0
|
||||||
|
|||||||
Reference in New Issue
Block a user