[#68] Fix device_port entries for switches with non-unique ifDesc
This commit is contained in:
@@ -14,6 +14,11 @@ version 3.08 ()
|
|||||||
* [#69] set speed and duplex on Cisco VSS system (psychiatric)
|
* [#69] set speed and duplex on Cisco VSS system (psychiatric)
|
||||||
* munge_null() now removes all non-printable control characters
|
* munge_null() now removes all non-printable control characters
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* [#68] Fix device_port entries for switches with non-unique
|
||||||
|
ifDesc (Nic Bernstein)
|
||||||
|
|
||||||
version 3.07 (2013-10-01)
|
version 3.07 (2013-10-01)
|
||||||
|
|
||||||
[ENHANCEMENTS]
|
[ENHANCEMENTS]
|
||||||
|
|||||||
@@ -123,8 +123,11 @@ sub serial {
|
|||||||
# precedence
|
# precedence
|
||||||
# serial2,chassis parse,serial1
|
# serial2,chassis parse,serial1
|
||||||
return $serial2 if ( defined $serial2 and $serial2 !~ /^\s*$/ );
|
return $serial2 if ( defined $serial2 and $serial2 !~ /^\s*$/ );
|
||||||
return $1
|
|
||||||
if ( defined $chassis and $chassis =~ /serial#?:\s*([a-z0-9]+)/i );
|
if ( defined $chassis and $chassis =~ /serial#?:\s*([a-z0-9]+)/i ) {
|
||||||
|
return $1;
|
||||||
|
}
|
||||||
|
|
||||||
return $serial1 if ( defined $serial1 and $serial1 !~ /^\s*$/ );
|
return $serial1 if ( defined $serial1 and $serial1 !~ /^\s*$/ );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -155,11 +158,19 @@ sub interfaces {
|
|||||||
my $i_descr = $l2->i_description($partial) || {};
|
my $i_descr = $l2->i_description($partial) || {};
|
||||||
|
|
||||||
# Replace the Index with the ifDescr field.
|
# Replace the Index with the ifDescr field.
|
||||||
|
# Check for duplicates in ifDescr, if so uniquely identify by adding
|
||||||
|
# ifIndex to repeated values
|
||||||
|
my %seen;
|
||||||
foreach my $iid ( keys %$i_descr ) {
|
foreach my $iid ( keys %$i_descr ) {
|
||||||
my $port = $i_descr->{$iid};
|
my $port = $i_descr->{$iid};
|
||||||
next unless defined $port;
|
next unless defined $port;
|
||||||
|
if ( $seen{$port}++ ) {
|
||||||
|
$interfaces->{$iid} = sprintf( "%s (%d)", $port, $iid );
|
||||||
|
}
|
||||||
|
else {
|
||||||
$interfaces->{$iid} = $port;
|
$interfaces->{$iid} = $port;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return $interfaces;
|
return $interfaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -215,8 +215,11 @@ sub serial {
|
|||||||
# precedence
|
# precedence
|
||||||
# serial2,chassis parse,serial1
|
# serial2,chassis parse,serial1
|
||||||
return $serial2 if ( defined $serial2 and $serial2 !~ /^\s*$/ );
|
return $serial2 if ( defined $serial2 and $serial2 !~ /^\s*$/ );
|
||||||
return $1
|
|
||||||
if ( defined $chassis and $chassis =~ /serial#?:\s*([a-z0-9]+)/i );
|
if ( defined $chassis and $chassis =~ /serial#?:\s*([a-z0-9]+)/i ) {
|
||||||
|
return $1;
|
||||||
|
}
|
||||||
|
|
||||||
return $serial1 if ( defined $serial1 and $serial1 !~ /^\s*$/ );
|
return $serial1 if ( defined $serial1 and $serial1 !~ /^\s*$/ );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -294,17 +297,22 @@ sub interfaces {
|
|||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
|
|
||||||
my $interfaces = $l3->i_index($partial);
|
my $interfaces = $l3->i_index($partial);
|
||||||
my $descriptions = $l3->i_description($partial);
|
my $i_descr = $l3->i_description($partial);
|
||||||
|
|
||||||
my %interfaces = ();
|
# Check for duplicates in ifDescr, if so uniquely identify by adding
|
||||||
foreach my $iid ( keys %$interfaces ) {
|
# ifIndex to repeated values
|
||||||
my $desc = $descriptions->{$iid};
|
my %seen;
|
||||||
next unless defined $desc;
|
foreach my $iid ( keys %$i_descr ) {
|
||||||
|
my $port = $i_descr->{$iid};
|
||||||
$interfaces{$iid} = $desc;
|
next unless defined $port;
|
||||||
|
if ( $seen{$port}++ ) {
|
||||||
|
$interfaces->{$iid} = sprintf( "%s (%d)", $port, $iid );
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
return \%interfaces;
|
$interfaces->{$iid} = $port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $interfaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub vendor {
|
sub vendor {
|
||||||
|
|||||||
Reference in New Issue
Block a user