Compare commits

...

52 Commits

Author SHA1 Message Date
Oliver Gorwits
1ae7f8c8a2 release 3.17
POD tests are not required for distribution
2014-06-23 19:31:14 +01:00
Oliver Gorwits
8e63954c3f release 3.16 2014-06-23 13:53:22 +01:00
Eric A. Miller
0fbcd5f8b1 Documentation updates for Cisco inheritance clean-up 2014-06-22 20:16:34 -04:00
Eric A. Miller
71f84d48dc Clean up inheritance for L3 Cisco classes. With this change all applicable classes will now support LLDP and aggregation methods. 2014-06-22 19:57:48 -04:00
Eric A. Miller
867a635ab8 Remove SNMP::Info inheritance from CiscoStack to prevent issues caused by multiple inheritance, documentation states that this class should not be used directly. 2014-06-22 19:53:53 -04:00
Eric A. Miller
3d2c9ceaf5 Add L3::CiscoSwitch base class for L3 Cisco switches 2014-06-22 19:31:00 -04:00
Eric A. Miller
47736b08ce FWSM and ASA only support methods in CiscoStats, don't inherit other Cisco classes which the devices don't support 2014-06-22 19:28:03 -04:00
Eric A. Miller
3f49e5f8ef Add LLDP and CiscoStpExtensions to L3::Cisco 2014-06-22 17:35:32 -04:00
Eric A. Miller
7c8575bfa5 Clarify CISCO-VLAN-IFTABLE-RELATION-MIB usage comment 2014-06-22 11:21:55 -04:00
Eric A. Miller
102a7e10cc L3::Cisco i_vlan() will now call SUPER and try interface description as a fallback 2014-06-22 11:21:02 -04:00
Eric A. Miller
9148764d20 Remove CiscoImage from all classes as its now included in CiscoStats class 2014-06-22 09:31:44 -04:00
Eric A. Miller
ce619415de Make L2::Cisco base class for L2::Catalyst and L2::C2900
Add CiscoPortSecurity, CiscoStpExtensions, CiscoAgg to L2::Cisco
Remove CiscoQOS and CiscoImage from L2::Cisco
2014-06-21 11:41:17 -04:00
Eric A. Miller
745807007f Remove CiscoImage class as its now included in CiscoStats class 2014-06-21 11:37:55 -04:00
Eric A. Miller
e85b3f70aa Consolidate CiscoImage class into CiscoStats class 2014-06-21 11:36:33 -04:00
Eric A. Miller
edc0fe4fbe Enterprise edition versions 8 and 9 of C1900 support aggregation and stp extensions 2014-06-21 11:35:03 -04:00
Oliver Gorwits
3cceec9044 add MRO synopsis and remove empty all_methods keys 2014-06-20 13:48:36 +01:00
Oliver Gorwits
18602855da use array instead of hash for key/val 2014-06-19 17:04:22 +01:00
Oliver Gorwits
72c223f72e make all_methods explicitly show all subs/globals/funcs 2014-06-19 16:51:12 +01:00
Oliver Gorwits
c6b3c45412 version of all_methods using positional array for sub/global/func 2014-06-19 16:42:36 +01:00
Oliver Gorwits
c60a04f530 Add method resolution discovery in SNMP::Info::MRO helper module 2014-06-19 15:46:42 +01:00
Oliver Gorwits
f7430ab1a6 Add method resolution discovery in SNMP::Info::MRO helper module 2014-06-19 15:44:51 +01:00
Oliver Gorwits
827398228c Add superclass discovery methods 2014-06-18 13:22:09 +01:00
Oliver Gorwits
a264bb36cb release 3.15 2014-06-10 13:17:33 +01:00
Oliver Gorwits
c24e63ec4c Return serial number for Cisco 3850 from entPhysicalSerialNum 2014-06-10 13:12:08 +01:00
Oliver Gorwits
6519570839 Offline mode and Cache export/priming 2014-06-09 22:30:30 +01:00
Oliver Gorwits
2c88544158 implement cache and offline mode 2014-06-09 21:21:26 +01:00
Oliver Gorwits
d0722d3677 release 3.14 2014-06-07 12:35:18 +01:00
Oliver Gorwits
d2b404763b fix pod 2014-06-07 12:34:08 +01:00
Oliver Gorwits
88fb9e4df3 802.3ad LAG support in Layer3::H3C 2014-06-07 12:26:43 +01:00
Jeroen van Ingen
440ec276d3 Fallback in determination whether a device is LLDP capable 2014-06-06 09:41:13 +02:00
Jeroen van Ingen
6e91b90c48 Add LLDP capabilities to Layer2::HPVC class 2014-06-06 09:41:13 +02:00
Jeroen van Ingen
0bfc8c5ed6 Return correct VLAN info with qb_fw_table() on Layer2::HP 2014-06-06 09:41:13 +02:00
Oliver Gorwits
63547c2ea1 Don't unshift length from broken lldpRemManAddrTable implementations (G. Shtern) 2014-05-08 20:02:11 +01:00
Oliver Gorwits
efecf1bbb7 Improvements to Mikrotik module (Alex Z) 2014-04-18 17:08:01 +01:00
Oliver Gorwits
682b8c2a9c release 3.13 2014-03-27 23:22:13 +00:00
Oliver Gorwits
88295e8c1e Cisco PAgP support added to LAG method
Squashed commit of the following:

commit 5cb2d637c7e990bbb8f789b6878f4bcb99778157
Author: Brian De Wolf <git@bldewolf.com>
Date:   Wed Feb 26 18:31:22 2014 -0800

    Implement agg_ports_pagp

    This function was a stub that is now filled out.  Also filled out the function
    that merges PAgP and LAG groups and did minimal testing of the PAgP side (no
    LAG in use in my env).
2014-03-27 23:08:53 +00:00
Jeroen van Ingen
6764f15fd0 HP ProCurve LAG support by inheriting Info::Aggregate class 2014-03-25 11:32:43 +01:00
Oliver Gorwits
8b8ee8693e release 3.12 2014-02-10 21:08:24 +00:00
Oliver Gorwits
fe89001166 Foundry/Brocade aggreate port master ifIndex resolved properly 2014-02-09 12:41:46 +00:00
Eric A. Miller
416a18377c Modify L3::Passport to obtain forwarding table information from RAPID-CITY if information is not available in either Q-BRIDGE-MIB or BRIDGE-MIB. Needed for VSP 9000 prior to version 4.x (Tobias Gerlach) 2014-01-29 20:40:19 -05:00
Eric A. Miller
8fda38184c [#52] NETSCREEN-IP-ARP-MIB considered harmful 2014-01-28 23:06:53 -05:00
Oliver Gorwits
280e9260f7 release 3.11 2014-01-26 13:47:38 +00:00
Eric A. Miller
22642c1095 Skip default CPU management addresses on VSP and 8800/8600 series in L3::Passport to prevent erroneous duplicate addresses 2014-01-20 21:59:53 -05:00
Oliver Gorwits
d68b2047b0 rename IEEE802dot3ag to IEEE802dot3ad 2014-01-19 17:11:42 +00:00
Eric A. Miller
7240f034e5 Regex cleanup for additional support of Avaya 8800 series in L3::Passport 2014-01-19 12:03:50 -05:00
Eric A. Miller
97ce41e363 Additional documentation for new LAG support 2014-01-19 11:00:50 -05:00
Eric A. Miller
31a8abc3b8 Squashed commit of the following:
commit 9be20cd3e24b401d5bfeb2bcb40d61a7b33ffe2c
Author: Eric A. Miller <emiller@cpan.org>
Date:   Sun Jan 19 10:13:41 2014 -0500

    Re-organize part 2

commit 058fc6e000a27b8ffadf5857078e0ab1569d3fa2
Author: Eric A. Miller <emiller@cpan.org>
Date:   Sun Jan 19 10:08:31 2014 -0500

    Re-organize

commit 04f4602d6cf06f917bd4f19db737f877a46fd28e
Author: Eric A. Miller <emiller@cpan.org>
Date:   Sun Jan 19 10:04:09 2014 -0500

    Add MLT agg_ports() support for Avaya

commit 2cdc3aed77f551e3c6d04f4cfe390a876010ebcb
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Jan 12 14:24:38 2014 +0000

    implement LAG support for Foundry

commit 7465816b53981f3211bdeb5a7a414d5a4e65c79f
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Jan 12 13:15:13 2014 +0000

    implement LAG support for Arista

commit 67e8f13f635f4fb450ab5df6e9145830ef72cf7b
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Jan 12 12:59:09 2014 +0000

    update gitignore to ignore SNMP dir

commit df4ca0eb44a4f0e5aa114630f0d22b5c9d7861f3
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Jan 12 12:49:53 2014 +0000

    implement LAG support for Cisco
2014-01-19 10:25:41 -05:00
Eric A. Miller
6b49bfd4c4 methods take precedence over globals, make sure that all classes have methods defined if needed to override new fw_mac and fw_port methods in Bridge class 2014-01-13 20:41:28 -05:00
Eric A. Miller
985b4aab3f Use Q-BRIDGE-MIB as default with fallback to BRIDGE-MIB across all classes for the fw_mac, fw_port, and fw_status methods 2014-01-10 19:26:38 -05:00
Eric A. Miller
a4e7c3a61a Fix Extreme XOS i_vlan_membership - Revert [28bbe0], fix bug with untagged being added to @ret twice (Robert Kerr) 2014-01-09 21:31:58 -05:00
Eric A. Miller
d82d8781c4 [#51] Collect nsIfMngIp when getting IP interfaces in L3::Netscreen 2014-01-04 18:33:20 -05:00
Eric A. Miller
b4c3f92ba3 Modify cdp_cap() to handle devices which return space delimited strings for cdpCacheCapabilities rather than hex strings 2013-12-17 19:18:52 -05:00
114 changed files with 2438 additions and 1652 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
*.db
SNMP

View File

@@ -1,5 +1,101 @@
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
version 3.17 (2014-06-23)
[ENHANCEMENTS]
* POD tests are not required for distribution.
version 3.16 (2014-06-23)
[ENHANCEMENTS]
* Add method resolution discovery in SNMP::Info::MRO helper module
* Consolidate CiscoImage class into CiscoStats class
* Clean up inheritance for Cisco classes. With this change
all applicable classes now inherit CiscoAgg, CiscoStpExtensions,
CiscoPortSecurity, CiscoPower, and LLDP classes.
* Remove inheritance of classes the devices do not support in L3::FWSM
andL3::CiscoASA
[BUG FIXES]
* Use CiscoVTP methods to get interface VLAN in L3::Cisco rather than
solely relying on the interface description.
version 3.15 (2014-07-10)
[NEW FEATURES]
* Offline mode and Cache export/priming.
[ENHANCEMENTS]
* Return serial number for Cisco 3850 from entPhysicalSerialNum
[BUG FIXES]
* Cisco SB serial number probably did not work
version 3.14 (2014-06-07)
[ENHANCEMENTS]
* Improvements to Mikrotik module (Alex Z)
* Don't unshift length from broken lldpRemManAddrTable implementations (G. Shtern)
* 802.3ad LAG support in Layer3::H3C
* Add LLDP capabilities to Layer2::HPVC class
[BUG FIXES]
* Return correct VLAN info with qb_fw_table() on Layer2::HP
version 3.13 (2014-03-27)
[ENHANCEMENTS]
* Cisco PAgP support added to LAG method
* HP ProCurve LAG support by inheriting Info::Aggregate class
version 3.12 (2014-02-10)
[ENHANCEMENTS]
* Modify L3::Passport to obtain forwarding table information from
RAPID-CITY if information is not available in either Q-BRIDGE-MIB or
BRIDGE-MIB. Needed for VSP 9000 prior to version 4.x (Tobias Gerlach)
[BUG FIXES]
* [#52] NETSCREEN-IP-ARP-MIB considered harmful
* Foundry/Brocade aggreate port master ifIndex resolved properly
version 3.11 (2014-01-26)
[NEW FEATURES]
* [#31] port-channel (aggregate) support. Aggregate support added in new
agg_ports() method. Inital support added for Arista (ifStack),
Avaya (MLT), Brocade (MST), and Cisco (802.3ad).
[ENHANCEMENTS]
* Use Q-BRIDGE-MIB as default with fallback to BRIDGE-MIB across all
classes for the fw_mac, fw_port, and fw_status methods
* Additional support for Avaya 8800 series in L3::Passport
[BUG FIXES]
* Modify cdp_cap() to handle devices which return space delimited strings
for cdpCacheCapabilities rather than hex strings
* [#51] Netdisco shows broken topology for devices with no alias entry
for primary IP - Collect nsIfMngIp when getting IP interfaces in
L3::Netscreen
* Fix Extreme XOS i_vlan_membership - Revert [28bbe0], fix bug with
untagged being added to @ret twice (Robert Kerr)
* Skip default CPU management addresses on VSP and 8800/8600 series in
L3::Passport to prevent erroneous duplicate addresses
version 3.10 (2013-12-16)
[BUG FIXES]

View File

@@ -386,7 +386,7 @@ note: The Cisco 3000 device can return duplicate interface names, while Netdisco
device: ASA
note: The Cisco ASA is the successor of the PIX which was bought from Altiga Networks.
Class: Layer3::CiscoASA
class: Layer3::CiscoASA
device-family: 1000
duplex: no

127
Info.pm
View File

@@ -24,7 +24,7 @@ use vars
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
$NOSUCH $BIGINT $REPEATERS/;
$VERSION = '3.10';
$VERSION = '3.17';
=head1 NAME
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.10
SNMP::Info - Version 3.17
=head1 AUTHOR
@@ -108,7 +108,7 @@ See L<http://netdisco.org/doc/DeviceMatrix.html> or L<DeviceMatrix.txt> for more
=head1 SUPPORT
Please direct all support, help, and bug requests to the snmp-info-users
Mailing List at <http://lists.sourceforge.net/lists/listinfo/snmp-info-users>.
Mailing List at L<http://lists.sourceforge.net/lists/listinfo/snmp-info-users>.
=head1 DESCRIPTION
@@ -235,6 +235,12 @@ Requires the F<ADSL-LINE-MIB>, down loadable from Cisco.
See documentation in L<SNMP::Info::AdslLine> for details.
=item SNMP::Info::Aggregate
SNMP Interface to F<IF-MIB> C<ifStackTable> Aggregated Links
See documentation in L<SNMP::Info::Aggregate> for details.
=item SNMP::Info::Airespace
F<AIRESPACE-WIRELESS-MIB> and F<AIRESPACE-SWITCHING-MIB>. Inherited by
@@ -256,6 +262,12 @@ support.
See documentation in L<SNMP::Info::Bridge> for details.
=item SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in L<SNMP::Info::CiscoAgg> for details.
=item SNMP::Info::CDP
F<CISCO-CDP-MIB>. Cisco Discovery Protocol (CDP) Support. Inherited by
@@ -270,12 +282,6 @@ These OIDs facilitate the writing of configuration files.
See documentation in L<SNMP::Info::CiscoConfig> for details.
=item SNMP::Info::CiscoImage
F<CISCO-IMAGE-MIB>. A collection of OIDs providing IOS image characteristics.
See documentation in L<SNMP::Info::CiscoImage> for details.
=item SNMP::Info::CiscoPortSecurity
F<CISCO-PORT-SECURITY-MIB> and F<CISCO-PAE-MIB>.
@@ -369,6 +375,12 @@ standards based 802.11 wireless devices.
See documentation in L<SNMP::Info::IEEE802dot11> for details.
=item SNMP::Info::IEEE802dot3ad
SNMP Interface to IEEE Aggregated Links. F<IEEE8023-LAG-MIB>
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=item SNMP::Info::LLDP
F<LLDP-MIB>, F<LLDP-EXT-DOT1-MIB>, and F<LLDP-EXT-DOT3-MIB>. Link Layer
@@ -535,8 +547,9 @@ See documentation in L<SNMP::Info::Layer2::Centillion> for details.
=item SNMP::Info::Layer2::Cisco
Generic Cisco subclass for layer2 devices that are not yet supported
in more specific subclasses.
Generic Cisco subclass for layer 2 devices that are not yet supported
in more specific subclassesand the base layer 2 Cisco class for
other device specific layer 2 Cisco classes.
See documentation in L<SNMP::Info::Layer2::Cisco> for details.
@@ -693,7 +706,8 @@ See documentation in L<SNMP::Info::Layer3::C6500> for details.
=item SNMP::Info::Layer3::Cisco
This is a simple wrapper around Layer3 for IOS devices. It adds on CiscoVTP.
This is a simple wrapper around layer 3 for IOS devices and the base layer 3
Cisco class for other device specific layer 3 Cisco classes.
See documentation in L<SNMP::Info::Layer3::Cisco> for details.
@@ -709,6 +723,11 @@ Subclass for Cisco Firewall Services Modules.
See documentation in L<SNMP::Info::Layer3::CiscoFWSM> for details.
=item SNMP::Info::Layer3::CiscoSwitch
Base class for L3 Cisco switches. See documentation in
L<SNMP::Info::Layer3::CiscoSwitch> for details.
=item SNMP::Info::Layer3::Contivity
Subclass for Avaya/Nortel Contivity/VPN Routers.
@@ -1035,6 +1054,20 @@ SNMP::Session object to use instead of connecting on own.
(default creates session automatically)
=item Offline
Causes SNMP::Info to avoid network activity and return data only from its
cache. If you ask for something not in the cache, an error is thrown. See
also the C<cache()> and C<offline()> methods.
(default 0, which means "online")
=item Cache
Pass in a HashRef to prime the cache of retrieved data. Useful for creating an
instance in C<Offline> mode from a previously dumped cache. See also the
C<cache()> method to retrieve a cache after running actial queries.
=item OTHER
All other arguments are passed to SNMP::Session.
@@ -1124,6 +1157,16 @@ sub new {
delete $sess_args{IgnoreNetSNMPConf};
}
if ( defined $args{Offline} ) {
$new_obj->{Offline} = $args{Offline} || 0;
delete $sess_args{Offline};
}
if ( defined $args{Cache} and ref {} eq ref $args{Cache} ) {
$new_obj->{$_} = $args{Cache}->{$_} for keys %{$args{Cache}};
delete $sess_args{Cache};
}
my $sess = undef;
if ( defined $args{Session} ) {
$sess = $args{Session};
@@ -1248,6 +1291,9 @@ data from a method.
Run $info->clear_cache() to clear the cache to allow reload of both globals
and table methods.
The cache can be retreved or set using the $info->cache() method. This works
together with the C<Offline> option.
=head2 Object Scalar Methods
These are for package related data, not directly supplied
@@ -1296,6 +1342,50 @@ sub debug {
return $self->{debug};
}
=item $info->offline([1|0])
Returns if offline mode is currently turned on for this object.
Optionally sets the Offline parameter.
=cut
sub offline {
my $self = shift;
my $ol = shift;
if ( defined $ol ) {
$self->{Offline} = $ol;
}
return $self->{Offline};
}
=item $info->cache([new_cache])
Returns a HashRef of all cached data in this object. There will be a C<store>
key for table data and then one key for each leaf.
Optionally sets the cache parameters if passed a HashRef.
=cut
sub cache {
my $self = shift;
my $data = shift;
if ( defined $data and ref {} eq ref $data ) {
$self->{$_} = $data->{$_} for keys %$data;
}
my $cache = { store => $self->{store} };
foreach my $key ( keys %$self ) {
next unless defined $key;
next unless $key =~ /^_/;
$cache->{$key} = $self->{$key};
}
return $cache;
}
=item $info->bulkwalk([1|0])
Returns if bulkwalk is currently turned on for this object.
@@ -3631,6 +3721,12 @@ sub _global {
}
}
if ( $self->{Offline} ) {
$self->error_throw(
"SNMP::Info::_global: Offline but $attr is not in cache\n" );
return;
}
if ( $self->debug() ) {
# Let's get the MIB Module and leaf name along with the OID
my $qual_leaf = SNMP::translateObj($oid,0,1) || '';
@@ -3955,6 +4051,12 @@ sub _load_attr {
&& !$load
&& !defined $partial );
if ( $self->{Offline} ) {
$self->error_throw(
"SNMP::Info::_load_atrr: Offline but $attr is not in cache\n" );
return;
}
# We want the qualified leaf name so that we can
# specify the Module (MIB) in the case of private leaf naming
# conflicts. Example: ALTEON-TIGON-SWITCH-MIB::agSoftwareVersion
@@ -4164,6 +4266,7 @@ sub snmp_connect_ip {
my $ver = $self->snmp_ver();
my $comm = $self->snmp_comm();
return if $self->{Offline};
return if ( $ip eq '0.0.0.0' ) or ( $ip =~ /^127\./ );
# Create session object

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );

View File

@@ -1,6 +1,6 @@
# $Id$
# SNMP::Info::Aggregate
#
# Copyright (c) 2005 Matt Tuttle
# Copyright (c) 2014 SNMP::Info Developers
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,88 +27,103 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoImage;
package SNMP::Info::Aggregate;
use strict;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoImage::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoImage::EXPORT_OK = qw//;
@SNMP::Info::Aggregate::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::Aggregate::EXPORT_OK = qw/agg_ports_ifstack/;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'CISCO-IMAGE-MIB' => 'ciscoImageString', );
%MIBS = (); # IF-MIB
%GLOBALS = ();
%FUNCS = ( 'ci_images' => 'ciscoImageString', );
%FUNCS = ();
%MUNGE = ();
sub agg_ports_ifstack {
my $dev = shift;
my $partial = shift;
my $ifStack = $dev->ifStackStatus();
# TODO: if we want to do partial, we need to use inverse status
my $ifType = $dev->ifType();
my $ret = {};
foreach my $idx ( keys %$ifStack ) {
my ( $higher, $lower ) = split /\./, $idx;
next if ( $higher == 0 or $lower == 0 );
if ( $ifType->{ $higher } eq 'ieee8023adLag' ) {
$ret->{ $lower } = $higher;
}
}
return $ret;
}
1;
__END__
=head1 NAME
SNMP::Info::CiscoImage - SNMP Interface to image strings for Cisco Devices
SNMP::Info::Aggregate - SNMP Interface to ifStackTable Aggregated Links
=head1 AUTHOR
Matt Tuttle (C<mtuttle@americanhebrewacademy.org>)
SNMP::Info Developers
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $ci = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly on to SNMP::Session
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $ci->class();
my $class = $info->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
SNMP::Info::CiscoImage is a subclass of SNMP::Info that provides access to
image strings embedded in an image running on Cisco Devices.
This class provides access to Aggregated Links configuration on devices
supporting C<ifStackTable>.
Use or create in a subclass of SNMP::Info. Do not use directly.
=head2 Inherited Classes
None.
L<SNMP::Info>
=head2 Required MIBs
=over
=item F<CISCO-IMAGE-MIB>
=item F<IF-MIB>
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 METHODS
=head1 GLOBALS
=over 4
None.
=item C<agg_ports_ifstack>
=head1 TABLE METHODS
=over
=item $ci->ci_images()
Returns the table of image strings.
C<ciscoImageString>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=back

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS,
@@ -577,6 +577,13 @@ sub bp_index {
return \%bp_index;
}
sub fw_mac {
my $airespace = shift;
my $partial = shift;
return $airespace->SUPER::fw_mac($partial);
}
sub fw_port {
my $airespace = shift;
my $partial = shift;

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
@@ -189,6 +189,35 @@ sub qb_i_vlan_t {
return $i_vlan;
}
# Most devices now support Q-BRIDGE-MIB, fall back to
# BRIDGE-MIB for those that don't.
sub fw_mac {
my $bridge = shift;
my $qb = $bridge->qb_fw_mac();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
return $bridge->SUPER::fw_mac();
}
sub fw_port {
my $bridge = shift;
my $qb = $bridge->qb_fw_port();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
return $bridge->SUPER::fw_port();
}
sub fw_status {
my $bridge = shift;
my $qb = $bridge->qb_fw_status();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
return $bridge->SUPER::fw_status();
}
sub i_stp_state {
my $bridge = shift;
my $partial = shift;

View File

@@ -43,7 +43,7 @@ use SNMP::Info;
use vars
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
$VERSION = '3.10';
$VERSION = '3.17';
# Five data structures required by SNMP::Info
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
@@ -66,7 +66,6 @@ $VERSION = '3.10';
'cdp_port' => 'cdpCacheDevicePort',
'cdp_platform' => 'cdpCachePlatform',
'cdp_capabilities' => 'cdpCacheCapabilities',
'cdp_cap_hex' => 'cdpCacheCapabilities',
'cdp_domain' => 'cdpCacheVTPMgmtDomain',
'cdp_vlan' => 'cdpCacheNativeVLAN',
'cdp_duplex' => 'cdpCacheDuplex',
@@ -78,7 +77,6 @@ $VERSION = '3.10';
);
%MUNGE = (
'cdp_cap_hex' => \&SNMP::Info::munge_octet2hex,
'cdp_capabilities' => \&SNMP::Info::munge_bits,
'cdp_platform' => \&SNMP::Info::munge_null,
'cdp_domain' => \&SNMP::Info::munge_null,
@@ -181,18 +179,33 @@ sub cdp_cap {
my $cdp = shift;
my $partial = shift;
my $cdp_caps = $cdp->cdp_cap_hex($partial) || {};
# Some devices return a hex-string, others return a space separated
# string, we need the raw data to determine return value and
# take appropriate action
my $cdp_caps = $cdp->cdp_capabilities_raw($partial) || {};
my %cdp_cap;
foreach my $key ( keys %$cdp_caps ) {
my $cap_hex = $cdp_caps->{$key};
next unless $cap_hex;
my $cap_raw = $cdp_caps->{$key};
next unless $cap_raw;
foreach my $capability (keys %CDP_CAPABILITIES) {
if ( (hex $cap_hex) & $CDP_CAPABILITIES{$capability}) {
push ( @{$cdp_cap{$key}}, $capability);
# Simple check, smallest single string is either Host or IGMP with a
# space added on the end for a length of 5, hex string is normally
# 4 bytes, but since only one byte was traditionally needed process
# as hex for a length of 4 or less
if ( length $cap_raw < 5 ) {
my $cap_hex = join( '',
map { sprintf "%x", $_ } unpack( 'C*', $cap_raw ) );
foreach my $capability ( keys %CDP_CAPABILITIES ) {
if ( ( hex $cap_hex ) & $CDP_CAPABILITIES{$capability} ) {
push( @{ $cdp_cap{$key} }, $capability );
}
}
}
else {
my @caps = split /\s/, $cap_raw;
push( @{ $cdp_cap{$key} }, @caps );
}
}
return \%cdp_cap;
}

150
Info/CiscoAgg.pm Normal file
View File

@@ -0,0 +1,150 @@
# SNMP::Info::CiscoAgg
#
# Copyright (c) 2014 SNMP::Info Developers
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoAgg;
use strict;
use Exporter;
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
@SNMP::Info::CiscoAgg::ISA = qw/
SNMP::Info::IEEE802dot3ad
Exporter
/;
@SNMP::Info::CiscoAgg::EXPORT_OK = qw/
agg_ports
/;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::IEEE802dot3ad::MIBS,
'CISCO-PAGP-MIB' => 'pagpGroupIfIndex',
);
%GLOBALS = ();
%FUNCS = ();
%MUNGE = ();
sub agg_ports_pagp {
my $dev = shift;
# Note that this mapping will miss any interfaces that are down during
# polling. If one of the members is up, we could use
# pagpAdminGroupCapability to figure things out, but if they're all
# down, we're hosed. Since we could be hosed anyway, we skip the fancy
# stuff.
my $mapping = {};
my $group = $dev->pagpGroupIfIndex;
for my $slave (keys %$group) {
my $master = $group->{$slave};
next if($master == 0 || $slave == $master);
$mapping->{$slave} = $master;
}
return $mapping;
}
# until we have PAgP data and need to combine with LAG data
sub agg_ports {
my $ret = {%{agg_ports_pagp(@_)}, %{agg_ports_lag(@_)}};
return $ret;
}
1;
__END__
=head1 NAME
SNMP::Info::CiscoAgg - SNMP Interface to Cisco Aggregated Links
=head1 AUTHOR
SNMP::Info Developers
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $info->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
This class provides access to Aggregated Links configuration on Cisco devices.
It combines Cisco PAgP and IEEE 802.3ad information.
Use or create in a subclass of SNMP::Info. Do not use directly.
=head2 Inherited Classes
L<SNMP::Info::IEEE802dot3ad>
=head2 Required MIBs
=over
=item F<CISCO-PAGP-MIB>
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 METHODS
=over 4
=item C<agg_ports>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=item C<agg_ports_pagp>
Implements the PAgP LAG info retrieval. Merged into C<agg_ports> data
automatically.
=back
=cut

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );

View File

@@ -32,14 +32,13 @@ package SNMP::Info::CiscoStack;
use strict;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoStack::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoStack::ISA = qw/Exporter/;
@SNMP::Info::CiscoStack::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
'SNMPv2-MIB' => 'sysDescr',
@@ -88,6 +88,9 @@ $VERSION = '3.10';
# CISCO-FLASH-MIB::ciscoFlashDeviceTable
'cisco_flash_size' => 'ciscoFlashDeviceSize',
# CISCO-IMAGE-MIB
'ci_images' => 'ciscoImageString',
);
%MUNGE = ();
@@ -539,4 +542,16 @@ zero if the device has been removed.
=back
=head2 Cisco Image Table (C<ciscoImageTable>)
=over
=item $ci->ci_images()
Returns the table of image strings.
C<ciscoImageString>
=back
=cut

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
$VERSION = '3.10';
$VERSION = '3.17';
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -172,8 +172,7 @@ sub i_vlan {
}
# Check in CISCO-VLAN-IFTABLE-RELATION-MIB
# Is this only for Aironet??? If so, it needs
# to be removed from this class
# Used for traditional Cisco Routers and Aironet
my $v_cvi_if = $vtp->v_cvi_if();
if ( defined $v_cvi_if ) {

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );

141
Info/IEEE802dot3ad.pm Normal file
View File

@@ -0,0 +1,141 @@
# SNMP::Info::IEEE802dot3ad
#
# Copyright (c) 2014 SNMP::Info Developers
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::IEEE802dot3ad;
use strict;
use Exporter;
use SNMP::Info::Aggregate;
@SNMP::Info::IEEE802dot3ad::ISA = qw/
SNMP::Info::Aggregate
Exporter
/;
@SNMP::Info::IEEE802dot3ad::EXPORT_OK = qw/
agg_ports_lag
/;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Aggregate::MIBS,
'IEEE8023-LAG-MIB' => 'dot3adAggPortSelectedAggID',
);
%GLOBALS = ();
%FUNCS = ();
%MUNGE = ();
sub agg_ports_lag {
my $dev = shift;
# TODO: implement partial
my $masters = $dev->dot3adAggActorOperKey;
my $slaves = $dev->dot3adAggPortActorOperKey;
return {} unless
ref {} eq ref $masters and scalar keys %$masters
and ref {} eq ref $slaves and scalar keys %$slaves;
my $ret = {};
foreach my $s (keys %$slaves) {
next if $slaves->{$s} == 0;
foreach my $m (keys %$masters) {
next unless $masters->{$m} == $slaves->{$s};
$ret->{$s} = $m;
last;
}
}
return $ret;
}
1;
__END__
=head1 NAME
SNMP::Info::IEEE802dot3ad - SNMP Interface to IEEE Aggregated Links
=head1 AUTHOR
SNMP::Info Developers
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $info->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
This class provides access to Aggregated Links configuration on devices
implementing C<IEEE8023-LAG-MIB>.
Use or create in a subclass of SNMP::Info. Do not use directly.
=head2 Inherited Classes
L<SNMP::Info::Aggregate>
=head2 Required MIBs
=over
=item F<IEEE8023-LAG-MIB>
=back
=head1 METHODS
=over 4
=item C<agg_ports_lag>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=back
=cut

View File

@@ -44,7 +44,7 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.10';
$VERSION = '3.17';

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -90,8 +90,12 @@ sub hasLLDP {
# We may be have LLDP, but nothing in lldpRemoteSystemsData Tables
# so we could be running LLDP but not return any useful information
my $lldp_cap = $lldp->lldp_sys_cap();
return 1 if defined $lldp_cap;
# If the device doesn't return local system capabilities, fallback by checking if it would report neighbors
my $lldp_rem = $lldp->lldp_rem_id() || {};
return 1 if scalar keys %$lldp_rem;
return;
}
@@ -298,7 +302,7 @@ sub _lldp_addr_index {
my @oids = split( /\./, $idx );
my $index = join( '.', splice( @oids, 0, 3 ) );
my $proto = shift(@oids);
my $length = shift(@oids);
my $length = shift(@oids) if scalar @oids > 4;
# IPv4
if ( $proto == 1 ) {

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -334,6 +334,13 @@ sub bp_index {
return \%bp_index;
}
sub fw_mac {
my $bayhub = shift;
my $partial = shift;
return $bayhub->SUPER::fw_mac($partial);
}
sub fw_port {
my $bayhub = shift;
my $partial = shift;

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer1::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -324,6 +324,13 @@ sub bp_index {
return \%bp_index;
}
sub fw_mac {
my $s3000 = shift;
my $partial = shift;
return $s3000->SUPER::fw_mac($partial);
}
sub fw_port {
my $s3000 = shift;
my $partial = shift;

View File

@@ -45,7 +45,7 @@ use SNMP::Info::PowerEthernet;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -49,7 +49,7 @@ use SNMP::Info::IEEE802dot11;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%GLOBALS = (
%SNMP::Info::IEEE802dot11::GLOBALS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,

View File

@@ -37,19 +37,23 @@ use Exporter;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::CiscoAgg;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::C1900::ISA = qw/SNMP::Info::CDP SNMP::Info::CiscoStats
SNMP::Info::CiscoConfig SNMP::Info::Layer2
SNMP::Info::CiscoConfig SNMP::Info::CiscoStpExtensions SNMP::Info::CiscoAgg SNMP::Info::Layer2
Exporter/;
@SNMP::Info::Layer2::C1900::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::CiscoAgg::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
@@ -58,6 +62,8 @@ $VERSION = '3.10';
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::CiscoAgg::FUNCS,
%SNMP::Info::CiscoStpExtensions::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CDP::FUNCS,
@@ -75,6 +81,8 @@ $VERSION = '3.10';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::CiscoAgg::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS,
@@ -84,8 +92,9 @@ $VERSION = '3.10';
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE, %SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoStats::MUNGE, %SNMP::Info::CDP::MUNGE,
%SNMP::Info::Layer2::MUNGE, %SNMP::Info::CiscoAgg::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE, %SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoStats::MUNGE, %SNMP::Info::CDP::MUNGE,
);
sub bulkwalk_no { return 1; }
@@ -203,7 +212,8 @@ sub i_vlan {
my $partial = shift;
# Overlap allows more than one VLAN per port. Unable to determine default
my $overlap = $c1900->bridgeGroupAllowMembershipOverlap()
my $overlap
= $c1900->bridgeGroupAllowMembershipOverlap()
|| $c1900->vlanAllowMembershipOverlap()
|| 'disabled';
@@ -258,7 +268,7 @@ sub bp_index {
my $if_index = $c1900->i_index($partial);
my $index = $c1900->orig_bp_index($partial) || {};
foreach my $iid ( keys %$if_index ) {
$index->{$iid} = $iid if(!defined $index->{$iid});
$index->{$iid} = $iid if ( !defined $index->{$iid} );
}
return $index;
}
@@ -312,6 +322,10 @@ after determining a more specific class using the method above.
=item SNMP::Info::CiscoConfig
=item SNMP::Info::CiscoStpExtensions
=item SNMP::Info::CiscoAgg
=item SNMP::Info::Layer2
=back
@@ -336,6 +350,10 @@ See L<SNMP::Info::CiscoStats/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::CiscoConfig/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::CiscoStpExtensions/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::CiscoAgg/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
@@ -394,6 +412,14 @@ See L<SNMP::Info::CiscoStats/"GLOBALS"> for details.
See L<SNMP::Info::CiscoConfig/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStpExtensions
See L<SNMP::Info::CiscoStpExtensions/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoAgg
See L<SNMP::Info::CiscoAgg/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
@@ -513,6 +539,14 @@ See L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
See L<SNMP::Info::CiscoConfig/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStpExtensions
See L<SNMP::Info::CiscoStpExtensions/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoAgg
See L<SNMP::Info::CiscoAgg/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.

View File

@@ -34,33 +34,21 @@ package SNMP::Info::Layer2::C2900;
use strict;
use Exporter;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoConfig;
use SNMP::Info::Layer2;
use SNMP::Info::Layer2::Cisco;
@SNMP::Info::Layer2::C2900::ISA = qw/SNMP::Info::CiscoVTP SNMP::Info::CDP
SNMP::Info::CiscoStats SNMP::Info::CiscoConfig
SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::C2900::ISA = qw/SNMP::Info::Layer2::Cisco Exporter/;
@SNMP::Info::Layer2::C2900::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS, %SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
%SNMP::Info::Layer2::Cisco::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
%SNMP::Info::Layer2::Cisco::FUNCS,
'i_name' => 'ifAlias',
# C2900PortEntry
@@ -71,15 +59,12 @@ $VERSION = '3.10';
);
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoStats::MIBS, %SNMP::Info::CDP::MIBS,
%SNMP::Info::CiscoVTP::MIBS, 'CISCO-C2900-MIB' => 'ciscoC2900MIB',
%SNMP::Info::Layer2::Cisco::MIBS,
'CISCO-C2900-MIB' => 'ciscoC2900MIB',
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE, %SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoStats::MUNGE, %SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
%SNMP::Info::Layer2::Cisco::MUNGE,
);
sub vendor {
@@ -269,15 +254,7 @@ after determining a more specific class using the method above.
=over
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CDP
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoConfig
=item SNMP::Info::Layer2
=item SNMP::Info::Layer2::Cisco
=back
@@ -293,15 +270,7 @@ Part of the v2 MIBs from Cisco.
=head2 Inherited MIBs
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::CDP/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::CiscoConfig/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::Layer2::Cisco/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
@@ -321,25 +290,9 @@ Returns 1. Use vlan indexing.
=back
=head2 Globals imported from SNMP::Info::CiscoVTP
=head2 Globals imported from SNMP::Info::Layer2::Cisco
See L<SNMP::Info::CiscoVTP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CDP
See L<SNMP::Info::CDP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoStats
See L<SNMP::Info::CiscoStats/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoConfig
See L<SNMP::Info::CiscoConfig/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
See L<SNMP::Info::Layer2::Cisco/"GLOBALS"> for details.
=head1 TABLE METHODS
@@ -411,25 +364,9 @@ Gives Admin speed of port
=back
=head2 Table Methods imported from SNMP::Info::CiscoVTP
=head2 Table Methods imported from SNMP::Info::Layer2::Cisco
See L<SNMP::Info::CiscoVTP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CDP
See L<SNMP::Info::CDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStats
See L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoConfig
See L<SNMP::Info::CiscoConfig/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
See L<SNMP::Info::Layer2::Cisco/"TABLE METHODS"> for details.
=head1 SET METHODS

View File

@@ -34,48 +34,34 @@ package SNMP::Info::Layer2::Catalyst;
use strict;
use Exporter;
use SNMP::Info::CiscoStack;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::Layer2;
use SNMP::Info::Layer2::Cisco;
@SNMP::Info::Layer2::Catalyst::ISA
= qw/SNMP::Info::CiscoStack SNMP::Info::CiscoVTP
SNMP::Info::CDP SNMP::Info::CiscoStats
SNMP::Info::CiscoPortSecurity
SNMP::Info::Layer2 Exporter/;
= qw/SNMP::Info::CiscoStack SNMP::Info::Layer2::Cisco Exporter/;
@SNMP::Info::Layer2::Catalyst::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoStats::MIBS, %SNMP::Info::CDP::MIBS,
%SNMP::Info::CiscoVTP::MIBS, %SNMP::Info::CiscoStack::MIBS,
%SNMP::Info::Layer2::Cisco::MIBS,
%SNMP::Info::CiscoStack::MIBS,
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
%SNMP::Info::Layer2::Cisco::GLOBALS,
%SNMP::Info::CiscoStack::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS, %SNMP::Info::CiscoPortSecurity::FUNCS,
%SNMP::Info::CiscoStats::FUNCS, %SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS, %SNMP::Info::CiscoStack::FUNCS,
%SNMP::Info::Layer2::Cisco::FUNCS,
%SNMP::Info::CiscoStack::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE, %SNMP::Info::CiscoPortSecurity::MUNGE,
%SNMP::Info::CiscoStats::MUNGE, %SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE, %SNMP::Info::CiscoStack::MUNGE,
%SNMP::Info::Layer2::Cisco::MUNGE,
%SNMP::Info::CiscoStack::MUNGE,
);
# Overidden Methods
@@ -228,18 +214,10 @@ after determining a more specific class using the method above.
=over
=item SNMP::Info::Layer2::Cisco
=item SNMP::Info::CiscoStack
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CDP
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::Layer2
=back
=head2 Required MIBs
@@ -248,19 +226,10 @@ after determining a more specific class using the method above.
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer2::Cisco/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements.
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::CiscoStats/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB
requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
=back
These MIBs are found in the standard v2 MIBs from Cisco.
@@ -290,30 +259,14 @@ Returns 1. Use vlan indexing.
=back
=head2 Global Methods imported from SNMP::Info::Layer2::Cisco
See documentation in L<SNMP::Info::Layer2::Cisco/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoStack/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoVTP
See documentation in L<SNMP::Info::CiscoVTP/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CiscoStats
See documentation in L<SNMP::Info::CiscoStats/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -348,29 +301,12 @@ have problems with F<BRIDGE-MIB>
=back
=head2 Table Methods imported from SNMP::Info::Layer2::Cisco
See documentation in L<SNMP::Info::Layer2::Cisco/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoStack/"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::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.
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=cut

View File

@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS,
@@ -246,6 +246,20 @@ sub slot_offset {
return 0;
}
sub fw_mac {
my $centillion = shift;
my $partial = shift;
return $centillion->SUPER::fw_mac($partial);
}
sub fw_port {
my $centillion = shift;
my $partial = shift;
return $centillion->SUPER::fw_port($partial);
}
1;
__END__

View File

@@ -35,49 +35,71 @@ use Exporter;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
use SNMP::Info::CiscoRTT;
use SNMP::Info::CiscoQOS;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::CiscoAgg;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Cisco::ISA = qw/SNMP::Info::CiscoVTP SNMP::Info::CDP
SNMP::Info::CiscoStats SNMP::Info::CiscoImage
SNMP::Info::CiscoRTT SNMP::Info::CiscoQOS
SNMP::Info::CiscoConfig SNMP::Info::Layer2
SNMP::Info::CiscoStats SNMP::Info::CiscoRTT
SNMP::Info::CiscoConfig SNMP::Info::CiscoPortSecurity
SNMP::Info::CiscoStpExtensions SNMP::Info::CiscoAgg
SNMP::Info::Layer2
Exporter/;
@SNMP::Info::Layer2::Cisco::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoQOS::MIBS, %SNMP::Info::CiscoRTT::MIBS,
%SNMP::Info::CiscoImage::MIBS, %SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS, %SNMP::Info::CiscoVTP::MIBS,
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::CiscoAgg::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoRTT::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoQOS::GLOBALS, %SNMP::Info::CiscoRTT::GLOBALS,
%SNMP::Info::CiscoImage::GLOBALS, %SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS, %SNMP::Info::CiscoVTP::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::CiscoAgg::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoRTT::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS, %SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CiscoQOS::FUNCS, %SNMP::Info::CiscoRTT::FUNCS,
%SNMP::Info::CiscoImage::FUNCS, %SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CDP::FUNCS, %SNMP::Info::CiscoVTP::FUNCS,
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::CiscoAgg::FUNCS,
%SNMP::Info::CiscoStpExtensions::FUNCS,
%SNMP::Info::CiscoPortSecurity::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CiscoRTT::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE, %SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE, %SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoImage::MUNGE, %SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CDP::MUNGE, %SNMP::Info::CiscoVTP::MUNGE,
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::CiscoAgg::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoPortSecurity::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
);
1;
@@ -85,8 +107,9 @@ __END__
=head1 NAME
SNMP::Info::Layer2::Cisco - SNMP Interface to L3 and L2+L3 IOS Cisco Device
that are not covered in other classes.
SNMP::Info::Layer2::Cisco - SNMP Interface to L2 Cisco devices that are
not covered in other classes and the base L2 Cisco class for other device
specific L2 Cisco classes.
=head1 AUTHOR
@@ -110,7 +133,8 @@ Max Baker
=head1 DESCRIPTION
Subclass for Generic Cisco Routers running IOS
Subclass for Generic Layer 2 Cisco devices and the base L2 Cisco class for
other device specific L2 Cisco classes.
=head2 Inherited Classes
@@ -122,14 +146,16 @@ Subclass for Generic Cisco Routers running IOS
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoImage
=item SNMP::Info::CiscoRTT
=item SNMP::Info::CiscoQOS
=item SNMP::Info::CiscoConfig
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::CiscoStpExtensions
=item SNMP::Info::CiscoAgg
=item SNMP::Info::Layer2
=back
@@ -142,18 +168,20 @@ Subclass for Generic Cisco Routers running IOS
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoImage/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoRTT/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoQOS/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoConfig/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStpExtensions/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoAgg/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
=back
@@ -182,22 +210,26 @@ See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details.
See documentation in L<SNMP::Info::CiscoStats/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoRTT
See documentation in L<SNMP::Info::CiscoRTT/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoQOS
See documentation in L<SNMP::Info::CiscoQOS/"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::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"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::CiscoAgg
See documentation in L<SNMP::Info::CiscoAgg/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
@@ -219,22 +251,26 @@ See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoRTT
See documentation in L<SNMP::Info::CiscoRTT/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoQOS
See documentation in L<SNMP::Info::CiscoQOS/"TABLE METHODS"> for 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::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"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::CiscoAgg
See documentation in L<SNMP::Info::CiscoAgg/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.

View File

@@ -50,7 +50,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
@@ -98,21 +98,17 @@ sub vendor {
return 'cisco';
}
# Walk the entPhysicalSerialNum table and return both the first serial
# number found as well as the index of that entry.
# Walk the entPhysicalSerialNum table and return the first serial found
sub serial {
my $ciscosb = shift;
my $serial = undef;
my $e_serial = $ciscosb->e_serial();
# Find entity table entry for this unit
foreach my $e ( keys %$e_serial ) {
if (defined ($e_serial->{$e}) and $e_serial->{$e} !~ /^\s*$/) {
$index = $e;
last;
foreach my $e ( sort keys %$e_serial ) {
if (defined $e_serial->{$e} and $e_serial->{$e} !~ /^\s*$/) {
return $e_serial->{$e};
}
}
return $e_serial->{$index} if defined $index;
}
sub os_ver {

View File

@@ -38,21 +38,28 @@ use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::LLDP;
use SNMP::Info::CDP;
use SNMP::Info::Aggregate;
@SNMP::Info::Layer2::HP::ISA
= qw/SNMP::Info::Layer3 SNMP::Info::MAU SNMP::Info::LLDP
SNMP::Info::CDP Exporter/;
@SNMP::Info::Layer2::HP::ISA = qw/
SNMP::Info::Aggregate
SNMP::Info::Layer3
SNMP::Info::MAU
SNMP::Info::LLDP
SNMP::Info::CDP
Exporter
/;
@SNMP::Info::Layer2::HP::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::Aggregate::MIBS,
'RFC1271-MIB' => 'logDescription',
'HP-ICF-OID' => 'hpSwitch4000',
'STATISTICS-MIB' => 'hpSwitchCpuStat',
@@ -69,6 +76,7 @@ $VERSION = '3.10';
%SNMP::Info::MAU::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::Aggregate::GLOBALS,
'serial1' => 'entPhysicalSerialNum.1',
'serial2' => 'hpHttpMgSerialNumber.0',
'hp_cpu' => 'hpSwitchCpuStat.0',
@@ -87,6 +95,7 @@ $VERSION = '3.10';
%SNMP::Info::MAU::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::Aggregate::FUNCS,
'i_type2' => 'ifType',
# RFC1271
@@ -112,6 +121,7 @@ $VERSION = '3.10';
%SNMP::Info::MAU::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::Aggregate::MUNGE,
'c_id' => \&munge_hp_c_id,
);
@@ -524,6 +534,32 @@ sub set_i_vlan_tagged {
return;
}
sub agg_ports { return agg_ports_ifstack(@_) }
sub qb_fw_vlan {
my $hp = shift;
my $partial = shift;
my $qb_fw_vlan = $hp->SUPER::qb_fw_vlan($partial);
my $fdb_to_dot1q = {};
my $fdb_id = $hp->dot1qVlanFdbId(0);
foreach my $fdb_entry (keys %$fdb_id) {
my ($timemark, $vlan_id) = split(/\./, $fdb_entry);
$fdb_to_dot1q->{$fdb_id->{$fdb_entry}} = $vlan_id;
}
foreach my $learn (keys %$qb_fw_vlan) {
my $fdb_idx = $qb_fw_vlan->{$learn};
if (exists $fdb_to_dot1q->{$fdb_idx}) {
$qb_fw_vlan->{$learn} = $fdb_to_dot1q->{$fdb_idx};
}
}
return $qb_fw_vlan;
}
1;
__END__
@@ -791,6 +827,12 @@ Power supplied by PoE ports, in milliwatts
Returns what version of STP the device is running.
(C<hpicfBridgeRstpForceVersion> with fallback to inherited stp_ver())
=item $hp->qb_fw_vlan()
Returns reference to hash of forwarding table entries VLAN ID
(C<dot1qFdbId>), (C<rcBridgeTpFdbVlanId>)
=back
=head2 Globals imported from SNMP::Info::Layer2
@@ -812,7 +854,7 @@ to a hash.
=head2 Overrides
=over
=over 4
=item $hp->interfaces()
@@ -840,6 +882,12 @@ Crosses i_name() with $hp->e_name() using $hp->e_port() and i_alias()
Returns reference to hash of power Ethernet port table entries map back to
interface index (c<ifIndex>)
=item C<agg_ports>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=back
=head2 Table Methods imported from SNMP::Info::Layer2

View File

@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -33,17 +33,19 @@ package SNMP::Info::Layer2::HPVC;
use strict;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::LLDP;
@SNMP::Info::Layer2::HPVC::ISA
= qw/SNMP::Info::Layer2 Exporter/;
= qw/SNMP::Info::Layer2 SNMP::Info::LLDP Exporter/;
@SNMP::Info::Layer2::HPVC::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::LLDP::MIBS,
'HPVC-MIB' => 'vcDomainName',
'CPQSINFO-MIB' => 'cpqSiSysSerialNum',
'HPVCMODULE-MIB' => 'vcModuleDomainName',
@@ -51,6 +53,7 @@ $VERSION = '3.10';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'serial1' => 'cpqSiSysSerialNum.0',
'os_ver' => 'cpqHoSWRunningVersion.1',
'os_bin' => 'cpqHoFwVerVersion.1',
@@ -59,12 +62,14 @@ $VERSION = '3.10';
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
# Inherit all the built in munging
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
@@ -140,25 +140,6 @@ sub interfaces {
return $interfaces;
}
# This is model-dependent. Some netgear brand devices don't implement
# the bridge MIB forwarding table, so we use the Q-BRIDGE-MIB forwarding
# table. Fall back to the orig functions if the qb versions don't
# return anything.
sub fw_mac {
my $netgear = shift;
my $ret = $netgear->qb_fw_mac();
$ret = $netgear->orig_fw_mac() if ( !defined($ret) );
return $ret;
}
sub fw_port {
my $netgear = shift;
my $ret = $netgear->qb_fw_port();
$ret = $netgear->orig_fw_port() if ( !defined($ret) );
return $ret;
}
# these seem to work for GSM models but not GS
# https://sourceforge.net/tracker/?func=detail&aid=3085413&group_id=70362&atid=527529
sub os_ver {
@@ -299,7 +280,6 @@ sub c_platform {
return \%c_platform;
}
1;
__END__
@@ -413,23 +393,6 @@ a reference to a hash.
=over
=item $netgear->fw_mac()
Returns reference to hash of forwarding table MAC Addresses.
Some devices don't implement the C<BRIDGE-MIB> forwarding table, so we use
the C<Q-BRIDGE-MIB> forwarding table. Fall back to the C<BRIDGE-MIB> if
C<Q-BRIDGE-MIB> doesn't return anything.
=item $netgear->fw_port()
Returns reference to hash of forwarding table entries port interface
identifier (iid)
Some devices don't implement the C<BRIDGE-MIB> forwarding table, so we use
the C<Q-BRIDGE-MIB> forwarding table. Fall back to the C<BRIDGE-MIB> if
C<Q-BRIDGE-MIB> doesn't return anything.
=item $netgear->interfaces()
Uses the i_name() field.

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -51,7 +51,7 @@ use SNMP::Info::AdslLine;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -198,21 +198,6 @@ sub interfaces {
return $alu->orig_i_name($partial);
}
# Use Q-BRIDGE-MIB
sub fw_mac {
my $alu = shift;
my $partial = shift;
return $alu->qb_fw_mac($partial);
}
sub fw_port {
my $alu = shift;
my $partial = shift;
return $alu->qb_fw_port($partial);
}
# Work around buggy bp_index in 6.3.1.871.R01 and 6.3.1.975.R01
sub bp_index {
my $alu = shift;
@@ -445,14 +430,6 @@ to a hash.
Returns interface name from C<ifName>, since the default return value
of C<ifDescr> includes the OS version.
=item $alu->fw_mac()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $alu->fw_port()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $alu->bp_index()
Work around various bugs in the F<BRIDGE-MIB> and

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
$int_include_vpn $fake_idx $type_class/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -36,19 +36,25 @@ use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::LLDP;
use SNMP::Info::Aggregate;
@SNMP::Info::Layer3::Arista::ISA = qw/SNMP::Info::LLDP SNMP::Info::MAU
SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Arista::ISA = qw/
SNMP::Info::Aggregate
SNMP::Info::LLDP
SNMP::Info::MAU
SNMP::Info::Layer3 Exporter
/;
@SNMP::Info::Layer3::Arista::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::Aggregate::MIBS,
'ARISTA-PRODUCTS-MIB' => 'aristaProducts',
);
@@ -104,22 +110,6 @@ sub model {
return $model;
}
# Use Q-BRIDGE-MIB
sub fw_mac {
my $arista = shift;
my $partial = shift;
return $arista->qb_fw_mac($partial);
}
sub fw_port {
my $arista = shift;
my $partial = shift;
return $arista->qb_fw_port($partial);
}
# The LLDP MIB leaves it up in the air what the index means.
# On EOS, it's a dot1d port.
sub lldp_if {
@@ -141,6 +131,8 @@ sub lldp_if {
return $lldp_if;
}
sub agg_ports { return agg_ports_ifstack(@_) }
1;
__END__
@@ -176,6 +168,8 @@ Subclass for Arista Networks EOS-based devices
=over
=item SNMP::Info::Aggregate
=item SNMP::Info::Layer3
=item SNMP::Info::MAU
@@ -194,6 +188,8 @@ Subclass for Arista Networks EOS-based devices
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Aggregate/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::MAU/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
@@ -245,14 +241,6 @@ to a hash.
=over
=item $arista->fw_mac()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $arista->fw_port()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $arista->i_duplex_admin()
Returns info from F<MAU-MIB>
@@ -265,6 +253,12 @@ Returns info from F<MAU-MIB>
Returns the mapping to the SNMP Interface Table.
=item C<agg_ports>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=back
=head2 Table Methods imported from SNMP::Info::Layer3

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
%MODID_MAP %PROCID_MAP/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,

View File

@@ -32,39 +32,22 @@
package SNMP::Info::Layer3::C3550;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CiscoStack;
use SNMP::Info::LLDP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::CiscoPower;
use SNMP::Info::Layer3;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::Layer3::CiscoSwitch;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
# NOTE : Top-most items gets precedence for @ISA
@SNMP::Info::Layer3::C3550::ISA = qw/
SNMP::Info::CiscoVTP
SNMP::Info::CiscoStpExtensions
SNMP::Info::CiscoStack
SNMP::Info::LLDP
SNMP::Info::CDP
SNMP::Info::CiscoStats
SNMP::Info::CiscoImage
SNMP::Info::CiscoPortSecurity
SNMP::Info::CiscoConfig
SNMP::Info::CiscoPower
SNMP::Info::Layer3
SNMP::Info::Layer3::CiscoSwitch
Exporter/;
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.10';
$VERSION = '3.17';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
@@ -72,46 +55,23 @@ $VERSION = '3.10';
# So we want CiscoVTP to come last to get the right one.
# The @ISA order should match these orders.
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoPower::MIBS,
%SNMP::Info::CiscoConfig::MIBS, %SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoImage::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,
);
%MIBS
= ( %SNMP::Info::Layer3::CiscoSwitch::MIBS, %SNMP::Info::CiscoStack::MIBS,
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoImage::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::Layer3::CiscoSwitch::GLOBALS,
%SNMP::Info::CiscoStack::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS, %SNMP::Info::CiscoPower::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS, %SNMP::Info::CiscoPortSecurity::FUNCS,
%SNMP::Info::CiscoImage::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,
%SNMP::Info::Layer3::CiscoSwitch::FUNCS,
%SNMP::Info::CiscoStack::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::CiscoPower::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE, %SNMP::Info::CiscoPortSecurity::MUNGE,
%SNMP::Info::CiscoImage::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,
%SNMP::Info::Layer3::CiscoSwitch::MUNGE,
%SNMP::Info::CiscoStack::MUNGE,
);
sub vendor {
@@ -232,10 +192,6 @@ sub set_i_duplex_admin {
}
}
sub cisco_comm_indexing {
return 1;
}
1;
__END__
@@ -281,25 +237,9 @@ after determining a more specific class using the method above.
=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::CDP
=item SNMP::Info::LLDP
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoImage
=item SNMP::Info::Layer3::CiscoSwitch
=back
@@ -309,26 +249,10 @@ after determining a more specific class using the method above.
=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::CiscoStats/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoImage/"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.
See L<SNMP::Info::Layer3::CiscoSwitch/"Required MIBs"> for its own MIB
requirements.
=back
@@ -353,51 +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.
=item $c3550->cisco_comm_indexing()
Returns 1. Use vlan indexing.
=back
=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.
=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
=head2 Globals imported from SNMP::Info::CiscoStack
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.
=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.
=head2 Globals imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"GLOBALS"> for details.
See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"GLOBALS"> for details.
=head1 TABLE METHODS
@@ -444,45 +332,13 @@ Crosses $c3550->p_port() with $c3550->p_duplex() to utilize port C<ifIndex>.
=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
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.
=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.
=head2 Table Methods imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"TABLE METHODS"> for
details.
=cut

View File

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

View File

@@ -31,35 +31,18 @@
package SNMP::Info::Layer3::C6500;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoStack;
use SNMP::Info::LLDP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
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::Layer3::CiscoSwitch;
use SNMP::Info::MAU;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
# NOTE : Top-most items gets precedence for @ISA
@SNMP::Info::Layer3::C6500::ISA = qw/
SNMP::Info::CiscoVTP
SNMP::Info::CiscoStpExtensions
SNMP::Info::CiscoStack
SNMP::Info::LLDP
SNMP::Info::CDP
SNMP::Info::CiscoImage
SNMP::Info::CiscoStats
SNMP::Info::CiscoPortSecurity
SNMP::Info::CiscoConfig
SNMP::Info::CiscoPower
SNMP::Info::Layer3
SNMP::Info::Layer3::CiscoSwitch
SNMP::Info::MAU
Exporter
/;
@@ -68,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
@@ -78,58 +61,49 @@ $VERSION = '3.10';
%MIBS = (
%SNMP::Info::MAU::MIBS,
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::CiscoPower::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoImage::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::Layer3::CiscoSwitch::MIBS,
%SNMP::Info::CiscoStack::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
'CISCO-VIRTUAL-SWITCH-MIB' => 'cvsSwitchMode',
);
%GLOBALS = (
%SNMP::Info::MAU::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoImage::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::Layer3::CiscoSwitch::GLOBALS,
%SNMP::Info::CiscoStack::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::MAU::FUNCS, %SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoPower::FUNCS, %SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CiscoPortSecurity::FUNCS, %SNMP::Info::CiscoImage::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,
%SNMP::Info::MAU::FUNCS,
%SNMP::Info::Layer3::CiscoSwitch::FUNCS,
%SNMP::Info::CiscoStack::FUNCS,
);
%MUNGE = (
%SNMP::Info::MAU::MUNGE, %SNMP::Info::Layer3::MUNGE,
%SNMP::Info::CiscoPower::MUNGE, %SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoPortSecurity::MUNGE, %SNMP::Info::CiscoImage::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,
%SNMP::Info::MAU::MUNGE,
%SNMP::Info::Layer3::CiscoSwitch::MUNGE,
%SNMP::Info::CiscoStack::MUNGE,
);
sub vendor {
return 'cisco';
}
sub cisco_comm_indexing { return 1; }
sub serial {
my $c6500 = shift;
my $serial = $c6500->SUPER::serial();
return $serial if defined $serial and $serial;
# now grab the table only if SUPER cannot find it
my $e_serial = $c6500->e_serial();
# Find entity table entry for this unit
foreach my $e ( sort keys %$e_serial ) {
if (defined $e_serial->{$e} and $e_serial->{$e} !~ /^\s*$/) {
return $e_serial->{$e};
}
}
}
# Newer versions use the ETHERLIKE-MIB to report operational duplex.
@@ -309,25 +283,11 @@ after determining a more specific class using the method above.
=over
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CiscoStack
=item SNMP::Info::CDP
=item SNMP::Info::Layer3::CiscoSwitch
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoImage
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::CiscoConfig
=item SNMP::Info::CiscoPower
=item SNMP::Info::Layer3
=item SNMP::Info::CiscoStpExtensions
=item SNMP::Info::MAU
=back
@@ -337,26 +297,12 @@ after determining a more specific class using the method above.
=item Inherited Classes' MIBs
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::CDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoImage/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB
See L<SNMP::Info::Layer3::CiscoSwitch/"Required MIBs"> for its own MIB
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::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStpExtensions/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::MAU/"Required MIBs"> for its own MIB requirements.
=back
@@ -370,10 +316,6 @@ These are methods that return scalar value from SNMP
Returns 'cisco'
=item $c6500->cisco_comm_indexing()
Returns 1. Use vlan indexing.
=item $c6500->cvsSwitchMode()
Returns the Switch status: multiNode or standalone.
@@ -382,47 +324,23 @@ Returns the Switch status: multiNode or standalone.
Return 1 if the switch (C<cvsSwitchMode>) is in multimode (VSS).
=item $c6500->serial()
Returns serial number of unit (falls back to C<entPhysicalSerialNum>).
=back
=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
=head2 Globals imported from SNMP::Info::CiscoStack
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.
=head2 Globals imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"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.
See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
=head1 TABLE METHODS
@@ -477,47 +395,19 @@ Crosses $c6500->p_port() with $c6500->p_speed() to utilize port C<ifIndex>.
=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
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::CiscoStats/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"TABLE METHODS"> for
See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"TABLE METHODS"> for
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::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.
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
=cut

View File

@@ -31,59 +31,70 @@
package SNMP::Info::Layer3::Cisco;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoVTP;
use SNMP::Info::LLDP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
use SNMP::Info::CiscoRTT;
use SNMP::Info::CiscoQOS;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoPower;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Cisco::ISA = qw/SNMP::Info::CiscoVTP SNMP::Info::CDP
SNMP::Info::CiscoStats SNMP::Info::CiscoImage
SNMP::Info::CiscoRTT SNMP::Info::CiscoQOS
SNMP::Info::CiscoConfig SNMP::Info::CiscoPower
@SNMP::Info::Layer3::Cisco::ISA = qw/SNMP::Info::CiscoVTP
SNMP::Info::LLDP SNMP::Info::CDP
SNMP::Info::CiscoStats SNMP::Info::CiscoRTT
SNMP::Info::CiscoQOS SNMP::Info::CiscoConfig
SNMP::Info::CiscoPower SNMP::Info::CiscoStpExtensions
SNMP::Info::Layer3
Exporter/;
@SNMP::Info::Layer3::Cisco::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoPower::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CiscoQOS::MIBS,
%SNMP::Info::CiscoRTT::MIBS,
%SNMP::Info::CiscoImage::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
'CISCO-EIGRP-MIB' => 'cEigrpAsRouterId',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS, %SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS, %SNMP::Info::CiscoQOS::GLOBALS,
%SNMP::Info::CiscoRTT::GLOBALS, %SNMP::Info::CiscoImage::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS, %SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS, 'eigrp_id' => 'cEigrpAsRouterId',
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CiscoQOS::GLOBALS,
%SNMP::Info::CiscoRTT::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
'eigrp_id' => 'cEigrpAsRouterId',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoStpExtensions::FUNCS,
%SNMP::Info::CiscoPower::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CiscoQOS::FUNCS,
%SNMP::Info::CiscoRTT::FUNCS,
%SNMP::Info::CiscoImage::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
# EIGRP
@@ -92,33 +103,36 @@ $VERSION = '3.10';
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoPower::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE,
%SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoImage::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
'eigrp_peers' => \&SNMP::Info::munge_ip,
);
sub i_vlan {
my ($cisco) = shift;
my ($partial) = shift;
my $cisco = shift;
my $partial = shift;
my ($i_type) = $cisco->i_type($partial);
my ($i_descr) = $cisco->i_description($partial);
my %i_vlan;
my $i_type = $cisco->i_type($partial);
my $i_descr = $cisco->i_description($partial);
my $i_vlan = $cisco->SUPER::i_vlan($partial);
foreach my $idx ( keys %$i_descr ) {
if ( $i_type->{$idx} eq 'l2vlan' || $i_type->{$idx} eq 135 ) {
if ( $i_type->{$idx} eq 'l2vlan'
|| $i_type->{$idx} eq '135' && !defined $i_vlan->{$idx} )
{
if ( $i_descr->{$idx} =~ /\.(\d+)$/ ) {
$i_vlan{$idx} = $1;
$i_vlan->{$idx} = $1;
}
}
}
return \%i_vlan;
return $i_vlan;
}
1;
@@ -127,7 +141,9 @@ __END__
=head1 NAME
SNMP::Info::Layer3::Cisco - SNMP Interface to L3 and L2+L3 IOS Cisco Device
that are not covered in other classes.
that are not covered in other classes and the base L3 Cisco class for other
device specific L3 Cisco classes.
=head1 AUTHOR
@@ -151,7 +167,8 @@ Max Baker
=head1 DESCRIPTION
Subclass for Generic Cisco Routers running IOS
Subclass for Generic Cisco Routers running IOS and the base L3 Cisco class
for other device specific L3 Cisco classes.
=head2 Inherited Classes
@@ -159,12 +176,12 @@ Subclass for Generic Cisco Routers running IOS
=item SNMP::Info::CiscoVTP
=item SNMP::Info::LLDP
=item SNMP::Info::CDP
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoImage
=item SNMP::Info::CiscoRTT
=item SNMP::Info::CiscoQOS
@@ -173,6 +190,8 @@ Subclass for Generic Cisco Routers running IOS
=item SNMP::Info::Power
=item SNMP::Info::CiscoStpExtensions
=item SNMP::Info::Layer3
=back
@@ -187,12 +206,12 @@ Subclass for Generic Cisco Routers running IOS
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
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::CiscoImage/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoRTT/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoQOS/"Required MIBs"> for its own MIB requirements.
@@ -201,6 +220,8 @@ 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::Layer3/"Required MIBs"> for its own MIB requirements.
=back
@@ -211,10 +232,6 @@ These are methods that return scalar value from SNMP
=over
=item $cisco->vendor()
Returns 'cisco'
=item $cisco->eigrp_id()
(C<cEigrpAsRouterId>)
@@ -225,6 +242,10 @@ These are methods that return scalar value from SNMP
See documentation in L<SNMP::Info::CiscoVTP/"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::CDP
See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details.
@@ -233,10 +254,6 @@ See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details.
See documentation in L<SNMP::Info::CiscoStats/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoRTT
See documentation in L<SNMP::Info::CiscoRTT/"GLOBALS"> for details.
@@ -253,6 +270,10 @@ See documentation in L<SNMP::Info::CiscoConfig/"GLOBALS"> for details.
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::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
@@ -280,6 +301,10 @@ Returns a mapping between C<ifIndex> and the PVID or default VLAN.
See documentation in L<SNMP::Info::CiscoVTP/"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::CDP
See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details.
@@ -288,10 +313,6 @@ See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::CiscoStats/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoRTT
See documentation in L<SNMP::Info::CiscoRTT/"TABLE METHODS"> for details.
@@ -308,6 +329,10 @@ See documentation in L<SNMP::Info::CiscoConfig/"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.

View File

@@ -32,68 +32,61 @@
package SNMP::Info::Layer3::CiscoASA;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
use SNMP::Info::CiscoRTT;
use SNMP::Info::CiscoQOS;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CiscoPower;
use SNMP::Info::CiscoStack;
use SNMP::Info::Layer3;
use SNMP::Info::Layer3::Cisco;
@SNMP::Info::Layer3::CiscoASA::ISA = qw/SNMP::Info::CiscoVTP SNMP::Info::CDP
SNMP::Info::CiscoStats SNMP::Info::CiscoImage
SNMP::Info::CiscoRTT SNMP::Info::CiscoQOS
SNMP::Info::CiscoConfig SNMP::Info::CiscoPower
SNMP::Info::Layer3::Cisco
@SNMP::Info::Layer3::CiscoASA::ISA = qw/
SNMP::Info::CiscoStats
SNMP::Info::Layer3
Exporter/;
@SNMP::Info::Layer3::CiscoASA::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,
);
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStack::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer3::Cisco::GLOBALS,
);
%GLOBALS
= ( %SNMP::Info::Layer3::GLOBALS, %SNMP::Info::CiscoStack::GLOBALS, );
%FUNCS = (
%SNMP::Info::Layer3::Cisco::FUNCS,
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoStack::FUNCS,
'mac_table' => 'ifPhysAddress',
);
%MUNGE = (
%SNMP::Info::Layer3::Cisco::MUNGE,
'mac_table' => \&SNMP::Info::munge_mac, );
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::CiscoStack::MUNGE,
'mac_table' => \&SNMP::Info::munge_mac,
);
sub b_mac {
my ($asa) = shift;
my $macs = $asa->mac_table();
my @macs;
# gather physical addresses
foreach my $i ( keys %$macs ) {
my $mac = $macs->{$i};
# don't catch the bad macs with zeroed OUI
if ( $mac !~ m/(0{1,2}:){3}/ ) {
push( @macs, $mac);
}
@macs = sort( @macs );
}
# return the least mac
return $macs[0];
my ($asa) = shift;
my $macs = $asa->mac_table();
my @macs;
# gather physical addresses
foreach my $i ( keys %$macs ) {
my $mac = $macs->{$i};
# don't catch the bad macs with zeroed OUI
if ( $mac !~ m/(0{1,2}:){3}/ ) {
push( @macs, $mac );
}
@macs = sort(@macs);
}
# return the least mac
return $macs[0];
}
sub i_description {
my $self = shift;
my $partial = shift;
my $self = shift;
my $partial = shift;
my $i_descr = $self->orig_i_description($partial) || {};
@@ -141,7 +134,9 @@ Subclass for Cisco ASA Devices
=over
=item SNMP::Info::Layer3::Cisco
=item SNMP::Info::CiscoStack
=item SNMP::Info::Layer3
=back
@@ -149,11 +144,11 @@ Subclass for Cisco ASA Devices
=over
=item F<CISCO-EIGRP-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3::Cisco/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=back
@@ -176,77 +171,25 @@ configured interface name instead of "Adaptive Security Appliance
=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.
See documentation in L<SNMP::Info::CiscoStack/"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::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoRTT
See documentation in L<SNMP::Info::CiscoRTT/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoQOS
See documentation in L<SNMP::Info::CiscoQOS/"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
=head2 Global Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer3::Cisco
See documentation in L<SNMP::Info::Layer3::Cisco/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a
reference to a hash.
=head2 Table Methods imported from SNMP::Info::CiscoVTP
=head2 Table Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::CiscoVTP/"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
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::CiscoImage
See documentation in L<SNMP::Info::CiscoImage/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoRTT
See documentation in L<SNMP::Info::CiscoRTT/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CiscoQOS
See documentation in L<SNMP::Info::CiscoQOS/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer3::Cisco
See documentation in L<SNMP::Info::Layer3::Cisco/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
=cut

View File

@@ -31,34 +31,31 @@
package SNMP::Info::Layer3::CiscoFWSM;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3::Cisco;
use SNMP::Info::CiscoStack;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::CiscoFWSM::ISA = qw/SNMP::Info::Layer3::Cisco
Exporter/;
@SNMP::Info::Layer3::CiscoFWSM::ISA = qw/SNMP::Info::CiscoStack
SNMP::Info::Layer3
Exporter/;
@SNMP::Info::Layer3::CiscoFWSM::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,
);
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStack::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer3::Cisco::GLOBALS,
);
%GLOBALS
= ( %SNMP::Info::Layer3::GLOBALS, %SNMP::Info::CiscoStack::GLOBALS, );
%FUNCS = (
%SNMP::Info::Layer3::Cisco::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::Cisco::MUNGE,
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoStack::FUNCS,
);
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, %SNMP::Info::CiscoStack::MUNGE, );
# For FWSMs, the ipNetToPhysicalPhysAddress table appears to be of the form:
# $ifindex.$inetaddresstype.$proto.$ip_address -> $mac_address
@@ -69,65 +66,65 @@ $VERSION = '3.10';
# This doesn't really line up to what at_* return, so we munge it
sub at_paddr {
my ($fwsm) = shift;
my ($partial) = shift;
my ($fwsm) = shift;
my ($partial) = shift;
my $paddrs = $fwsm->n2p_paddr($partial);
my $n_paddrs = {};
foreach my $key (keys %$paddrs) {
my $paddr = $paddrs->{$key};
my @parts = split /\./, $key;
my ($ifindex, $addrtype, $proto) = splice @parts, 0, 3;
my $ip = join ".", @parts;
my $paddrs = $fwsm->n2p_paddr($partial);
my $n_paddrs = {};
next if($proto != 4); # at_paddr doesn't support non-IPv4
foreach my $key ( keys %$paddrs ) {
my $paddr = $paddrs->{$key};
my @parts = split /\./, $key;
my ( $ifindex, $addrtype, $proto ) = splice @parts, 0, 3;
my $ip = join ".", @parts;
$n_paddrs->{"$ifindex.$ip"} = $paddr;
}
return $n_paddrs;
next if ( $proto != 4 ); # at_paddr doesn't support non-IPv4
$n_paddrs->{"$ifindex.$ip"} = $paddr;
}
return $n_paddrs;
}
sub at_netaddr {
my ($fwsm) = shift;
my ($partial) = shift;
my ($fwsm) = shift;
my ($partial) = shift;
my $paddrs = $fwsm->n2p_paddr($partial);
my $paddrs = $fwsm->n2p_paddr($partial);
my $netaddrs = {};
foreach my $key (keys %$paddrs) {
my $paddr = $paddrs->{$key};
my @parts = split /\./, $key;
my ($ifindex, $addrtype, $proto) = splice @parts, 0, 3;
my $ip = join ".", @parts;
my $netaddrs = {};
next if($proto != 4); # at_netaddr doesn't support non-IPv4
foreach my $key ( keys %$paddrs ) {
my $paddr = $paddrs->{$key};
my @parts = split /\./, $key;
my ( $ifindex, $addrtype, $proto ) = splice @parts, 0, 3;
my $ip = join ".", @parts;
$netaddrs->{"$ifindex.$ip"} = $ip;
}
return $netaddrs;
next if ( $proto != 4 ); # at_netaddr doesn't support non-IPv4
$netaddrs->{"$ifindex.$ip"} = $ip;
}
return $netaddrs;
}
sub at_ifaddr {
my ($fwsm) = shift;
my ($partial) = shift;
my ($fwsm) = shift;
my ($partial) = shift;
my $paddrs = $fwsm->n2p_paddr($partial);
my $paddrs = $fwsm->n2p_paddr($partial);
my $ifaddrs = {};
foreach my $key (keys %$paddrs) {
my $paddr = $paddrs->{$key};
my @parts = split /\./, $key;
my ($ifindex, $addrtype, $proto) = splice @parts, 0, 3;
my $ip = join ".", @parts;
my $ifaddrs = {};
next if($proto != 4); # at_ifaddr doesn't support non-IPv4
foreach my $key ( keys %$paddrs ) {
my $paddr = $paddrs->{$key};
my @parts = split /\./, $key;
my ( $ifindex, $addrtype, $proto ) = splice @parts, 0, 3;
my $ip = join ".", @parts;
$ifaddrs->{"$ifindex.$ip"} = $ip;
}
return $ifaddrs;
next if ( $proto != 4 ); # at_ifaddr doesn't support non-IPv4
$ifaddrs->{"$ifindex.$ip"} = $ip;
}
return $ifaddrs;
}
1;
@@ -135,8 +132,8 @@ __END__
=head1 NAME
SNMP::Info::Layer3::CiscoFWSM - SNMP Interface to Firewall Services Modules for
features not covered elsewhere.
SNMP::Info::Layer3::CiscoFWSM - SNMP Interface to Firewall Services Modules
for features not covered elsewhere.
=head1 AUTHOR
@@ -146,14 +143,14 @@ Brian De Wolf
# Let SNMP::Info determine the correct subclass for you.
my $fwsm = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly to SNMP::Session
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly to SNMP::Session
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $fwsm->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
@@ -166,7 +163,9 @@ Subclass for Cisco Firewall Services Modules
=over
=item SNMP::Info::Layer3::Cisco
=item SNMP::Info::CiscoStack
=item SNMP::Info::Layer3
=back
@@ -176,15 +175,21 @@ Subclass for Cisco Firewall Services Modules
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3::Cisco/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=back
=head1 GLOBALS
=head2 Global Methods imported from SNMP::Info::Layer3::Cisco
=head2 Globals imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::Layer3::Cisco/"GLOBALS"> for details.
See documentation in L<SNMP::Info::CiscoStack/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head1 TABLE METHODS
@@ -216,8 +221,12 @@ the MIB to provide that information isn't supported on FWSM.
=back
=head2 Table Methods imported from SNMP::Info::Layer3::Cisco
=head2 Table Methods imported from SNMP::Info::CiscoStack
See documentation in L<SNMP::Info::Layer3::Cisco/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::CiscoStack/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
=cut

190
Info/Layer3/CiscoSwitch.pm Normal file
View File

@@ -0,0 +1,190 @@
# SNMP::Info::Layer3::CiscoSwitch
# $Id$
#
# Copyright (c) 2014 Eric Miller
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::CiscoSwitch;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoAgg;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::Layer3::Cisco;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::CiscoSwitch::ISA = qw/
SNMP::Info::CiscoAgg
SNMP::Info::CiscoPortSecurity
SNMP::Info::Layer3::Cisco
Exporter
/;
@SNMP::Info::Layer3::CiscoSwitch::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,
%SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoAgg::MIBS,
);
%GLOBALS = (
%SNMP::Info::Layer3::Cisco::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoAgg::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::Cisco::FUNCS,
%SNMP::Info::CiscoPortSecurity::FUNCS,
%SNMP::Info::CiscoAgg::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::Cisco::MUNGE,
%SNMP::Info::CiscoPortSecurity::MUNGE,
%SNMP::Info::CiscoAgg::MUNGE,
);
sub cisco_comm_indexing { return 1; }
1;
__END__
=head1 NAME
SNMP::Info::Layer3::CiscoSwitch - Base class for L3 Cisco switches
=head1 AUTHOR
Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $switch = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly to SNMP::Session
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $switch->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Base subclass for Cisco Layer 2/3 Switches.
These devices have switch specific characteristics beyond those in
traditional routers covered by L<SNMP::Info::Layer3::Cisco>. For example,
port security interface information from L<SNMP::Info::CiscoPortSecurity>.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $swich = new SNMP::Info::Layer3::CiscoSwitch(...);
=head2 Inherited Classes
=over
=item SNMP::Info::CiscoAgg
=item SNMP::Info::CiscoPortSecurity
=item SNMP::Info::Layer3::Cisco
=back
=head2 Required MIBs
=over
=item Inherited Classes' MIBs
See L<SNMP::Info::CiscoAgg/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoPortSecurity/"Required MIBs"> for its own MIB
requirements.
See L<SNMP::Info::Layer3::Cisco/"Required MIBs"> for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $switch->cisco_comm_indexing()
Returns 1. Use vlan indexing.
=back
=head2 Global Methods imported from SNMP::Info::CiscoAgg
See documentation in L<SNMP::Info::CiscoAgg/"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::Layer3::Cisco
See documentation in L<SNMP::Info::Layer3::Cisco/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Table Methods imported from SNMP::Info::CiscoAgg
See documentation in L<SNMP::Info::CiscoAgg/"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::Layer3::Cisco
See documentation in L<SNMP::Info::Layer3::Cisco/"TABLE METHODS"> for details.
=cut

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -193,25 +193,6 @@ sub i_duplex_admin {
return \%i_duplex_admin;
}
# Use same methods as netgear. Some device didn't implement the bridge MIB
# forwarding table and some don't return MACs for VLANs other than default yet
# don't support community indexing, so we use the Q-BRIDGE-MIB forwarding
# table. Fall back to the orig functions if the qb versions don't
# return anything.
sub fw_mac {
my $dell = shift;
my $ret = $dell->qb_fw_mac();
$ret = $dell->orig_fw_mac() if ( !defined($ret) );
return $ret;
}
sub fw_port {
my $dell = shift;
my $ret = $dell->qb_fw_port();
$ret = $dell->orig_fw_port() if ( !defined($ret) );
return $ret;
}
sub _vendor {
my $dell = shift;
@@ -406,23 +387,6 @@ sometimes not unique.
Returns reference to hash of iid to current link administrative duplex
setting.
=item $dell->fw_mac()
Returns reference to hash of forwarding table MAC Addresses.
Some devices don't implement the C<BRIDGE-MIB> forwarding table, so we use
the C<Q-BRIDGE-MIB> forwarding table. Fall back to the C<BRIDGE-MIB> if
C<Q-BRIDGE-MIB> doesn't return anything.
=item $dell->fw_port()
Returns reference to hash of forwarding table entries port interface
identifier (iid)
Some devices don't implement the C<BRIDGE-MIB> forwarding table, so we use
the C<Q-BRIDGE-MIB> forwarding table. Fall back to the C<BRIDGE-MIB> if
C<Q-BRIDGE-MIB> doesn't return anything.
=back
=head2 Table Methods imported from SNMP::Info::Layer3

View File

@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
@@ -149,22 +149,6 @@ sub i_duplex_admin {
return $enterasys->mau_i_duplex_admin($partial);
}
# Normal BRIDGE-MIB has issues on some devices, duplicates and
# non-increasing oids, Use Q-BRIDGE-MIB for macsuck
sub fw_mac {
my $enterasys = shift;
my $partial = shift;
return $enterasys->qb_fw_mac($partial);
}
sub fw_port {
my $enterasys = shift;
my $partial = shift;
return $enterasys->qb_fw_port($partial);
}
# LLDP table timefilter implementation continuously increments when walked
# and we may never reach the end of the table. This behavior can be
# modified with the "set snmp timefilter break disable" command,
@@ -373,17 +357,6 @@ See documentation for mau_i_duplex() in L<SNMP::Info::MAU/"TABLE METHODS">.
See documentation for mau_i_duplex_admin() in
L<SNMP::Info::MAU/"TABLE METHODS">.
=item $enterasys->fw_mac()
Returns reference to hash of forwarding table MAC Addresses.
=item $enterasys->fw_port()
Returns reference to hash of forwarding table entries port interface
identifier (iid).
(C<dot1qTpFdbPort>)
=back
=head2 Link Layer Discovery Protocol (LLDP) Overrides

View File

@@ -46,7 +46,7 @@ use SNMP::Info::EDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -290,9 +290,6 @@ sub fw_mac {
my $b = $extreme->SUPER::fw_mac();
return $b if (keys %$b);
my $qb = $extreme->qb_fw_mac();
return $qb if (keys %$qb);
return $extreme->ex_fw_mac();
}
@@ -301,9 +298,6 @@ sub fw_port {
my $b = $extreme->SUPER::fw_port();
return $b if (keys %$b);
my $qb = $extreme->qb_fw_port();
return $qb if (keys %$qb);
return $extreme->ex_fw_port();
}
@@ -314,9 +308,6 @@ sub fw_status {
my $b = $extreme->SUPER::fw_status();
return $b if (keys %$b);
my $qb = $extreme->qb_fw_status();
return $qb if (keys %$qb);
return $extreme->ex_fw_status();
}
@@ -485,21 +476,26 @@ sub _xos_i_vlan_membership {
my $index = $extreme->i_index();
my $vlans = $extreme->ex_vlan_id();
my $slotx = $extreme->_slot_factor() || 1000;
my $u_ports = $extreme->ex_vlan_untagged() || {};
my $t_ports = $extreme->ex_vlan_tagged() || {};
my $i_vlan_membership = {};
foreach my $idx ( keys %$t_ports ) {
next unless ( defined $t_ports->{$idx} );
foreach my $idx ( keys %$u_ports ) {
next unless ( defined $u_ports->{$idx} );
my $u_portlist = $u_ports->{$idx};
my $t_portlist = $t_ports->{$idx};
my $ret = [];
my ( $vlan_if, $slot ) = $idx =~ /^(\d+)\.(\d+)/;
my $vlan = $vlans->{$vlan_if} || '';
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$t_portlist; $i++ ) {
push( @{$ret}, ( $slotx * $slot + $i + 1 ) )
if ( @$t_portlist[$i] );
foreach my $portlist ( $u_portlist, $t_portlist ) {
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
push( @{$ret}, ( $slotx * $slot + $i + 1 ) )
if ( @$portlist[$i] );
}
}
#Create HoA ifIndex -> VLAN array

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -104,22 +104,6 @@ sub model {
return $model;
}
# Use Q-BRIDGE-MIB
sub fw_mac {
my $force10 = shift;
my $partial = shift;
return $force10->qb_fw_mac($partial);
}
sub fw_port {
my $force10 = shift;
my $partial = shift;
return $force10->qb_fw_port($partial);
}
sub v_name {
my $force10 = shift;
my $partial = shift;
@@ -300,14 +284,6 @@ Returns reference to hash of arrays:
key = C<ifIndex>, value = array of VLAN IDs.
These are the VLANs which are members of the egress list for the port.
=item $force10->fw_mac()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $force10->fw_port()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $force10->i_duplex_admin()
Returns info from F<MAU-MIB>

View File

@@ -38,29 +38,36 @@ use SNMP::Info::Layer3;
use SNMP::Info::FDP;
use SNMP::Info::LLDP;
@SNMP::Info::Layer3::Foundry::ISA = qw/SNMP::Info::FDP SNMP::Info::LLDP
SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Foundry::ISA = qw/
SNMP::Info::FDP
SNMP::Info::LLDP
SNMP::Info::Layer3
Exporter
/;
@SNMP::Info::Layer3::Foundry::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::FDP::MIBS,
'FOUNDRY-SN-ROOT-MIB' => 'foundry',
'FOUNDRY-SN-AGENT-MIB' => 'snChasPwrSupplyDescription',
'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snSwGroupOperMode',
'FOUNDRY-SN-STACKING-MIB' => 'snStackingOperUnitRole',
'FOUNDRY-POE-MIB' => 'snAgentPoeGblPowerCapacityTotal',
'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snSwGroupOperMode',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::FDP::GLOBALS,
'mac' => 'ifPhysAddress.1',
'chassis' => 'entPhysicalDescr.1',
'temp' => 'snChasActualTemperature',
@@ -93,8 +100,10 @@ $VERSION = '3.10';
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::LLDP::MUNGE,
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::FDP::MUNGE,
'ag_mod2_type' => \&SNMP::Info::munge_e_type,
'ag_mod_type' => \&SNMP::Info::munge_e_type,
);
@@ -785,6 +794,29 @@ sub peth_power_consumption {
return $peth_power_consumed;
}
sub agg_ports {
my $dev = shift;
# TODO: implement partial
my $trunks = $dev->snMSTrunkPortList;
my $ports = $dev->snSwPortIfIndex; # sw_index()
return {} unless
ref {} eq ref $trunks and scalar keys %$trunks
and ref {} eq ref $ports and scalar keys %$ports;
my $ret = {};
foreach my $m (keys %$trunks) {
my $skip = 0;
while (my $s = unpack("x${skip}n2", $trunks->{$m})) {
$ret->{ $ports->{$s} } = $ports->{$m};
$skip += 2;
}
}
return $ret;
}
1;
__END__
@@ -848,6 +880,8 @@ after determining a more specific class using the method above.
=item F<FOUNDRY-POE-MIB>
=item F<FOUNDRY-SN-SWITCH-GROUP-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
@@ -982,6 +1016,12 @@ Skipped if device is an EdgeIron 24G due to reports of hangs.
(C<dot1dStpPortState>)
=item $foundry->agg_ports()
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=back
=head2 F<ENTITY-MIB> Information

View File

@@ -33,17 +33,26 @@ use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::LLDP;
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
@SNMP::Info::Layer3::H3C::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::H3C::EXPORT_OK = qw//;
@SNMP::Info::Layer3::H3C::ISA = qw/
SNMP::Info::IEEE802dot3ad
SNMP::Info::LLDP
SNMP::Info::Layer3
Exporter
/;
@SNMP::Info::Layer3::H3C::EXPORT_OK = qw/
agg_ports
/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::IEEE802dot3ad::MIBS,
'HH3C-LswDEVM-MIB' => 'hh3cDevMFanStatus',
'HH3C-LswINF-MIB' => 'hh3cSlotPortMax',
'HH3C-LSW-DEV-ADM-MIB' => 'hh3cLswSysVersion',
@@ -113,21 +122,7 @@ sub i_ignore {
return \%i_ignore;
}
# Use Q-BRIDGE-MIB
sub fw_mac {
my $l3 = shift;
my $partial = shift;
return $l3->qb_fw_mac($partial);
}
sub fw_port {
my $l3 = shift;
my $partial = shift;
return $l3->qb_fw_port($partial);
}
sub agg_ports { return agg_ports_lag(@_) }
1;
__END__
@@ -235,13 +230,11 @@ Returns reference to hash. Increments value of IID if port is to be ignored.
Ignores loopback
=item $h3c->fw_mac()
=item C<agg_ports>
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $h3c->fw_port()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=back

View File

@@ -42,7 +42,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -234,21 +234,6 @@ sub i_vlan_membership {
return $i_vlan_membership;
}
# Use Q-BRIDGE-MIB for bridge forwarding tables
sub fw_mac {
my $juniper = shift;
my $partial = shift;
return $juniper->qb_fw_mac($partial);
}
sub fw_port {
my $juniper = shift;
my $partial = shift;
return $juniper->qb_fw_port($partial);
}
# Pseudo ENTITY-MIB methods
# This class supports both virtual chassis (stackable) and physical chassis
@@ -678,25 +663,6 @@ IDs. These are the VLANs which are members of the egress list for the port.
=back
=head2 Forwarding Table (C<dot1dTpFdbEntry>)
=over
=item $juniper->fw_mac()
Returns reference to hash of forwarding table MAC Addresses
(C<dot1dTpFdbAddress>)
=item $juniper->fw_port()
Returns reference to hash of forwarding table entries port interface
identifier (iid)
(C<dot1dTpFdbPort>)
=back
=head2 Pseudo F<ENTITY-MIB> information
These methods emulate F<ENTITY-MIB> Physical Table methods using

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( %SNMP::Info::Layer3::MIBS, );

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -50,17 +50,30 @@ $VERSION = '3.10';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
'hrSystemUptime' => 'hrSystemUptime',
'os_level' => 'mtxrLicLevel',
'os_ver' => 'mtxrLicVersion',
'serial1' => 'mtxrSystem.3.0',
'firmware' => 'mtxrSystem.4.0',
'fan_type' => 'mtxrHlActiveFan',
);
%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
);
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
);
sub vendor {
return 'mikrotik';
}
sub serial {
my $mikrotik = shift;
return $mikrotik->serial1;
}
sub model {
my $mikrotik = shift;
my $descr = $mikrotik->description() || '';
@@ -73,6 +86,18 @@ sub os {
return 'routeros';
}
sub board_temp {
my $mikrotik = shift;
my $temp = $mikrotik->mtxrHlTemperature;
return $temp / 10.0;
}
sub cpu_temp {
my $mikrotik = shift;
my $temp = $mikrotik->mtxrHlProcessorTemperature;
return $temp / 10.0;
}
1;
__END__
@@ -148,6 +173,23 @@ Tries to extract the device model from C<sysDescr>.
Returns the value of C<mtxrLicVersion>.
=item $mikrotik->os_level()
Returns the value of RouterOS level C<mtxrLicLevel>
=item $mikrotik->board_temp()
=item $mikrotik->cpu_temp()
Returns the appropriate temperature values
=item $mikrotik->serial()
Returns the device serial.
=item $mikrotik->firmware()
Returns the firmware version of hardware.
=back
=head2 Globals imported from SNMP::Info::Layer3

View File

@@ -41,7 +41,7 @@ use SNMP::Info::SONMP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::IEEE802dot11;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -69,17 +69,17 @@ $VERSION = '3.10';
ns_i_up => 'nsIfStatus',
ns_ip_table => 'nsIfIp',
ns_ip_netmask => 'nsIfNetmask',
at_index => 'nsIpArpIfIdx',
at_paddr => 'nsIpArpMac',
at_netaddr => 'nsIpArpIp',
bp_index => 'nsIfInfo',
std_at_paddr => 'ipNetToMediaPhysAddress',
ns_at_paddr => 'nsIpArpMac',
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::IEEE802dot11::MUNGE,
'ns_i_mac' => \&SNMP::Info::munge_mac,
'at_paddr' => \&SNMP::Info::munge_mac,
'ns_i_mac' => \&SNMP::Info::munge_mac,
'ns_at_paddr' => \&SNMP::Info::munge_mac,
'std_at_paddr' => \&SNMP::Info::munge_mac,
);
sub layers {
@@ -345,30 +345,47 @@ sub _mac_map {
return \%mac_map;
}
# Interfaces can have two addresses, we want to capture both the network
# address and the management address
sub ip_index {
my $netscreen = shift;
my $ns_ip = $netscreen->ns_ip_table() || {};
my $ns_ip = $netscreen->ns_ip_table() || {};
my $if_mng_ip = $netscreen->nsIfMngIp() || {};
my %ip_index = ();
foreach my $iid ( keys %$ns_ip ) {
$ip_index{ $ns_ip->{$iid} } = $iid if $ns_ip->{$iid} ne "0.0.0.0";
}
foreach my $iid ( keys %$if_mng_ip ) {
$ip_index{ $if_mng_ip->{$iid} } = $iid
if $if_mng_ip->{$iid} ne "0.0.0.0";
}
return \%ip_index;
}
sub ip_table {
my $netscreen = shift;
my $ip_index = $netscreen->ip_index() || {};
my $ip_index = $netscreen->ip_index() || {};
my $if_mng_ip = $netscreen->nsIfMngIp() || {};
my %ip_table = ();
foreach my $iid ( keys %$ip_index ) {
$ip_table{$iid} = $iid;
my $mgmt_ip = $if_mng_ip->{$iid};
if ( defined $mgmt_ip && $mgmt_ip ne '0.0.0.0' ) {
$ip_table{$iid} = $mgmt_ip;
}
else {
$ip_table{$iid} = $iid;
}
}
return \%ip_table;
}
# There is only one netmask for the interface both network and management
# addresses should have the same netmask
sub ip_netmask {
my $netscreen = shift;
@@ -461,6 +478,33 @@ sub i_80211channel {
return \%i_80211channel;
}
sub at_index {
my $netscreen = shift;
my $std = $netscreen->ipNetToMediaIfIndex();
return $std if (ref {} eq ref $std and scalar keys %$std);
return $netscreen->nsIpArpIfIdx();
}
sub at_paddr {
my $netscreen = shift;
my $std = $netscreen->std_at_paddr();
return $std if (ref {} eq ref $std and scalar keys %$std);
return $netscreen->ns_at_paddr();
}
sub at_netaddr {
my $netscreen = shift;
my $std = $netscreen->ipNetToMediaNetAddress();
return $std if (ref {} eq ref $std and scalar keys %$std);
return $netscreen->nsIpArpIp();
}
1;
__END__
@@ -710,6 +754,33 @@ identifier (IID).
=back
=head2 Arp Cache Table
=over
=item $netscreen->at_index()
Returns reference to hash. Maps ARP table entries to Interface IIDs
If the device doesn't support C<ipNetToMediaIfIndex>, this will try
the proprietary C<nsIpArpIfIdx>.
=item $netscreen->at_paddr()
Returns reference to hash. Maps ARP table entries to MAC addresses.
If the device doesn't support C<ipNetToMediaPhysAddress>, this will try
the proprietary C<nsIpArpMac>.
=item $netscreen->at_netaddr()
Returns reference to hash. Maps ARP table entries to IP addresses.
If the device doesn't support C<ipNetToMediaNetAddress>, this will try
the proprietary C<nsIpArpIp>.
=back
=head3 Wireless Information
=over

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::RapidCity::MIBS,
@@ -127,8 +127,8 @@ sub i_index {
# Get VLAN Virtual Router Interfaces
if (!defined $partial
|| (defined $model
&& ( ( $partial > 2000 && $model =~ /(86|83|81|16|VSP)/ )
|| ( $partial > 256 && $model =~ /(105|11[05]0|12[05])/ ) )
&& ( ( $partial > 2000 && $model =~ /^8[8631]|16|VSP/ )
|| ( $partial > 256 && $model =~ /^1[012][05]0/ ) )
)
)
{
@@ -145,7 +145,7 @@ sub i_index {
}
}
if ( defined $model and $model =~ /(86)/ ) {
if ( defined $model and $model =~ /^8[86]/ ) {
my $cpu_index = $passport->rc_cpu_ifindex($partial) || {};
my $virt_ip = $passport->rc_virt_ip();
@@ -183,8 +183,8 @@ sub interfaces {
if (!defined $partial
|| (defined $model
&& ( ( $partial > 2000 && $model =~ /(86|83|81|16|VSP)/ )
|| ( $partial > 256 && $model =~ /(105|11[05]0|12[05])/ ) )
&& ( ( $partial > 2000 && $model =~ /^8[8631]|16|VSP/ )
|| ( $partial > 256 && $model =~ /^1[012][05]0/ ) )
)
)
{
@@ -198,24 +198,24 @@ sub interfaces {
my $index = $i_index->{$iid};
next unless defined $index;
if ( ( $index == 1 ) and ( $model =~ /(86)/ ) ) {
if ( ( $index == 1 ) and ( $model =~ /^8[86]/ ) ) {
$if{$index} = 'Cpu.Virtual';
}
elsif ( ( $index == 192 ) and ( $model eq '8603' ) ) {
elsif ( ( $index == 192 ) and ( $model =~ /^8[86]03/ ) ) {
$if{$index} = 'Cpu.3';
}
elsif ( ( $index == 320 ) and ( $model =~ /(8606|8610|8610co)/ ) ) {
elsif ( ( $index == 320 ) and ( $model =~ /^8[86][10][06]/ ) ) {
$if{$index} = 'Cpu.5';
}
elsif ( ( $index == 384 ) and ( $model =~ /(8606|8610|8610co)/ ) ) {
elsif ( ( $index == 384 ) and ( $model =~ /^8[86][10][06]/ ) ) {
$if{$index} = 'Cpu.6';
}
elsif (( $index > 2000 and $model =~ /(86|83|81|16|VSP)/ )
or ( $index > 256 and $model =~ /(105|11[05]0|12[05])/ ) )
elsif (( $index > 2000 and $model =~ /^8[8631]|16|VSP/ )
or ( $index > 256 and $model =~ /^1[012][05]0/ ) )
{
my $v_index = $reverse_vlan{$iid};
@@ -256,8 +256,8 @@ sub i_mac {
# Get VLAN Virtual Router Interfaces
if (!defined $partial
|| (defined $model
&& ( ( $partial > 2000 && $model =~ /(86|83|81|16|VSP)/ )
|| ( $partial > 256 && $model =~ /(105|11[05]0|12[05])/ ) )
&& ( ( $partial > 2000 && $model =~ /^8[8631]|16|VSP/ )
|| ( $partial > 256 && $model =~ /^1[012][05]0/ ) )
)
)
{
@@ -276,7 +276,7 @@ sub i_mac {
}
}
if ( defined $model and $model =~ /(86)/ ) {
if ( defined $model and $model =~ /^8[86]/ ) {
my $cpu_mac = $passport->rc_cpu_mac($partial) || {};
my $virt_ip = $passport->rc_virt_ip() || '0.0.0.0';
@@ -330,8 +330,8 @@ sub i_description {
# Get VLAN Virtual Router Interfaces
if (!defined $partial
|| (defined $model
&& ( ( $partial > 2000 && $model =~ /(86|83|81|16|VSP)/ )
|| ( $partial > 256 && $model =~ /(105|11[05]0|12[05])/ ) )
&& ( ( $partial > 2000 && $model =~ /^8[8631]|16|VSP/ )
|| ( $partial > 256 && $model =~ /^1[012][05]0/ ) )
)
)
{
@@ -366,8 +366,8 @@ sub i_name {
if (!defined $partial
|| (defined $model
&& ( ( $partial > 2000 && $model =~ /(86|83|81|16|VSP)/ )
|| ( $partial > 256 && $model =~ /(105|11[05]0|12[05])/ ) )
&& ( ( $partial > 2000 && $model =~ /^8[8631]|16|VSP/ )
|| ( $partial > 256 && $model =~ /^1[012][05]0/ ) )
)
)
{
@@ -379,27 +379,27 @@ sub i_name {
my %i_name;
foreach my $iid ( keys %$i_index ) {
if ( ( $iid == 1 ) and ( $model =~ /(86)/ ) ) {
if ( ( $iid == 1 ) and ( $model =~ /^8[86]/ ) ) {
$i_name{$iid} = 'CPU Virtual Management IP';
}
elsif ( ( $iid == 192 ) and ( $model eq '8603' ) ) {
elsif ( ( $iid == 192 ) and ( $model =~ /^8[86]03/ ) ) {
$i_name{$iid} = 'CPU 3 Ethernet Port';
}
elsif ( ( $iid == 320 ) and ( $model =~ /(8606|8610|8610co)/ ) ) {
elsif ( ( $iid == 320 ) and ( $model =~ /^8[86][10][06]/ ) ) {
$i_name{$iid} = 'CPU 5 Ethernet Port';
}
elsif ( ( $iid == 384 ) and ( $model =~ /(8606|8610|8610co)/ ) ) {
elsif ( ( $iid == 384 ) and ( $model =~ /^8[86][10][06]/ ) ) {
$i_name{$iid} = 'CPU 6 Ethernet Port';
}
elsif (
( $iid > 2000 and defined $model and $model =~ /(86|83|81|16)/ )
( $iid > 2000 and defined $model and $model =~ /^8[8631]|16|VSP/ )
or ( $iid > 256
and defined $model
and $model =~ /(105|11[05]0|12[05])/ )
and $model =~ /^1[012][05]0/ )
)
{
my $vlan_idx = $reverse_vlan{$iid};
@@ -433,12 +433,16 @@ sub ip_index {
foreach my $ip ( keys %$ip_index ) {
my $iid = $ip_index->{$ip};
next unless defined $iid;
# Skip VSP default CPU addresses
next if ($ip =~ /^192\.168\.1\.1/);
# Skip default CPU addresses
next if ($ip =~ /^192\.168\.168\.16[89]/);
$ip_index{$ip} = $iid;
}
# Only 8600 has CPU and Virtual Management IP
if ( defined $model and $model =~ /(86)/ ) {
if ( defined $model and $model =~ /^8[86]/ ) {
my $cpu_ip = $passport->rc_cpu_ip($partial) || {};
my $virt_ip = $passport->rc_virt_ip($partial);
@@ -447,6 +451,8 @@ sub ip_index {
foreach my $cid ( keys %$cpu_ip ) {
my $c_ip = $cpu_ip->{$cid};
next unless defined $c_ip;
# Skip default CPU addresses
next if ($c_ip =~ /192\.168\.168\.16[89]/);
$ip_index{$c_ip} = $cid;
}
@@ -467,6 +473,10 @@ sub ip_netmask {
my %ip_index;
foreach my $iid ( keys %$ip_mask ) {
# Skip VSP default CPU addresses
next if ($iid =~ /^192\.168\.1\./);
# Skip default CPU addresses
next if ($iid =~ /^192\.168\.168\.16[89]/);
my $mask = $ip_mask->{$iid};
next unless defined $mask;
@@ -474,7 +484,7 @@ sub ip_netmask {
}
# Only 8600 has CPU and Virtual Management IP
if ( defined $model and $model =~ /(86)/ ) {
if ( defined $model and $model =~ /^8[86]/ ) {
my $cpu_ip = $passport->rc_cpu_ip($partial) || {};
my $cpu_mask = $passport->rc_cpu_mask($partial) || {};
@@ -485,6 +495,8 @@ sub ip_netmask {
foreach my $iid ( keys %$cpu_mask ) {
my $c_ip = $cpu_ip->{$iid};
next unless defined $c_ip;
# Skip default CPU addresses
next if ($c_ip =~ /192\.168\.168\.16[89]/);
my $c_mask = $cpu_mask->{$iid};
next unless defined $c_mask;
@@ -510,7 +522,7 @@ sub root_ip {
my $sonmp_topo_ip = $passport->sonmp_topo_ip();
# Only 8600 and 1600 have CLIP or Management Virtual IP
if ( defined $model and $model =~ /(86|16|VSP)/ ) {
if ( defined $model and $model =~ /^8[86]|16|VSP/ ) {
# Return CLIP (CircuitLess IP)
foreach my $iid ( keys %$rc_ip_type ) {
@@ -560,7 +572,7 @@ sub index_factor {
# Older Accelar models use base 16 instead of 64
$index_factor = 16
if ( defined $model and $model =~ /(105|11[05]0|12[05])/ );
if ( defined $model and $model =~ /^1[012][05]0/ );
return $index_factor;
}
@@ -583,9 +595,86 @@ sub bp_index {
foreach my $iid ( keys %$if_index ) {
$bp_index{$iid} = $iid;
}
# If we have MLT's map them to the designated port
my $trunks = $passport->rc_mlt_index;
my $dps = $passport->rc_mlt_dp || {};
if ( ref {} eq ref $trunks and scalar keys %$trunks ) {
foreach my $m ( keys %$trunks ) {
my $m_idx = $trunks->{$m};
next unless $m_idx;
my $i_idx = $dps->{$m} ? $dps->{$m} : $m_idx;
$bp_index{$m_idx} = $i_idx;
}
}
return \%bp_index;
}
# We have devices which support BRIDGE-MIB, Q-BRIDGE-MIB, and RAPID-CITY
# exclusively. Use standards-based first and fall back to RAPID-CITY.
sub fw_mac {
my $passport = shift;
my $partial = shift;
my $qb = $passport->SUPER::fw_mac($partial);
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
my $qb_fw_port = $passport->rcBridgeTpFdbPort($partial);
my $qb_fw_mac = {};
foreach my $idx ( keys %$qb_fw_port ) {
my ( $fdb_id, $mac ) = _rc_fdbtable_index($idx);
$qb_fw_mac->{$idx} = $mac;
}
return $qb_fw_mac;
}
sub fw_port {
my $passport = shift;
my $partial = shift;
my $qb = $passport->SUPER::fw_port($partial);
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
return $passport->rcBridgeTpFdbPort($partial);
}
sub fw_status {
my $passport = shift;
my $partial = shift;
my $qb = $passport->SUPER::fw_status($partial);
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
return $passport->rcBridgeTpFdbStatus($partial);
}
sub qb_fw_vlan {
my $passport = shift;
my $partial = shift;
my $qb = $passport->SUPER::qb_fw_vlan($partial);
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
my $qb_fw_port = $passport->rcBridgeTpFdbPort($partial);
my $qb_fw_vlan = {};
foreach my $idx ( keys %$qb_fw_port ) {
my ( $fdb_id, $mac ) = _rc_fdbtable_index($idx);
$qb_fw_vlan->{$idx} = $fdb_id;
}
return $qb_fw_vlan;
}
# break up the rcBridgeTpFdbEntry INDEX into FDB ID and MAC Address.
sub _rc_fdbtable_index {
my $idx = shift;
my @values = split( /\./, $idx );
my $fdb_id = shift(@values);
return ( $fdb_id, join( ':', map { sprintf "%02x", $_ } @values ) );
}
# Pseudo ENTITY-MIB methods
sub e_index {
@@ -613,7 +702,7 @@ sub e_index {
}
# Older Accelars use RAPID-CITY::rcCardTable
if ( defined $model and $model =~ /(105|11[05]0|12[05])/ ) {
if ( defined $model and $model =~ /^1[012][05]0/ ) {
my $rc_c_t = $passport->rc_c_type() || {};
foreach my $idx ( keys %$rc_c_t ) {
next unless $idx;
@@ -701,7 +790,7 @@ sub e_descr {
}
# Older Accelars use RAPID-CITY::rcCardTable
if ( defined $model and $model =~ /(105|11[05]0|12[05])/ ) {
if ( defined $model and $model =~ /^1[012][05]0/ ) {
my $rc_c_t = $passport->rc_c_type() || {};
foreach my $idx ( keys %$rc_c_t ) {
next unless $idx;
@@ -769,7 +858,7 @@ sub e_type {
}
# Older Accelars use RAPID-CITY::rcCardTable
if ( defined $model and $model =~ /(105|11[05]0|12[05])/ ) {
if ( defined $model and $model =~ /^1[012][05]0/ ) {
my $rc_c_t = $passport->rc_c_type() || {};
foreach my $idx ( keys %$rc_c_t ) {
next unless $idx;
@@ -842,7 +931,7 @@ sub e_name {
$rc_e_name{$iid} = "Card $slot, MDA $mod";
}
elsif ( defined $model
and $model =~ /(105|11[05]0|12[05])/
and $model =~ /^1[012][05]0/
and $iid =~ /1$/ )
{
$rc_e_name{$iid} = "Card $slot";
@@ -878,7 +967,7 @@ sub e_hwver {
}
# Older Accelars use RAPID-CITY::rcCardTable
if ( defined $model and $model =~ /(105|11[05]0|12[05])/ ) {
if ( defined $model and $model =~ /^1[012][05]0/ ) {
my $rc_c_t = $passport->rc_c_rev() || {};
foreach my $idx ( keys %$rc_c_t ) {
next unless $idx;
@@ -953,7 +1042,7 @@ sub e_serial {
}
# Older Accelars use RAPID-CITY::rcCardTable
if ( defined $model and $model =~ /(105|11[05]0|12[05])/ ) {
if ( defined $model and $model =~ /^1[012][05]0/ ) {
my $rc_c_t = $passport->rc_c_serial() || {};
foreach my $idx ( keys %$rc_c_t ) {
next unless $idx;
@@ -1240,6 +1329,40 @@ problems with F<BRIDGE-MIB>
=back
=head2 Forwarding Table
These methods utilize, in order; F<Q-BRIDGE-MIB>, F<BRIDGE-MIB>, and
F<RAPID-CITY> to obtain the forwarding table information.
=over
=item $passport->fw_mac()
Returns reference to hash of forwarding table MAC Addresses
(C<dot1qTpFdbAddress>), (C<dot1dTpFdbAddress>), (C<rcBridgeTpFdbAddress>)
=item $passport->fw_port()
Returns reference to hash of forwarding table entries port interface
identifier (iid)
(C<dot1qTpFdbPort>), (C<dot1dTpFdbPort>), (C<rcBridgeTpFdbPort>)
=item $passport->fw_status()
Returns reference to hash of forwarding table entries status
(C<dot1qTpFdbStatus>), (C<dot1dTpFdbStatus>), (C<rcBridgeTpFdbStatus>)
=item $passport->qb_fw_vlan()
Returns reference to hash of forwarding table entries VLAN ID
(C<dot1qFdbId>), (C<rcBridgeTpFdbVlanId>)
=back
=head2 Pseudo F<ENTITY-MIB> information
These devices do not support F<ENTITY-MIB>. These methods emulate Physical

View File

@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -89,22 +89,6 @@ sub model {
return;
}
# Use Q-BRIDGE-MIB
sub fw_mac {
my $l3 = shift;
my $partial = shift;
return $l3->qb_fw_mac($partial);
}
sub fw_port {
my $l3 = shift;
my $partial = shift;
return $l3->qb_fw_port($partial);
}
1;
__END__
@@ -196,20 +180,6 @@ See documentation in L<SNMP::Info::LLDP> for details.
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Overrides
=over
=item $pica8->fw_mac()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=item $pica8->fw_port()
Use the F<Q-BRIDGE-MIB> instead of F<BRIDGE-MIB>
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( %SNMP::Info::Layer3::MIBS, );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::MAU;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = ( %SNMP::Info::Layer3::MIBS, 'TIMETRA-GLOBAL-MIB' => 'timetraReg', );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.10';
$VERSION = '3.17';
%MIBS = (
%SNMP::Info::MIBS,

Some files were not shown because too many files have changed in this diff Show More