Compare commits

..

37 Commits

Author SHA1 Message Date
Oliver Gorwits
a29b888620 new release - 3.05 2013-08-16 17:54:08 +01:00
Oliver Gorwits
ae5a4d413d new release - 3.04_001 2013-08-16 09:27:04 +01:00
Nic Bernstein
03c4d1e81f Merge commit 'c3a727'
Updated ChangeLog to resolve conflicts
Conflicts:
	ChangeLog
2013-08-14 08:32:01 -05:00
Nic Bernstein
4efa0fd509 ENHANCEMENT ADD CISCO SMALL BUSINESS SUPPORT
Updated new package Info::Layer2::CiscoSB to remove hackish
index with index derived from EntPhysicalEntry table search.
2013-08-09 12:21:10 -05:00
Nic Bernstein
c3a727ce10 ENHANCEMENT TO INFO::LAYER2::NETGEAR
Clean up recent code, fix POD details, remove unnecessary hacks.
2013-08-09 10:39:45 -05:00
Nic Bernstein
afa97d845b ENHANCEMENT TO INFO::LAYER2::NETGEAR
* Add LLDP support for Netgear devices which provide it.
	* Change $netgear->interfaces() to use ifName rather than ifDescr
	  as the former is unique per interface while the latter is not.
	  If ifName is not present, concatenate ifDescr and ifIndex
	  to achieve a unique value.
	* Properly report hardware version, Serial No. and OS Version
2013-08-08 18:15:21 -05:00
Nic Bernstein
8671f65bfd ENHANCEMENT TO NETGEAR SUPPORT
Added LLDP support for Netgear devices which provide it.
Changed $netgear->interfaces() to use ifName rather than ifDescr
as the former is unique per interface while the latter is not.
2013-08-08 14:15:28 -05:00
Nic Bernstein
37737a6494 UPDATE CHANGELOG FOR CISCOSB ADDITION 2013-08-02 10:57:03 -05:00
Nic Bernstein
0ce8a55b88 ADD SUPPORT FOR CISCO SMALL BUSINESS DEVICES
New Feature: Support for the Cisco Small Business product line.  These
switches, currently the Sx300 and Sx500, were inherited from Linksys
and do not run IOS.

This has been tested with the following Cisco products:
 - SRW2024P-K9 V02i   (SG 300-28P)
 - SRW208P-K9 V02     (SF 300-8P)
 - SRW224G4P-K9 V02   (SF 300-24P)

We welcome reports from others, either success or failure.
2013-08-02 10:44:58 -05:00
Jeroen van Ingen
22dd49c1dc Add HP 2530 and 2920 models to Layer2::HP MODEL_MAP & re-sort the list 2013-08-02 15:34:54 +02:00
Oliver Gorwits
fd5812aefc version bump - 3.03 2013-07-11 12:36:58 +01:00
Oliver Gorwits
f4e37cdabe Add missing =back to POD (A. Hartmaier) 2013-07-11 12:34:51 +01:00
Oliver Gorwits
5324760463 version bump - 3.02 2013-07-08 21:25:14 +01:00
Oliver Gorwits
27120045d2 [RT#86725] - Identify Cisco Catalyst 3850 as Layer3::C6500 (C. Causer) 2013-07-08 21:19:32 +01:00
Oliver Gorwits
abfd93ea1b remove evil tabs 2013-07-08 21:15:06 +01:00
Jeroen van Ingen
070d911c60 Add support for Aruba LAN switches.
Known issue with Aruba AOS 7.2.0.0: nodes on "trusted" LAN ports in "access"
mode point to non-existing bp_index values; they will be mapped to the wrong
interface or not be mapped to an interface at all.
2013-06-24 10:42:58 +02:00
Jeroen van Ingen
8b14776c9a Add release date to headings for version 3.01 and 3.02 2013-06-24 10:35:30 +02:00
Oliver Gorwits
2d62372c7f Identify Cisco Aironet 1140 APs as Layer2::Aironet 2013-05-25 01:25:59 +01:00
Oliver Gorwits
3eae0b9d5c Support Alcatel devices with layer3 features. 2013-05-21 09:35:38 +01:00
Nic Bernstein
9a722bb2f8 Properly pull os_ver from Netgear GS series switches. 2013-04-15 16:30:32 -05:00
Oliver Gorwits
d3e39a4132 bump version for stable release 2013-04-13 11:05:26 +01:00
Oliver Gorwits
d82d495dcf final patch from Nic to fix arrayism 2013-04-11 17:07:47 +01:00
Oliver Gorwits
198df7cee4 update changelog 2013-04-11 17:06:52 +01:00
Oliver Gorwits
46cdb4c166 update manifest 2013-04-11 17:01:37 +01:00
Oliver Gorwits
62005c52d2 update VERSION 2013-04-11 17:00:28 +01:00
Oliver Gorwits
ca7651628d bug fix for Class name typos 2013-04-11 16:59:02 +01:00
Alexander Hartmaier
6358b7ad70 override i_description for Cisco ASA firewalls to return the configured interface name 2013-04-10 18:46:39 +02:00
Alexander Hartmaier
8aca1d97c0 fixed Cisco ASA detection for newer versions that return has_layer(3) 2013-04-10 18:27:08 +02:00
Moe Kraus
275a533843 added subclass for Cisco ASA firewalls which filters bad mac addresses in b_mac method 2013-04-10 18:26:31 +02:00
Oliver Gorwits
21bd4c662d bump version again for dev release 2013-02-11 13:43:19 +00:00
Oliver Gorwits
47d9d091d1 fix code in L3/Extreme to pass tests and be more correct 2013-02-11 13:41:49 +00:00
Eric A. Miller
da2ea09e84 Bump version 2013-02-10 22:52:51 -05:00
Eric A. Miller
9c71bdbcef [3598896] - Lantronix device support (J R Binks) and [3598337] - Lantronix SLC support 2013-02-10 22:40:03 -05:00
Eric A. Miller
318f9518b1 Support Juniper (Trapeze) Wireless Controllers in new class L2::Trapeze 2013-02-10 22:16:43 -05:00
Eric A. Miller
19e9fb5f67 Add more default topology methods to test_class_mocked.pl 2013-02-10 21:31:05 -05:00
Eric A. Miller
41833c1f29 Add new classes to MANIFEST 2013-02-10 21:28:40 -05:00
Eric A. Miller
4e2f950e41 [3033731] - Alcatel-Lucent OmniSwich AMAP Support 2013-02-10 21:27:52 -05:00
108 changed files with 3045 additions and 157 deletions

View File

@@ -1,6 +1,38 @@
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
version 3.00
version 3.05 (2013-08-16)
[ENHANCEMENTS]
* [#47] Add model info on HP 2530 and HP 2920 series
* Add support for Cisco Small Business series
Layer2/CiscoSB class
* Add proper LLDP support to Netgear.pm
* Change $netgear->interfaces() to use ifName rather than ifDescr
as the former is unique per interface while the latter is not.
If ifName is not present, concatenate ifDescr and ifIndex
to achieve a unique value.
* Properly report hardware version, Serial No. and OS Version for
Netgear.
version 3.03 (2013-07-11)
[BUG FIXES]
* Add missing =back to POD (A. Hartmaier)
version 3.02 (2013-07-08)
[ENHANCEMENTS]
* Properly pull os_ver from Netgear GS series switches.
* Support Alcatel devices with layer3 features.
* Identify Cisco Aironet 1140 APs as Layer2::Aironet
* LAN switch support added to Layer3::Aruba class
* [RT#86725] - Identify Cisco Catalyst 3850 as Layer3::C6500 (C. Causer)
version 3.01 (2013-04-13)
[API Changes]
@@ -21,9 +53,14 @@ version 3.00
* [3323814] - Arp support for Netscreen (David Baldwin)
* [3323821] - Support for Netscreen w/ WLAN (eg SSG5) (David Baldwin)
* [3599277] - Q-BRIDGE Support to collect VLAN in macsuck
* [3033731] - Alcatel-Lucent OmniSwich AMAP Support in new AMAP class
* [3598896] - Lantronix device support (J R Binks)
* [3598337] - Lantronix SLC support
* Support for Cisco ASA in L3::CiscoASA (Kraus/Hartmaier/Bernstein)
* Support for Avaya VSP 9000 series in L3::Passport
* Support for Avaya VSP 7000 series in L2::Baystack
* Support Avaya (Trapeze) Wireless Controllers in new class L2::NWSS2300
* Support Juniper (Trapeze) Wireless Controllers in new class L2::Trapeze
* Support for newer Radware Alteon ADC switches 4408/4416/5412/5224 and
older AWS 2000/3000 series in existing L3::AlteonAD
* Support for H3C & HP A-series in new class L3::H3C

View File

@@ -101,8 +101,11 @@ portmac: yes
duplex: no
class: Layer3::Aruba
device-family: Aruba Wireless Controllers
device-family: Aruba Wireless Controllers and LAN switches
note: Uses proprietary MIBs to provide MAC to port mapping. APs appear as switch ports.
note: On LAN switches, hosts connected to "trusted" switch ports in "access" mode may be mapped to incorrect ports.
device: 3500
device: 5000
@@ -381,6 +384,10 @@ class: Layer3::Altiga
device: VPN3000
note: The Cisco 3000 device can return duplicate interface names, while Netdisco expects unique interface names. To ensure unique device names I append numbers only when an interface name would not be unique without one. Interfaces with unique names keep their ifDescr name.
device: ASA
note: The Cisco ASA is the successor of the PIX which was bought from Altiga Networks.
Class: Layer3::CiscoASA
device-family: 1000
duplex: no
ver: 1
@@ -650,6 +657,12 @@ note: !Arpnip only available for 4.x software releases.
class: Layer3::CiscoFWSM
arpnip: yes
device: Sx300, Sx500 series
device-family: Small Business switches
class: Layer2::CiscoSB
arpnip: no
macsuck: yes
#
# Citrix
#
@@ -841,6 +854,14 @@ device: All
device-family: SRX-series router
device: All
device-family: Wireless LAN Controllers (Trapeze)
duplex: both
class: Layer2::Trapeze
note: Uses proprietary MIBs to provide MAC to port mapping. APs appear as switch ports.
note: Arpnip is emulated by gathering the MAC to IP mappings from controller snooping.
device: All
#
# Kentrox
#
@@ -850,6 +871,15 @@ class: Layer2::Kentrox
device-family: Kentrox DataSMART DSU/CSU
device: All
#
# Lantronix
#
device-vendor: Lantronix
class: Layer3::Lantronix
device-family: Terminal Servers
device: All
#
# Linksys
#
@@ -997,6 +1027,12 @@ device: Sun routers
device-vendor: Synoptics
note: See Avaya
#
# Trapeze
#
device-vendor: Trapeze
note: See Juniper
#
# Zyxel
#

83
Info.pm
View File

@@ -24,15 +24,15 @@ use vars
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
$NOSUCH $BIGINT $REPEATERS/;
$VERSION = '3.00_001';
$VERSION = '3.05';
=head1 NAME
SNMP::Info - Object Oriented Perl5 Interface to Network devices and MIBs through SNMP.
SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.00_001
SNMP::Info - Version 3.05
=head1 AUTHOR
@@ -242,6 +242,13 @@ devices based on the Airespace wireless platform.
See documentation in L<SNMP::Info::Airespace> for details.
=item SNMP::Info::AMAP
F<ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB>. Alcatel Mapping Adjacency
Protocol (AMAP) Support.
See documentation in L<SNMP::Info::AMAP> for details.
=item SNMP::Info::Bridge
F<BRIDGE-MIB> (RFC1286). F<QBRIDGE-MIB>. Inherited by devices with Layer2
@@ -533,6 +540,13 @@ in more specific subclasses.
See documentation in L<SNMP::Info::Layer2::Cisco> for details.
=item SNMP::Info::Layer2::CiscoSB
Subclass for Cisco's "Small Business" product line, acquired from
Linksys. This currently comprises the Sx300/500 line of switches.
See documentation in L<SNMP::Info::Layer2::CiscoSB> for details.
=item SNMP::Info::Layer2::HP
Subclass for more recent HP Procurve Switches
@@ -585,6 +599,12 @@ Subclass for Orinoco/Proxim wireless access points.
See documentation in L<SNMP::Info::Layer2::Orinoco> for details.
=item SNMP::Info::Layer2::Trapeze
SNMP Interface to Juniper (Trapeze) Wireless Controllers
See documentation in L<SNMP::Info::Layer2::Trapeze> for details.
=item SNMP::Info::Layer2::ZyXEL_DSLAM
Zyxel DSLAMs. Need I say more?
@@ -677,6 +697,12 @@ This is a simple wrapper around Layer3 for IOS devices. It adds on CiscoVTP.
See documentation in L<SNMP::Info::Layer3::Cisco> for details.
=item SNMP::Info::Layer3::CiscoASA
Subclass for Cisco Adaptive Security Appliances.
See documentation in L<SNMP::Info::Layer3::CiscoASA> for details.
=item SNMP::Info::Layer3::CiscoFWSM
Subclass for Cisco Firewall Services Modules.
@@ -746,6 +772,12 @@ Subclass for Juniper devices
See documentation in L<SNMP::Info::Layer3::Juniper> for details.
=item SNMP::Info::Layer3::Lantronix
Subclass for Lantronix devices
See documentation in L<SNMP::Info::Layer3::Lantronix> for details.
=item SNMP::Info::Layer3::Microsoft
Subclass for Generic Microsoft Routers running Microsoft Windows OS.
@@ -1323,6 +1355,7 @@ sub device_type {
}
my $id = $info->id() || 'undef';
my $soid = $id;
# Hash for generic fallback to a device class if unable to determine using
# the sysDescr regex.
@@ -1333,6 +1366,7 @@ sub device_type {
42 => 'SNMP::Info::Layer3::Sun',
45 => 'SNMP::Info::Layer2::Baystack',
171 => 'SNMP::Info::Layer3::Dell',
244 => 'SNMP::Info::Layer3::Lantronix',
311 => 'SNMP::Info::Layer3::Microsoft',
674 => 'SNMP::Info::Layer3::Dell',
1872 => 'SNMP::Info::Layer3::AlteonAD',
@@ -1354,6 +1388,7 @@ sub device_type {
8072 => 'SNMP::Info::Layer3::NetSNMP',
9303 => 'SNMP::Info::Layer3::PacketFront',
12325 => 'SNMP::Info::Layer3::Pf',
14525 => 'SNMP::Info::Layer2::Trapeze',
14988 => 'SNMP::Info::Layer3::Mikrotik',
25506 => 'SNMP::Info::Layer3::H3C',
30065 => 'SNMP::Info::Layer3::Arista',
@@ -1375,14 +1410,17 @@ sub device_type {
3375 => 'SNMP::Info::Layer3::F5',
4526 => 'SNMP::Info::Layer2::Netgear',
5624 => 'SNMP::Info::Layer3::Enterasys',
6486 => 'SNMP::Info::Layer3::AlcatelLucent',
11898 => 'SNMP::Info::Layer2::Orinoco',
14179 => 'SNMP::Info::Layer2::Airespace',
14525 => 'SNMP::Info::Layer2::Trapeze',
14823 => 'SNMP::Info::Layer3::Aruba',
);
my %l7sysoidmap = (
318 => 'SNMP::Info::Layer7::APC',
5951 => 'SNMP::Info::Layer7::Netscaler',
14525 => 'SNMP::Info::Layer2::Trapeze',
12532 => 'SNMP::Info::Layer7::Neoteris',
);
@@ -1414,10 +1452,10 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Aironet'
if ( $desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/ );
# Cat6k with older SUPs (hybrid CatOS/IOS?)
# Cat6k with older SUPs (hybrid CatOS/IOS?)
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/;
# Cat6k with Sup720, Sup720 or Sup2T (and Sup2 running native IOS?)
# Cat6k with Sup720, Sup720 or Sup2T (and Sup2 running native IOS?)
$objtype = 'SNMP::Info::Layer3::C6500'
if $desc =~ /(s72033_rp|s3223_rp|s32p3_rp|s222_rp|s2t54)/;
@@ -1425,6 +1463,10 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::C6500'
if ( $desc =~ /cisco/i and $desc =~ /3750/ );
# IOS 15.x on Catalyst 3850
$objtype = 'SNMP::Info::Layer3::C6500'
if ( $desc =~ /cisco/i and $desc =~ /CAT3K/ );
# Cisco 2970
$objtype = 'SNMP::Info::Layer3::C6500'
if ( $desc =~ /(C2970|C2960)/ );
@@ -1468,6 +1510,11 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::Allied'
if ( $desc =~ /Allied.*AT-80\d{2}\S*/i );
# Cisco ASA, newer versions which report layer 3 functionality
# version >= 8.2 are known to do this
$objtype = 'SNMP::Info::Layer3::CiscoASA'
if ( $desc =~ /Cisco Adaptive Security Appliance/i );
# Cisco FWSM
$objtype = 'SNMP::Info::Layer3::CiscoFWSM'
if ( $desc =~ /Cisco Firewall Services Module/i );
@@ -1521,6 +1568,11 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::C6500'
if ( $desc =~ /(C2970|C2960)/ );
# Cisco Small Business (300 500) series override
# This is for enterprises(1).cisco(9).otherEnterprises(6).ciscosb(1)
$objtype = 'SNMP::Info::Layer2::CiscoSB'
if ( $soid =~ /^\.1\.3\.6\.1\.4\.1\.9\.6\.1/ );
# HP, older ProCurve models (1600, 2400, 2424m, 4000, 8000)
$objtype = 'SNMP::Info::Layer2::HP4000'
if $desc =~ /\b(J4093A|J4110A|J4120A|J4121A|J4122A|J4122B)\b/;
@@ -1569,7 +1621,7 @@ sub device_type {
# Aironet - IOS
$objtype = 'SNMP::Info::Layer2::Aironet'
if ($desc =~ /\b(C1100|C1130|AP1200|C350|C1200|C1240|C1250)\b/
if ($desc =~ /\b(C1100|C1130|C1140|AP1200|C350|C1200|C1240|C1250)\b/
and $desc =~ /\bIOS\b/ );
# Aironet - non IOS
@@ -1634,8 +1686,8 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Cisco'
if ( $desc =~ /Cisco PIX Security Appliance/i );
# Cisco ASA
$objtype = 'SNMP::Info::Layer3::Cisco'
# Cisco ASA, older version which doesn't report layer 3 functionality
$objtype = 'SNMP::Info::Layer3::CiscoASA'
if ( $desc =~ /Cisco Adaptive Security Appliance/i );
# HP Virtual Connect blade switches
@@ -2330,8 +2382,8 @@ Based upon the manufacturer and software version devices may support some
combination of Layer 2 topology protocol information. SNMP::Info
supports querying Link Layer Discovery Protocol (LLDP), Cisco Discovery
Protocol (CDP), SynOptics/Bay/Nortel/Avaya Network Management Protocol
(SONMP), Foundry/Brocade Discovery Protocol (FDP), and Extreme Discovery
Protocol (EDP).
(SONMP), Foundry/Brocade Discovery Protocol (FDP), Extreme Discovery
Protocol (EDP), and Alcatel Mapping Adjacency Protocol (AMAP).
For protocol specific information and implementation:
@@ -2347,6 +2399,8 @@ For protocol specific information and implementation:
=item EDP: See L<SNMP::Info::EDP> for details.
=item AMAP: See L<SNMP::Info::AMAP> for details.
=back
=head3 Topology Capabilities
@@ -2359,8 +2413,8 @@ Reports Layer 2 topology protocols which are supported and running on
a device.
Returns either a reference to an array of protocols, possible values
being: C<lldp>, C<cdp>, C<sonmp>, C<fdp>, C<edp> or C<undef> if no protocols
are supported or running.
being: C<lldp>, C<cdp>, C<sonmp>, C<fdp>, C<edp>, C<amap> or C<undef> if
no protocols are supported or running.
=back
@@ -2377,6 +2431,7 @@ sub has_topo {
if $self->can('hasSONMP') && $self->hasSONMP();
push( @topo_cap, 'fdp' ) if $self->can('hasFDP') && $self->hasFDP();
push( @topo_cap, 'edp' ) if $self->can('hasEDP') && $self->hasEDP();
push( @topo_cap, 'amap' ) if $self->can('hasAMAP') && $self->hasAMAP();
if (@topo_cap) {
return \@topo_cap;
@@ -2396,7 +2451,7 @@ sub _get_topo_data {
my %t_data;
foreach my $proto (@$topo_cap) {
next unless $proto =~ /(lldp|cdp|sonmp|fdp|edp)/;
next unless $proto =~ /(lldp|cdp|sonmp|fdp|edp|amap)/;
my $method_name = "$proto" . "_$method";
my $cdp = $self->$method_name($partial) || {};
@@ -2426,7 +2481,7 @@ first argument.
If a reference to an array is provided as the second argument, those
protocols will be queried for information. The supported array values are:
C<lldp>, C<cdp>, C<sonmp>, C<fdp>, C<edp>.
C<lldp>, C<cdp>, C<sonmp>, C<fdp>, C<edp>, C<amap>.
If nothing is passed in as the second argument, the methods will call
has_topo() to determine supported and running topology protocols on the

341
Info/AMAP.pm Normal file
View File

@@ -0,0 +1,341 @@
# SNMP::Info::AMAP
#
# Copyright (c) 2013 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::AMAP;
use strict;
use Exporter;
use SNMP::Info;
@SNMP::Info::LLDP::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::LLDP::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.05';
%MIBS
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
%GLOBALS = (
);
%FUNCS = (
# EXTREME-EDP-MIB::extremeEdpTable
'amap_rem_sysname' => 'aipAMAPRemHostname',
);
%MUNGE = ( 'amap_rem_sysname' => \&SNMP::Info::munge_null, );
sub hasAMAP {
my $amap = shift;
my $amap_ip = $amap->aipAMAPIpAddr() || {};
return 1 if ( scalar( keys %$amap_ip ) );
return;
}
# Break up the aipAMAPhostsTable INDEX into MAC and IP address.
sub _hosts_table_index {
my $idx = shift;
my @oids = split( /\./, $idx );
my $mac = join( '.', splice( @oids, 0, 6 ) );
return ( $mac, join( '.', @oids ) );
}
# Break up the aipAMAPportConnectionTable INDEX and return MAC
sub _conn_table_mac {
my $idx = shift;
my @oids = split( /\./, $idx );
my $local_idx = shift @oids;
my $mac = join( '.', splice( @oids, 0, 6 ) );
return ($mac);
}
# Since we need to get IP Addresses from the aipAMAPhostsTable which has
# a different index (MAC, IP) than the aipAMAPportConnectionTable which holds
# the remote device details we create a combined index and skip any
# IPs which have an address of 0.0.0.0. Would like to include only one
# address since they should all originate from the same device, but we don't
# know if they would all be reachable from the network management application.
#
# We don't inplement partials since this is private index function
sub _amap_index {
my $amap = shift;
my $amap_ip = $amap->aipAMAPIpAddr() || {};
my $amap_rport = $amap->aipAMAPLocalPort() || {};
my %amap_index;
foreach my $key ( keys %$amap_ip ) {
my ( $mac, $ip ) = _hosts_table_index($key);
next if ( $ip eq '0.0.0.0' );
next unless $ip;
foreach my $idx ( keys %$amap_rport ) {
my $c_mac = _conn_table_mac($idx);
if ( $mac eq $c_mac ) {
my $index = "$idx.$ip";
$amap_index{$index} = $index;
}
}
}
return \%amap_index;
}
# Break up _amap_index INDEX into local index, MAC, remote index, and
# IP address
sub _amap_index_parts {
my $idx = shift;
my @oids = split( /\./, $idx );
my $local_idx = shift @oids;
my $mac = join( '.', splice( @oids, 0, 6 ) );
my $rem_idx = shift @oids;
return ( $local_idx, $mac, $rem_idx, join( '.', @oids ) );
}
sub amap_if {
my $amap = shift;
my $index = $amap->_amap_index() || {};
my $if_idx = $amap->aipAMAPLocalIfindex() || {};
my %amap_if;
foreach my $key ( keys %$index ) {
my ( $local_idx, $mac, $rem_idx, $ip ) = _amap_index_parts($key);
my $if_key = "$local_idx.$mac.$rem_idx";
if ( $key =~ /^$if_key/ ) {
my $if = $if_idx->{$if_key};
$amap_if{$key} = $if;
}
}
return \%amap_if;
}
sub amap_ip {
my $amap = shift;
my $index = $amap->_amap_index() || {};
my %amap_ip;
foreach my $key ( keys %$index ) {
my ( $local_idx, $mac, $rem_idx, $ip ) = _amap_index_parts($key);
# MIB says should only be IPv4
next unless ( $ip =~ /\d+(\.\d+){3}/ );
$amap_ip{$key} = $ip;
}
return \%amap_ip;
}
sub amap_port {
my $amap = shift;
my $index = $amap->_amap_index() || {};
my $amap_rport = $amap->aipAMAPLocalPort() || {};
my $amap_rslot = $amap->aipAMAPLocalSlot() || {};
my %amap_port;
foreach my $key ( sort keys %$index ) {
my ( $local_idx, $mac, $rem_idx, $ip ) = _amap_index_parts($key);
my $p_key = "$local_idx.$mac.$rem_idx";
if ( $key =~ /^$p_key/ ) {
my $port = $amap_rport->{$p_key};
my $slot = $amap_rslot->{$p_key} || 0;
next unless $port;
$amap_port{$key} = defined $slot ? "$slot\/$port" : $port;
}
}
return \%amap_port;
}
sub amap_id {
my $amap = shift;
my $index = $amap->_amap_index() || {};
my $amap_name = $amap->amap_rem_sysname() || {};
my %amap_name;
foreach my $key ( sort keys %$index ) {
my ( $local_idx, $mac, $rem_idx, $ip ) = _amap_index_parts($key);
my $id_key = "$local_idx.$mac.$rem_idx";
if ( $key =~ /^$id_key/ ) {
my $name = $amap_name->{$id_key} || 0;
next unless $name;
$amap_name{$key} = $name;
}
}
return \%amap_name;
}
sub amap_platform {
my $amap = shift;
my $index = $amap->_amap_index() || {};
my $amap_topo_platform = $amap->aipAMAPRemDeviceType() || {};
my %amap_platform;
foreach my $key ( keys %$index ) {
my ( $local_idx, $mac, $rem_idx, $ip ) = _amap_index_parts($key);
my $pf_key = "$local_idx.$mac.$rem_idx";
if ( $key =~ /^$pf_key/ ) {
my $platform = $amap_topo_platform->{$pf_key};
next unless $platform;
$amap_platform{$key} = $platform;
}
}
return \%amap_platform;
}
1;
__END__
=head1 NAME
SNMP::Info::AMAP - SNMP Interface to Alcatel Mapping Adjacency Protocol (AMAP)
=head1 AUTHOR
Eric Miller
=head1 SYNOPSIS
my $amap = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'router',
Community => 'public',
Version => 2
);
my $class = $amap->class();
print " Using device sub class : $class\n";
$hasamap = $amap->hasAMAP() ? 'yes' : 'no';
# Print out a map of device ports with LLDP neighbors:
my $interfaces = $amap->interfaces();
my $amap_if = $amap->amap_if();
my $amap_ip = $amap->amap_ip();
my $amap_port = $amap->amap_port();
foreach my $amap_key (keys %$amap_ip){
my $iid = $amap_if->{$amap_key};
my $port = $interfaces->{$iid};
my $neighbor = $amap_ip->{$amap_key};
my $neighbor_port = $amap_port->{$amap_key};
print "Port : $port connected to $neighbor / $neighbor_port\n";
}
=head1 DESCRIPTION
SNMP::Info::AMAP is a subclass of SNMP::Info that provides an object oriented
interface to Alcatel Mapping Adjacency Protocol (AMAP) information through
SNMP.
AMAP is a Layer 2 protocol that allows a network device to advertise its
identity and capabilities on the local network providing topology information.
Create or use a device subclass that inherits this class. Do not use
directly.
=head2 Inherited Classes
None.
=head2 Required MIBs
=over
=item F<ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB>
=back
=head1 GLOBAL METHODS
These are methods that return scalar values from SNMP
=over
=item $amap->hasAMAP()
Is AMAP is active in this device?
=back
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
to a hash.
=over
=item $amap->amap_id()
Returns the string value used to identify the remote system.
=item $amap->amap_if()
Returns the mapping to the SNMP Interface Table.
=item $amap->amap_ip()
Returns remote IPv4 addresses. Note: AMAP returns all IP addresses associated
with the remote device. It would be preferable to include only one address
since they should all originate from the same device, but amap_ip() can not
determine if all addresses are reachable from the network management
application therefore all addresses are returned and the calling application
must determine which address to use and if they are in fact from the same
device.
=item $amap->amap_port()
Returns remote port ID
=item $amap->amap_platform()
Returns remote platform ID
=back
=cut

View File

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

View File

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

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
@@ -905,4 +905,6 @@ Currently unsupported. Throws an error and returns.
Currently unsupported. Throws an error and returns.
=back
=cut

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT/;
$VERSION = '3.00_001';
$VERSION = '3.05';
# Five data structures required by SNMP::Info
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );

View File

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

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = ( 'CISCO-IMAGE-MIB' => 'ciscoImageString', );

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
'SNMPv2-MIB' => 'sysDescr',

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
$VERSION = '3.00_001';
$VERSION = '3.05';
@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.00_001';
$VERSION = '3.05';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',

View File

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

View File

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

View File

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

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );

View File

@@ -44,7 +44,7 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.00_001';
$VERSION = '3.05';

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
# 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.00_001';
$VERSION = '3.05';
# 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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -45,7 +45,7 @@ use SNMP::Info::PowerEthernet;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,

View File

@@ -46,7 +46,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,

View File

@@ -47,7 +47,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::CiscoConfig::GLOBALS,

View File

@@ -49,7 +49,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::CiscoPortSecurity::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -50,7 +50,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::CiscoConfig::MIBS,

267
Info/Layer2/CiscoSB.pm Normal file
View File

@@ -0,0 +1,267 @@
# SNMP::Info::Layer2::CiscoSB
# $Id$
#
# Copyright (c) 2013 Nic Bernstein
#
# Copyright (c) 2008-2009 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2003 Regents of the University of California
# 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::Layer2::CiscoSB;
use strict;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::Entity;
use SNMP::Info::EtherLike;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CDP;
@SNMP::Info::Layer2::CiscoSB::ISA
= qw/SNMP::Info::Layer2 SNMP::Info::Entity SNMP::Info::EtherLike
SNMP::Info::CiscoStats SNMP::Info::CiscoConfig SNMP::Info::CDP Exporter/;
@SNMP::Info::Layer2::CiscoSB::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.05';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
our $index = undef;
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::EtherLike::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
'descr' => 'sysDescr'
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::Entity::FUNCS,
%SNMP::Info::EtherLike::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CDP::FUNCS,
);
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::Entity::MIBS,
%SNMP::Info::EtherLike::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CDP::MIBS,
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::EtherLike::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CDP::MUNGE,
);
sub vendor {
return 'cisco';
}
# Walk the entPhysicalSerialNum table and return both the first serial
# number found as well as the index of that entry.
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;
}
}
return $e_serial->{$index} if defined $index;
}
sub os_ver {
my $ciscosb = shift;
my $os_ver = $ciscosb->e_swver();
return $os_ver->{$index} if defined $index;
}
# Grab e_model from Entity and tag on e_hwver
sub model {
my $ciscosb = shift;
my $e_model = $ciscosb->e_model();
my $e_hwver = $ciscosb->e_hwver();
if (defined ($index)) {
my $model = "$e_model->{$index} $e_hwver->{$index}";
return $model;
}
return $ciscosb->description();
}
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name.
sub interfaces {
my $ciscosb = shift;
my $partial = shift;
my $interfaces = $ciscosb->i_name($partial);
return $interfaces;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::CiscoSB - SNMP Interface to Cisco Small Business series
=head1 AUTHOR
Nic Bernstein (shamelessly stolen from Max Baker's Aironet code)
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $ciscosb = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $ciscosb->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Provides interface to SNMP Data available on Cisco Small Business (nee LinkSys)
managed switches. [i.e. those matching enterprises(1).cisco(9).otherEnterprises(6).ciscosb(1)]
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=item SNMP::Info::Entity
=item SNMP::Info::EtherLike
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoConfig
=back
=head2 Required MIBs
=over
=item Inherited Classes
MIBs required by the inherited classes listed above.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $ciscosb->vendor()
Returns 'cisco'
=item $ciscosb->os_ver()
Returns software version (entPhysicalSoftwareRev)
=item $ciscosb->serial()
Returns serial number of unit (entPhysicalSerialNum)
=item $ciscosb->model()
Returns model and hardware revision of unit (entPhysicalModelName+entPhysicalHardwareRev)
=back
=head2 Globals imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::EtherLike
See documentation in L<SNMP::Info::EtherLike/"GLOBALS"> for details.
=head1 TABLE METHODS
=head2 Overrides
=over
=item $ciscosb->interfaces()
Uses the i_name() field.
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::EtherLike
See documentation in L<SNMP::Info::EtherLike/"TABLE METHODS"> for details.
=cut

View File

@@ -46,7 +46,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -167,6 +167,10 @@ $VERSION = '3.00_001';
'J4905A' => '3400cl-24G',
'J4815A' => '3324XL',
'J4851A' => '3124',
'J9729A' => '2920-48G-PoE+',
'J9728A' => '2920-48G',
'J9727A' => '2920-24G-PoE+',
'J9726A' => '2920-24G',
'J9562A' => '2915-8G-PoE',
'J9148A' => '2910al-48G-PoE+',
'J9147A' => '2910al-48G',
@@ -178,26 +182,30 @@ $VERSION = '3.00_001';
'J4903A' => '2824',
'J9022A' => '2810-48G',
'J9021A' => '2810-24G',
'J4899C' => '2650C',
'J8165A' => '2650-PWR',
'J4899B' => '2650-CR',
'J4899C' => '2650C',
'J4899A' => '2650',
'J4900C' => '2626C',
'J8164A' => '2626-PWR',
'J4900B' => '2626-CR',
'J4900C' => '2626C',
'J4900A' => '2626',
'J9627A' => '2620-48-PoE+',
'J9624A' => '2620-48',
'J9624A' => '2620-24-PPoE+',
'J9625A' => '2620-24-PoE+',
'J9624A' => '2620-24-PPoE+',
'J9623A' => '2620-24',
'J9565A' => '2615-8-PoE',
'J9089A' => '2610-48-PWR',
'J9088A' => '2610-48',
'J9087A' => '2610-24-PWR',
'J9086A' => '2610-24/12PWR',
'J9087A' => '2610-24-PWR',
'J9085A' => '2610-24',
'J8762A' => '2600-8-PWR',
'J9772A' => '2530-48G-PoE+',
'J9775A' => '2530-48G',
'J9773A' => '2530-24G-PoE+',
'J9776A' => '2530-24G',
'J4813A' => '2524',
'J9298A' => '2520G-8-PoE',
'J9299A' => '2520G-24-PoE',
@@ -869,4 +877,6 @@ operations.
=item set_i_vlan_tagged()
=back
=cut

View File

@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -719,4 +719,6 @@ operations.
=item set_i_vlan_tagged()
=back
=cut

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -33,26 +33,32 @@ package SNMP::Info::Layer2::Netgear;
use strict;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::Entity;
use SNMP::Info::LLDP;
@SNMP::Info::Layer2::Netgear::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Netgear::ISA = qw/SNMP::Info::LLDP SNMP::Info::Entity SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Netgear::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = ( %SNMP::Info::Layer2::MIBS, %SNMP::Info::LLDP::MIBS, );
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
our $index = undef;
%MIBS = ( %SNMP::Info::Layer2::MIBS, %SNMP::Info::Entity::MIBS, %SNMP::Info::LLDP::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::LLDP::GLOBALS,
ng_serial => '.1.3.6.1.4.1.4526.10.1.1.1.4.0',
ng_osver => '.1.3.6.1.4.1.4526.10.1.1.1.13.0',
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::Entity::GLOBALS, %SNMP::Info::LLDP::GLOBALS,
ng_fsosver => '.1.3.6.1.4.1.4526.11.11.1.0',
ng_gsmserial => '.1.3.6.1.4.1.4526.10.1.1.1.4.0',
ng_gsmosver => '.1.3.6.1.4.1.4526.10.1.1.1.13.0',
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, %SNMP::Info::LLDP::FUNCS, );
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, %SNMP::Info::Entity::FUNCS, %SNMP::Info::LLDP::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::LLDP::MUNGE, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::Entity::MUNGE, %SNMP::Info::LLDP::MUNGE, );
sub vendor {
return 'netgear';
@@ -62,17 +68,79 @@ sub os {
return 'netgear';
}
# Wish the OID-based method worked, but netgear scatters
# the sysObjectID values across all the device MIBs, and
# makes the device MIBs state secrets.
# They seem to set sysDescr to the model number, though,
# so we'll use that.
# We will attempt to use Entity-MIB if present. In that case, we will
# also set the shared variable $index, which is used by other functions
# to index within Entity-MIB tables. This assumes, of course, that there
# is only one serial number (entPhysicalSerialNum) present in the table.
sub serial {
my $netgear = shift;
my $serial = undef;
my $e_serial = $netgear->e_serial();
if (defined($e_serial)) { # This unit sports the Entity-MIB
# 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;
}
}
return $e_serial->{$index} if defined $index;
}
# Without Enitity-MIB, we've got to work our way through a bunch of
# different locales...
return $netgear->ng_gsmserial() if defined $netgear->model and $netgear->model =~ m/GSM\d/i;;
return 'none';
}
# If device supports Entity-MIB, index into that to divine model and
# hardware version, otherwise default to sysDescr.
sub model {
my $netgear = shift;
if (defined($index)) {
my $model = $netgear->e_descr();
my $e_hwver = $netgear->e_hwver();
$model = "$model->{$index} $e_hwver->{$index}";
return $model;
}
return $netgear->description();
}
#
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name. If all else fails,
# concatentate ifDesc and ifIndex.
sub interfaces {
my $netgear = shift;
my $partial = shift;
my $interfaces = $netgear->i_index($partial) || {};
my $i_descr = $netgear->i_description($partial) || {};
my $i_name = $netgear->i_name($partial);
my $i_isset = ();
# Replace the description with the ifName field, if set
foreach my $iid ( keys %$i_name ) {
my $name = $i_name->{$iid};
next unless defined $name;
if (defined $name and $name !~ /^\s*$/) {
$interfaces->{$iid} = $name;
$i_isset->{$iid} = 1;
}
}
# Replace the Index with the ifDescr field, appended with index
# number, to deal with devices with non-unique ifDescr.
foreach my $iid ( keys %$i_descr ) {
my $port = $i_descr->{$iid} . '-' . $iid;
next unless defined $port;
next if (defined $i_isset->{$iid} and $i_isset->{$iid} == 1);
$interfaces->{$iid} = $port;
}
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
@@ -94,17 +162,144 @@ sub fw_port {
# 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 {
my $self = shift;
return if $self->model and $self->model =~ m/GS\d/i;
return $self->ng_osver();
my $netgear = shift;
my $serial = $netgear->serial(); # Make sure that index gets primed
if (defined($index)) {
my $os_ver = $netgear->e_swver();
return $os_ver->{$index} if defined $os_ver;
}
return $netgear->ng_gsmosver() if defined $netgear->model and $netgear->model =~ m/GSM\d/i;
return $netgear->ng_fsosver() if defined $netgear->model and $netgear->model =~ m/FS\d/i;
}
sub serial {
my $self = shift;
return if $self->model and $self->model =~ m/GS\d/i;
return $self->ng_serial();
# Use LLDP
sub hasCDP {
my $netgear = shift;
return $netgear->hasLLDP() || $netgear->SUPER::hasCDP();
}
sub c_ip {
my $netgear = shift;
my $partial = shift;
my $cdp = $netgear->SUPER::c_ip($partial) || {};
my $lldp = $netgear->lldp_ip($partial) || {};
my %c_ip;
foreach my $iid ( keys %$cdp ) {
my $ip = $cdp->{$iid};
next unless defined $ip;
$c_ip{$iid} = $ip;
}
foreach my $iid ( keys %$lldp ) {
my $ip = $lldp->{$iid};
next unless defined $ip;
$c_ip{$iid} = $ip;
}
return \%c_ip;
}
sub c_if {
my $netgear = shift;
my $partial = shift;
my $lldp = $netgear->lldp_if($partial) || {};
my $cdp = $netgear->SUPER::c_if($partial) || {};
my %c_if;
foreach my $iid ( keys %$cdp ) {
my $if = $cdp->{$iid};
next unless defined $if;
$c_if{$iid} = $if;
}
foreach my $iid ( keys %$lldp ) {
my $if = $lldp->{$iid};
next unless defined $if;
$c_if{$iid} = $if;
}
return \%c_if;
}
sub c_port {
my $netgear = shift;
my $partial = shift;
my $lldp = $netgear->lldp_port($partial) || {};
my $cdp = $netgear->SUPER::c_port($partial) || {};
my %c_port;
foreach my $iid ( keys %$cdp ) {
my $port = $cdp->{$iid};
next unless defined $port;
$c_port{$iid} = $port;
}
foreach my $iid ( keys %$lldp ) {
my $port = $lldp->{$iid};
next unless defined $port;
$c_port{$iid} = $port;
}
return \%c_port;
}
sub c_id {
my $netgear = shift;
my $partial = shift;
my $lldp = $netgear->lldp_id($partial) || {};
my $cdp = $netgear->SUPER::c_id($partial) || {};
my %c_id;
foreach my $iid ( keys %$cdp ) {
my $id = $cdp->{$iid};
next unless defined $id;
$c_id{$iid} = $id;
}
foreach my $iid ( keys %$lldp ) {
my $id = $lldp->{$iid};
next unless defined $id;
$c_id{$iid} = $id;
}
return \%c_id;
}
sub c_platform {
my $netgear = shift;
my $partial = shift;
my $lldp = $netgear->lldp_rem_sysdesc($partial) || {};
my $cdp = $netgear->SUPER::c_platform($partial) || {};
my %c_platform;
foreach my $iid ( keys %$cdp ) {
my $platform = $cdp->{$iid};
next unless defined $platform;
$c_platform{$iid} = $platform;
}
foreach my $iid ( keys %$lldp ) {
my $platform = $lldp->{$iid};
next unless defined $platform;
$c_platform{$iid} = $platform;
}
return \%c_platform;
}
1;
__END__
@@ -145,6 +340,7 @@ inherited methods.
=over
=item SNMP::Info::Layer2
=item SNMP::Info::Entity
=item SNMP::Info::LLDP
=back
@@ -158,6 +354,8 @@ inherited methods.
MIBs listed in L<SNMP::Info::Layer2/"Required MIBs"> and its inherited
classes.
See L<SNMP::Info::Entity/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its MIB requirements.
=back
@@ -180,7 +378,8 @@ Returns 'netgear'
=item $netgear->model()
Returns description()
Returns concatenation of $e_model and $e_hwver if Entity MIB present,
otherwise returns description()
=item $netgear->os_ver()
@@ -188,7 +387,8 @@ Returns OS Version.
=item $netgear->serial()
Returns Serial Number.
Returns Serial Number if available (older FS switches have no accessible
serial number).
=back
@@ -196,6 +396,10 @@ Returns Serial Number.
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
@@ -226,12 +430,63 @@ 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.
=back
=head2 Topology information
Based upon the software version devices may support Link Layer Discovery
Protocol (LLDP).
=over
=item $netgear->hasCDP()
Returns true if the device is running LLDP.
=item $netgear->c_if()
Returns reference to hash. Key: iid Value: local device port (interfaces)
=item $netgear->c_ip()
Returns reference to hash. Key: iid Value: remote IPv4 address
If multiple entries exist with the same local port, c_if(), with the same IPv4
address, c_ip(), it may be a duplicate entry.
If multiple entries exist with the same local port, c_if(), with different
IPv4 addresses, c_ip(), there is either a non-LLDP device in between two or
more devices or multiple devices which are not directly connected.
Use the data from the Layer2 Topology Table below to dig deeper.
=item $netgear->c_port()
Returns reference to hash. Key: iid Value: remote port (interfaces)
=item $netgear->c_id()
Returns reference to hash. Key: iid Value: string value used to identify the
chassis component associated with the remote system.
=item $netgear->c_platform()
Returns reference to hash. Key: iid Value: Remote Device Type
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.

View File

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

1303
Info/Layer2/Trapeze.pm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
# 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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::MIBS,

View File

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

View File

@@ -34,6 +34,7 @@ use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::AMAP;
# Use LLDP
# (or at least try. The versions I've seen have two problems:
# 1. they report ifIndex values as 'local'; we don't support ifIndex
@@ -42,18 +43,19 @@ use SNMP::Info::MAU;
# )
use SNMP::Info::LLDP;
@SNMP::Info::Layer3::AlcatelLucent::ISA = qw/SNMP::Info::LLDP SNMP::Info::MAU
SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::AlcatelLucent::ISA = qw/SNMP::Info::AMAP SNMP::Info::LLDP
SNMP::Info::MAU SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::AlcatelLucent::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::AMAP::MIBS,
'ALCATEL-IND1-DEVICES' => 'familyOmniSwitch7000',
'ALCATEL-IND1-CHASSIS-MIB' => 'chasEntPhysOperStatus',
'ALU-POWER-ETHERNET-MIB' => 'pethPsePortDetectionStatus',
@@ -70,17 +72,17 @@ delete $MIBS{'POWER-ETHERNET-MIB'};
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS, %SNMP::Info::MAU::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::LLDP::GLOBALS, %SNMP::Info::AMAP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS, %SNMP::Info::MAU::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::LLDP::FUNCS, %SNMP::Info::AMAP::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::MAU::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::LLDP::MUNGE, %SNMP::Info::AMAP::MUNGE,
);
# use MAU-MIB for admin. duplex and admin. speed

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -322,6 +322,8 @@ sub i_ssidbcast {
}
# Wireless switches do not support the standard Bridge MIB
# Wired switches currently (AOS 7.2.0.0) do, but it seems only for
# dot1q ports or access ports that are 'untrusted' ?
sub bp_index {
my $aruba = shift;
my $partial = shift;
@@ -329,10 +331,14 @@ sub bp_index {
my $i_index = $aruba->orig_i_index($partial) || {};
my $ap_index = $aruba->aruba_ap_name($partial) || {};
my %bp_index;
# Collect standard bp_index first
my $wired_bp_index = $aruba->SUPER::bp_index($partial) || {};
my %bp_index = %$wired_bp_index;
foreach my $iid ( keys %$i_index ) {
my $index = $i_index->{$iid};
next unless defined $index;
next if exists $bp_index{$iid}; # Only augment bp_index, don't overwrite any existing mappings
$bp_index{$iid} = $index;
}
@@ -355,7 +361,9 @@ sub fw_port {
my $fw_idx = $aruba->fw_user($partial) || {};
my %fw_port;
my $wired_fw_port = $aruba->SUPER::qb_fw_port($partial) || {};
my %fw_port = %$wired_fw_port;
foreach my $iid ( keys %$fw_idx ) {
if ( $iid
=~ /(\d+\.\d+\.\d+\.\d+\.\d+\.\d+).(\d+\.\d+\.\d+\.\d+\.\d+\.\d+)/
@@ -378,7 +386,9 @@ sub fw_mac {
my $fw_idx = $aruba->fw_user($partial) || {};
my %fw_mac;
my $wired_fw_mac = $aruba->SUPER::qb_fw_mac($partial) || {};
my %fw_mac = %$wired_fw_mac;
foreach my $iid ( keys %$fw_idx ) {
if ( $iid
=~ /(\d+\.\d+\.\d+\.\d+\.\d+\.\d+).(\d+\.\d+\.\d+\.\d+\.\d+\.\d+)/

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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::MIBS,

View File

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

View File

@@ -64,7 +64,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.00_001';
$VERSION = '3.05';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -50,7 +50,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -66,7 +66,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -52,7 +52,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

252
Info/Layer3/CiscoASA.pm Normal file
View File

@@ -0,0 +1,252 @@
# SNMP::Info::Layer3::CiscoASA
# $Id$
#
# Copyright (c) 2013 Moe Kraus
# 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::CiscoASA;
use strict;
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::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
Exporter/;
@SNMP::Info::Layer3::CiscoASA::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,
);
%GLOBALS = (
%SNMP::Info::Layer3::Cisco::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::Cisco::FUNCS,
'mac_table' => 'ifPhysAddress',
);
%MUNGE = (
%SNMP::Info::Layer3::Cisco::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];
}
sub i_description {
my $self = shift;
my $partial = shift;
my $i_descr = $self->orig_i_description($partial) || {};
foreach my $ifindex ( keys %$i_descr ) {
$i_descr->{$ifindex} =~ /'(.*)'/;
$i_descr->{$ifindex} = $1
if defined $1;
}
return $i_descr;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::CiscoASA - Cisco Adaptive Security Appliance
=head1 AUTHOR
Moe Kraus
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $cisco = 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 = $asa->class();
print "SNMP::Info determined this device to fall under subclass: $class\n";
=head1 DESCRIPTION
Subclass for Cisco ASAs
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3::Cisco
=back
=head2 Required MIBs
=over
=item F<CISCO-EIGRP-MIB>
=item Inherited Classes' MIBs
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 $asa->b_mac()
Returns base mac.
Overrides base mac function in L<SNMP::Info::Layer3>.
=item $asa->i_description()
Overrides base interface description function in L<SNMP::Info> to return the
configured interface name instead of "Adaptive Security Appliance
'$configured interface name' interface".
=back
=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::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
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
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::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.
=cut

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer3::Cisco;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,

View File

@@ -46,7 +46,7 @@ use SNMP::Info::EDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -465,15 +465,15 @@ sub i_vlan_membership {
# Some devices support Q-Bridge, if so short circuit and return it
my $q_bridge = $extreme->SUPER::i_vlan_membership($partial);
return $q_bridge if (keys $q_bridge);
return $q_bridge if (ref {} eq ref $q_bridge and scalar keys %$q_bridge);
# Next we try extremeVlanOpaqueTable
my $xos = $extreme->_xos_i_vlan_membership($partial);
return $xos if (keys $xos);
return $xos if (ref {} eq ref $xos and scalar keys %$xos);
# Try older ifStack method
my $extremeware = $extreme->_extremeware_i_vlan_membership($partial);
return $extremeware if (keys $extremeware);
return $extremeware if (ref {} eq ref $extremeware and scalar keys %$extremeware);
return;
}

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -44,7 +44,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

271
Info/Layer3/Lantronix.pm Normal file
View File

@@ -0,0 +1,271 @@
# SNMP::Info::Layer3::Lantronix
# $Id$
#
# Copyright (c) 2012 J R Binks
#
# 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::Lantronix;
use strict;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Lantronix::ISA = qw/
SNMP::Info::Layer3
Exporter
/;
@SNMP::Info::Layer3::Lantronix::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
'LANTRONIX-MIB' => 'products',
'LANTRONIX-SLC-MIB' => 'slcNetwork',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
'slc_os_ver' => 'slcSystemFWRev',
'slc_serial' => 'slcSystemSerialNo',
'slc_model' => 'slcSystemModel',
'slc_psu_a_status' => 'slcDevPowerSupplyA',
'slc_psu_b_status' => 'slcDevPowerSupplyB',
);
%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
# General notes:
#
# Products like the EDS have very minimal MIB support for the basics.
# Much information has to be derived from sysDescr string.
#
sub vendor {
return 'lantronix';
}
sub os {
my $device = shift;
my $descr = $device->description() || '';
my $os;
# On EDS, it is called the "Evolution OS"
# Not sure what, if any, name it has a name on other products
$os = 'EvolutionOS' if ( $descr =~ m/Lantronix EDS\w+ V([\d\.R]+)/ );
return 'LantronixOS';
}
sub os_ver {
my $device = shift;
my $descr = $device->description() || '';
my $slc_os_ver = $device->slc_os_ver;
my $os_ver;
return $slc_os_ver if defined $slc_os_ver;
return unless defined $descr;
# EDS: "Lantronix EDS16PR V4.0.0.0R15 (1307.....X)"
$os_ver = $1 if ( $descr =~ m/Lantronix EDS\w+ V([\d\.R]+)/ );
return $os_ver;
}
sub serial {
my $device = shift;
my $descr = $device->description() || '';
my $slc_serial = $device->slc_serial;
my $serial;
return $slc_serial if defined $slc_serial;
return unless defined $descr;
# EDS: "Lantronix EDS16PR V4.0.0.0R15 (1307.....X)"
$serial = $1 if ( $descr =~ m/Lantronix EDS\w+ V[\d\.R]+ \((\w+)\)/ );
return $serial;
}
sub model {
my $device = shift;
my $descr = $device->description() || '';
my $slc_model = $device->slc_model;
my $model;
return $slc_model if defined $slc_model;
return unless defined $descr;
# EDS: "Lantronix EDS16PR V4.0.0.0R15 (1307.....X)"
$model = $1 if ( $descr =~ m/Lantronix (EDS\w+)/ );
return $model;
}
sub ps1_status {
my $device = shift;
my $slc_psu_a_status = $device->slc_psu_a_status;
return $slc_psu_a_status if defined $slc_psu_a_status;
return;
}
sub ps2_status {
my $device = shift;
my $slc_psu_b_status = $device->slc_psu_b_status;
return $slc_psu_b_status if defined $slc_psu_b_status;
return;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::Lantronix - SNMP Interface to Lantronix devices such as terminal servers
=head1 AUTHOR
J R Binks
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $device = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'mydevice',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $device->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Lantronix devices such as terminal servers.
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=back
=head2 Required MIBs
=over
=item F<LANTRONIX-MIB>
=item F<LANTRONIX-SLC-MIB>
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP.
=over
=item $device->vendor()
Returns 'lantronix'.
=item $device->os()
Returns 'EvolutionOS' for EDS devices.
=item $device->os_ver()
Returns the software version.
=item $device->model()
Returns the model.
=item $device->serial()
Returns the serial number.
=item $device->ps1_status()
Power supply 1 status
=item $device->ps2_status()
Power supply 2 status
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head1 TABLE ENTRIES
These are methods that return tables of information in the form of a reference
to a hash.
=over
=back
=head2 Overrides
=over
=item $device->i_ignore()
Returns reference to hash. Increments value of IID if port is to be ignored.
=back
=head2 Lantronix specific items
None at present.
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::SONMP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -61,7 +61,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::RapidCity::MIBS,

View File

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

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer2::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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%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.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer7;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer7::MIBS,

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer7;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer7::MIBS,

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer7;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = (
%SNMP::Info::Layer7::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = ( 'MAU-MIB' => 'mauMod' );

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = ( 'POWER-ETHERNET-MIB' => 'pethPsePortDetectionStatus' );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.00_001';
$VERSION = '3.05';
%MIBS = ( 'RAPID-CITY' => 'rapidCity', );

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