diff --git a/Info/Layer2.pm b/Info/Layer2.pm index 447ecb7d..392d754a 100644 --- a/Info/Layer2.pm +++ b/Info/Layer2.pm @@ -140,26 +140,18 @@ sub i_ignore { return \%i_ignore; } -# By Default we'll use the description field sub interfaces { my $l2 = shift; my $interfaces = $l2->i_index(); my $i_descr = $l2->i_description(); - #my $i_name = $l2->i_name(); - my %if; - foreach my $iid (keys %$interfaces){ + # Replace the Index with the ifDescr field. + foreach my $iid (keys %$i_descr){ my $port = $i_descr->{$iid}; - - # what device was this good for? bad idea. - #my $name = $i_name->{$iid}; - #$port = $name if (defined $name and $name !~ /^\s*$/); - next unless defined $port; - - $if{$iid} = $port; + $interfaces->{$iid} = $port; } - return \%if + return $interfaces; } 1; diff --git a/Info/Layer2/Catalyst.pm b/Info/Layer2/Catalyst.pm index 8c83569b..3a05dc02 100644 --- a/Info/Layer2/Catalyst.pm +++ b/Info/Layer2/Catalyst.pm @@ -77,6 +77,14 @@ use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE $INIT/ ; %SNMP::Info::CiscoStats::MUNGE, ); +# Need to specify this or it might grab the ones out of L2 instead of CiscoStack +*SNMP::Info::Layer2::Catalyst::serial = \&SNMP::Info::CiscoStack::serial; +*SNMP::Info::Layer2::Catalyst::interfaces = \&SNMP::Info::CiscoStack::interfaces; +*SNMP::Info::Layer2::Catalyst::i_duplex = \&SNMP::Info::CiscoStack::i_duplex; +*SNMP::Info::Layer2::Catalyst::i_type = \&SNMP::Info::CiscoStack::i_type; +*SNMP::Info::Layer2::Catalyst::i_name = \&SNMP::Info::CiscoStack::i_name; +*SNMP::Info::Layer2::Catalyst::i_duplex_admin = \&SNMP::Info::CiscoStack::i_duplex_admin; + # Overidden Methods # i_physical sets a hash entry as true if the iid is a physical port diff --git a/Info/Layer2/Foundry.pm b/Info/Layer2/Foundry.pm index e7b4cf29..8bbe59d5 100644 --- a/Info/Layer2/Foundry.pm +++ b/Info/Layer2/Foundry.pm @@ -158,6 +158,24 @@ sub serial { return $foundry->SUPER::serial(); } +sub interfaces { + my $foundry = shift; + my $i_descr = $foundry->i_description; + my $i_name = $foundry->i_name; + + # use ifName only if it is in portn + # format. For EdgeIrons + # else use ifDescr + foreach my $iid (keys %$i_name){ + my $name = $i_name->{$iid}; + next unless defined $name; + $i_descr->{$iid} = $name + if $name =~ /^port\d+/i; + } + + return $i_descr; +} + sub i_ignore { my $foundry = shift; my $i_type = $foundry->i_type();