Compare commits

...

54 Commits
3.20 ... 3.25

Author SHA1 Message Date
Oliver Gorwits
db6c3573c1 release 3.25 2015-02-25 22:09:18 +00:00
Jeroen van Ingen
c8cbdaef8a Add more model name mappings to Layer2::HP (includes several 2530 models and 5400R series) 2015-02-23 15:52:07 +01:00
Oliver Gorwits
2c7243b87d release 3.24 2015-02-04 18:42:16 +00:00
Eric A. Miller
46515dd5d3 Support RSTP and ieee8021d STP operating modes in RapidCity 2015-01-22 22:16:34 -05:00
Eric A. Miller
7eb799adc6 Fix incorrect FDB ID to VLAN ID mapping in Bridge and L3:Enterasys 2015-01-22 21:57:06 -05:00
Eric A. Miller
c85b61bbd0 Fix single instance leafs defined in %FUNCS to behave like table leafs; return a reference to a hash and don't add zero instance identifier 2014-12-18 22:05:33 -05:00
Oliver Gorwits
045ff8b789 release 3.23 2014-12-09 07:26:25 +00:00
Eric A. Miller
7b7f197439 Fix Cisco VLAN membership issue introduced in 3.22 related to capturing port VLANs on Cisco interfaces which are configured for trunking but are not in operational trunking mode 2014-12-08 21:12:01 -05:00
Eric A. Miller
9e1c462836 Enhanced STP support for L3::Extreme. Document previous STP changes in ChangeLog. 2014-12-04 23:19:06 -05:00
Eric A. Miller
e97e8309cb Update MIB used in L1::Asante 2014-12-04 23:11:36 -05:00
Oliver Gorwits
8c5be1a47d release 3.22 2014-12-02 13:20:53 +00:00
Jeroen van Ingen
afef2e6732 Don't include LLDP in Layer2/HP.om directly, it's inherited via Layer3 class now 2014-12-02 13:45:53 +01:00
Jeroen van Ingen
7b2051b55c Add LLDP into base Layer2 class
...and update ChangeLog
2014-12-02 13:35:00 +01:00
Jeroen van Ingen
8e470a2d72 pod additions for Layer3.pm 2014-12-02 13:24:39 +01:00
Jeroen van Ingen
35213d5cb2 Add LLDP into base Layer3 class 2014-12-02 13:22:20 +01:00
Oliver Gorwits
b24f1a8ac4 release 3.21_001 2014-11-14 00:28:27 +00:00
Oliver Gorwits
5454ab577e In LLDP.pm don't create a variable in a conditional 2014-11-14 00:28:14 +00:00
Eric A. Miller
046c15a074 Merge branch 'master' of ssh://git.code.sf.net/p/snmp-info/code 2014-11-11 23:13:45 -05:00
Eric A. Miller
ddb9dda894 Add stp_i_mac() to get per STP instance bridge address 2014-11-11 23:09:21 -05:00
Eric A. Miller
d7047bda13 Add methods to gather PVST information in L3::Foundry 2014-11-11 22:55:30 -05:00
Eric A. Miller
c7934f4d10 Enable determination of spanning tree version running on Avaya switches and add methods to gather information from multiple instances 2014-11-11 22:05:59 -05:00
Eric A. Miller
c97dc06177 Add stp_i_time(), stp_i_ntop(), stp_i_root(), stp_i_root_port(), stp_i_priority() methods which return a hash reference to ease API compatibility with MST and PVST implementations indexed by a spanning tree instance id. 2014-11-11 22:02:07 -05:00
Eric A. Miller
76b1faa159 POD syntax fix in L3::Extreme 2014-11-11 22:01:23 -05:00
Eric A. Miller
1e0438857e Document i_pvid() in L3::BayRS 2014-11-11 22:00:47 -05:00
Eric A. Miller
b6494effa6 POD updates, add version to MRO 2014-11-11 22:00:01 -05:00
Eric A. Miller
a359184b83 Ignore build files 2014-11-11 21:58:13 -05:00
Bill Fenner
ce50a3f627 Recognize C2700 and C3700 as Layer2::Aironet 2014-11-10 20:39:08 +00:00
Eric A. Miller
ee7d254329 Capture Aruba AP software version when available 2014-11-09 18:01:11 -05:00
Eric A. Miller
d674b22b39 Correct munging of stp_root() 2014-11-09 17:53:48 -05:00
Eric A. Miller
47954aba8e Correct munging of dot1dStpPortDesignatedPort in stp_p_port() and i_stp_port() methods 2014-11-09 17:43:41 -05:00
Eric A. Miller
09e18e9b64 Capture Aruba AP hardware version when available 2014-11-08 12:21:31 -05:00
Eric A. Miller
163ba86196 Add i_vlan_membership_untagged() to L3::Extreme 2014-11-08 10:55:39 -05:00
Eric A. Miller
e57e7d99d5 Add i_vlan_membership_untagged() to L3::AlteonAD 2014-11-08 10:06:12 -05:00
Eric A. Miller
7ad449303b L3::Force10 now inherits i_vlan_membership() and i_vlan_membership_untagged() from Bridge and only overrides VLAN mapping 2014-11-08 09:52:41 -05:00
Eric A. Miller
49b853de1a Document i_vlan_membership_untagged() 2014-11-08 09:40:07 -05:00
Eric A. Miller
03a81ad4be Add i_vlan_membership_untagged() method to L3::Aruba 2014-11-08 09:36:42 -05:00
Eric A. Miller
eb046b6a61 L3::Juniper now inherits i_vlan_membership() and i_vlan_membership_untagged() from Bridge and only overrides VLAN mapping
Correct VLAN mapping of FDB entries in L3::Juniper
2014-11-08 08:50:44 -05:00
Eric A. Miller
1bf62f9524 Use defined as test to catch vlan zero 2014-11-08 08:33:15 -05:00
Eric A. Miller
9aca213a5f Add i_vlan_membership_untagged() to L3::F5, L2::C1900, and L2::HP4000 2014-11-06 23:02:35 -05:00
Eric A. Miller
ce8bb68200 Add i_vlan_membership_untagged() to RapidCity 2014-11-06 21:31:56 -05:00
Eric A. Miller
7ee562c5ac i_vlan_membership_untagged() should return HoA 2014-11-05 22:58:35 -05:00
Eric A. Miller
bdb719004d Document i_vlan_membership_untagged() 2014-11-05 21:54:48 -05:00
Eric A. Miller
842ac96d48 Capture port VLANs on Cisco interfaces which are configured for trunking but are not in operational trunking mode 2014-11-05 21:07:11 -05:00
Eric A. Miller
5bb9011fb4 Override qb_fdb_index() in L3::Dell since the dot1qTpFdbTable uses dot1qVlanIndex rather than dot1qFdbId as an index 2014-11-01 20:20:12 -04:00
Eric A. Miller
97564f50b8 New method qb_fdb_index() for VLAN ID to FDB ID mapping. 2014-11-01 20:18:58 -04:00
Eric A. Miller
efcf6a0db3 Support for Fortinet devices in new class L3::Fortinet 2014-11-01 19:37:22 -04:00
Eric A. Miller
9e813784f7 Remove qb_fw_vlan() override from L2::HP as it should no longer be necessary. 2014-10-30 23:38:39 -04:00
Eric A. Miller
aaca03062b Use FDB ID to VID mapping if available to determine end station VLAN.
Use dot1qVlanCurrentTable if available to capture dynamic and static VLANs, fall back to dot1qVlanStaticTable if not available.
New method i_vlan_membership_untagged() for VLANs transmitted as untagged frames.
Add partial of zero to L3::Enterasys methods which use dot1qVlanCurrentTable to work around non standard TimeFilter implementation.
2014-10-30 23:36:12 -04:00
Eric A. Miller
c1242017e2 [#64] Misdetection: Wireless APs 2014-10-30 22:44:18 -04:00
Eric A. Miller
5f1426a0a3 Support obtaining FDB in Avaya SPBM edge deployments in L2::Baystack
NOTE: This requires a RAPID-CITY MIB with the rcBridgeSpbmMacTable
2014-10-21 23:23:20 -04:00
Eric A. Miller
e84225fb23 Use the same method for both i_vlan and i_pvid in BayRS 2014-10-21 20:53:28 -04:00
Eric A. Miller
32c0e64bfb Ignore komodo files 2014-10-21 20:51:57 -04:00
Jeroen van Ingen
0793ff31f5 No longer use default i_ignore() subs in L2/L3/L7 base classes 2014-10-21 16:54:49 +02:00
Jeroen van Ingen
d3c2c1b607 Remove all trailing whitespace from ChangeLog entries 2014-10-21 15:15:17 +02:00
113 changed files with 1773 additions and 369 deletions

7
.gitignore vendored
View File

@@ -1,2 +1,9 @@
*.db
SNMP
*.komodo*
blib/
META.*
MYMETA.*
Makefile
Makefile.old
pm_to_blib

135
ChangeLog
View File

@@ -1,5 +1,71 @@
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
version 3.25 (2015-02-25)
[ENHANCEMENTS]
* Add new model name mappings for to Layer2::HP
version 3.24 (2015-02-04)
[ENHANCEMENTS]
* Support RSTP and ieee8021d STP operating modes in RapidCity
[BUG FIXES]
* Fix single instance leafs defined in %FUNCS to behave like table leafs
* Fix incorrect FDB ID to VLAN ID mapping in Bridge and L3:Enterasys
version 3.23 (2014-12-09)
[ENHANCEMENTS]
* Update MIB used in L1::Asante
* Enhanced STP support for L3::Extreme
[BUG FIXES]
* Fix Cisco VLAN membership issue introduced in 3.22 related to capturing
port VLANs on Cisco interfaces which are configured for trunking but
are not in operational trunking mode
version 3.22 (2014-12-02)
[NEW FEATURES]
* Support obtaining FDB in Avaya SPBM edge deployments in L2::Baystack
NOTE: This requires a RAPID-CITY MIB with the rcBridgeSpbmMacTable
* Support for Fortinet devices in new class L3::Fortinet
[ENHANCEMENTS]
* Include LLDP support in base Layer2 and Layer3 classes. Due to the
widespread adoption of LLDP, this should improve mapping networks
when devices aren't supported in a more specific class.
* No longer ignore interfaces based on name, in base L2/L3/L7 device
classes. For several device classes SNMP::Info will now return tunnel
interfaces and/or loopbacks, if present.
* Use dot1qVlanCurrentTable if available to capture dynamic and static
VLANs, fall back to dot1qVlanStaticTable if not available.
* New method i_vlan_membership_untagged() for VLANs transmitted as
untagged frames.
* Capture Aruba AP hardware and software version when available
* New STP methods to support gathering information from devices running
mutiple STP instances such as PVST and MST
* Enhanced STP support for Avaya and Foundry classes
[BUG FIXES]
* [#64] Misdetection: Wireless APs, add products MIB to L2::3Com
* Use FDB ID to VID mapping if available to determine end station VLAN
rather than assuming they are the same.
* Capture port VLANs on Cisco interfaces which are configured for
trunking but are not in operational trunking mode
* Correct munging of stp_p_port(), i_stp_port(), and stp_root() methods
in Bridge
* In LLDP.pm don't create a variable in a conditional
version 3.20 (2014-09-08)
[NEW FEATURES]
@@ -63,7 +129,7 @@ version 3.16 (2014-06-23)
[BUG FIXES]
* Use CiscoVTP methods to get interface VLAN in L3::Cisco rather than
solely relying on the interface description.
solely relying on the interface description.
version 3.15 (2014-07-10)
@@ -215,7 +281,7 @@ version 3.08 (2013-10-22)
* [#68] Fix device_port entries for switches with non-unique
ifDesc (Nic Bernstein)
* Don't try to munge undef values
* [#49] Perl 5.18 UNIVERSAL::can change could cause infinite loop
* [#49] Perl 5.18 UNIVERSAL::can change could cause infinite loop
* Silence warning from uninitialized variable in L3::Passport e_descr()
version 3.07 (2013-10-01)
@@ -242,12 +308,11 @@ version 3.05 (2013-08-16)
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.
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)
@@ -277,7 +342,7 @@ version 3.01 (2013-04-13)
they can be called directly, sonmp_ip(), cdp_ip(), etc.
* L2::Bay and L2::Foundry have been removed from the distribution. Both
classes were depreciated and all functionality is available through
L2::Baystack and L3::Foundry.
L2::Baystack and L3::Foundry.
[NEW FEATURES]
@@ -307,7 +372,7 @@ version 3.01 (2013-04-13)
[ENHANCEMENTS]
* UNIVERSAL::can() now works with dynamic methods
* UNIVERSAL::can() now works with dynamic methods
* Dynamically generated methods are added to symbol table to avoid
AUTOLOAD on subsequent calls
* L2::Airespace now supports 802.11n client tx rates
@@ -339,20 +404,20 @@ version 2.09 (2012-11-28)
* New method i_ssidmac() to get BSSID's from AP's with initial support
in L2::Aironet and Airespace classes
* Support for Avaya Secure Routers in new class L3::Tasman
* Add EDP and LLDP L2 Topology to L3::Extreme
* Add EDP and LLDP L2 Topology to L3::Extreme
* [3185393] Support for Juniper SSL VPN in new class L7::Neoteris
* [3381027] Support for Cisco Nexus in new class L3::Nexus
* [3381027] Support for Cisco Nexus in new class L3::Nexus
* [1424336] Support for Extreme Discovery Protocol (EDP)
[ENHANCEMENTS]
* [3017571] Add LLDP support for NetSNMP device class (begemot)
* [3017571] Add LLDP support for NetSNMP device class (begemot)
* [3418918] Extreme devices now report OS as either extremeware or xos
* [2809045] Strip preceding netscreen from model name in L3::Netscreen
* [] Classify Linksys 2024 as L3::Dell (Rogier Krieger)
[BUG FIXES]
* Fixed logic to return cached data for table methods when available and
not a partial fetch
* Fix typo in PoD for Bridge.pm and CiscoConfig.pm (William Bulley)
@@ -372,7 +437,7 @@ version 2.08 (2012-07-15)
* Pseudo ENTITY-MIB methods added to L3::Juniper for hardware information
* Add method to report current transmit power of the radio interface,
dot11_cur_tx_pwr_mw(), in Airespace class
dot11_cur_tx_pwr_mw(), in Airespace class
* [3085411] Activate L3 properties for Netgear GSM7224v2 (phishphreek)
* [3085413] SNMP OIDs for Netgear Serial and OS Ver (phishphreek)
* [3286549] Dell LLDP Support (Nico Giefing)
@@ -421,7 +486,7 @@ version 2.06 (2011-09-28)
* [3344843] Fix returning serial() and os_ver() for web-managable HP
switches, introduced by HP/HP4000 class split, reported by J R Binks
* [2809033] Put L2-only Cisco blade switches in L3::C6500
* [3408506] Fix uninitialized value in IPv6 when neighbor state is
* [3408506] Fix uninitialized value in IPv6 when neighbor state is
incomplete (Michael Borgelt)
version 2.05 (2011-06-23)
@@ -437,13 +502,13 @@ version 2.04 (2011-03-31)
(Brian De Wolf)
+ Added L3::Pf for FreeBSD PFSense Firewalls (max)
* Added specific functions for neighbor mgmt addresses to CDP class
* Implemented os_bin() method in CiscoStats
* Implemented os_bin() method in CiscoStats
+ [2980787] Fix for C1900 bp_index not containing interfaces.
(Brian De Wolf)
+ [2599795] Added vendor_i_type() method to HP and HP4000 clases
+ [2688801] Minor modification for obscure Proxim/Orinoco device
(jrbinks)
+ [3051443] Add PoE measured power per port to Cisco, Extrme and HP
+ [3051443] Add PoE measured power per port to Cisco, Extrme and HP
classes (jeroenvi)
* Minor tweaks to support devices without sysServices
* Added Cisco CBS3xxx blade switches to L3::C6500
@@ -481,7 +546,7 @@ version 2.00 (08/01/08)
+ Support for Alcatel-Lucent Service Router via L3::Timetra
+ Support for Alcatel-Lucent OmniAccess via L2::Aruba
* Silence warnings in MAU due to uninitialized variables
* Silence warnings in MAU due to uninitialized variables
version 1.09 (07/22/08) - Beta/developer release
+ Added support for HP ProCurve Foundry OEM switches, such as the 9300
@@ -505,7 +570,7 @@ version 1.09 (07/22/08) - Beta/developer release
+ Add support to specify MIB to resolve leaf names conflicts in
%GLOBALS and %FUNCS.
+ Added munge_port_list() and modify_port_list() methods to assist in
working with PortList objects.
working with PortList objects.
+ Added set_multi() method to enable a SNMP set command on several new
values in one request. Required for complex set operations
on some agents.
@@ -532,7 +597,7 @@ version 1.05 (11/25/07) - CVS only. No official release
Augenstein)
+ Added device specific support for LLDP in L2::HP, L2::Baystack,
L3::Enterasys and L3::Foundry
+ Added support for Enterasys devices as new class L3::Enterasys
+ Added support for Enterasys devices as new class L3::Enterasys
+ Added support for Dell PowerConnect switches as new class L3::Dell
+ Added basic support for generic routers running Microsoft Windows OS
as new class L3::Microsoft (begemot)
@@ -556,7 +621,7 @@ version 1.05 (11/25/07) - CVS only. No official release
+ New class IEEE802dot11 class for generic standards based wireless AP
support to include i_ssidlist()and i_80211channel() methods.
+ L2::Orinoco inherits from new IEEE802dot11 for i_ssidlist()and
i_80211channel() support.
i_80211channel() support.
+ Added new VLAN methods i_pvid(), i_vlan_membership(), set_i_pvid(),
set_i_vlan(), set_add_i_vlan_tagged(), set_remove_i_vlan_tagged() to
Bridge, CiscoVTP, Extreme, HP, and RapidCity classes.
@@ -618,14 +683,14 @@ version 1.04 (07/08/06)
+ Added C1130 and C1240 to L2::Aironet (Ralf Gross)
+ Added detection for Cisco 2960, 2940, 3400 w/ MetroBase
+ Added generic L2::Cisco Class
* Corrected detection for Cisco Supervisor Engine 2 and 32 (IOS).
* Corrected detection for Cisco Supervisor Engine 2 and 32 (IOS).
* Fixed warnings in CiscoStack
* Updated ProCurve HP device detection for newer firmwares
version 1.03 (04/14/06) - Beta/developer release
* Use ipNetToMedia table instead of atTable for ARP
* Remove CiscoStack from Layer3::C4000
* Fixed bug in MAU class when polling devices without MAU-MIB support
* Fixed bug in MAU class when polling devices without MAU-MIB support
version 1.01 (04/08/06) - Beta/developer release
+ Change version numbers to X.XX format. Odd releases are beta
@@ -691,15 +756,15 @@ version 1.0 (04/07/06) - CVS only. No official release
translated properly
verison 0.9 (11/15/04)
+ ** Added full Nortel/Bay/BayStack support
by new developer Eric Miller.
+ ** Added full Nortel/Bay/BayStack support
by new developer Eric Miller.
L2::Bay now depricated.
+ Added Alteon Ace support (Eric Miller)
+ Added Nortel Cotivity support (Eric Miller)
+ Added Nortel BayRS support (Eric Miller)
+ Added Nortel Centillion support (Eric Miller)
+ Added Nortel AP 222x support (Eric Miller)
+ Added Orinco AP support (Eric Miller)
+ Added Orinco AP support (Eric Miller)
+ Added i_lastchange() per suggestion of Nicolai Petri
+ Added BULKWALK patch by Bradley Baetz - This should
greatly speed up requests on SNMPv2c devices.
@@ -749,27 +814,27 @@ version 0.6 (06/18/03)
version 0.5 (06/10/03)
* Added ability to get paritial tables. For example to get the
IP routing table for 128.114.* you can do
IP routing table for 128.114.* you can do
$ipr = $dev->ipr_dest('128.114');
* Added IP Routing Table entries from RFC1213 to SNMP::Info
* minor bug fixes
version 0.4 (04/29/03)
* BIG CHANGE ! Internal Data structure has changed.
* BIG CHANGE ! Internal Data structure has changed.
* Added clear_cache() method
* Added NO_SUCH support for snmpget (TABLE) calls to get SNMP MIB II data
* Added NO_SUCH support for snmpget (TABLE) calls to get SNMP MIB II data
from SNMP Version 1 devices.
* Methods load_all() and all() have changed their return value. Sorry but
the API had to change.
* New object methods snmp_comm(), snmp_ver(), store(), class(), nosuch()
to make it more OO happy.
* Globals are now cached
* Added new argument 'AutoSpecify' to new() to auto-connect with subclass
* Added new argument 'AutoSpecify' to new() to auto-connect with subclass
detected in device_type()
* New method specify() returns a new subclass object
* Subclasses are automatically loaded when specify or autospecify is used!
* Added methods for Interface statistics (ifInOctets ...)
* Added methods for Memory and CPU statistics
* Added methods for Memory and CPU statistics
* Added SNMP::Info::Entity, moved out of L2-HP
* Added SNMP::Info::Layer2::Aironet
@@ -782,7 +847,7 @@ version 0.3 (03/06/03)
Thanks to Martin Lorensen <martin /at- lorensen.dk>
* Removed requirement for SNMP in the Makefile.PL and moved it to t/prereq.t
so that the Module will install via CPAN without trying to install the old
4.2.0 version of SNMP on CPAN. Will now fail in the test phase.
4.2.0 version of SNMP on CPAN. Will now fail in the test phase.
Thanks again to Martin Lorensen <martin /at- lorensen.dk>
* Moved tests from test.pl to t/*
@@ -792,10 +857,10 @@ version 0.2 (02/19/03)
* Fixed HP Detection in device_type()
* Added Spanning Tree Protocol (STP) methods to SNMP::Info::Bridge
* Removed HP Specific MIBS in SNMP::Info::Layer2 and cleaned up model()
* Added poke for Bay 450 Switches
* Added poke for Bay 450 Switches
* Mapped HP Part Numbers to model numbers J4812A => 2512 in
SNMP::Info::Layer2::HP
version 0.1 (12/30/02)
* Initial Release
* SubClasses Included:
@@ -805,13 +870,13 @@ version 0.1 (12/30/02)
* SNMP::Info::MAU
* SNMP::Info::Layer1
o SNMP::Info::Layer1::Allied
o SNMP::Info::Layer1::Asante
o SNMP::Info::Layer1::Asante
* SNMP::Info::Layer2
o SNMP::Info::Layer2::Bay
o SNMP::Info::Layer2::C1900
o SNMP::Info::Layer2::C2900
o SNMP::Info::Layer2::Catalyst
o SNMP::Info::Layer2::HP
o SNMP::Info::Layer2::HP
* SNMP::Info::Layer3
o SNMP::Info::Layer3::Aironet
o SNMP::Info::Layer3::Foundry

40
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.20';
$VERSION = '3.25';
=head1 NAME
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.20
SNMP::Info - Version 3.25
=head1 AUTHOR
@@ -395,6 +395,12 @@ F<MAU-MIB> (RFC2668). Some Layer2 devices use this for extended Ethernet
See documentation in L<SNMP::Info::MAU> for details.
=item SNMP::Info::MRO
Method resolution introspection for SNMP::Info
See documentation in L<SNMP::Info::MRO> for details.
=item SNMP::Info::NortelStack
F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
@@ -778,6 +784,12 @@ Subclass for Force10 devices.
See documentation in L<SNMP::Info::Layer3::Force10> for details.
=item SNMP::Info::Layer3::Fortinet
Subclass for Fortinet devices.
See documentation in L<SNMP::Info::Layer3::Fortinet> for details.
=item SNMP::Info::Layer3::Foundry
Subclass for Brocade (Foundry) Network devices.
@@ -1510,6 +1522,7 @@ sub device_type {
9303 => 'SNMP::Info::Layer3::PacketFront',
10002 => 'SNMP::Info::Layer2::Ubiquiti',
12325 => 'SNMP::Info::Layer3::Pf',
12356 => 'SNMP::Info::Layer3::Fortinet',
14179 => 'SNMP::Info::Layer2::Airespace',
14525 => 'SNMP::Info::Layer2::Trapeze',
14823 => 'SNMP::Info::Layer3::Aruba',
@@ -1665,7 +1678,7 @@ sub device_type {
# Starting with IOS 15, Aironet reports sysServices 6, even though
# it still is the same layer2 access point.
$objtype = 'SNMP::Info::Layer2::Aironet'
if ($desc =~ /\b(C1100|C1130|C1140|AP1200|C350|C1200|C1240|C1250)\b/
if ($desc =~ /\b(C1100|C1130|C1140|AP1200|C350|C1200|C1240|C1250|C2700|C3700)\b/
and $desc =~ /\bIOS\b/ );
# Airespace (WLC) Module
@@ -3404,7 +3417,7 @@ sub munge_mac {
=item munge_prio_mac()
Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
Takes an 2-byte octet stream (HEX-STRING) and returns a colon separated ASCII
hex string.
=cut
@@ -3418,6 +3431,22 @@ sub munge_prio_mac {
return;
}
=item munge_prio_port()
Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
hex string.
=cut
sub munge_prio_port {
my $mac = shift;
return unless defined $mac;
return unless length $mac;
$mac = join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){1}[0-9A-F][0-9A-F]$/i;
return;
}
=item munge_octet2hex()
Takes a binary octet stream and returns an ASCII hex string
@@ -4516,7 +4545,8 @@ sub _validate_autoload_method {
my $table_leaf = 0;
if ( !$globals->{$attr}
&& ( defined $indexes && scalar( @{$indexes} ) > 0 ) )
&& ( ( defined $indexes && scalar( @{$indexes} ) > 0 )
|| $funcs->{$attr} ))
{
$table_leaf = 1;
}

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (); # IF-MIB

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
@@ -84,6 +84,17 @@ $VERSION = '3.20';
'bs_to' => 'dot1dStaticAllowedToGoTo',
'bs_status' => 'dot1dStaticStatus',
# These leafs are not part of a table, but placed here
# to return a hash reference to ease API compatibility with
# MST and PVST implementations indexed by a spanning tree
# instance id
'stp_i_mac' => 'dot1dBaseBridgeAddress',
'stp_i_time' => 'dot1dStpTimeSinceTopologyChange',
'stp_i_ntop' => 'dot1dStpTopChanges',
'stp_i_root' => 'dot1dStpDesignatedRoot',
'stp_i_root_port' => 'dot1dStpRootPort',
'stp_i_priority' => 'dot1dStpPriority',
# Spanning Tree Protocol Table : dot1dStpPortTable
'stp_p_id' => 'dot1dStpPort',
'stp_p_priority' => 'dot1dStpPortPriority',
@@ -125,15 +136,18 @@ $VERSION = '3.20';
'b_mac' => \&SNMP::Info::munge_mac,
'fw_mac' => \&SNMP::Info::munge_mac,
'bs_mac' => \&SNMP::Info::munge_mac,
'stp_root' => \&SNMP::Info::munge_mac,
'stp_root' => \&SNMP::Info::munge_prio_mac,
'stp_i_mac' => \&SNMP::Info::munge_mac,
'stp_i_root' => \&SNMP::Info::munge_prio_mac,
'stp_p_root' => \&SNMP::Info::munge_prio_mac,
'stp_p_bridge' => \&SNMP::Info::munge_prio_mac,
'stp_p_port' => \&SNMP::Info::munge_prio_mac,
'stp_p_port' => \&SNMP::Info::munge_prio_port,
'qb_cv_egress' => \&SNMP::Info::munge_port_list,
'qb_cv_untagged' => \&SNMP::Info::munge_port_list,
'qb_v_egress' => \&SNMP::Info::munge_port_list,
'qb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
'qb_v_untagged' => \&SNMP::Info::munge_port_list,
'qb_cv_untagged' => \&SNMP::Info::munge_port_list,
);
@@ -163,10 +177,20 @@ sub qb_fw_vlan {
my $partial = shift;
my $qb_fw_port = $bridge->qb_fw_port($partial);
my $qb_fdb_ids = $bridge->qb_fdb_index() || {};
my $qb_fw_vlan = {};
foreach my $idx ( keys %$qb_fw_port ) {
my ( $fdb_id, $mac ) = _qb_fdbtable_index($idx);
$qb_fw_vlan->{$idx} = $fdb_id;
# Many devices do not populate the dot1qVlanCurrentTable, so default
# to FDB ID = VID, but if we have a mapping use it.
my $vlan = $fdb_id;
# defined as test since some devices have a vlan 0
if (defined $qb_fdb_ids->{$fdb_id}) {
$vlan = $qb_fdb_ids->{$fdb_id};
}
$qb_fw_vlan->{$idx} = $vlan;
}
return $qb_fw_vlan;
}
@@ -189,6 +213,25 @@ sub qb_i_vlan_t {
return $i_vlan;
}
sub qb_fdb_index {
my $bridge = shift;
my $partial = shift;
# Some devices may not implement TimeFilter in a standard manner
# appearing to loop on this request. Override in the device class,
# see Enterasys for example.
my $qb_fdb_ids = $bridge->dot1qVlanFdbId() || {};
# Strip the TimeFilter
my $vl_fdb_index = {};
for my $fdb_entry (keys(%$qb_fdb_ids)) {
(my $vlan = $fdb_entry) =~ s/^\d+\.//;
$vl_fdb_index->{$qb_fdb_ids->{$fdb_entry}} = $vlan;
}
return $vl_fdb_index;
}
# Most devices now support Q-BRIDGE-MIB, fall back to
# BRIDGE-MIB for those that don't.
sub fw_mac {
@@ -343,20 +386,31 @@ sub i_vlan_membership {
my $bridge = shift;
my $partial = shift;
my $index = $bridge->bp_index();
# Use VlanCurrentTable if available since it will include dynamic
# VLANs. However, some devices do not populate the table.
my $v_ports = $bridge->qb_cv_egress() || $bridge->qb_v_egress();
return $bridge->_vlan_hoa($v_ports, $partial);
}
sub i_vlan_membership_untagged {
my $bridge = shift;
my $partial = shift;
# Use VlanCurrentTable if available since it will include dynamic
# VLANs. However, some devices do not populate the table.
my $v_ports = $bridge->qb_cv_untagged() || $bridge->qb_v_untagged();
# 11/07 - Todo: Issue with some devices trying to query VlanCurrentTable
# as table may grow very large with frequent VLAN changes.
# 06/08 - VlanCurrentTable may be due to timefilter, should query with
# zero partial for no time filter.
# my $v_ports = $bridge->qb_cv_egress() || $bridge->qb_v_egress();
return $bridge->_vlan_hoa($v_ports, $partial);
}
my $v_ports = $bridge->qb_v_egress() || {};
sub _vlan_hoa {
my $bridge = shift;
my ( $v_ports, $partial ) = @_;
my $i_vlan_membership = {};
my $index = $bridge->bp_index();
my $vlan_hoa = {};
foreach my $idx ( keys %$v_ports ) {
next unless ( defined $v_ports->{$idx} );
my $portlist = $v_ports->{$idx};
@@ -376,10 +430,10 @@ sub i_vlan_membership {
my $ifindex = $index->{$port};
next unless ( defined($ifindex) ); # shouldn't happen
next if ( defined $partial and $ifindex !~ /^$partial$/ );
push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
push( @{ $vlan_hoa->{$ifindex} }, $vlan );
}
}
return $i_vlan_membership;
return $vlan_hoa;
}
sub set_i_pvid {
@@ -649,11 +703,21 @@ IDs. These are the VLANs which are members of the egress list for the port.
print "Port: $port VLAN: $vlan\n";
}
=item $bridge->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the untagged egress list for
the port.
=item $bridge->qb_i_vlan_t()
Returns reference to hash: key = C<dot1dBasePort>, value = either 'trunk' for
tagged ports or the VLAN ID.
=item $bridge->qb_fdb_index()
Returns reference to hash: key = VLAN ID, value = FDB ID.
=item $bridge->v_index()
Returns VLAN IDs
@@ -707,6 +771,48 @@ to this port.
=back
=head2 Spanning Tree Instance Globals
These are not part of a table, but return a hash reference to ease API
compatibility with MST and PVST implementations indexed by a spanning tree
instance id.
=over
=item $bridge->stp_i_time()
Returns time since last topology change detected. (100ths/second)
(C<dot1dStpTimeSinceTopologyChange>)
=item $bridge->stp_i_time()
Returns the total number of topology changes detected.
(C<dot1dStpTopChanges>)
=item $bridge->stp_i_root()
Returns root of STP.
(C<dot1dStpDesignatedRoot>)
=item $bridge->stp_i_root_port()
Returns the port number of the port that offers the lowest cost path
to the root bridge.
(C<dot1dStpRootPort>)
=item $bridge->stp_i_priority()
Returns the port number of the port that offers the lowest cost path
to the root bridge.
(C<dot1dStpPriority>)
=back
=head2 Spanning Tree Protocol Table (C<dot1dStpPortTable>)
Descriptions are straight from F<BRIDGE-MIB.my>

View File

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

View File

@@ -43,7 +43,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::IEEE802dot3ad::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
@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.20';
$VERSION = '3.25';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -149,6 +149,7 @@ sub i_vlan {
my $port_vlan = $vtp->vtp_trunk_native($partial) || {};
my $i_vlan = $vtp->i_vlan2($partial) || {};
my $trunk_dyn = $vtp->vtp_trunk_dyn($partial) || {};
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
my %i_vlans;
@@ -165,8 +166,17 @@ sub i_vlan {
foreach my $port ( keys %$port_vlan ) {
my $vlan = $port_vlan->{$port};
next unless defined $vlan;
# ports up and trunking should have a trunking status
my $stat = $trunk_dyn_stat->{$port};
if ( defined $stat and $stat =~ /^trunking/ ) {
# vtp_trunk_dyn_stat is not useful for down ports
# so we use vtp_trunk_dyn to see if trunking is set
my $dyn = $trunk_dyn->{$port};
if (($stat and $stat =~ /^trunking/ )
or ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))))
{
$i_vlans{$port} = $vlan;
}
}
@@ -217,6 +227,7 @@ sub i_vlan_membership {
my $vtp_vlans = $vtp->v_state();
my $i_vlan = $vtp->i_vlan2($partial) || {};
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
my $trunk_dyn = $vtp->vtp_trunk_dyn($partial) || {};
my $i_vlan_membership = {};
@@ -224,8 +235,8 @@ sub i_vlan_membership {
foreach my $port ( keys %$i_vlan ) {
my $vlan = $i_vlan->{$port};
next unless defined $vlan;
my $stat = $trunk_dyn_stat->{$port};
if ( defined $stat and $stat =~ /notTrunking/ ) {
my $dyn = $trunk_dyn->{$port};
unless ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))) {
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
}
@@ -248,7 +259,9 @@ sub i_vlan_membership {
foreach my $port ( keys %$ports_vlans ) {
my $stat = $trunk_dyn_stat->{$port};
if ( defined $stat and $stat =~ /^trunking/ ) {
my $dyn = $trunk_dyn->{$port};
if (($stat and $stat =~ /^trunking/ )
or ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate')))) {
my $k = 0;
my $list1 = $ports_vlans->{$port} || '0';
my $list2 = $ports_vlans_2k->{$port} || '0';
@@ -270,6 +283,20 @@ sub i_vlan_membership {
return $i_vlan_membership;
}
sub i_vlan_membership_untagged {
my $vtp = shift;
my $partial = shift;
my $vlans = $vtp->i_vlan($partial);
my $i_vlan_membership = {};
foreach my $port (keys %$vlans) {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
sub set_i_pvid {
my $vtp = shift;
my ( $vlan_id, $ifindex ) = @_;
@@ -590,6 +617,12 @@ IDs. These are the VLANs which are members of enabled VLAN list for the port.
print "Port: $port VLAN: $vlan\n";
}
=item $vtp->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the untagged egress list for
the port.
=back
=head2 VLAN Table (C<CISCO-VTP-MIB::vtpVlanTable>)

View File

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

View File

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

View File

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

View File

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

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Aggregate;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Aggregate::MIBS,

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -316,7 +316,7 @@ sub _lldp_addr_index {
my @oids = split( /\./, $idx );
my $index = join( '.', splice( @oids, 0, 3 ) );
my $proto = shift(@oids);
my $length = shift(@oids) if scalar @oids > 4;
shift(@oids) if scalar @oids > 4; # $length
# IPv4
if ( $proto == 1 ) {

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
# 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.20';
$VERSION = '3.25';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
@@ -50,11 +50,11 @@ $VERSION = '3.20';
%SNMP::Info::Layer1::FUNCS,
'asante_port' => 'ePortIndex',
'asante_group' => 'ePortGrpIndex',
'i_type' => 'ePortStateType',
'i_type' => 'ePortGrpIndex',
'asante_up' => 'ePortStateLinkStatus',
);
%MIBS = ( %SNMP::Info::Layer1::MIBS, 'ASANTE-HUB1012-MIB' => 'asante' );
%MIBS = ( %SNMP::Info::Layer1::MIBS, 'ASANTE-AH1012-MIB' => 'asante' );
%MUNGE = ( %SNMP::Info::Layer1::MUNGE, );
@@ -202,7 +202,7 @@ Asante device through SNMP.
=over
=item F<ASANTE-HUB1012-MIB>
=item F<ASANTE-AH1012-MIB>
=back
@@ -230,7 +230,7 @@ Returns 'asante' :)
=item $asante->model()
Cross references $asante->id() to the F<ASANTE-HUB1012-MIB> and returns
Cross references $asante->id() to the F<ASANTE-AH1012-MIB> and returns
the results.
=back

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -38,18 +38,20 @@ use SNMP::Info;
use SNMP::Info::Bridge;
use SNMP::Info::Entity;
use SNMP::Info::PowerEthernet;
use SNMP::Info::LLDP;
@SNMP::Info::Layer2::ISA
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::Entity SNMP::Info::PowerEthernet Exporter/;
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::Entity SNMP::Info::PowerEthernet SNMP::Info::LLDP Exporter/;
@SNMP::Info::Layer2::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
%SNMP::Info::Entity::MIBS, %SNMP::Info::PowerEthernet::MIBS,
%SNMP::Info::LLDP::MIBS,
);
%GLOBALS = (
@@ -57,6 +59,7 @@ $VERSION = '3.20';
%SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::PowerEthernet::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'serial1' =>
'.1.3.6.1.4.1.9.3.6.3.0', # OLD-CISCO-CHASSIS-MIB::chassisId.0
);
@@ -64,6 +67,7 @@ $VERSION = '3.20';
%FUNCS = (
%SNMP::Info::FUNCS, %SNMP::Info::Bridge::FUNCS,
%SNMP::Info::Entity::FUNCS, %SNMP::Info::PowerEthernet::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
@@ -73,6 +77,7 @@ $VERSION = '3.20';
%SNMP::Info::Bridge::MUNGE,
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::PowerEthernet::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
# Method OverRides
@@ -133,23 +138,6 @@ sub serial {
return;
}
sub i_ignore {
my $l2 = shift;
my $partial = shift;
my $i_type = $l2->i_type($partial) || {};
my %i_ignore = ();
foreach my $if ( keys %$i_type ) {
my $type = $i_type->{$if};
$i_ignore{$if}++
if $type =~ /(loopback|other|cpu)/i;
}
return \%i_ignore;
}
sub interfaces {
my $l2 = shift;
my $partial = shift;
@@ -235,6 +223,8 @@ after determining a more specific class using the method above.
=item SNMP::Info::Entity
=item SNMP::Info::LLDP
=back
=head2 Required MIBs
@@ -288,6 +278,10 @@ See documentation in L<SNMP::Info::Bridge/"GLOBALS"> for details.
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.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -304,12 +298,6 @@ name.
Defaults to C<ifDescr> but checks and overrides with C<ifName>
=item $l2->i_ignore()
Returns reference to hash. Increments value of IID if port is to be ignored.
Ignores ports with C<ifType> of loopback, propvirtual, other, and cpu
=back
=head2 Table Methods imported from SNMP::Info
@@ -324,4 +312,8 @@ See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
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.
=cut

View File

@@ -11,11 +11,12 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::Layer2::MIBS,
'A3Com-products-MIB' => 'wlanAP7760',
);
%GLOBALS = (
@@ -117,6 +118,8 @@ Subclass for 3Com L2 devices
=over
=item F<A3Com-products-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
@@ -341,6 +341,60 @@ sub peth_port_ifindex {
return \%peth_port_ifindex;
}
# Currently only ERS 4800 v5.8+ support the rcBridgeSpbmMacTable
# which holds the FDB for a SPBM edge deployment.
#
# Q-BRIDGE still holds some entries when the rcBridgeSpbmMacTable is in use
# so we merge hash entries.
sub fw_mac {
my $rapidcity = shift;
my $qb = $rapidcity->SUPER::fw_mac() || {};
my $spbm = $rapidcity->rc_spbm_fw_mac() || {};
my $fw_mac = { %$qb, %$spbm };
return $fw_mac;
}
sub fw_port {
my $rapidcity = shift;
my $qb = $rapidcity->SUPER::fw_port() || {};
my $spbm = $rapidcity->rc_spbm_fw_port() || {};
my $fw_port = { %$qb, %$spbm };
return $fw_port;
}
sub fw_status {
my $rapidcity = shift;
my $qb = $rapidcity->SUPER::fw_status() || {};
my $spbm = $rapidcity->rc_spbm_fw_status() || {};
my $fw_status = { %$qb, %$spbm };
return $fw_status;
}
sub qb_fw_vlan {
my $rapidcity = shift;
my $qb = $rapidcity->SUPER::qb_fw_vlan() || {};
my $spbm = $rapidcity->rc_spbm_fw_vlan() || {};
my $qb_fw_vlan = { %$qb, %$spbm };
return $qb_fw_vlan;
}
# Baystack uses S5-AGENT-MIB (loaded in NortelStack) versus RAPID-CITY
sub stp_ver {
my $rapidcity = shift;
return $rapidcity->s5AgSysSpanningTreeOperMode()
|| $rapidcity->SUPER::stp_ver();
}
1;
__END__
@@ -444,6 +498,14 @@ Returns 'baystack' or 'boss' depending on software version.
Returns the firmware version extracted from C<sysDescr>.
=item $baystack->stp_ver()
Returns the particular STP version running on this device.
Values: C<nortelStpg>, C<pvst>, C<rstp>, C<mstp>, C<ieee8021d>
(C<s5AgSysSpanningTreeOperMode>)
=back
=head2 Overrides
@@ -600,6 +662,32 @@ ns_e_vendor().
=back
=head2 Layer 2 Forwarding Database
These methods try to obtain the layer 2 forwarding database entries via the
normal bridge methods as well as SPBM entries via rapid city methods.
=over
=item $baystack->fw_mac()
Returns reference to hash of forwarding table MAC Addresses
=item $baystack->fw_port()
Returns reference to hash of forwarding table entries port interface
identifier (iid)
=item $baystack->qb_fw_vlan()
Returns reference to hash of forwarding table entries VLAN ID
=item $baystack->fw_status()
Returns reference to hash of forwarding table entries status
=back
=head2 Table Methods imported from SNMP::Info::SONMP
See L<SNMP::Info::SONMP/"TABLE METHODS"> for details.

View File

@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
@@ -261,6 +261,8 @@ sub i_vlan_membership {
return $i_vlan_membership;
}
sub i_vlan_membership_untagged { return; }
sub bp_index {
my $c1900 = shift;
my $partial = shift;
@@ -470,6 +472,9 @@ bridge group IDs.
print "Port: $port VLAN: $vlan\n";
}
=item $c1900->i_vlan_membership_untagged()
Unsupported, returns nothing.
=item $c1900->bp_index()

View File

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

View File

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

View File

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

View File

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

View File

@@ -50,7 +50,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.

View File

@@ -36,7 +36,6 @@ use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::LLDP;
use SNMP::Info::CDP;
use SNMP::Info::Aggregate;
@@ -44,7 +43,6 @@ use SNMP::Info::Aggregate;
SNMP::Info::Aggregate
SNMP::Info::Layer3
SNMP::Info::MAU
SNMP::Info::LLDP
SNMP::Info::CDP
Exporter
/;
@@ -52,12 +50,11 @@ use SNMP::Info::Aggregate;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::Aggregate::MIBS,
'RFC1271-MIB' => 'logDescription',
@@ -74,7 +71,6 @@ $VERSION = '3.20';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::MAU::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::Aggregate::GLOBALS,
'serial1' => 'entPhysicalSerialNum.1',
@@ -93,7 +89,6 @@ $VERSION = '3.20';
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::MAU::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::Aggregate::FUNCS,
'i_type2' => 'ifType',
@@ -119,7 +114,6 @@ $VERSION = '3.20';
# Inherit all the built in munging
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::MAU::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::Aggregate::MUNGE,
'c_id' => \&munge_hp_c_id,
@@ -131,6 +125,8 @@ $VERSION = '3.20';
%MODEL_MAP = (
'J8131A' => 'WAP-420-WW',
'J8130A' => 'WAP-420-NA',
'J9833A' => 'PS1810-8G',
'J9834A' => 'PS1810-24G',
'J8133A' => 'AP520WL',
'J8680A' => '9408sl',
'J9091A' => '8212zl',
@@ -145,8 +141,10 @@ $VERSION = '3.20';
'J8992A' => '6200yl-24G',
'J4902A' => '6108',
'J8698A' => '5412zl',
'J9851A' => '5412R-zl2',
'J8719A' => '5408yl',
'J8697A' => '5406zl',
'J9850A' => '5406R-zl2',
'J8718A' => '5404yl',
'J4819A' => '5308XL',
'J4850A' => '5304XL',
@@ -178,8 +176,12 @@ $VERSION = '3.20';
'J4815A' => '3324XL',
'J4851A' => '3124',
'J9729A' => '2920-48G-PoE+',
'J9729A' => '2920-48G-PoE+',
'J9728A' => '2920-48G',
'J9728A' => '2920-48G',
'J9727A' => '2920-24G-PoE+',
'J9727A' => '2920-24G-PoE+',
'J9726A' => '2920-24G',
'J9726A' => '2920-24G',
'J9562A' => '2915-8G-PoE',
'J9148A' => '2910al-48G-PoE+',
@@ -192,30 +194,41 @@ $VERSION = '3.20';
'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+',
'J9626A' => '2620-48',
'J9625A' => '2620-24-PoE+',
'J9624A' => '2620-24-PPoE+',
'J9625A' => '2620-24-PoE+',
'J9623A' => '2620-24',
'J9565A' => '2615-8-PoE',
'J9089A' => '2610-48-PWR',
'J9088A' => '2610-48',
'J9086A' => '2610-24/12PWR',
'J9087A' => '2610-24-PWR',
'J9086A' => '2610-24/12PWR',
'J9085A' => '2610-24',
'J8762A' => '2600-8-PWR',
'J9780A' => '2530-8-PoE+',
'J9777A' => '2530-8G',
'J9783A' => '2530-8',
'J9778A' => '2530-48-PoE+',
'J9853A' => '2530-48G-PoE+-2SFP+',
'J9772A' => '2530-48G-PoE+',
'J9855A' => '2530-48G-2SFP+',
'J9775A' => '2530-48G',
'J9781A' => '2530-48',
'J9779A' => '2530-24-PoE+',
'J9854A' => '2530-24G-PoE+-2SFP+',
'J9773A' => '2530-24G-PoE+',
'J9856A' => '2530-24G-2SFP+',
'J9776A' => '2530-24G',
'J9782A' => '2530-24',
'J4813A' => '2524',
'J9298A' => '2520G-8-PoE',
'J9299A' => '2520G-24-PoE',
@@ -231,6 +244,8 @@ $VERSION = '3.20';
'J4817A' => '2312',
'J9449A' => '1810G-8',
'J9450A' => '1810G-24',
'J9802A' => '1810-8G',
'J9803A' => '1810-24G',
'J9029A' => '1800-8G',
'J9028A' => '1800-24G',
);
@@ -536,30 +551,6 @@ sub set_i_vlan_tagged {
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__
@@ -606,8 +597,6 @@ after determining a more specific class using the method above.
=item SNMP::Info::Layer2
=item SNMP::Info::LLDP
=item SNMP::Info::MAU
=back
@@ -827,22 +816,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
See documentation in L<SNMP::Info::Layer2/"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::MAU
See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
@@ -894,10 +873,6 @@ ifIndex of the corresponding master ports.
See documentation in L<SNMP::Info::Layer2/"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::MAU
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.

View File

@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -376,6 +376,20 @@ sub i_vlan_membership {
return $i_vlan_membership;
}
sub i_vlan_membership_untagged {
my $hp = shift;
my $partial = shift;
my $vlans = $hp->i_vlan($partial);
my $i_vlan_membership = {};
foreach my $port (keys %$vlans) {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
sub set_i_vlan {
my $hp = shift;
my $rv;
@@ -680,6 +694,12 @@ It is the union of tagged, untagged, and auto ports.
print "Port: $port VLAN: $vlan\n";
}
=item $hp->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the untagged egress list for
the port.
=item $hp->v_index()
Returns VLAN IDs

View File

@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::MIBS,

View File

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

View File

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

View File

@@ -41,17 +41,19 @@ use SNMP::Info::Entity;
use SNMP::Info::PowerEthernet;
use SNMP::Info::IPv6;
use SNMP::Info::AdslLine;
use SNMP::Info::LLDP;
@SNMP::Info::Layer3::ISA = qw/
SNMP::Info::PowerEthernet SNMP::Info::IPv6
SNMP::Info::Entity SNMP::Info::EtherLike
SNMP::Info::Bridge SNMP::Info::AdslLine
SNMP::Info::LLDP
SNMP::Info Exporter/;
@SNMP::Info::Layer3::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::MIBS,
@@ -61,6 +63,7 @@ $VERSION = '3.20';
%SNMP::Info::Entity::MIBS,
%SNMP::Info::PowerEthernet::MIBS,
%SNMP::Info::IPv6::MIBS,
%SNMP::Info::LLDP::MIBS,
'IP-MIB' => 'ipNetToMediaIfIndex',
'OSPF-MIB' => 'ospfRouterId',
'BGP4-MIB' => 'bgpIdentifier',
@@ -76,6 +79,7 @@ $VERSION = '3.20';
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::PowerEthernet::GLOBALS,
%SNMP::Info::IPv6::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'mac' => 'ifPhysAddress.1',
'serial1' =>
'.1.3.6.1.4.1.9.3.6.3.0', # OLD-CISCO-CHASSIS-MIB::chassisId.0
@@ -92,6 +96,7 @@ $VERSION = '3.20';
%SNMP::Info::Entity::FUNCS,
%SNMP::Info::PowerEthernet::FUNCS,
%SNMP::Info::IPv6::FUNCS,
%SNMP::Info::LLDP::FUNCS,
# Obsolete Address Translation Table (ARP Cache)
'old_at_index' => 'atIfIndex',
@@ -150,6 +155,7 @@ $VERSION = '3.20';
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::PowerEthernet::MUNGE,
%SNMP::Info::IPv6::MUNGE,
%SNMP::Info::LLDP::MUNGE,
'old_at_paddr' => \&SNMP::Info::munge_mac,
'at_paddr' => \&SNMP::Info::munge_mac,
'n2p_paddr' => \&SNMP::Info::munge_mac,
@@ -185,23 +191,6 @@ sub root_ip {
return;
}
sub i_ignore {
my $l3 = shift;
my $partial = shift;
my $interfaces = $l3->interfaces($partial) || {};
my %i_ignore;
foreach my $if ( keys %$interfaces ) {
# lo -> cisco aironet 350 loopback
if ( $interfaces->{$if} =~ /(tunnel|loopback|\blo\b|null)/i ) {
$i_ignore{$if}++;
}
}
return \%i_ignore;
}
sub serial {
my $l3 = shift;
@@ -427,6 +416,8 @@ after determining a more specific class using the method above.
=item SNMP::Info::IPv6
=item SNMP::Info::LLDP
=back
=head2 Required MIBs
@@ -455,6 +446,8 @@ See L<SNMP::Info::PowerEthernet/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::IPv6/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
@@ -528,6 +521,18 @@ See L<SNMP::Info::EtherLike/"GLOBALS"> for details.
See L<SNMP::Info::Entity/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info:PowerEthernet
See L<SNMP::Info::PowerEthernet/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::IPv6
See L<SNMP::Info::IPv6/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::LLDP
See L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -544,12 +549,6 @@ name.
Only returns those iids that have a description listed in $l3->i_description()
=item $l3->i_ignore()
Returns reference to hash. Creates a key for each IID that should be ignored.
Currently looks for tunnel,loopback,lo,null from $l3->interfaces()
=item $l3->i_name()
Returns reference to hash of iid to human set name.
@@ -803,4 +802,8 @@ See L<SNMP::Info::PowerEthernet/"TABLE METHODS"> for details.
See L<SNMP::Info::IPv6/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=cut

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -385,6 +385,20 @@ sub i_vlan_membership {
return $i_vlan_membership;
}
sub i_vlan_membership_untagged {
my $alteon = shift;
my $partial = shift;
my $vlans = $alteon->i_vlan($partial);
my $i_vlan_membership = {};
foreach my $port (keys %$vlans) {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
# Bridge MIB does not map Bridge Port to ifIndex correctly on some code
# versions
sub bp_index {
@@ -574,6 +588,12 @@ IDs. These are the VLANs which are members of the egress list for the port.
print "Port: $port VLAN: $vlan\n";
}
=item $alteon->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the untagged egress list for
the port.
=item $alteon->v_index()
Returns VLAN IDs

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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -48,7 +48,7 @@ use SNMP::Info::Aggregate;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -124,6 +124,8 @@ $VERSION = '3.20';
'aruba_ap_model' => 'wlanAPModelName',
'aruba_ap_name' => 'wlanAPName',
'aruba_ap_ip' => 'wlanAPIpAddress',
'aruba_ap_hw_ver' => 'wlanAPHwVersion',
'aruba_ap_sw_ver' => 'wlanAPSwVersion',
# WLSX-WLAN-MIB::wlsxWlanESSIDVlanPoolTable
'aruba_ssid_vlan' => 'wlanESSIDVlanPoolStatus',
@@ -484,6 +486,7 @@ sub i_vlan {
return $aruba->SUPER::i_vlan($partial)
if keys %{ $aruba->SUPER::i_vlan($partial) };
# If we don't have Q-BRIDGE-MIB, we're a wireless controller
my $index = $aruba->aruba_if_idx();
if ($partial) {
@@ -512,6 +515,7 @@ sub i_vlan_membership {
return $aruba->SUPER::i_vlan_membership($partial)
if keys %{ $aruba->SUPER::i_vlan_membership($partial) };
# If we don't have Q-BRIDGE-MIB, we're a wireless controller
my $essid_ssid = $aruba->aruba_ap_bssid_ssid();
my $ssid_vlans = $aruba->aruba_ssid_vlan();
my $if_vlans = $aruba->aruba_if_vlan_member();
@@ -555,6 +559,32 @@ sub i_vlan_membership {
return $i_vlan_membership;
}
sub i_vlan_membership_untagged {
my $aruba = shift;
my $partial = shift;
return $aruba->SUPER::i_vlan_membership_untagged($partial)
if keys %{ $aruba->SUPER::i_vlan_membership_untagged($partial) };
# If we don't have Q-BRIDGE-MIB, we're a wireless controller
# It is unclear if native VLAN is transmitted untagged
# This assumes Cisco-like behavior on trunks that native VLAN is
# transmitted untagged, if this needs to be changed we will need to
# consider ifExtMode rather than just using i_vlan
my $if_membership = $aruba->i_vlan_membership();
my $if_ = $aruba->i_vlan();
my $if_mode = $aruba->aruba_if_mode();
my $vlans = $aruba->i_vlan($partial);
my $i_vlan_membership = {};
foreach my $port (keys %$vlans) {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
sub i_80211channel {
my $aruba = shift;
my $partial = shift;
@@ -995,8 +1025,9 @@ sub e_type {
sub e_hwver {
my $aruba = shift;
my $ap_hw = $aruba->aruba_card_hw() || {};
my $ap_fpga = $aruba->aruba_card_fpga() || {};
my $ap_hw = $aruba->aruba_card_hw() || {};
my $ap_fpga = $aruba->aruba_card_fpga() || {};
my $ap_hw_ver = $aruba->aruba_ap_hw_ver() || {};
my %e_hwver;
@@ -1008,9 +1039,36 @@ sub e_hwver {
$e_hwver{$iid} = "$hw $fpga";
}
# APs
foreach my $idx ( keys %$ap_hw_ver ) {
my $hw_ver = $ap_hw_ver->{$idx};
next unless defined $hw_ver;
$e_hwver{$idx} = "$hw_ver";
}
return \%e_hwver;
}
sub e_swver {
my $aruba = shift;
my $ap_sw_ver = $aruba->aruba_ap_hw_ver() || {};
my %e_swver;
# APs
foreach my $idx ( keys %$ap_sw_ver ) {
my $sw_ver = $ap_sw_ver->{$idx};
next unless defined $sw_ver;
$e_swver{$idx} = "$sw_ver";
}
return \%e_swver;
}
sub e_vendor {
my $aruba = shift;
@@ -1586,6 +1644,12 @@ Returns reference to map of IIDs to VLAN ID of the interface.
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs for which the port is a member.
=item $aruba->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the untagged egress list for
the port.
=item $aruba->bp_index()
Augments the bridge MIB by returning reference to a hash containing the
@@ -1648,6 +1712,10 @@ Returns reference to hash. Key: IID, Value: Type of component.
Returns reference to hash. Key: IID, Value: Hardware revision.
=item $aruba->e_swver()
Returns reference to hash. Key: IID, Value: Software revision.
=item $aruba->e_vendor()
Returns reference to hash. Key: IID, Value: aruba.

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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::MIBS,
@@ -732,6 +732,8 @@ sub i_vlan {
return \%i_vlan;
}
sub i_pvid { goto &i_vlan }
sub root_ip {
my $bayrs = shift;
@@ -1549,6 +1551,10 @@ interfaces.
Returns reference to hash. Maps port VLAN ID to IIDs.
=item $bayrs->i_pvid()
Returns reference to hash. Maps port VLAN ID to IIDs.
=back
=head2 Pseudo F<ENTITY-MIB> information

View File

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

View File

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

View File

@@ -44,7 +44,7 @@ use SNMP::Info::MAU;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::MAU::MIBS,

View File

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

View File

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

View File

@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );

View File

@@ -50,7 +50,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -213,6 +213,10 @@ sub _vendor {
}
}
# dot1qTpFdbTable uses dot1qVlanIndex rather than dot1qFdbId as index,
# so pretend we don't have the mapping
sub qb_fdb_index {return}
1;
__END__
@@ -387,6 +391,10 @@ sometimes not unique.
Returns reference to hash of iid to current link administrative duplex
setting.
=item $dell->qb_fdb_index()
Returns nothing to work around incorrect indexing of C<dot1qTpFdbTable>
=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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
@@ -149,11 +149,47 @@ sub i_duplex_admin {
return $enterasys->mau_i_duplex_admin($partial);
}
# LLDP table timefilter implementation continuously increments when walked
# 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,
# unfortunately it is not the default. Query with a partial value of zero
# which means no time filter.
# which means no time filter for tables with and index containing a
# TimeFilter
sub qb_fdb_index {
my $bridge = shift;
my $qb_fdb_ids = $bridge->dot1qVlanFdbId(0) || {};
# Strip the TimeFilter
my $vl_fdb_index = {};
for my $fdb_entry (keys(%$qb_fdb_ids)) {
(my $vlan = $fdb_entry) =~ s/^\d+\.//;
$vl_fdb_index->{$qb_fdb_ids->{$fdb_entry}} = $vlan;
}
return $vl_fdb_index;
}
sub i_vlan_membership {
my $bridge = shift;
my $partial = shift;
# dot1qVlanCurrentTable TimeFilter index
my $v_ports = $bridge->qb_cv_egress(0) || $bridge->qb_v_egress();
return $bridge->_vlan_hoa($v_ports, $partial);
}
sub i_vlan_membership_untagged {
my $bridge = shift;
my $partial = shift;
# dot1qVlanCurrentTable TimeFilter index
my $v_ports = $bridge->qb_cv_untagged(0) || $bridge->qb_v_untagged();
return $bridge->_vlan_hoa($v_ports, $partial);
}
sub lldp_ip {
my $enterasys = shift;
@@ -359,9 +395,9 @@ L<SNMP::Info::MAU/"TABLE METHODS">.
=back
=head2 Link Layer Discovery Protocol (LLDP) Overrides
=head2 Time Filter Table Index Overrides
The LLDP table time filter implementation continuously increments when
The time filter C<TimeFilter> implementation continuously increments when
walked and we may never reach the end of the table. This behavior can be
modified with the C<"set snmp timefilter break disable"> command,
unfortunately it is not the default. These methods are overridden to
@@ -369,6 +405,12 @@ supply a partial value of zero which means no time filter.
=over
=item $enterasys->qb_fdb_index()
=item $enterasys->i_vlan_membership()
=item $enterasys->i_vlan_membership_untagged()
=item $enterasys->lldp_if()
=item $enterasys->lldp_ip()

View File

@@ -46,18 +46,19 @@ use SNMP::Info::EDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::EDP::MIBS,
'EXTREME-BASE-MIB' => 'extremeAgent',
'EXTREME-SYSTEM-MIB' => 'extremeSystem',
'EXTREME-FDB-MIB' => 'extremeSystem',
'EXTREME-VLAN-MIB' => 'extremeVlan',
'EXTREME-POE-MIB' => 'extremePethSystemAdminEnable',
'EXTREME-BASE-MIB' => 'extremeAgent',
'EXTREME-SYSTEM-MIB' => 'extremeSystem',
'EXTREME-FDB-MIB' => 'extremeFdbMacFdbMacAddress',
'EXTREME-VLAN-MIB' => 'extremeVlan',
'EXTREME-POE-MIB' => 'extremePethSystemAdminEnable',
'EXTREME-STP-EXTENSIONS-MIB' => 'extremeStpDomainBridgeId',
);
%GLOBALS = (
@@ -97,6 +98,20 @@ $VERSION = '3.20';
'peth_power_watts' => 'extremePethSlotPowerLimit',
# EXTREME-POE-MIB::extremePethPsePortTable
'peth_port_power' => 'extremePethPortMeasuredPower',
# EXTREME-STP-EXTENSIONS-MIB::extremeStpDomainTable
'stp_i_time' => 'extremeStpDomainTimeSinceTopologyChange',
'stp_i_ntop' => 'extremeStpDomainTopChanges',
'stp_i_root' => 'extremeStpDomainDesignatedRoot',
'stp_i_root_port' => 'extremeStpDomainRootPortIfIndex',
'stp_i_priority' => 'extremeStpDomainBridgePriority',
'ex_stp_i_mac' => 'extremeStpDomainBridgeId',
# EXTREME-STP-EXTENSIONS-MIB::extremeStpPortTable
'stp_p_priority' => 'extremeStpPortPortPriority',
'stp_p_state' => 'extremeStpPortPortState',
'stp_p_cost' => 'extremeStpPortPathCost',
'stp_p_root' => 'extremeStpPortDesignatedRoot',
'stp_p_bridge' => 'extremeStpPortDesignatedBridge',
'stp_p_port' => 'extremeStpPortDesignatedPort',
);
%MUNGE = (
@@ -114,6 +129,11 @@ $VERSION = '3.20';
'fan_state' => \&munge_true_ok,
'ex_vlan_untagged' => \&SNMP::Info::munge_port_list,
'ex_vlan_tagged' => \&SNMP::Info::munge_port_list,
'ex_stp_i_mac' => \&SNMP::Info::munge_prio_mac,
'stp_i_root' => \&SNMP::Info::munge_prio_mac,
'stp_p_root' => \&SNMP::Info::munge_prio_mac,
'stp_p_bridge' => \&SNMP::Info::munge_prio_mac,
'stp_p_port' => \&SNMP::Info::munge_prio_port,
);
# Method OverRides
@@ -542,6 +562,78 @@ sub _extremeware_i_vlan_membership {
return \%i_vlan_membership;
}
sub i_vlan_membership_untagged {
my $extreme = shift;
my $partial = shift;
# Some devices support Q-Bridge, if so short circuit and return it
my $q_bridge = $extreme->SUPER::i_vlan_membership_untagged($partial);
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_untagged($partial);
return $xos if (ref {} eq ref $xos and scalar keys %$xos);
# Try older ifStack method
my $extremeware = $extreme->_extremeware_i_vlan_membership_untagged($partial);
return $extremeware if (ref {} eq ref $extremeware and scalar keys %$extremeware);
return;
}
sub _xos_i_vlan_membership_untagged {
my $extreme = shift;
my $partial = shift;
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 $i_vlan_membership = {};
foreach my $idx ( keys %$u_ports ) {
next unless ( defined $u_ports->{$idx} );
my $u_portlist = $u_ports->{$idx};
my $ret = [];
my ( $vlan_if, $slot ) = $idx =~ /^(\d+)\.(\d+)/;
my $vlan = $vlans->{$vlan_if} || '';
foreach my $portlist ( $u_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
foreach my $port ( @{$ret} ) {
my $ifindex = $index->{$port};
next unless ( defined($ifindex) ); # shouldn't happen
next if ( defined $partial and $ifindex !~ /^$partial$/ );
push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
}
}
return $i_vlan_membership;
}
# Assuming Cisco-like trunk behavior that native VLAN is transmitted untagged
sub _extremeware_i_vlan_membership_untagged {
my $extreme = shift;
my $partial = shift;
my $vlans = $extreme->_extremeware_i_vlan($partial);
my $i_vlan_membership = {};
foreach my $port (keys %$vlans) {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
# VLAN management.
# See extreme-vlan.mib for a detailed description of
# Extreme's use of ifStackTable and EXTREME-VLAN-MIB.
@@ -711,6 +803,75 @@ sub lldp_if {
return \%lldp_if;
}
# extremeStpDomainStpdInstance not accessible, so we need to extract from iid
sub stp_i_id {
my $extreme = shift;
my $partial = shift;
my $stp_i_roots = $extreme->stp_i_root($partial);
my %stp_i_id;
foreach my $iid ( keys %$stp_i_roots ) {
$stp_i_id{$iid} = $iid;
}
return \%stp_i_id;
}
# extremeStpDomainBridgeId returns priority and mac,
# for cross class compatibility we just need mac
sub stp_i_mac {
my $extreme = shift;
my $partial = shift;
my $stp_i_bids = $extreme->ex_stp_i_mac($partial);
my %stp_i_mac;
foreach my $iid ( keys %$stp_i_bids ) {
my $mac = $stp_i_bids->{$iid};
next unless $mac;
$mac =~ s/^([0-9A-F][0-9A-F]:){2}//;
$stp_i_mac{$iid} = $mac;
}
return \%stp_i_mac;
}
# Break up the extremeStpPortEntry INDEX into Stpd Instance and IfIndex.
sub _ex_stpport_index {
my $idx = shift;
my ( $id, $ifindex ) = split( /\./, $idx);
return ($id, $ifindex);
}
# extremeStpPortPortIfIndex not-accessible, extract from iid
sub stp_p_id {
my $extreme = shift;
my $partial = shift;
my $stp_port = $extreme->stp_p_root($partial);
my $stp_p_id = {};
foreach my $idx ( keys %$stp_port ) {
my ( $id, $ifindex ) = _ex_stpport_index($idx);
$stp_p_id->{$idx} = $ifindex;
}
return $stp_p_id;
}
# extremeStpDomainStpdInstance not-accessible, extract from iid
sub stp_p_stg_id {
my $extreme = shift;
my $partial = shift;
my $stp_port = $extreme->stp_p_root($partial);
my $stp_p_stg_id = {};
foreach my $idx ( keys %$stp_port ) {
my ( $id, $ifindex ) = _ex_stpport_index($idx);
$stp_p_stg_id->{$idx} = $id;
}
return $stp_p_stg_id;
}
1;
__END__
@@ -927,6 +1088,12 @@ IDs. These are the VLANs which are members of the egress list for the port.
print "Port: $port VLAN: $vlan\n";
}
=item $extreme->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the untagged egress list for
the port.
=item $extreme->v_index()
Returns VLAN IDs
@@ -959,6 +1126,98 @@ The configured maximum amount of in-line power available to the slot.
=back
=head2 Spanning Tree Instance Globals
=over
=item $extreme->stp_i_mac()
Returns the MAC extracted from (C<extremeStpDomainBridgeId>).
=item $extreme->stp_i_id()
Returns the unique identifier of the STP domain.
(C<extremeStpDomainStpdInstance>)
=item $extreme->stp_i_time()
Returns time since last topology change detected. (100ths/second)
(C<extremeStpDomainTimeSinceTopologyChange>)
=item $extreme->stp_i_time()
Returns time since last topology change detected. (100ths/second)
(C<extremeStpDomainTimeSinceTopologyChange>)
=item $extreme->stp_i_time()
Returns the total number of topology changes detected.
(C<extremeStpDomainTopChanges>)
=item $extreme->stp_i_root()
Returns root of STP.
(C<extremeStpDomainDesignatedRoot>)
=item $extreme->stp_i_root_port()
Returns the port number of the port that offers the lowest cost path
to the root bridge.
(C<extremeStpDomainRootPortIfIndex>)
=item $extreme->stp_i_priority()
Returns the port number of the port that offers the lowest cost path
to the root bridge.
(C<extremeStpDomainBridgePriority>)
=back
=head2 Spanning Tree Protocol Port Table
=over
=item $extreme->stp_p_id()
(C<extremeStpPortPortIfIndex>)
=item $extreme->stp_p_stg_id()
(C<extremeStpDomainStpdInstance>)
=item $extreme->stp_p_priority()
(C<extremeStpPortPortPriority>)
=item $extreme->stp_p_state()
(C<extremeStpPortPortState>)
=item $extreme->stp_p_cost()
(C<extremeStpPortPathCost>)
=item $extreme->stp_p_root()
(C<extremeStpPortDesignatedRoot>)
=item $extreme->stp_p_bridge()
(C<extremeStpPortDesignatedBridge>)
=item $extreme->stp_p_port()
(C<extremeStpPortDesignatedPort>)
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -255,6 +255,37 @@ sub i_vlan_membership {
return $i_vlan_membership;
}
sub i_vlan_membership_untagged {
my $f5 = shift;
my $partial = shift;
my $index = $f5->i_index($partial) || {};
my $tagged = $f5->sys_vm_tagged() || {};
my $vlans = $f5->v_index() || {};
my $i_vlan_membership = {};
foreach my $iid ( keys %$tagged ) {
next unless $tagged->{$iid} eq 'false';
# IID is length.vlan name index.length.interface index
# Split out and use as the IID to get the VLAN ID and ifIndex
my @iid_array = split /\./, $iid;
my $len = $iid_array[0];
my $v_idx = join '.', ( splice @iid_array, 0, $len + 1 );
my $idx = join '.', @iid_array;
# Check to make sure we can map to a port
my $p_idx = $index->{$idx};
next unless $p_idx;
my $vlan = $vlans->{$v_idx};
next unless $vlan;
push( @{ $i_vlan_membership->{$idx} }, $vlan );
}
return $i_vlan_membership;
}
1;
__END__
@@ -391,6 +422,12 @@ IDs.
print "Port: $port VLAN: $vlan\n";
}
=item $f5->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the untagged egress list for
the port.
=item $f5->v_index()
Returns VLAN IDs

View File

@@ -43,7 +43,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -121,29 +121,25 @@ sub i_vlan {
return $i_vlan;
}
sub i_vlan_membership {
# Apparently index doesn't use VLAN ID, so override the HOA private
# method here to correct the mapping
sub _vlan_hoa {
my $force10 = shift;
my $partial = shift;
my ( $v_ports, $partial ) = @_;
my $index = $force10->bp_index();
my $index = $force10->bp_index();
my $v_index = $force10->v_index();
my $v_ports = $force10->qb_v_egress();
# If given a partial it will be an ifIndex, we need to use dot1dBasePort
if ($partial) {
my %r_index = reverse %$index;
$partial = $r_index{$partial};
}
my $i_vlan_membership = {};
my $vlan_hoa = {};
foreach my $idx ( sort keys %{$v_ports} ) {
next unless ( defined $v_ports->{$idx} );
my $portlist = $v_ports->{$idx}; # is an array reference
my $ret = [];
my $vlan_ndx = $idx;
# Strip TimeFilter if we're using VlanCurrentTable
( $vlan_ndx = $idx ) =~ s/^\d+\.//;
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
push( @{$ret}, $i + 1 ) if ( @$portlist[$i] );
@@ -160,11 +156,10 @@ sub i_vlan_membership {
# the mapping from Q-BRIDGE-MIB::dot1qVlanFdbId
my $mod = $vlan_tag % 4096;
push ( @{ $i_vlan_membership->{$ifindex} }, ($mod) );
push ( @{ $vlan_hoa->{$ifindex} }, ($mod) );
}
}
return $i_vlan_membership;
return $vlan_hoa;
}
1;
@@ -278,12 +273,6 @@ Returns the VLAN names.
Currently not implemented.
=item $force10->i_vlan_membership()
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->i_duplex_admin()
Returns info from F<MAU-MIB>

200
Info/Layer3/Fortinet.pm Normal file
View File

@@ -0,0 +1,200 @@
# SNMP::Info::Layer3::Fortinet
#
# 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::Fortinet;
use strict;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Fortinet::ISA
= qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Fortinet::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
'FORTINET-CORE-MIB' => 'fnSysSerial',
'FORTINET-FORTIGATE-MIB' => 'fgVdMaxVdoms',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
);
sub vendor {
return 'fortinet';
}
sub model {
my $fortinet = shift;
my $id = $fortinet->id() || '';
my $model = &SNMP::translateObj($id);
return $id unless defined $model;
$model =~ s/^f[grsw][tfw]?//i;
return $model;
}
sub os {
return 'fortios';
}
sub os_ver {
my $fortinet = shift;
my $ver = $fortinet->fgSysVersion() || '';
if ( $ver =~ /(\d+[\.\d]+)/ ) {
return $1;
}
return $ver;
}
sub serial {
my $fortinet = shift;
return $fortinet->fnSysSerial();
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::Fortinet - SNMP Interface to Fortinet network devices.
=head1 AUTHOR
Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $fortinet = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $fortinet->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Abstraction subclass for Fortinet network devices.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $fortinet = new SNMP::Info::Layer3::Fortinet(...);
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=back
=head2 Required MIBs
=over
=item F<FORTINET-CORE-MIB>
=item F<FORTINET-FORTIGATE-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $fortinet->vendor()
Returns 'fortinet'
=item $fortinet->model()
Returns the chassis model.
=item $fortinet->os()
Returns 'fortios'
=item $fortinet->os_ver()
Returns the software version extracted from (C<systemVersion>).
=item $fortinet->serial()
Returns the chassis serial number.
(C<fnSysSerial>)
=back
=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
to a hash.
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
=cut

View File

@@ -48,7 +48,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -97,6 +97,24 @@ $VERSION = '3.20';
# FOUNDRY-SN-AGENT-MIB::snAgentConfigModuleTable
'ag_mod_type' => 'snAgentConfigModuleType',
# FOUNDRY-SN-AGENT-MIB::snVLanByPortTable
'stp_i_id' => 'snVLanByPortVLanId',
'stp_i_mac' => 'snVLanByPortBaseBridgeAddress',
'stp_i_time' => 'snVLanByPortStpTimeSinceTopologyChange',
'stp_i_ntop' => 'snVLanByPortStpTopChanges',
'stp_i_root' => 'snVLanByPortStpDesignatedRoot',
'stp_i_root_port' => 'snVLanByPortStpRootPort',
'stp_i_priority' => 'snVLanByPortStpPriority',
# FOUNDRY-SN-AGENT-MIB::snPortStpTable
'stp_p_id' => 'snPortStpPortNum',
'stp_p_stg_id' => 'snPortStpVLanId',
'stp_p_priority' => 'snPortStpPortPriority',
'stp_p_state' => 'snPortStpPortState',
'stp_p_cost' => 'snPortStpPortDesignatedCost',
'stp_p_root' => 'snPortStpPortDesignatedRoot',
'stp_p_bridge' => 'snPortStpPortDesignatedBridge',
'stp_p_port' => 'snPortStpPortDesignatedPort',
);
%MUNGE = (
@@ -106,6 +124,11 @@ $VERSION = '3.20';
'ag_mod2_type' => \&SNMP::Info::munge_e_type,
'ag_mod_type' => \&SNMP::Info::munge_e_type,
'stp_i_mac' => \&SNMP::Info::munge_mac,
'stp_i_root' => \&SNMP::Info::munge_prio_mac,
'stp_p_root' => \&SNMP::Info::munge_prio_mac,
'stp_p_bridge' => \&SNMP::Info::munge_prio_mac,
'stp_p_port' => \&SNMP::Info::munge_prio_port,
);
sub i_ignore {
@@ -277,20 +300,6 @@ sub interfaces {
return $i_descr;
}
# Reported hangs on a EdgeIron 24G
sub stp_p_state {
my $foundry = shift;
my $partial = shift;
my $descr = $foundry->description();
if ( $descr =~ m/\bEdgeIron 24G\b/ ) {
return;
}
return $foundry->SUPER::stp_p_state($partial) || {};
}
# Entity MIB is supported on the Brocade NetIron XMR, NetIron MLX, MLXe,
# NetIron CES, NetIron CER, and older EdgeIron series devices.
# Try Entity MIB methods first and fall back to Pseudo ENTITY-MIB methods for
@@ -817,6 +826,26 @@ sub agg_ports {
return $ret;
}
sub i_stp_state {
my $foundry = shift;
my $partial = shift;
my $bp_index = $foundry->bp_index($partial);
my $stp_p_state = $foundry->dot1dStpPortState($partial);
my %i_stp_state;
foreach my $index ( keys %$stp_p_state ) {
my $state = $stp_p_state->{$index};
my $iid = $bp_index->{$index};
next unless defined $iid;
next unless defined $state;
$i_stp_state{$iid} = $state;
}
return \%i_stp_state;
}
1;
__END__
@@ -1007,14 +1036,10 @@ Returns reference to hash of interface link duplex status.
Crosses $foundry->sw_duplex() with $foundry->sw_index()
=item $foundry->stp_p_state()
"The port's current state as defined by application of the Spanning Tree
Protocol.
Skipped if device is an EdgeIron 24G due to reports of hangs.
(C<dot1dStpPortState>)
=item $foundry->i_stp_state()
Returns the mapping of (C<dot1dStpPortState>) to the interface
index (iid).
=item $foundry->agg_ports()

View File

@@ -47,7 +47,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -163,6 +163,13 @@ sub i_trunk {
return \%i_trunk;
}
sub qb_fdb_index {
my $juniper = shift;
my $partial = shift;
return $juniper->jnxExVlanTag($partial);
}
# 'v_type' => 'jnxExVlanType',
sub v_type {
my $juniper = shift;
@@ -214,22 +221,24 @@ sub i_vlan {
return $i_vlan;
}
sub i_vlan_membership {
my $juniper = shift;
my $partial = shift;
# Index doesn't use VLAN ID, so override the HOA private method here to
# correct the mapping
sub _vlan_hoa {
my $juniper = shift;
my ( $v_ports, $partial ) = @_;
my $index = $juniper->bp_index();
my ($v_index) = $juniper->jnxExVlanTag($partial);
my $index = $juniper->bp_index();
my $v_index = $juniper->jnxExVlanTag($partial);
my $v_ports = $juniper->qb_v_egress() || {};
my $i_vlan_membership = {};
foreach my $idx ( sort keys %$v_ports ) {
my $vlan_hoa = {};
foreach my $idx ( keys %$v_ports ) {
next unless ( defined $v_ports->{$idx} );
my $portlist = $v_ports->{$idx}; # is an array reference
my $portlist = $v_ports->{$idx};
my $ret = [];
my $vlan_ndx = $idx;
my $vlan_ndx;
# Strip TimeFilter if we're using VlanCurrentTable
( $vlan_ndx = $idx ) =~ s/^\d+\.//;
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
@@ -241,11 +250,10 @@ sub i_vlan_membership {
my $ifindex = $index->{$port};
next unless ( defined($ifindex) ); # shouldn't happen
next if ( defined $partial and $ifindex !~ /^$partial$/ );
push ( @{ $i_vlan_membership->{$ifindex} }, $v_index->{$vlan_ndx} );
push( @{ $vlan_hoa->{$ifindex} }, $v_index->{$vlan_ndx} );
}
}
return $i_vlan_membership;
return $vlan_hoa;
}
# Pseudo ENTITY-MIB methods
@@ -655,6 +663,10 @@ to a hash.
=over
=item $juniper->qb_fdb_index()
Returns reference to hash: key = VLAN ID, value = FDB ID.
=item $juniper->v_index()
(C<jnxExVlanTag>)
@@ -675,11 +687,6 @@ to a hash.
Returns a mapping between C<ifIndex> and the PVID or default VLAN.
=item $juniper->i_vlan_membership()
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.
=back
=head2 Pseudo F<ENTITY-MIB> information

View File

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

View File

@@ -46,7 +46,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.20';
$VERSION = '3.25';
# 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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%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.20';
$VERSION = '3.25';
%MIBS = ( %SNMP::Info::Layer3::MIBS, );

View File

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

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