Merge branch 'master' of ssh://git.code.sf.net/p/netdisco/netdisco-ng

This commit is contained in:
Oliver Gorwits
2013-10-21 22:43:27 +01:00
3 changed files with 21 additions and 7 deletions

View File

@@ -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.',

View File

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

View File

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