Clean up inheritance for L3 Cisco classes. With this change all applicable classes will now support LLDP and aggregation methods.

This commit is contained in:
Eric A. Miller
2014-06-22 19:57:48 -04:00
parent 867a635ab8
commit 71f84d48dc
4 changed files with 156 additions and 646 deletions

View File

@@ -32,32 +32,17 @@
package SNMP::Info::Layer3::C3550; package SNMP::Info::Layer3::C3550;
use strict; use strict;
use warnings;
use Exporter; use Exporter;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CiscoStack; use SNMP::Info::CiscoStack;
use SNMP::Info::LLDP; use SNMP::Info::Layer3::CiscoSwitch;
use SNMP::Info::CDP;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::CiscoPower;
use SNMP::Info::Layer3;
use SNMP::Info::CiscoStpExtensions;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/; use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
# NOTE : Top-most items gets precedence for @ISA # NOTE : Top-most items gets precedence for @ISA
@SNMP::Info::Layer3::C3550::ISA = qw/ @SNMP::Info::Layer3::C3550::ISA = qw/
SNMP::Info::CiscoVTP
SNMP::Info::CiscoStpExtensions
SNMP::Info::CiscoStack SNMP::Info::CiscoStack
SNMP::Info::LLDP SNMP::Info::Layer3::CiscoSwitch
SNMP::Info::CDP
SNMP::Info::CiscoStats
SNMP::Info::CiscoPortSecurity
SNMP::Info::CiscoConfig
SNMP::Info::CiscoPower
SNMP::Info::Layer3
Exporter/; Exporter/;
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//; @SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
@@ -70,45 +55,23 @@ $VERSION = '3.15';
# So we want CiscoVTP to come last to get the right one. # So we want CiscoVTP to come last to get the right one.
# The @ISA order should match these orders. # The @ISA order should match these orders.
%MIBS = ( %MIBS
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoPower::MIBS, = ( %SNMP::Info::Layer3::CiscoSwitch::MIBS, %SNMP::Info::CiscoStack::MIBS,
%SNMP::Info::CiscoConfig::MIBS, %SNMP::Info::CiscoPortSecurity::MIBS, );
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::LLDP::MIBS, %SNMP::Info::CDP::MIBS,
%SNMP::Info::CiscoStack::MIBS, %SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
);
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer3::GLOBALS, %SNMP::Info::Layer3::CiscoSwitch::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoStack::GLOBALS, %SNMP::Info::CiscoStack::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
); );
%FUNCS = ( %FUNCS = (
%SNMP::Info::Layer3::FUNCS, %SNMP::Info::CiscoPower::FUNCS, %SNMP::Info::Layer3::CiscoSwitch::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS, %SNMP::Info::CiscoPortSecurity::FUNCS, %SNMP::Info::CiscoStack::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::LLDP::FUNCS, %SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoStack::FUNCS, %SNMP::Info::CiscoStpExtensions::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
); );
%MUNGE = ( %MUNGE = (
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::CiscoPower::MUNGE, %SNMP::Info::Layer3::CiscoSwitch::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE, %SNMP::Info::CiscoPortSecurity::MUNGE, %SNMP::Info::CiscoStack::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::LLDP::MUNGE, %SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoStack::MUNGE, %SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
); );
sub vendor { sub vendor {
@@ -229,10 +192,6 @@ sub set_i_duplex_admin {
} }
} }
sub cisco_comm_indexing {
return 1;
}
1; 1;
__END__ __END__
@@ -278,23 +237,9 @@ after determining a more specific class using the method above.
=over =over
=item SNMP::Info::Layer3
=item SNMP::Info::CiscoSTPExtensions
=item SNMP::Info::CiscoPower
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CiscoStack =item SNMP::Info::CiscoStack
=item SNMP::Info::CDP =item SNMP::Info::Layer3::CiscoSwitch
=item SNMP::Info::LLDP
=item SNMP::Info::CiscoStats
=back =back
@@ -304,24 +249,10 @@ after determining a more specific class using the method above.
=item Inherited Classes' MIBs =item Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStpExtensions/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPower/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB
requirements.
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::Layer3::CiscoSwitch/"Required MIBs"> for its own MIB
requirements.
See L<SNMP::Info::CDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
=back =back
@@ -346,47 +277,15 @@ Will take the translated model number and try to format it better.
Tries to cull the number of ports from the model number. Tries to cull the number of ports from the model number.
=item $c3550->cisco_comm_indexing()
Returns 1. Use vlan indexing.
=back =back
=head2 Globals imported from SNMP::Info::Layer3 =head2 Globals imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStpExtensions
See documentation in L<SNMP::Info::CiscoStpExtensions/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPower
See documentation in L<SNMP::Info::CiscoPower/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CiscoVTP
See documentation in L<SNMP::Info::CiscoVTP/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoStack/"GLOBALS"> for details. See documentation in L<SNMP::Info::CiscoStack/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CDP =head2 Globals imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details. See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStats
See documentation in L<SNMP::Info::CiscoStats/"GLOBALS"> for details.
=head1 TABLE METHODS =head1 TABLE METHODS
@@ -433,41 +332,13 @@ Crosses $c3550->p_port() with $c3550->p_duplex() to utilize port C<ifIndex>.
=back =back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStpExtensions
See documentation in L<SNMP::Info::CiscoStpExtensions/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoPower
See documentation in L<SNMP::Info::CiscoPower/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"TABLE METHODS"> for
details.
=head2 Table Methods imported from SNMP::Info::CiscoVTP
See documentation in L<SNMP::Info::CiscoVTP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStack =head2 Table Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoStack/"TABLE METHODS"> for details. See documentation in L<SNMP::Info::CiscoStack/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CDP =head2 Table Methods imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details. See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"TABLE METHODS"> for
details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStats
See documentation in L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
=cut =cut

View File

@@ -31,20 +31,15 @@
package SNMP::Info::Layer3::C4000; package SNMP::Info::Layer3::C4000;
use strict; use strict;
use warnings;
use Exporter; use Exporter;
use SNMP::Info::CiscoVTP; use SNMP::Info::Layer3::CiscoSwitch;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::CiscoConfig;
use SNMP::Info::MAU; use SNMP::Info::MAU;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::C4000::ISA = qw/SNMP::Info::CiscoVTP SNMP::Info::CDP @SNMP::Info::Layer3::C4000::ISA = qw/
SNMP::Info::CiscoStats SNMP::Info::Layer3::CiscoSwitch
SNMP::Info::CiscoPortSecurity SNMP::Info::MAU
SNMP::Info::CiscoConfig SNMP::Info::MAU Exporter/;
SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::C4000::EXPORT_OK = qw//; @SNMP::Info::Layer3::C4000::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/; use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@@ -52,24 +47,14 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.15'; $VERSION = '3.15';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS, %SNMP::Info::MAU::MIBS,
%SNMP::Info::CiscoConfig::MIBS, %SNMP::Info::Layer3::CiscoSwitch::MIBS,
%SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
'CISCO-ENVMON-MIB' => 'ciscoEnvMonMIB', 'CISCO-ENVMON-MIB' => 'ciscoEnvMonMIB',
); );
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::MAU::GLOBALS, %SNMP::Info::MAU::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS, %SNMP::Info::Layer3::CiscoSwitch::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
'ps1_type' => 'ciscoEnvMonSupplyStatusDescr.1', 'ps1_type' => 'ciscoEnvMonSupplyStatusDescr.1',
'ps1_status' => 'ciscoEnvMonSupplyState.1', 'ps1_status' => 'ciscoEnvMonSupplyState.1',
'ps2_type' => 'ciscoEnvMonSupplyStatusDescr.2', 'ps2_type' => 'ciscoEnvMonSupplyStatusDescr.2',
@@ -77,23 +62,14 @@ $VERSION = '3.15';
); );
%FUNCS = ( %FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::MAU::FUNCS, %SNMP::Info::MAU::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS, %SNMP::Info::Layer3::CiscoSwitch::FUNCS,
%SNMP::Info::CiscoPortSecurity::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
'fan_state' => 'ciscoEnvMonFanState', 'fan_state' => 'ciscoEnvMonFanState',
'fan_descr' => 'ciscoEnvMonFanStatusDescr', 'fan_descr' => 'ciscoEnvMonFanStatusDescr',
); );
%MUNGE = ( %MUNGE
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::MAU::MUNGE, = ( %SNMP::Info::MAU::MUNGE, %SNMP::Info::Layer3::CiscoSwitch::MUNGE, );
%SNMP::Info::CiscoConfig::MUNGE, %SNMP::Info::CiscoPortSecurity::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CDP::MUNGE, %SNMP::Info::CiscoVTP::MUNGE,
);
# Override Inheritance for these specific methods # Override Inheritance for these specific methods
# use MAU-MIB for admin. duplex and admin. speed # use MAU-MIB for admin. duplex and admin. speed
@@ -107,7 +83,6 @@ $VERSION = '3.15';
*SNMP::Info::Layer3::C4000::set_i_speed_admin *SNMP::Info::Layer3::C4000::set_i_speed_admin
= \&SNMP::Info::MAU::mau_set_i_speed_admin; = \&SNMP::Info::MAU::mau_set_i_speed_admin;
sub fan { sub fan {
my $c4000 = shift; my $c4000 = shift;
my $fan_state = $c4000->fan_state(); my $fan_state = $c4000->fan_state();
@@ -122,8 +97,6 @@ sub fan {
return $ret; return $ret;
} }
sub cisco_comm_indexing { return 1; }
1; 1;
__END__ __END__
@@ -165,20 +138,10 @@ after determining a more specific class using the method above.
=over =over
=item SNMP::Info::CiscoVTP =item SNMP::Info::Layer3::CiscoSwitch
=item SNMP::Info::CDP
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::CiscoConfig
=item SNMP::Info::MAU =item SNMP::Info::MAU
=item SNMP::Info::Layer3
=back =back
=head2 Required MIBs =head2 Required MIBs
@@ -187,21 +150,11 @@ after determining a more specific class using the method above.
=item Inherited Classes' MIBs =item Inherited Classes' MIBs
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::Layer3::CiscoSwitch/"Required MIBs"> for its own MIB
See L<SNMP::Info::CDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB
requirements. requirements.
See L<SNMP::Info::CiscoConfig/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::MAU/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::MAU/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=back =back
=head1 GLOBALS =head1 GLOBALS
@@ -212,44 +165,20 @@ These are methods that return scalar value from SNMP
=over =over
=item $c4000->cisco_comm_indexing()
Returns 1. Use vlan indexing.
=item $c4000->fan() =item $c4000->fan()
Returns fan status Returns fan status
=back =back
=head2 Global Methods imported from SNMP::Info::CiscoVTP =head2 Globals imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::CiscoVTP/"GLOBALS"> for details. See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStats
See documentation in L<SNMP::Info::CiscoStats/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoConfig
See documentation in L<SNMP::Info::CiscoConfig/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::MAU =head2 Globals imported from SNMP::Info::MAU
See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details. See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head1 TABLE METHODS =head1 TABLE METHODS
These are methods that return tables of information in the form of a reference These are methods that return tables of information in the form of a reference
@@ -289,33 +218,13 @@ Duplex choices are 'auto', 'half', 'full'.
=back =back
=head2 Table Methods imported from SNMP::Info::CiscoVTP =head2 Table Methods imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::CiscoVTP/"TABLE METHODS"> for details. See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"TABLE METHODS"> for
=head2 Table Methods imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStats
See documentation in L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"TABLE METHODS"> for
details. details.
=head2 Table Methods imported from SNMP::Info::CiscoConfig
See documentation in L<SNMP::Info::CiscoConfig/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::MAU =head2 Table Methods imported from SNMP::Info::MAU
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details. See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
=cut =cut

View File

@@ -31,35 +31,18 @@
package SNMP::Info::Layer3::C6500; package SNMP::Info::Layer3::C6500;
use strict; use strict;
use warnings;
use Exporter; use Exporter;
use SNMP::Info::CiscoStack; use SNMP::Info::CiscoStack;
use SNMP::Info::LLDP; use SNMP::Info::Layer3::CiscoSwitch;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoPower;
use SNMP::Info::Layer3;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CiscoAgg;
use SNMP::Info::MAU; use SNMP::Info::MAU;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/; use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
# NOTE : Top-most items gets precedence for @ISA # NOTE : Top-most items gets precedence for @ISA
@SNMP::Info::Layer3::C6500::ISA = qw/ @SNMP::Info::Layer3::C6500::ISA = qw/
SNMP::Info::CiscoAgg
SNMP::Info::CiscoVTP
SNMP::Info::CiscoStpExtensions
SNMP::Info::CiscoStack SNMP::Info::CiscoStack
SNMP::Info::LLDP SNMP::Info::Layer3::CiscoSwitch
SNMP::Info::CDP
SNMP::Info::CiscoStats
SNMP::Info::CiscoPortSecurity
SNMP::Info::CiscoConfig
SNMP::Info::CiscoPower
SNMP::Info::Layer3
SNMP::Info::MAU SNMP::Info::MAU
Exporter Exporter
/; /;
@@ -78,58 +61,33 @@ $VERSION = '3.15';
%MIBS = ( %MIBS = (
%SNMP::Info::MAU::MIBS, %SNMP::Info::MAU::MIBS,
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::CiscoSwitch::MIBS,
%SNMP::Info::CiscoPower::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CiscoStack::MIBS, %SNMP::Info::CiscoStack::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
%SNMP::Info::CiscoAgg::MIBS,
'CISCO-VIRTUAL-SWITCH-MIB' => 'cvsSwitchMode', 'CISCO-VIRTUAL-SWITCH-MIB' => 'cvsSwitchMode',
); );
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::MAU::GLOBALS, %SNMP::Info::MAU::GLOBALS,
%SNMP::Info::Layer3::GLOBALS, %SNMP::Info::Layer3::CiscoSwitch::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CiscoStack::GLOBALS, %SNMP::Info::CiscoStack::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
); );
%FUNCS = ( %FUNCS = (
%SNMP::Info::MAU::FUNCS, %SNMP::Info::Layer3::FUNCS, %SNMP::Info::MAU::FUNCS,
%SNMP::Info::CiscoPower::FUNCS, %SNMP::Info::CiscoConfig::FUNCS, %SNMP::Info::Layer3::CiscoSwitch::FUNCS,
%SNMP::Info::CiscoPortSecurity::FUNCS, %SNMP::Info::CiscoStack::FUNCS,
%SNMP::Info::CiscoStats::FUNCS, %SNMP::Info::CDP::FUNCS,
%SNMP::Info::LLDP::FUNCS, %SNMP::Info::CiscoStack::FUNCS,
%SNMP::Info::CiscoStpExtensions::FUNCS, %SNMP::Info::CiscoVTP::FUNCS,
); );
%MUNGE = ( %MUNGE = (
%SNMP::Info::MAU::MUNGE, %SNMP::Info::Layer3::MUNGE, %SNMP::Info::MAU::MUNGE,
%SNMP::Info::CiscoPower::MUNGE, %SNMP::Info::CiscoConfig::MUNGE, %SNMP::Info::Layer3::CiscoSwitch::MUNGE,
%SNMP::Info::CiscoPortSecurity::MUNGE, %SNMP::Info::CiscoStack::MUNGE,
%SNMP::Info::CiscoStats::MUNGE, %SNMP::Info::CDP::MUNGE,
%SNMP::Info::LLDP::MUNGE, %SNMP::Info::CiscoStack::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE, %SNMP::Info::CiscoVTP::MUNGE,
); );
sub vendor { sub vendor {
return 'cisco'; return 'cisco';
} }
sub cisco_comm_indexing { return 1; }
sub serial { sub serial {
my $c6500 = shift; my $c6500 = shift;
@@ -325,25 +283,11 @@ after determining a more specific class using the method above.
=over =over
=item SNMP::Info::CiscoAgg
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CiscoStack =item SNMP::Info::CiscoStack
=item SNMP::Info::CDP =item SNMP::Info::Layer3::CiscoSwitch
=item SNMP::Info::CiscoStats =item SNMP::Info::MAU
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::CiscoConfig
=item SNMP::Info::CiscoPower
=item SNMP::Info::Layer3
=item SNMP::Info::CiscoStpExtensions
=back =back
@@ -353,26 +297,12 @@ after determining a more specific class using the method above.
=item Inherited Classes' MIBs =item Inherited Classes' MIBs
See L<SNMP::Info::CiscoAgg/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CDP/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::Layer3::CiscoSwitch/"Required MIBs"> for its own MIB
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB
requirements. requirements.
See L<SNMP::Info::CiscoConfig/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::MAU/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPower/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStpExtensions/"Required MIBs"> for its own MIB requirements.
=back =back
@@ -386,10 +316,6 @@ These are methods that return scalar value from SNMP
Returns 'cisco' Returns 'cisco'
=item $c6500->cisco_comm_indexing()
Returns 1. Use vlan indexing.
=item $c6500->cvsSwitchMode() =item $c6500->cvsSwitchMode()
Returns the Switch status: multiNode or standalone. Returns the Switch status: multiNode or standalone.
@@ -404,41 +330,17 @@ Returns serial number of unit (falls back to C<entPhysicalSerialNum>).
=back =back
=head2 Global Methods imported from SNMP::Info::CiscoVTP =head2 Globals imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoVTP/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoStack/"GLOBALS"> for details. See documentation in L<SNMP::Info::CiscoStack/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CDP =head2 Globals imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details. See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStats =head2 Globals imported from SNMP::Info::MAU
See documentation in L<SNMP::Info::CiscoStats/"GLOBALS"> for details. See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoConfig
See documentation in L<SNMP::Info::CiscoConfig/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPower
See documentation in L<SNMP::Info::CiscoPower/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStpExtensions
See documentation in L<SNMP::Info::CiscoStpExtensions/"GLOBALS"> for details.
=head1 TABLE METHODS =head1 TABLE METHODS
@@ -493,43 +395,19 @@ Crosses $c6500->p_port() with $c6500->p_speed() to utilize port C<ifIndex>.
=back =back
=head2 Table Methods imported from SNMP::Info::CiscoVTP
See documentation in L<SNMP::Info::CiscoVTP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStack =head2 Table Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoStack/"TABLE METHODS"> for details. See documentation in L<SNMP::Info::CiscoStack/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details. =head2 Table Methods imported from SNMP::Info::Layer3::CiscoSwitch
=head2 Table Methods imported from SNMP::Info::CiscoStats See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"TABLE METHODS"> for
See documentation in L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"TABLE METHODS"> for
details. details.
=head2 Table Methods imported from SNMP::Info::CiscoConfig
See documentation in L<SNMP::Info::CiscoConfig/"TABLE METHODS"> for details. =head2 Table Methods imported from SNMP::Info::MAU
=head2 Table Methods imported from SNMP::Info::CiscoPower See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::CiscoPower/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStpExtensions
See documentation in L<SNMP::Info::CiscoStpExtensions/"TABLE METHODS"> for
details.
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
=cut =cut

View File

@@ -1,6 +1,6 @@
# SNMP::Info::Layer3::Nexus # SNMP::Info::Layer3::Nexus
# #
# Copyright (c) 2012 Eric Miller # Copyright (c) 2014 Eric Miller
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@@ -30,30 +30,17 @@
package SNMP::Info::Layer3::Nexus; package SNMP::Info::Layer3::Nexus;
use strict; use strict;
use warnings;
use Exporter; use Exporter;
use SNMP::Info::LLDP; use SNMP::Info::Layer3::CiscoSwitch;
use SNMP::Info::CDP;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoPower;
use SNMP::Info::Layer3;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::CiscoVTP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/; use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
# NOTE : Top-most items gets precedence for @ISA # NOTE : Top-most items gets precedence for @ISA
@SNMP::Info::Layer3::Nexus::ISA = qw/ @SNMP::Info::Layer3::Nexus::ISA = qw/
SNMP::Info::CiscoVTP SNMP::Info::Layer3::CiscoSwitch
SNMP::Info::CiscoStpExtensions Exporter
SNMP::Info::LLDP /;
SNMP::Info::CDP
SNMP::Info::CiscoPortSecurity
SNMP::Info::CiscoConfig
SNMP::Info::CiscoPower
SNMP::Info::Layer3
Exporter
/;
@SNMP::Info::Layer3::Nexus::EXPORT_OK = qw//; @SNMP::Info::Layer3::Nexus::EXPORT_OK = qw//;
@@ -68,171 +55,132 @@ $VERSION = '3.15';
# The @ISA order should be reverse of these orders. # The @ISA order should be reverse of these orders.
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::CiscoSwitch::MIBS,
%SNMP::Info::CiscoPower::MIBS, 'CISCO-ENTITY-VENDORTYPE-OID-MIB' => 'cevMIBObjects',
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
'CISCO-ENTITY-VENDORTYPE-OID-MIB' => 'cevMIBObjects',
); );
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer3::GLOBALS, %SNMP::Info::Layer3::CiscoSwitch::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS, 'mac' => 'dot1dBaseBridgeAddress',
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
'mac' => 'dot1dBaseBridgeAddress',
); );
%FUNCS = ( %FUNCS = ( %SNMP::Info::Layer3::CiscoSwitch::FUNCS, );
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoPower::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CiscoPortSecurity::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::CiscoStpExtensions::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
);
%MUNGE = ( %SNMP::Info::Layer3::CiscoSwitch::MUNGE, );
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::CiscoPower::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoPortSecurity::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
);
sub cisco_comm_indexing { return 1; }
sub vendor {
return 'cisco';
}
sub os { sub os {
return 'nx-os'; return 'nx-os';
} }
sub os_ver { sub os_ver {
my $nexus = shift; my $nexus = shift;
my $descr = $nexus->description(); my $descr = $nexus->description();
return $1 if ( $descr =~ /\),\s+Version\s+(.+?),/ ); return $1 if ( $descr =~ /\),\s+Version\s+(.+?),/ );
return $descr; return $descr;
} }
sub serial { sub serial {
my $nexus = shift; my $nexus = shift;
my $e_parent = $nexus->e_parent(); my $e_parent = $nexus->e_parent();
foreach my $iid ( keys %$e_parent ) { foreach my $iid ( keys %$e_parent ) {
my $parent = $e_parent->{$iid}; my $parent = $e_parent->{$iid};
if ($parent eq '0') { if ( $parent eq '0' ) {
my $serial = $nexus->e_serial($iid); my $serial = $nexus->e_serial($iid);
return $serial->{$iid}; return $serial->{$iid};
}
} }
} return;
return;
} }
# sysObjectID returns an IID to an entry in the CISCO-ENTITY-VENDORTYPE-OID-MIB. # sysObjectID returns an IID to an entry in the CISCO-ENTITY-VENDORTYPE-OID-MIB.
# Look it up and return it. # Look it up and return it.
sub model { sub model {
my $nexus = shift; my $nexus = shift;
my $id = $nexus->id(); my $id = $nexus->id();
unless ( defined $id ) { unless ( defined $id ) {
print print
" SNMP::Info::Layer3::Nexus::model() - Device does not support sysObjectID\n" " SNMP::Info::Layer3::Nexus::model() - Device does not support sysObjectID\n"
if $nexus->debug(); if $nexus->debug();
return; return;
} }
my $model = &SNMP::translateObj($id); my $model = &SNMP::translateObj($id);
return $id unless defined $model; return $id unless defined $model;
$model =~ s/^cevChassis//i; $model =~ s/^cevChassis//i;
return $model; return $model;
} }
# Reported version 6.x of NX-OS doesn't use the IPv4 address as index # Reported version 6.x of NX-OS doesn't use the IPv4 address as index
# override methods in ipAddrTable # override methods in ipAddrTable
sub ip_table { sub ip_table {
my $nexus = shift; my $nexus = shift;
my $orig_ip_table = $nexus->orig_ip_table(); my $orig_ip_table = $nexus->orig_ip_table();
my %ip_table; my %ip_table;
foreach my $iid ( keys %$orig_ip_table ) { foreach my $iid ( keys %$orig_ip_table ) {
my $ip = $orig_ip_table->{$iid}; my $ip = $orig_ip_table->{$iid};
next unless defined $ip; next unless defined $ip;
$ip_table{$ip} = $ip; $ip_table{$ip} = $ip;
} }
return \%ip_table; return \%ip_table;
} }
sub ip_index { sub ip_index {
my $nexus = shift; my $nexus = shift;
my $orig_ip_table = $nexus->orig_ip_table(); my $orig_ip_table = $nexus->orig_ip_table();
my $orig_ip_index = $nexus->orig_ip_index(); my $orig_ip_index = $nexus->orig_ip_index();
my %ip_index; my %ip_index;
foreach my $iid ( keys %$orig_ip_table ) { foreach my $iid ( keys %$orig_ip_table ) {
my $ip = $orig_ip_table->{$iid}; my $ip = $orig_ip_table->{$iid};
my $index = $orig_ip_index->{$iid}; my $index = $orig_ip_index->{$iid};
next unless ( defined $ip && defined $index ); next unless ( defined $ip && defined $index );
$ip_index{$ip} = $index; $ip_index{$ip} = $index;
} }
return \%ip_index; return \%ip_index;
} }
sub ip_netmask { sub ip_netmask {
my $nexus = shift; my $nexus = shift;
my $orig_ip_table = $nexus->orig_ip_table(); my $orig_ip_table = $nexus->orig_ip_table();
my $orig_ip_netmask = $nexus->orig_ip_netmask(); my $orig_ip_netmask = $nexus->orig_ip_netmask();
my %ip_netmask; my %ip_netmask;
foreach my $iid ( keys %$orig_ip_table ) { foreach my $iid ( keys %$orig_ip_table ) {
my $ip = $orig_ip_table->{$iid}; my $ip = $orig_ip_table->{$iid};
my $netmask = $orig_ip_netmask->{$iid}; my $netmask = $orig_ip_netmask->{$iid};
next unless ( defined $ip && defined $netmask ); next unless ( defined $ip && defined $netmask );
$ip_netmask{$ip} = $netmask; $ip_netmask{$ip} = $netmask;
} }
return \%ip_netmask; return \%ip_netmask;
} }
sub ip_broadcast { sub ip_broadcast {
my $nexus = shift; my $nexus = shift;
my $orig_ip_table = $nexus->orig_ip_table(); my $orig_ip_table = $nexus->orig_ip_table();
my $orig_ip_broadcast = $nexus->orig_ip_broadcast(); my $orig_ip_broadcast = $nexus->orig_ip_broadcast();
my %ip_broadcast; my %ip_broadcast;
foreach my $iid ( keys %$orig_ip_table ) { foreach my $iid ( keys %$orig_ip_table ) {
my $ip = $orig_ip_table->{$iid}; my $ip = $orig_ip_table->{$iid};
my $broadcast = $orig_ip_broadcast->{$iid}; my $broadcast = $orig_ip_broadcast->{$iid};
next unless ( defined $ip && defined $broadcast ); next unless ( defined $ip && defined $broadcast );
$ip_broadcast{$ip} = $broadcast; $ip_broadcast{$ip} = $broadcast;
} }
return \%ip_broadcast; return \%ip_broadcast;
} }
1; 1;
@@ -251,14 +199,14 @@ Eric Miller
# Let SNMP::Info determine the correct subclass for you. # Let SNMP::Info determine the correct subclass for you.
my $nexus = new SNMP::Info( my $nexus = new SNMP::Info(
AutoSpecify => 1, AutoSpecify => 1,
Debug => 1, Debug => 1,
# These arguments are passed directly to SNMP::Session # These arguments are passed directly to SNMP::Session
DestHost => 'myswitch', DestHost => 'myswitch',
Community => 'public', Community => 'public',
Version => 2 Version => 2
) )
or die "Can't connect to DestHost.\n"; or die "Can't connect to DestHost.\n";
my $class = $nexus->class(); my $class = $nexus->class();
print "SNMP::Info determined this device to fall under subclass : $class\n"; print "SNMP::Info determined this device to fall under subclass : $class\n";
@@ -276,21 +224,7 @@ after determining a more specific class using the method above.
=over =over
=item SNMP::Info::Layer3 =item SNMP::Info::Layer3::CiscoSwitch
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CDP
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::CiscoConfig
=item SNMP::Info::CiscoPower
=item SNMP::Info::CiscoStpExtensions
=item SNMP::Info::LLDP
=back =back
@@ -306,23 +240,9 @@ after determining a more specific class using the method above.
=item Inherited Classes' MIBs =item Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements. See L<SNMP::Info::Layer3::CiscoSwitch/"Required MIBs"> for its own MIB
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB
requirements. requirements.
See L<SNMP::Info::CiscoConfig/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPower/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStpExtensions/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
=back =back
=head1 GLOBALS =head1 GLOBALS
@@ -331,10 +251,6 @@ These are methods that return a scalar value from SNMP
=over =over
=item $nexus->vendor()
Returns 'cisco'
=item $nexus->os() =item $nexus->os()
Returns C<'nx-os'> Returns C<'nx-os'>
@@ -357,10 +273,6 @@ Removes C<'cevChassis'> for readability.
C<dot1dBaseBridgeAddress> C<dot1dBaseBridgeAddress>
=item $nexus->cisco_comm_indexing()
Returns 1. Use vlan indexing.
=back =back
=head2 Overrides =head2 Overrides
@@ -399,78 +311,18 @@ Gives broadcast address for IP table entry.
=back =back
=head2 Globals imported from SNMP::Info::Layer3 =head2 Globals imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details. See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CiscoVTP
See documentation in L<SNMP::Info::CiscoVTP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoConfig
See documentation in L<SNMP::Info::CiscoConfig/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPower
See documentation in L<SNMP::Info::CiscoPower/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStpExtensions
See documentation in L<SNMP::Info::CiscoStpExtensions/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head1 TABLE METHODS =head1 TABLE METHODS
These are methods that return tables of information in the form of a reference These are methods that return tables of information in the form of a reference
to a hash. to a hash.
=head2 Table Methods imported from SNMP::Info::Layer3 =head2 Table Methods imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details. See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"TABLE METHODS"> for
=head2 Table Methods imported from SNMP::Info::CiscoVTP
See documentation in L<SNMP::Info::CiscoVTP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStats
See documentation in L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"TABLE METHODS"> for
details. details.
=head2 Table Methods imported from SNMP::Info::CiscoConfig
See documentation in L<SNMP::Info::CiscoConfig/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoPower
See documentation in L<SNMP::Info::CiscoPower/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStpExtensions
See documentation in L<SNMP::Info::CiscoStpExtensions/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=cut =cut