Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
045ff8b789 | ||
|
|
7b7f197439 | ||
|
|
9e1c462836 | ||
|
|
e97e8309cb | ||
|
|
8c5be1a47d | ||
|
|
afef2e6732 | ||
|
|
7b2051b55c | ||
|
|
8e470a2d72 | ||
|
|
35213d5cb2 | ||
|
|
b24f1a8ac4 | ||
|
|
5454ab577e | ||
|
|
046c15a074 | ||
|
|
ddb9dda894 | ||
|
|
d7047bda13 | ||
|
|
c7934f4d10 | ||
|
|
c97dc06177 | ||
|
|
76b1faa159 | ||
|
|
1e0438857e | ||
|
|
b6494effa6 | ||
|
|
a359184b83 | ||
|
|
ce50a3f627 | ||
|
|
ee7d254329 | ||
|
|
d674b22b39 | ||
|
|
47954aba8e | ||
|
|
09e18e9b64 | ||
|
|
163ba86196 | ||
|
|
e57e7d99d5 | ||
|
|
7ad449303b | ||
|
|
49b853de1a | ||
|
|
03a81ad4be | ||
|
|
eb046b6a61 | ||
|
|
1bf62f9524 | ||
|
|
9aca213a5f | ||
|
|
ce8bb68200 | ||
|
|
7ee562c5ac | ||
|
|
bdb719004d | ||
|
|
842ac96d48 | ||
|
|
5bb9011fb4 | ||
|
|
97564f50b8 | ||
|
|
efcf6a0db3 | ||
|
|
9e813784f7 | ||
|
|
aaca03062b | ||
|
|
c1242017e2 | ||
|
|
5f1426a0a3 | ||
|
|
e84225fb23 | ||
|
|
32c0e64bfb | ||
|
|
0793ff31f5 | ||
|
|
d3c2c1b607 |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,2 +1,9 @@
|
|||||||
*.db
|
*.db
|
||||||
SNMP
|
SNMP
|
||||||
|
*.komodo*
|
||||||
|
blib/
|
||||||
|
META.*
|
||||||
|
MYMETA.*
|
||||||
|
Makefile
|
||||||
|
Makefile.old
|
||||||
|
pm_to_blib
|
||||||
|
|||||||
118
ChangeLog
118
ChangeLog
@@ -1,5 +1,54 @@
|
|||||||
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
|
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
[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.
|
||||||
|
* 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]
|
||||||
|
|
||||||
|
* 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)
|
version 3.20 (2014-09-08)
|
||||||
|
|
||||||
[NEW FEATURES]
|
[NEW FEATURES]
|
||||||
@@ -63,7 +112,7 @@ version 3.16 (2014-06-23)
|
|||||||
[BUG FIXES]
|
[BUG FIXES]
|
||||||
|
|
||||||
* Use CiscoVTP methods to get interface VLAN in L3::Cisco rather than
|
* 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)
|
version 3.15 (2014-07-10)
|
||||||
|
|
||||||
@@ -215,7 +264,7 @@ version 3.08 (2013-10-22)
|
|||||||
* [#68] Fix device_port entries for switches with non-unique
|
* [#68] Fix device_port entries for switches with non-unique
|
||||||
ifDesc (Nic Bernstein)
|
ifDesc (Nic Bernstein)
|
||||||
* Don't try to munge undef values
|
* 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()
|
* Silence warning from uninitialized variable in L3::Passport e_descr()
|
||||||
|
|
||||||
version 3.07 (2013-10-01)
|
version 3.07 (2013-10-01)
|
||||||
@@ -242,12 +291,11 @@ version 3.05 (2013-08-16)
|
|||||||
Layer2/CiscoSB class
|
Layer2/CiscoSB class
|
||||||
* Add proper LLDP support to Netgear.pm
|
* Add proper LLDP support to Netgear.pm
|
||||||
* Change $netgear->interfaces() to use ifName rather than ifDescr
|
* 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
|
If ifName is not present, concatenate ifDescr and ifIndex
|
||||||
to achieve a unique value.
|
to achieve a unique value.
|
||||||
* Properly report hardware version, Serial No. and OS Version for
|
* Properly report hardware version, Serial No. and OS Version for
|
||||||
Netgear.
|
Netgear.
|
||||||
|
|
||||||
|
|
||||||
version 3.03 (2013-07-11)
|
version 3.03 (2013-07-11)
|
||||||
|
|
||||||
@@ -277,7 +325,7 @@ version 3.01 (2013-04-13)
|
|||||||
they can be called directly, sonmp_ip(), cdp_ip(), etc.
|
they can be called directly, sonmp_ip(), cdp_ip(), etc.
|
||||||
* L2::Bay and L2::Foundry have been removed from the distribution. Both
|
* L2::Bay and L2::Foundry have been removed from the distribution. Both
|
||||||
classes were depreciated and all functionality is available through
|
classes were depreciated and all functionality is available through
|
||||||
L2::Baystack and L3::Foundry.
|
L2::Baystack and L3::Foundry.
|
||||||
|
|
||||||
[NEW FEATURES]
|
[NEW FEATURES]
|
||||||
|
|
||||||
@@ -307,7 +355,7 @@ version 3.01 (2013-04-13)
|
|||||||
|
|
||||||
[ENHANCEMENTS]
|
[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
|
* Dynamically generated methods are added to symbol table to avoid
|
||||||
AUTOLOAD on subsequent calls
|
AUTOLOAD on subsequent calls
|
||||||
* L2::Airespace now supports 802.11n client tx rates
|
* L2::Airespace now supports 802.11n client tx rates
|
||||||
@@ -339,20 +387,20 @@ version 2.09 (2012-11-28)
|
|||||||
* New method i_ssidmac() to get BSSID's from AP's with initial support
|
* New method i_ssidmac() to get BSSID's from AP's with initial support
|
||||||
in L2::Aironet and Airespace classes
|
in L2::Aironet and Airespace classes
|
||||||
* Support for Avaya Secure Routers in new class L3::Tasman
|
* 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
|
* [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)
|
* [1424336] Support for Extreme Discovery Protocol (EDP)
|
||||||
|
|
||||||
[ENHANCEMENTS]
|
[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
|
* [3418918] Extreme devices now report OS as either extremeware or xos
|
||||||
* [2809045] Strip preceding netscreen from model name in L3::Netscreen
|
* [2809045] Strip preceding netscreen from model name in L3::Netscreen
|
||||||
* [] Classify Linksys 2024 as L3::Dell (Rogier Krieger)
|
* [] Classify Linksys 2024 as L3::Dell (Rogier Krieger)
|
||||||
|
|
||||||
[BUG FIXES]
|
[BUG FIXES]
|
||||||
|
|
||||||
* Fixed logic to return cached data for table methods when available and
|
* Fixed logic to return cached data for table methods when available and
|
||||||
not a partial fetch
|
not a partial fetch
|
||||||
* Fix typo in PoD for Bridge.pm and CiscoConfig.pm (William Bulley)
|
* Fix typo in PoD for Bridge.pm and CiscoConfig.pm (William Bulley)
|
||||||
@@ -372,7 +420,7 @@ version 2.08 (2012-07-15)
|
|||||||
|
|
||||||
* Pseudo ENTITY-MIB methods added to L3::Juniper for hardware information
|
* Pseudo ENTITY-MIB methods added to L3::Juniper for hardware information
|
||||||
* Add method to report current transmit power of the radio interface,
|
* 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)
|
* [3085411] Activate L3 properties for Netgear GSM7224v2 (phishphreek)
|
||||||
* [3085413] SNMP OIDs for Netgear Serial and OS Ver (phishphreek)
|
* [3085413] SNMP OIDs for Netgear Serial and OS Ver (phishphreek)
|
||||||
* [3286549] Dell LLDP Support (Nico Giefing)
|
* [3286549] Dell LLDP Support (Nico Giefing)
|
||||||
@@ -421,7 +469,7 @@ version 2.06 (2011-09-28)
|
|||||||
* [3344843] Fix returning serial() and os_ver() for web-managable HP
|
* [3344843] Fix returning serial() and os_ver() for web-managable HP
|
||||||
switches, introduced by HP/HP4000 class split, reported by J R Binks
|
switches, introduced by HP/HP4000 class split, reported by J R Binks
|
||||||
* [2809033] Put L2-only Cisco blade switches in L3::C6500
|
* [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)
|
incomplete (Michael Borgelt)
|
||||||
|
|
||||||
version 2.05 (2011-06-23)
|
version 2.05 (2011-06-23)
|
||||||
@@ -437,13 +485,13 @@ version 2.04 (2011-03-31)
|
|||||||
(Brian De Wolf)
|
(Brian De Wolf)
|
||||||
+ Added L3::Pf for FreeBSD PFSense Firewalls (max)
|
+ Added L3::Pf for FreeBSD PFSense Firewalls (max)
|
||||||
* Added specific functions for neighbor mgmt addresses to CDP class
|
* 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.
|
+ [2980787] Fix for C1900 bp_index not containing interfaces.
|
||||||
(Brian De Wolf)
|
(Brian De Wolf)
|
||||||
+ [2599795] Added vendor_i_type() method to HP and HP4000 clases
|
+ [2599795] Added vendor_i_type() method to HP and HP4000 clases
|
||||||
+ [2688801] Minor modification for obscure Proxim/Orinoco device
|
+ [2688801] Minor modification for obscure Proxim/Orinoco device
|
||||||
(jrbinks)
|
(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)
|
classes (jeroenvi)
|
||||||
* Minor tweaks to support devices without sysServices
|
* Minor tweaks to support devices without sysServices
|
||||||
* Added Cisco CBS3xxx blade switches to L3::C6500
|
* Added Cisco CBS3xxx blade switches to L3::C6500
|
||||||
@@ -481,7 +529,7 @@ version 2.00 (08/01/08)
|
|||||||
+ Support for Alcatel-Lucent Service Router via L3::Timetra
|
+ Support for Alcatel-Lucent Service Router via L3::Timetra
|
||||||
+ Support for Alcatel-Lucent OmniAccess via L2::Aruba
|
+ 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
|
version 1.09 (07/22/08) - Beta/developer release
|
||||||
+ Added support for HP ProCurve Foundry OEM switches, such as the 9300
|
+ Added support for HP ProCurve Foundry OEM switches, such as the 9300
|
||||||
@@ -505,7 +553,7 @@ version 1.09 (07/22/08) - Beta/developer release
|
|||||||
+ Add support to specify MIB to resolve leaf names conflicts in
|
+ Add support to specify MIB to resolve leaf names conflicts in
|
||||||
%GLOBALS and %FUNCS.
|
%GLOBALS and %FUNCS.
|
||||||
+ Added munge_port_list() and modify_port_list() methods to assist in
|
+ 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
|
+ Added set_multi() method to enable a SNMP set command on several new
|
||||||
values in one request. Required for complex set operations
|
values in one request. Required for complex set operations
|
||||||
on some agents.
|
on some agents.
|
||||||
@@ -532,7 +580,7 @@ version 1.05 (11/25/07) - CVS only. No official release
|
|||||||
Augenstein)
|
Augenstein)
|
||||||
+ Added device specific support for LLDP in L2::HP, L2::Baystack,
|
+ Added device specific support for LLDP in L2::HP, L2::Baystack,
|
||||||
L3::Enterasys and L3::Foundry
|
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 support for Dell PowerConnect switches as new class L3::Dell
|
||||||
+ Added basic support for generic routers running Microsoft Windows OS
|
+ Added basic support for generic routers running Microsoft Windows OS
|
||||||
as new class L3::Microsoft (begemot)
|
as new class L3::Microsoft (begemot)
|
||||||
@@ -556,7 +604,7 @@ version 1.05 (11/25/07) - CVS only. No official release
|
|||||||
+ New class IEEE802dot11 class for generic standards based wireless AP
|
+ New class IEEE802dot11 class for generic standards based wireless AP
|
||||||
support to include i_ssidlist()and i_80211channel() methods.
|
support to include i_ssidlist()and i_80211channel() methods.
|
||||||
+ L2::Orinoco inherits from new IEEE802dot11 for i_ssidlist()and
|
+ 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(),
|
+ 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
|
set_i_vlan(), set_add_i_vlan_tagged(), set_remove_i_vlan_tagged() to
|
||||||
Bridge, CiscoVTP, Extreme, HP, and RapidCity classes.
|
Bridge, CiscoVTP, Extreme, HP, and RapidCity classes.
|
||||||
@@ -618,14 +666,14 @@ version 1.04 (07/08/06)
|
|||||||
+ Added C1130 and C1240 to L2::Aironet (Ralf Gross)
|
+ Added C1130 and C1240 to L2::Aironet (Ralf Gross)
|
||||||
+ Added detection for Cisco 2960, 2940, 3400 w/ MetroBase
|
+ Added detection for Cisco 2960, 2940, 3400 w/ MetroBase
|
||||||
+ Added generic L2::Cisco Class
|
+ 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
|
* Fixed warnings in CiscoStack
|
||||||
* Updated ProCurve HP device detection for newer firmwares
|
* Updated ProCurve HP device detection for newer firmwares
|
||||||
|
|
||||||
version 1.03 (04/14/06) - Beta/developer release
|
version 1.03 (04/14/06) - Beta/developer release
|
||||||
* Use ipNetToMedia table instead of atTable for ARP
|
* Use ipNetToMedia table instead of atTable for ARP
|
||||||
* Remove CiscoStack from Layer3::C4000
|
* 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
|
version 1.01 (04/08/06) - Beta/developer release
|
||||||
+ Change version numbers to X.XX format. Odd releases are beta
|
+ Change version numbers to X.XX format. Odd releases are beta
|
||||||
@@ -691,15 +739,15 @@ version 1.0 (04/07/06) - CVS only. No official release
|
|||||||
translated properly
|
translated properly
|
||||||
|
|
||||||
verison 0.9 (11/15/04)
|
verison 0.9 (11/15/04)
|
||||||
+ ** Added full Nortel/Bay/BayStack support
|
+ ** Added full Nortel/Bay/BayStack support
|
||||||
by new developer Eric Miller.
|
by new developer Eric Miller.
|
||||||
L2::Bay now depricated.
|
L2::Bay now depricated.
|
||||||
+ Added Alteon Ace support (Eric Miller)
|
+ Added Alteon Ace support (Eric Miller)
|
||||||
+ Added Nortel Cotivity support (Eric Miller)
|
+ Added Nortel Cotivity support (Eric Miller)
|
||||||
+ Added Nortel BayRS support (Eric Miller)
|
+ Added Nortel BayRS support (Eric Miller)
|
||||||
+ Added Nortel Centillion support (Eric Miller)
|
+ Added Nortel Centillion support (Eric Miller)
|
||||||
+ Added Nortel AP 222x 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 i_lastchange() per suggestion of Nicolai Petri
|
||||||
+ Added BULKWALK patch by Bradley Baetz - This should
|
+ Added BULKWALK patch by Bradley Baetz - This should
|
||||||
greatly speed up requests on SNMPv2c devices.
|
greatly speed up requests on SNMPv2c devices.
|
||||||
@@ -749,27 +797,27 @@ version 0.6 (06/18/03)
|
|||||||
|
|
||||||
version 0.5 (06/10/03)
|
version 0.5 (06/10/03)
|
||||||
* Added ability to get paritial tables. For example to get the
|
* 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');
|
$ipr = $dev->ipr_dest('128.114');
|
||||||
* Added IP Routing Table entries from RFC1213 to SNMP::Info
|
* Added IP Routing Table entries from RFC1213 to SNMP::Info
|
||||||
* minor bug fixes
|
* minor bug fixes
|
||||||
|
|
||||||
version 0.4 (04/29/03)
|
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 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.
|
from SNMP Version 1 devices.
|
||||||
* Methods load_all() and all() have changed their return value. Sorry but
|
* Methods load_all() and all() have changed their return value. Sorry but
|
||||||
the API had to change.
|
the API had to change.
|
||||||
* New object methods snmp_comm(), snmp_ver(), store(), class(), nosuch()
|
* New object methods snmp_comm(), snmp_ver(), store(), class(), nosuch()
|
||||||
to make it more OO happy.
|
to make it more OO happy.
|
||||||
* Globals are now cached
|
* 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()
|
detected in device_type()
|
||||||
* New method specify() returns a new subclass object
|
* New method specify() returns a new subclass object
|
||||||
* Subclasses are automatically loaded when specify or autospecify is used!
|
* Subclasses are automatically loaded when specify or autospecify is used!
|
||||||
* Added methods for Interface statistics (ifInOctets ...)
|
* 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::Entity, moved out of L2-HP
|
||||||
* Added SNMP::Info::Layer2::Aironet
|
* Added SNMP::Info::Layer2::Aironet
|
||||||
|
|
||||||
@@ -782,7 +830,7 @@ version 0.3 (03/06/03)
|
|||||||
Thanks to Martin Lorensen <martin /at- lorensen.dk>
|
Thanks to Martin Lorensen <martin /at- lorensen.dk>
|
||||||
* Removed requirement for SNMP in the Makefile.PL and moved it to t/prereq.t
|
* 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
|
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>
|
Thanks again to Martin Lorensen <martin /at- lorensen.dk>
|
||||||
* Moved tests from test.pl to t/*
|
* Moved tests from test.pl to t/*
|
||||||
|
|
||||||
@@ -792,10 +840,10 @@ version 0.2 (02/19/03)
|
|||||||
* Fixed HP Detection in device_type()
|
* Fixed HP Detection in device_type()
|
||||||
* Added Spanning Tree Protocol (STP) methods to SNMP::Info::Bridge
|
* Added Spanning Tree Protocol (STP) methods to SNMP::Info::Bridge
|
||||||
* Removed HP Specific MIBS in SNMP::Info::Layer2 and cleaned up model()
|
* 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
|
* Mapped HP Part Numbers to model numbers J4812A => 2512 in
|
||||||
SNMP::Info::Layer2::HP
|
SNMP::Info::Layer2::HP
|
||||||
|
|
||||||
version 0.1 (12/30/02)
|
version 0.1 (12/30/02)
|
||||||
* Initial Release
|
* Initial Release
|
||||||
* SubClasses Included:
|
* SubClasses Included:
|
||||||
@@ -805,13 +853,13 @@ version 0.1 (12/30/02)
|
|||||||
* SNMP::Info::MAU
|
* SNMP::Info::MAU
|
||||||
* SNMP::Info::Layer1
|
* SNMP::Info::Layer1
|
||||||
o SNMP::Info::Layer1::Allied
|
o SNMP::Info::Layer1::Allied
|
||||||
o SNMP::Info::Layer1::Asante
|
o SNMP::Info::Layer1::Asante
|
||||||
* SNMP::Info::Layer2
|
* SNMP::Info::Layer2
|
||||||
o SNMP::Info::Layer2::Bay
|
o SNMP::Info::Layer2::Bay
|
||||||
o SNMP::Info::Layer2::C1900
|
o SNMP::Info::Layer2::C1900
|
||||||
o SNMP::Info::Layer2::C2900
|
o SNMP::Info::Layer2::C2900
|
||||||
o SNMP::Info::Layer2::Catalyst
|
o SNMP::Info::Layer2::Catalyst
|
||||||
o SNMP::Info::Layer2::HP
|
o SNMP::Info::Layer2::HP
|
||||||
* SNMP::Info::Layer3
|
* SNMP::Info::Layer3
|
||||||
o SNMP::Info::Layer3::Aironet
|
o SNMP::Info::Layer3::Aironet
|
||||||
o SNMP::Info::Layer3::Foundry
|
o SNMP::Info::Layer3::Foundry
|
||||||
|
|||||||
37
Info.pm
37
Info.pm
@@ -24,7 +24,7 @@ use vars
|
|||||||
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
|
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
|
||||||
$NOSUCH $BIGINT $REPEATERS/;
|
$NOSUCH $BIGINT $REPEATERS/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
|
|||||||
|
|
||||||
=head1 VERSION
|
=head1 VERSION
|
||||||
|
|
||||||
SNMP::Info - Version 3.20
|
SNMP::Info - Version 3.23
|
||||||
|
|
||||||
=head1 AUTHOR
|
=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.
|
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
|
=item SNMP::Info::NortelStack
|
||||||
|
|
||||||
F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
|
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.
|
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
|
=item SNMP::Info::Layer3::Foundry
|
||||||
|
|
||||||
Subclass for Brocade (Foundry) Network devices.
|
Subclass for Brocade (Foundry) Network devices.
|
||||||
@@ -1510,6 +1522,7 @@ sub device_type {
|
|||||||
9303 => 'SNMP::Info::Layer3::PacketFront',
|
9303 => 'SNMP::Info::Layer3::PacketFront',
|
||||||
10002 => 'SNMP::Info::Layer2::Ubiquiti',
|
10002 => 'SNMP::Info::Layer2::Ubiquiti',
|
||||||
12325 => 'SNMP::Info::Layer3::Pf',
|
12325 => 'SNMP::Info::Layer3::Pf',
|
||||||
|
12356 => 'SNMP::Info::Layer3::Fortinet',
|
||||||
14179 => 'SNMP::Info::Layer2::Airespace',
|
14179 => 'SNMP::Info::Layer2::Airespace',
|
||||||
14525 => 'SNMP::Info::Layer2::Trapeze',
|
14525 => 'SNMP::Info::Layer2::Trapeze',
|
||||||
14823 => 'SNMP::Info::Layer3::Aruba',
|
14823 => 'SNMP::Info::Layer3::Aruba',
|
||||||
@@ -1665,7 +1678,7 @@ sub device_type {
|
|||||||
# Starting with IOS 15, Aironet reports sysServices 6, even though
|
# Starting with IOS 15, Aironet reports sysServices 6, even though
|
||||||
# it still is the same layer2 access point.
|
# it still is the same layer2 access point.
|
||||||
$objtype = 'SNMP::Info::Layer2::Aironet'
|
$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/ );
|
and $desc =~ /\bIOS\b/ );
|
||||||
|
|
||||||
# Airespace (WLC) Module
|
# Airespace (WLC) Module
|
||||||
@@ -3404,7 +3417,7 @@ sub munge_mac {
|
|||||||
|
|
||||||
=item munge_prio_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.
|
hex string.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
@@ -3418,6 +3431,22 @@ sub munge_prio_mac {
|
|||||||
return;
|
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()
|
=item munge_octet2hex()
|
||||||
|
|
||||||
Takes a binary octet stream and returns an ASCII hex string
|
Takes a binary octet stream and returns an ASCII hex string
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS
|
%MIBS
|
||||||
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
|
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
|
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (); # IF-MIB
|
%MIBS = (); # IF-MIB
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
134
Info/Bridge.pm
134
Info/Bridge.pm
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
|
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
|
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
|
||||||
@@ -84,6 +84,17 @@ $VERSION = '3.20';
|
|||||||
'bs_to' => 'dot1dStaticAllowedToGoTo',
|
'bs_to' => 'dot1dStaticAllowedToGoTo',
|
||||||
'bs_status' => 'dot1dStaticStatus',
|
'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
|
# Spanning Tree Protocol Table : dot1dStpPortTable
|
||||||
'stp_p_id' => 'dot1dStpPort',
|
'stp_p_id' => 'dot1dStpPort',
|
||||||
'stp_p_priority' => 'dot1dStpPortPriority',
|
'stp_p_priority' => 'dot1dStpPortPriority',
|
||||||
@@ -125,15 +136,18 @@ $VERSION = '3.20';
|
|||||||
'b_mac' => \&SNMP::Info::munge_mac,
|
'b_mac' => \&SNMP::Info::munge_mac,
|
||||||
'fw_mac' => \&SNMP::Info::munge_mac,
|
'fw_mac' => \&SNMP::Info::munge_mac,
|
||||||
'bs_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_root' => \&SNMP::Info::munge_prio_mac,
|
||||||
'stp_p_bridge' => \&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_egress' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_cv_untagged' => \&SNMP::Info::munge_port_list,
|
'qb_cv_untagged' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_v_egress' => \&SNMP::Info::munge_port_list,
|
'qb_v_egress' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
|
'qb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_v_untagged' => \&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 $partial = shift;
|
||||||
|
|
||||||
my $qb_fw_port = $bridge->qb_fw_port($partial);
|
my $qb_fw_port = $bridge->qb_fw_port($partial);
|
||||||
|
my $qb_fdb_ids = $bridge->qb_fdb_index() || {};
|
||||||
|
|
||||||
|
|
||||||
my $qb_fw_vlan = {};
|
my $qb_fw_vlan = {};
|
||||||
foreach my $idx ( keys %$qb_fw_port ) {
|
foreach my $idx ( keys %$qb_fw_port ) {
|
||||||
my ( $fdb_id, $mac ) = _qb_fdbtable_index($idx);
|
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;
|
return $qb_fw_vlan;
|
||||||
}
|
}
|
||||||
@@ -189,6 +213,25 @@ sub qb_i_vlan_t {
|
|||||||
return $i_vlan;
|
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 $orig (keys(%$qb_fdb_ids)) {
|
||||||
|
(my $new = $orig) =~ s/^\d+\.//;
|
||||||
|
$vl_fdb_index->{$new} = $qb_fdb_ids->{$orig};
|
||||||
|
}
|
||||||
|
|
||||||
|
return $vl_fdb_index;
|
||||||
|
}
|
||||||
|
|
||||||
# Most devices now support Q-BRIDGE-MIB, fall back to
|
# Most devices now support Q-BRIDGE-MIB, fall back to
|
||||||
# BRIDGE-MIB for those that don't.
|
# BRIDGE-MIB for those that don't.
|
||||||
sub fw_mac {
|
sub fw_mac {
|
||||||
@@ -343,20 +386,31 @@ sub i_vlan_membership {
|
|||||||
my $bridge = shift;
|
my $bridge = shift;
|
||||||
my $partial = 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
|
# Use VlanCurrentTable if available since it will include dynamic
|
||||||
# VLANs. However, some devices do not populate the table.
|
# 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
|
return $bridge->_vlan_hoa($v_ports, $partial);
|
||||||
# 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();
|
|
||||||
|
|
||||||
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 ) {
|
foreach my $idx ( keys %$v_ports ) {
|
||||||
next unless ( defined $v_ports->{$idx} );
|
next unless ( defined $v_ports->{$idx} );
|
||||||
my $portlist = $v_ports->{$idx};
|
my $portlist = $v_ports->{$idx};
|
||||||
@@ -376,10 +430,10 @@ sub i_vlan_membership {
|
|||||||
my $ifindex = $index->{$port};
|
my $ifindex = $index->{$port};
|
||||||
next unless ( defined($ifindex) ); # shouldn't happen
|
next unless ( defined($ifindex) ); # shouldn't happen
|
||||||
next if ( defined $partial and $ifindex !~ /^$partial$/ );
|
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 {
|
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";
|
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()
|
=item $bridge->qb_i_vlan_t()
|
||||||
|
|
||||||
Returns reference to hash: key = C<dot1dBasePort>, value = either 'trunk' for
|
Returns reference to hash: key = C<dot1dBasePort>, value = either 'trunk' for
|
||||||
tagged ports or the VLAN ID.
|
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()
|
=item $bridge->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
@@ -707,6 +771,48 @@ to this port.
|
|||||||
|
|
||||||
=back
|
=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>)
|
=head2 Spanning Tree Protocol Table (C<dot1dStpPortTable>)
|
||||||
|
|
||||||
Descriptions are straight from F<BRIDGE-MIB.my>
|
Descriptions are straight from F<BRIDGE-MIB.my>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info;
|
|||||||
use vars
|
use vars
|
||||||
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
|
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# Five data structures required by SNMP::Info
|
# Five data structures required by SNMP::Info
|
||||||
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
|
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::IEEE802dot3ad::MIBS,
|
%SNMP::Info::IEEE802dot3ad::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
|
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
|
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
|
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
|
||||||
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
|
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
|
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
|
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
|
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'SNMPv2-MIB' => 'sysDescr',
|
'SNMPv2-MIB' => 'sysDescr',
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
|
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
|
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
|
||||||
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
|
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-VTP-MIB' => 'vtpVlanName',
|
'CISCO-VTP-MIB' => 'vtpVlanName',
|
||||||
@@ -149,6 +149,7 @@ sub i_vlan {
|
|||||||
|
|
||||||
my $port_vlan = $vtp->vtp_trunk_native($partial) || {};
|
my $port_vlan = $vtp->vtp_trunk_native($partial) || {};
|
||||||
my $i_vlan = $vtp->i_vlan2($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 $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
|
||||||
|
|
||||||
my %i_vlans;
|
my %i_vlans;
|
||||||
@@ -165,8 +166,17 @@ sub i_vlan {
|
|||||||
foreach my $port ( keys %$port_vlan ) {
|
foreach my $port ( keys %$port_vlan ) {
|
||||||
my $vlan = $port_vlan->{$port};
|
my $vlan = $port_vlan->{$port};
|
||||||
next unless defined $vlan;
|
next unless defined $vlan;
|
||||||
|
|
||||||
|
# ports up and trunking should have a trunking status
|
||||||
my $stat = $trunk_dyn_stat->{$port};
|
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;
|
$i_vlans{$port} = $vlan;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -217,6 +227,7 @@ sub i_vlan_membership {
|
|||||||
my $vtp_vlans = $vtp->v_state();
|
my $vtp_vlans = $vtp->v_state();
|
||||||
my $i_vlan = $vtp->i_vlan2($partial) || {};
|
my $i_vlan = $vtp->i_vlan2($partial) || {};
|
||||||
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
|
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
|
||||||
|
my $trunk_dyn = $vtp->vtp_trunk_dyn($partial) || {};
|
||||||
|
|
||||||
my $i_vlan_membership = {};
|
my $i_vlan_membership = {};
|
||||||
|
|
||||||
@@ -224,8 +235,8 @@ sub i_vlan_membership {
|
|||||||
foreach my $port ( keys %$i_vlan ) {
|
foreach my $port ( keys %$i_vlan ) {
|
||||||
my $vlan = $i_vlan->{$port};
|
my $vlan = $i_vlan->{$port};
|
||||||
next unless defined $vlan;
|
next unless defined $vlan;
|
||||||
my $stat = $trunk_dyn_stat->{$port};
|
my $dyn = $trunk_dyn->{$port};
|
||||||
if ( defined $stat and $stat =~ /notTrunking/ ) {
|
unless ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))) {
|
||||||
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -248,7 +259,9 @@ sub i_vlan_membership {
|
|||||||
|
|
||||||
foreach my $port ( keys %$ports_vlans ) {
|
foreach my $port ( keys %$ports_vlans ) {
|
||||||
my $stat = $trunk_dyn_stat->{$port};
|
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 $k = 0;
|
||||||
my $list1 = $ports_vlans->{$port} || '0';
|
my $list1 = $ports_vlans->{$port} || '0';
|
||||||
my $list2 = $ports_vlans_2k->{$port} || '0';
|
my $list2 = $ports_vlans_2k->{$port} || '0';
|
||||||
@@ -270,6 +283,20 @@ sub i_vlan_membership {
|
|||||||
return $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 {
|
sub set_i_pvid {
|
||||||
my $vtp = shift;
|
my $vtp = shift;
|
||||||
my ( $vlan_id, $ifindex ) = @_;
|
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";
|
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
|
=back
|
||||||
|
|
||||||
=head2 VLAN Table (C<CISCO-VTP-MIB::vtpVlanTable>)
|
=head2 VLAN Table (C<CISCO-VTP-MIB::vtpVlanTable>)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
|
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
|
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
|
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
|
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
|
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Aggregate;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Aggregate::MIBS,
|
%SNMP::Info::Aggregate::MIBS,
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use constant {
|
|||||||
IPV6MIB => 3,
|
IPV6MIB => 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'LLDP-MIB' => 'lldpLocSysCapEnabled',
|
'LLDP-MIB' => 'lldpLocSysCapEnabled',
|
||||||
@@ -316,7 +316,7 @@ sub _lldp_addr_index {
|
|||||||
my @oids = split( /\./, $idx );
|
my @oids = split( /\./, $idx );
|
||||||
my $index = join( '.', splice( @oids, 0, 3 ) );
|
my $index = join( '.', splice( @oids, 0, 3 ) );
|
||||||
my $proto = shift(@oids);
|
my $proto = shift(@oids);
|
||||||
my $length = shift(@oids) if scalar @oids > 4;
|
shift(@oids) if scalar @oids > 4; # $length
|
||||||
|
|
||||||
# IPv4
|
# IPv4
|
||||||
if ( $proto == 1 ) {
|
if ( $proto == 1 ) {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
|
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
|
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
|
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
|
||||||
@@ -50,11 +50,11 @@ $VERSION = '3.20';
|
|||||||
%SNMP::Info::Layer1::FUNCS,
|
%SNMP::Info::Layer1::FUNCS,
|
||||||
'asante_port' => 'ePortIndex',
|
'asante_port' => 'ePortIndex',
|
||||||
'asante_group' => 'ePortGrpIndex',
|
'asante_group' => 'ePortGrpIndex',
|
||||||
'i_type' => 'ePortStateType',
|
'i_type' => 'ePortGrpIndex',
|
||||||
'asante_up' => 'ePortStateLinkStatus',
|
'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, );
|
%MUNGE = ( %SNMP::Info::Layer1::MUNGE, );
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ Asante device through SNMP.
|
|||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
=item F<ASANTE-HUB1012-MIB>
|
=item F<ASANTE-AH1012-MIB>
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ Returns 'asante' :)
|
|||||||
|
|
||||||
=item $asante->model()
|
=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.
|
the results.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer1::MIBS,
|
%SNMP::Info::Layer1::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -38,18 +38,20 @@ use SNMP::Info;
|
|||||||
use SNMP::Info::Bridge;
|
use SNMP::Info::Bridge;
|
||||||
use SNMP::Info::Entity;
|
use SNMP::Info::Entity;
|
||||||
use SNMP::Info::PowerEthernet;
|
use SNMP::Info::PowerEthernet;
|
||||||
|
use SNMP::Info::LLDP;
|
||||||
|
|
||||||
@SNMP::Info::Layer2::ISA
|
@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//;
|
@SNMP::Info::Layer2::EXPORT_OK = qw//;
|
||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
%SNMP::Info::Entity::MIBS, %SNMP::Info::PowerEthernet::MIBS,
|
%SNMP::Info::Entity::MIBS, %SNMP::Info::PowerEthernet::MIBS,
|
||||||
|
%SNMP::Info::LLDP::MIBS,
|
||||||
);
|
);
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
@@ -57,6 +59,7 @@ $VERSION = '3.20';
|
|||||||
%SNMP::Info::Bridge::GLOBALS,
|
%SNMP::Info::Bridge::GLOBALS,
|
||||||
%SNMP::Info::Entity::GLOBALS,
|
%SNMP::Info::Entity::GLOBALS,
|
||||||
%SNMP::Info::PowerEthernet::GLOBALS,
|
%SNMP::Info::PowerEthernet::GLOBALS,
|
||||||
|
%SNMP::Info::LLDP::GLOBALS,
|
||||||
'serial1' =>
|
'serial1' =>
|
||||||
'.1.3.6.1.4.1.9.3.6.3.0', # OLD-CISCO-CHASSIS-MIB::chassisId.0
|
'.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 = (
|
%FUNCS = (
|
||||||
%SNMP::Info::FUNCS, %SNMP::Info::Bridge::FUNCS,
|
%SNMP::Info::FUNCS, %SNMP::Info::Bridge::FUNCS,
|
||||||
%SNMP::Info::Entity::FUNCS, %SNMP::Info::PowerEthernet::FUNCS,
|
%SNMP::Info::Entity::FUNCS, %SNMP::Info::PowerEthernet::FUNCS,
|
||||||
|
%SNMP::Info::LLDP::FUNCS,
|
||||||
);
|
);
|
||||||
|
|
||||||
%MUNGE = (
|
%MUNGE = (
|
||||||
@@ -73,6 +77,7 @@ $VERSION = '3.20';
|
|||||||
%SNMP::Info::Bridge::MUNGE,
|
%SNMP::Info::Bridge::MUNGE,
|
||||||
%SNMP::Info::Entity::MUNGE,
|
%SNMP::Info::Entity::MUNGE,
|
||||||
%SNMP::Info::PowerEthernet::MUNGE,
|
%SNMP::Info::PowerEthernet::MUNGE,
|
||||||
|
%SNMP::Info::LLDP::MUNGE,
|
||||||
);
|
);
|
||||||
|
|
||||||
# Method OverRides
|
# Method OverRides
|
||||||
@@ -133,23 +138,6 @@ sub serial {
|
|||||||
return;
|
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 {
|
sub interfaces {
|
||||||
my $l2 = shift;
|
my $l2 = shift;
|
||||||
my $partial = 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::Entity
|
||||||
|
|
||||||
|
=item SNMP::Info::LLDP
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Required MIBs
|
=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.
|
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
|
=head1 TABLE METHODS
|
||||||
|
|
||||||
These are methods that return tables of information in the form of a reference
|
These are methods that return tables of information in the form of a reference
|
||||||
@@ -304,12 +298,6 @@ name.
|
|||||||
|
|
||||||
Defaults to C<ifDescr> but checks and overrides with C<ifName>
|
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
|
=back
|
||||||
|
|
||||||
=head2 Table Methods imported from SNMP::Info
|
=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.
|
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
|
=cut
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::LLDP::MIBS,
|
%SNMP::Info::LLDP::MIBS,
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
'A3Com-products-MIB' => 'wlanAP7760',
|
||||||
);
|
);
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
@@ -117,6 +118,8 @@ Subclass for 3Com L2 devices
|
|||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
|
=item F<A3Com-products-MIB>
|
||||||
|
|
||||||
=item Inherited Classes' MIBs
|
=item Inherited Classes' MIBs
|
||||||
|
|
||||||
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
|
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ use SNMP::Info::IEEE802dot11;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::IEEE802dot11::GLOBALS,
|
%SNMP::Info::IEEE802dot11::GLOBALS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
|
||||||
@@ -341,6 +341,60 @@ sub peth_port_ifindex {
|
|||||||
return \%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;
|
1;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
@@ -444,6 +498,14 @@ Returns 'baystack' or 'boss' depending on software version.
|
|||||||
|
|
||||||
Returns the firmware version extracted from C<sysDescr>.
|
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
|
=back
|
||||||
|
|
||||||
=head2 Overrides
|
=head2 Overrides
|
||||||
@@ -600,6 +662,32 @@ ns_e_vendor().
|
|||||||
|
|
||||||
=back
|
=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
|
=head2 Table Methods imported from SNMP::Info::SONMP
|
||||||
|
|
||||||
See L<SNMP::Info::SONMP/"TABLE METHODS"> for details.
|
See L<SNMP::Info::SONMP/"TABLE METHODS"> for details.
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer2::GLOBALS,
|
%SNMP::Info::Layer2::GLOBALS,
|
||||||
@@ -261,6 +261,8 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged { return; }
|
||||||
|
|
||||||
sub bp_index {
|
sub bp_index {
|
||||||
my $c1900 = shift;
|
my $c1900 = shift;
|
||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
@@ -470,6 +472,9 @@ bridge group IDs.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $c1900->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Unsupported, returns nothing.
|
||||||
|
|
||||||
=item $c1900->bp_index()
|
=item $c1900->bp_index()
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2::Cisco;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer2::Cisco::GLOBALS,
|
%SNMP::Info::Layer2::Cisco::GLOBALS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2::Cisco;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::Cisco::MIBS,
|
%SNMP::Info::Layer2::Cisco::MIBS,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# This will be filled in with the device's index into the EntPhysicalEntry
|
# This will be filled in with the device's index into the EntPhysicalEntry
|
||||||
# table by the serial() function.
|
# table by the serial() function.
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ use strict;
|
|||||||
use Exporter;
|
use Exporter;
|
||||||
use SNMP::Info::Layer3;
|
use SNMP::Info::Layer3;
|
||||||
use SNMP::Info::MAU;
|
use SNMP::Info::MAU;
|
||||||
use SNMP::Info::LLDP;
|
|
||||||
use SNMP::Info::CDP;
|
use SNMP::Info::CDP;
|
||||||
use SNMP::Info::Aggregate;
|
use SNMP::Info::Aggregate;
|
||||||
|
|
||||||
@@ -44,7 +43,6 @@ use SNMP::Info::Aggregate;
|
|||||||
SNMP::Info::Aggregate
|
SNMP::Info::Aggregate
|
||||||
SNMP::Info::Layer3
|
SNMP::Info::Layer3
|
||||||
SNMP::Info::MAU
|
SNMP::Info::MAU
|
||||||
SNMP::Info::LLDP
|
|
||||||
SNMP::Info::CDP
|
SNMP::Info::CDP
|
||||||
Exporter
|
Exporter
|
||||||
/;
|
/;
|
||||||
@@ -52,12 +50,11 @@ use SNMP::Info::Aggregate;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
%SNMP::Info::MAU::MIBS,
|
%SNMP::Info::MAU::MIBS,
|
||||||
%SNMP::Info::LLDP::MIBS,
|
|
||||||
%SNMP::Info::CDP::MIBS,
|
%SNMP::Info::CDP::MIBS,
|
||||||
%SNMP::Info::Aggregate::MIBS,
|
%SNMP::Info::Aggregate::MIBS,
|
||||||
'RFC1271-MIB' => 'logDescription',
|
'RFC1271-MIB' => 'logDescription',
|
||||||
@@ -74,7 +71,6 @@ $VERSION = '3.20';
|
|||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer3::GLOBALS,
|
%SNMP::Info::Layer3::GLOBALS,
|
||||||
%SNMP::Info::MAU::GLOBALS,
|
%SNMP::Info::MAU::GLOBALS,
|
||||||
%SNMP::Info::LLDP::GLOBALS,
|
|
||||||
%SNMP::Info::CDP::GLOBALS,
|
%SNMP::Info::CDP::GLOBALS,
|
||||||
%SNMP::Info::Aggregate::GLOBALS,
|
%SNMP::Info::Aggregate::GLOBALS,
|
||||||
'serial1' => 'entPhysicalSerialNum.1',
|
'serial1' => 'entPhysicalSerialNum.1',
|
||||||
@@ -93,7 +89,6 @@ $VERSION = '3.20';
|
|||||||
%FUNCS = (
|
%FUNCS = (
|
||||||
%SNMP::Info::Layer3::FUNCS,
|
%SNMP::Info::Layer3::FUNCS,
|
||||||
%SNMP::Info::MAU::FUNCS,
|
%SNMP::Info::MAU::FUNCS,
|
||||||
%SNMP::Info::LLDP::FUNCS,
|
|
||||||
%SNMP::Info::CDP::FUNCS,
|
%SNMP::Info::CDP::FUNCS,
|
||||||
%SNMP::Info::Aggregate::FUNCS,
|
%SNMP::Info::Aggregate::FUNCS,
|
||||||
'i_type2' => 'ifType',
|
'i_type2' => 'ifType',
|
||||||
@@ -119,7 +114,6 @@ $VERSION = '3.20';
|
|||||||
# Inherit all the built in munging
|
# Inherit all the built in munging
|
||||||
%SNMP::Info::Layer3::MUNGE,
|
%SNMP::Info::Layer3::MUNGE,
|
||||||
%SNMP::Info::MAU::MUNGE,
|
%SNMP::Info::MAU::MUNGE,
|
||||||
%SNMP::Info::LLDP::MUNGE,
|
|
||||||
%SNMP::Info::CDP::MUNGE,
|
%SNMP::Info::CDP::MUNGE,
|
||||||
%SNMP::Info::Aggregate::MUNGE,
|
%SNMP::Info::Aggregate::MUNGE,
|
||||||
'c_id' => \&munge_hp_c_id,
|
'c_id' => \&munge_hp_c_id,
|
||||||
@@ -536,30 +530,6 @@ sub set_i_vlan_tagged {
|
|||||||
|
|
||||||
sub agg_ports { return agg_ports_ifstack(@_) }
|
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;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -606,8 +576,6 @@ after determining a more specific class using the method above.
|
|||||||
|
|
||||||
=item SNMP::Info::Layer2
|
=item SNMP::Info::Layer2
|
||||||
|
|
||||||
=item SNMP::Info::LLDP
|
|
||||||
|
|
||||||
=item SNMP::Info::MAU
|
=item SNMP::Info::MAU
|
||||||
|
|
||||||
=back
|
=back
|
||||||
@@ -827,22 +795,12 @@ Power supplied by PoE ports, in milliwatts
|
|||||||
Returns what version of STP the device is running.
|
Returns what version of STP the device is running.
|
||||||
(C<hpicfBridgeRstpForceVersion> with fallback to inherited stp_ver())
|
(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
|
=back
|
||||||
|
|
||||||
=head2 Globals imported from SNMP::Info::Layer2
|
=head2 Globals imported from SNMP::Info::Layer2
|
||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
|
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
|
=head2 Globals imported from SNMP::Info::MAU
|
||||||
|
|
||||||
See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
|
See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
|
||||||
@@ -894,10 +852,6 @@ ifIndex of the corresponding master ports.
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
|
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
|
=head2 Table Methods imported from SNMP::Info::MAU
|
||||||
|
|
||||||
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
|
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -376,6 +376,20 @@ sub i_vlan_membership {
|
|||||||
return $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 {
|
sub set_i_vlan {
|
||||||
my $hp = shift;
|
my $hp = shift;
|
||||||
my $rv;
|
my $rv;
|
||||||
@@ -680,6 +694,12 @@ It is the union of tagged, untagged, and auto ports.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
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()
|
=item $hp->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Airespace;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Bridge;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# This will be filled in with the device's index into the EntPhysicalEntry
|
# This will be filled in with the device's index into the EntPhysicalEntry
|
||||||
# table by the serial() function.
|
# table by the serial() function.
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
||||||
|
|||||||
@@ -41,17 +41,19 @@ use SNMP::Info::Entity;
|
|||||||
use SNMP::Info::PowerEthernet;
|
use SNMP::Info::PowerEthernet;
|
||||||
use SNMP::Info::IPv6;
|
use SNMP::Info::IPv6;
|
||||||
use SNMP::Info::AdslLine;
|
use SNMP::Info::AdslLine;
|
||||||
|
use SNMP::Info::LLDP;
|
||||||
|
|
||||||
@SNMP::Info::Layer3::ISA = qw/
|
@SNMP::Info::Layer3::ISA = qw/
|
||||||
SNMP::Info::PowerEthernet SNMP::Info::IPv6
|
SNMP::Info::PowerEthernet SNMP::Info::IPv6
|
||||||
SNMP::Info::Entity SNMP::Info::EtherLike
|
SNMP::Info::Entity SNMP::Info::EtherLike
|
||||||
SNMP::Info::Bridge SNMP::Info::AdslLine
|
SNMP::Info::Bridge SNMP::Info::AdslLine
|
||||||
|
SNMP::Info::LLDP
|
||||||
SNMP::Info Exporter/;
|
SNMP::Info Exporter/;
|
||||||
@SNMP::Info::Layer3::EXPORT_OK = qw//;
|
@SNMP::Info::Layer3::EXPORT_OK = qw//;
|
||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -61,6 +63,7 @@ $VERSION = '3.20';
|
|||||||
%SNMP::Info::Entity::MIBS,
|
%SNMP::Info::Entity::MIBS,
|
||||||
%SNMP::Info::PowerEthernet::MIBS,
|
%SNMP::Info::PowerEthernet::MIBS,
|
||||||
%SNMP::Info::IPv6::MIBS,
|
%SNMP::Info::IPv6::MIBS,
|
||||||
|
%SNMP::Info::LLDP::MIBS,
|
||||||
'IP-MIB' => 'ipNetToMediaIfIndex',
|
'IP-MIB' => 'ipNetToMediaIfIndex',
|
||||||
'OSPF-MIB' => 'ospfRouterId',
|
'OSPF-MIB' => 'ospfRouterId',
|
||||||
'BGP4-MIB' => 'bgpIdentifier',
|
'BGP4-MIB' => 'bgpIdentifier',
|
||||||
@@ -76,6 +79,7 @@ $VERSION = '3.20';
|
|||||||
%SNMP::Info::Entity::GLOBALS,
|
%SNMP::Info::Entity::GLOBALS,
|
||||||
%SNMP::Info::PowerEthernet::GLOBALS,
|
%SNMP::Info::PowerEthernet::GLOBALS,
|
||||||
%SNMP::Info::IPv6::GLOBALS,
|
%SNMP::Info::IPv6::GLOBALS,
|
||||||
|
%SNMP::Info::LLDP::GLOBALS,
|
||||||
'mac' => 'ifPhysAddress.1',
|
'mac' => 'ifPhysAddress.1',
|
||||||
'serial1' =>
|
'serial1' =>
|
||||||
'.1.3.6.1.4.1.9.3.6.3.0', # OLD-CISCO-CHASSIS-MIB::chassisId.0
|
'.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::Entity::FUNCS,
|
||||||
%SNMP::Info::PowerEthernet::FUNCS,
|
%SNMP::Info::PowerEthernet::FUNCS,
|
||||||
%SNMP::Info::IPv6::FUNCS,
|
%SNMP::Info::IPv6::FUNCS,
|
||||||
|
%SNMP::Info::LLDP::FUNCS,
|
||||||
|
|
||||||
# Obsolete Address Translation Table (ARP Cache)
|
# Obsolete Address Translation Table (ARP Cache)
|
||||||
'old_at_index' => 'atIfIndex',
|
'old_at_index' => 'atIfIndex',
|
||||||
@@ -150,6 +155,7 @@ $VERSION = '3.20';
|
|||||||
%SNMP::Info::Entity::MUNGE,
|
%SNMP::Info::Entity::MUNGE,
|
||||||
%SNMP::Info::PowerEthernet::MUNGE,
|
%SNMP::Info::PowerEthernet::MUNGE,
|
||||||
%SNMP::Info::IPv6::MUNGE,
|
%SNMP::Info::IPv6::MUNGE,
|
||||||
|
%SNMP::Info::LLDP::MUNGE,
|
||||||
'old_at_paddr' => \&SNMP::Info::munge_mac,
|
'old_at_paddr' => \&SNMP::Info::munge_mac,
|
||||||
'at_paddr' => \&SNMP::Info::munge_mac,
|
'at_paddr' => \&SNMP::Info::munge_mac,
|
||||||
'n2p_paddr' => \&SNMP::Info::munge_mac,
|
'n2p_paddr' => \&SNMP::Info::munge_mac,
|
||||||
@@ -185,23 +191,6 @@ sub root_ip {
|
|||||||
return;
|
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 {
|
sub serial {
|
||||||
my $l3 = shift;
|
my $l3 = shift;
|
||||||
|
|
||||||
@@ -427,6 +416,8 @@ after determining a more specific class using the method above.
|
|||||||
|
|
||||||
=item SNMP::Info::IPv6
|
=item SNMP::Info::IPv6
|
||||||
|
|
||||||
|
=item SNMP::Info::LLDP
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Required MIBs
|
=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::IPv6/"Required MIBs"> for its MIB requirements.
|
||||||
|
|
||||||
|
See L<SNMP::Info::LLDP/"Required MIBs"> for its MIB requirements.
|
||||||
|
|
||||||
=head1 GLOBALS
|
=head1 GLOBALS
|
||||||
|
|
||||||
These are methods that return scalar value from SNMP
|
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.
|
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
|
=head1 TABLE METHODS
|
||||||
|
|
||||||
These are methods that return tables of information in the form of a reference
|
These are methods that return tables of information in the form of a reference
|
||||||
@@ -544,12 +549,6 @@ name.
|
|||||||
|
|
||||||
Only returns those iids that have a description listed in $l3->i_description()
|
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()
|
=item $l3->i_name()
|
||||||
|
|
||||||
Returns reference to hash of iid to human set 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.
|
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
|
=cut
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -385,6 +385,20 @@ sub i_vlan_membership {
|
|||||||
return $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
|
# Bridge MIB does not map Bridge Port to ifIndex correctly on some code
|
||||||
# versions
|
# versions
|
||||||
sub bp_index {
|
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";
|
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()
|
=item $alteon->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
|
|||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
|
||||||
$int_include_vpn $fake_idx $type_class/;
|
$int_include_vpn $fake_idx $type_class/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Aggregate;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -124,6 +124,8 @@ $VERSION = '3.20';
|
|||||||
'aruba_ap_model' => 'wlanAPModelName',
|
'aruba_ap_model' => 'wlanAPModelName',
|
||||||
'aruba_ap_name' => 'wlanAPName',
|
'aruba_ap_name' => 'wlanAPName',
|
||||||
'aruba_ap_ip' => 'wlanAPIpAddress',
|
'aruba_ap_ip' => 'wlanAPIpAddress',
|
||||||
|
'aruba_ap_hw_ver' => 'wlanAPHwVersion',
|
||||||
|
'aruba_ap_sw_ver' => 'wlanAPSwVersion',
|
||||||
|
|
||||||
# WLSX-WLAN-MIB::wlsxWlanESSIDVlanPoolTable
|
# WLSX-WLAN-MIB::wlsxWlanESSIDVlanPoolTable
|
||||||
'aruba_ssid_vlan' => 'wlanESSIDVlanPoolStatus',
|
'aruba_ssid_vlan' => 'wlanESSIDVlanPoolStatus',
|
||||||
@@ -484,6 +486,7 @@ sub i_vlan {
|
|||||||
return $aruba->SUPER::i_vlan($partial)
|
return $aruba->SUPER::i_vlan($partial)
|
||||||
if keys %{ $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();
|
my $index = $aruba->aruba_if_idx();
|
||||||
|
|
||||||
if ($partial) {
|
if ($partial) {
|
||||||
@@ -512,6 +515,7 @@ sub i_vlan_membership {
|
|||||||
return $aruba->SUPER::i_vlan_membership($partial)
|
return $aruba->SUPER::i_vlan_membership($partial)
|
||||||
if keys %{ $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 $essid_ssid = $aruba->aruba_ap_bssid_ssid();
|
||||||
my $ssid_vlans = $aruba->aruba_ssid_vlan();
|
my $ssid_vlans = $aruba->aruba_ssid_vlan();
|
||||||
my $if_vlans = $aruba->aruba_if_vlan_member();
|
my $if_vlans = $aruba->aruba_if_vlan_member();
|
||||||
@@ -555,6 +559,32 @@ sub i_vlan_membership {
|
|||||||
return $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 {
|
sub i_80211channel {
|
||||||
my $aruba = shift;
|
my $aruba = shift;
|
||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
@@ -995,8 +1025,9 @@ sub e_type {
|
|||||||
sub e_hwver {
|
sub e_hwver {
|
||||||
my $aruba = shift;
|
my $aruba = shift;
|
||||||
|
|
||||||
my $ap_hw = $aruba->aruba_card_hw() || {};
|
my $ap_hw = $aruba->aruba_card_hw() || {};
|
||||||
my $ap_fpga = $aruba->aruba_card_fpga() || {};
|
my $ap_fpga = $aruba->aruba_card_fpga() || {};
|
||||||
|
my $ap_hw_ver = $aruba->aruba_ap_hw_ver() || {};
|
||||||
|
|
||||||
my %e_hwver;
|
my %e_hwver;
|
||||||
|
|
||||||
@@ -1008,9 +1039,36 @@ sub e_hwver {
|
|||||||
|
|
||||||
$e_hwver{$iid} = "$hw $fpga";
|
$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;
|
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 {
|
sub e_vendor {
|
||||||
my $aruba = shift;
|
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
|
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.
|
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()
|
=item $aruba->bp_index()
|
||||||
|
|
||||||
Augments the bridge MIB by returning reference to a hash containing the
|
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.
|
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()
|
=item $aruba->e_vendor()
|
||||||
|
|
||||||
Returns reference to hash. Key: IID, Value: aruba.
|
Returns reference to hash. Key: IID, Value: aruba.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Bridge;
|
|||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
|
||||||
%MODID_MAP %PROCID_MAP/;
|
%MODID_MAP %PROCID_MAP/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -732,6 +732,8 @@ sub i_vlan {
|
|||||||
return \%i_vlan;
|
return \%i_vlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_pvid { goto &i_vlan }
|
||||||
|
|
||||||
sub root_ip {
|
sub root_ip {
|
||||||
my $bayrs = shift;
|
my $bayrs = shift;
|
||||||
|
|
||||||
@@ -1549,6 +1551,10 @@ interfaces.
|
|||||||
|
|
||||||
Returns reference to hash. Maps port VLAN ID to IIDs.
|
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
|
=back
|
||||||
|
|
||||||
=head2 Pseudo F<ENTITY-MIB> information
|
=head2 Pseudo F<ENTITY-MIB> information
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
|
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# NOTE: Order creates precedence
|
# NOTE: Order creates precedence
|
||||||
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use SNMP::Info::MAU;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MAU::MIBS,
|
%SNMP::Info::MAU::MIBS,
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# NOTE: Order creates precedence
|
# NOTE: Order creates precedence
|
||||||
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::Cisco::MIBS,
|
%SNMP::Info::Layer3::Cisco::MIBS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::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;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -387,6 +391,10 @@ sometimes not unique.
|
|||||||
Returns reference to hash of iid to current link administrative duplex
|
Returns reference to hash of iid to current link administrative duplex
|
||||||
setting.
|
setting.
|
||||||
|
|
||||||
|
=item $dell->qb_fdb_index()
|
||||||
|
|
||||||
|
Returns nothing to work around incorrect indexing of C<dot1qTpFdbTable>
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Table Methods imported from SNMP::Info::Layer3
|
=head2 Table Methods imported from SNMP::Info::Layer3
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
|
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
|
||||||
@@ -149,11 +149,47 @@ sub i_duplex_admin {
|
|||||||
return $enterasys->mau_i_duplex_admin($partial);
|
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
|
# and we may never reach the end of the table. This behavior can be
|
||||||
# modified with the "set snmp timefilter break disable" command,
|
# modified with the "set snmp timefilter break disable" command,
|
||||||
# unfortunately it is not the default. Query with a partial value of zero
|
# 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 $orig (keys(%$qb_fdb_ids)) {
|
||||||
|
(my $new = $orig) =~ s/^\d+\.//;
|
||||||
|
$vl_fdb_index->{$new} = $qb_fdb_ids->{$orig};
|
||||||
|
}
|
||||||
|
|
||||||
|
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 {
|
sub lldp_ip {
|
||||||
my $enterasys = shift;
|
my $enterasys = shift;
|
||||||
@@ -359,9 +395,9 @@ L<SNMP::Info::MAU/"TABLE METHODS">.
|
|||||||
|
|
||||||
=back
|
=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
|
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,
|
modified with the C<"set snmp timefilter break disable"> command,
|
||||||
unfortunately it is not the default. These methods are overridden to
|
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
|
=over
|
||||||
|
|
||||||
|
=item $enterasys->qb_fdb_index()
|
||||||
|
|
||||||
|
=item $enterasys->i_vlan_membership()
|
||||||
|
|
||||||
|
=item $enterasys->i_vlan_membership_untagged()
|
||||||
|
|
||||||
=item $enterasys->lldp_if()
|
=item $enterasys->lldp_if()
|
||||||
|
|
||||||
=item $enterasys->lldp_ip()
|
=item $enterasys->lldp_ip()
|
||||||
|
|||||||
@@ -46,18 +46,19 @@ use SNMP::Info::EDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
%SNMP::Info::MAU::MIBS,
|
%SNMP::Info::MAU::MIBS,
|
||||||
%SNMP::Info::LLDP::MIBS,
|
%SNMP::Info::LLDP::MIBS,
|
||||||
%SNMP::Info::EDP::MIBS,
|
%SNMP::Info::EDP::MIBS,
|
||||||
'EXTREME-BASE-MIB' => 'extremeAgent',
|
'EXTREME-BASE-MIB' => 'extremeAgent',
|
||||||
'EXTREME-SYSTEM-MIB' => 'extremeSystem',
|
'EXTREME-SYSTEM-MIB' => 'extremeSystem',
|
||||||
'EXTREME-FDB-MIB' => 'extremeSystem',
|
'EXTREME-FDB-MIB' => 'extremeFdbMacFdbMacAddress',
|
||||||
'EXTREME-VLAN-MIB' => 'extremeVlan',
|
'EXTREME-VLAN-MIB' => 'extremeVlan',
|
||||||
'EXTREME-POE-MIB' => 'extremePethSystemAdminEnable',
|
'EXTREME-POE-MIB' => 'extremePethSystemAdminEnable',
|
||||||
|
'EXTREME-STP-EXTENSIONS-MIB' => 'extremeStpDomainBridgeId',
|
||||||
);
|
);
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
@@ -97,6 +98,20 @@ $VERSION = '3.20';
|
|||||||
'peth_power_watts' => 'extremePethSlotPowerLimit',
|
'peth_power_watts' => 'extremePethSlotPowerLimit',
|
||||||
# EXTREME-POE-MIB::extremePethPsePortTable
|
# EXTREME-POE-MIB::extremePethPsePortTable
|
||||||
'peth_port_power' => 'extremePethPortMeasuredPower',
|
'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 = (
|
%MUNGE = (
|
||||||
@@ -114,6 +129,11 @@ $VERSION = '3.20';
|
|||||||
'fan_state' => \&munge_true_ok,
|
'fan_state' => \&munge_true_ok,
|
||||||
'ex_vlan_untagged' => \&SNMP::Info::munge_port_list,
|
'ex_vlan_untagged' => \&SNMP::Info::munge_port_list,
|
||||||
'ex_vlan_tagged' => \&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
|
# Method OverRides
|
||||||
@@ -542,6 +562,78 @@ sub _extremeware_i_vlan_membership {
|
|||||||
return \%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.
|
# VLAN management.
|
||||||
# See extreme-vlan.mib for a detailed description of
|
# See extreme-vlan.mib for a detailed description of
|
||||||
# Extreme's use of ifStackTable and EXTREME-VLAN-MIB.
|
# Extreme's use of ifStackTable and EXTREME-VLAN-MIB.
|
||||||
@@ -711,6 +803,75 @@ sub lldp_if {
|
|||||||
return \%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;
|
1;
|
||||||
|
|
||||||
__END__
|
__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";
|
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()
|
=item $extreme->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
@@ -959,6 +1126,98 @@ The configured maximum amount of in-line power available to the slot.
|
|||||||
|
|
||||||
=back
|
=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
|
=head2 Table Methods imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
|
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -255,6 +255,37 @@ sub i_vlan_membership {
|
|||||||
return $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;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -391,6 +422,12 @@ IDs.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
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()
|
=item $f5->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -121,29 +121,25 @@ sub i_vlan {
|
|||||||
return $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 $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_index = $force10->v_index();
|
||||||
|
|
||||||
my $v_ports = $force10->qb_v_egress();
|
my $vlan_hoa = {};
|
||||||
|
|
||||||
# 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 = {};
|
|
||||||
|
|
||||||
foreach my $idx ( sort keys %{$v_ports} ) {
|
foreach my $idx ( sort keys %{$v_ports} ) {
|
||||||
next unless ( defined $v_ports->{$idx} );
|
next unless ( defined $v_ports->{$idx} );
|
||||||
my $portlist = $v_ports->{$idx}; # is an array reference
|
my $portlist = $v_ports->{$idx}; # is an array reference
|
||||||
my $ret = [];
|
my $ret = [];
|
||||||
my $vlan_ndx = $idx;
|
my $vlan_ndx = $idx;
|
||||||
|
|
||||||
|
# Strip TimeFilter if we're using VlanCurrentTable
|
||||||
|
( $vlan_ndx = $idx ) =~ s/^\d+\.//;
|
||||||
|
|
||||||
# Convert portlist bit array to bp_index array
|
# Convert portlist bit array to bp_index array
|
||||||
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
||||||
push( @{$ret}, $i + 1 ) if ( @$portlist[$i] );
|
push( @{$ret}, $i + 1 ) if ( @$portlist[$i] );
|
||||||
@@ -160,11 +156,10 @@ sub i_vlan_membership {
|
|||||||
# the mapping from Q-BRIDGE-MIB::dot1qVlanFdbId
|
# the mapping from Q-BRIDGE-MIB::dot1qVlanFdbId
|
||||||
my $mod = $vlan_tag % 4096;
|
my $mod = $vlan_tag % 4096;
|
||||||
|
|
||||||
push ( @{ $i_vlan_membership->{$ifindex} }, ($mod) );
|
push ( @{ $vlan_hoa->{$ifindex} }, ($mod) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $vlan_hoa;
|
||||||
return $i_vlan_membership;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
@@ -278,12 +273,6 @@ Returns the VLAN names.
|
|||||||
|
|
||||||
Currently not implemented.
|
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()
|
=item $force10->i_duplex_admin()
|
||||||
|
|
||||||
Returns info from F<MAU-MIB>
|
Returns info from F<MAU-MIB>
|
||||||
|
|||||||
200
Info/Layer3/Fortinet.pm
Normal file
200
Info/Layer3/Fortinet.pm
Normal 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.23';
|
||||||
|
|
||||||
|
%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
|
||||||
@@ -48,7 +48,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -97,6 +97,24 @@ $VERSION = '3.20';
|
|||||||
# FOUNDRY-SN-AGENT-MIB::snAgentConfigModuleTable
|
# FOUNDRY-SN-AGENT-MIB::snAgentConfigModuleTable
|
||||||
'ag_mod_type' => 'snAgentConfigModuleType',
|
'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 = (
|
%MUNGE = (
|
||||||
@@ -106,6 +124,11 @@ $VERSION = '3.20';
|
|||||||
|
|
||||||
'ag_mod2_type' => \&SNMP::Info::munge_e_type,
|
'ag_mod2_type' => \&SNMP::Info::munge_e_type,
|
||||||
'ag_mod_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 {
|
sub i_ignore {
|
||||||
@@ -277,20 +300,6 @@ sub interfaces {
|
|||||||
return $i_descr;
|
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,
|
# Entity MIB is supported on the Brocade NetIron XMR, NetIron MLX, MLXe,
|
||||||
# NetIron CES, NetIron CER, and older EdgeIron series devices.
|
# NetIron CES, NetIron CER, and older EdgeIron series devices.
|
||||||
# Try Entity MIB methods first and fall back to Pseudo ENTITY-MIB methods for
|
# Try Entity MIB methods first and fall back to Pseudo ENTITY-MIB methods for
|
||||||
@@ -817,6 +826,26 @@ sub agg_ports {
|
|||||||
return $ret;
|
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;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -1007,14 +1036,10 @@ Returns reference to hash of interface link duplex status.
|
|||||||
|
|
||||||
Crosses $foundry->sw_duplex() with $foundry->sw_index()
|
Crosses $foundry->sw_duplex() with $foundry->sw_index()
|
||||||
|
|
||||||
=item $foundry->stp_p_state()
|
=item $foundry->i_stp_state()
|
||||||
|
|
||||||
"The port's current state as defined by application of the Spanning Tree
|
Returns the mapping of (C<dot1dStpPortState>) to the interface
|
||||||
Protocol.
|
index (iid).
|
||||||
|
|
||||||
Skipped if device is an EdgeIron 24G due to reports of hangs.
|
|
||||||
|
|
||||||
(C<dot1dStpPortState>)
|
|
||||||
|
|
||||||
=item $foundry->agg_ports()
|
=item $foundry->agg_ports()
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -163,6 +163,13 @@ sub i_trunk {
|
|||||||
return \%i_trunk;
|
return \%i_trunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub qb_fdb_index {
|
||||||
|
my $juniper = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
return $juniper->jnxExVlanTag($partial);
|
||||||
|
}
|
||||||
|
|
||||||
# 'v_type' => 'jnxExVlanType',
|
# 'v_type' => 'jnxExVlanType',
|
||||||
sub v_type {
|
sub v_type {
|
||||||
my $juniper = shift;
|
my $juniper = shift;
|
||||||
@@ -214,22 +221,24 @@ sub i_vlan {
|
|||||||
return $i_vlan;
|
return $i_vlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub i_vlan_membership {
|
# Index doesn't use VLAN ID, so override the HOA private method here to
|
||||||
my $juniper = shift;
|
# correct the mapping
|
||||||
my $partial = shift;
|
sub _vlan_hoa {
|
||||||
|
my $juniper = shift;
|
||||||
|
my ( $v_ports, $partial ) = @_;
|
||||||
|
|
||||||
my $index = $juniper->bp_index();
|
my $index = $juniper->bp_index();
|
||||||
my ($v_index) = $juniper->jnxExVlanTag($partial);
|
my $v_index = $juniper->jnxExVlanTag($partial);
|
||||||
|
|
||||||
my $v_ports = $juniper->qb_v_egress() || {};
|
my $vlan_hoa = {};
|
||||||
|
foreach my $idx ( keys %$v_ports ) {
|
||||||
my $i_vlan_membership = {};
|
|
||||||
|
|
||||||
foreach my $idx ( sort keys %$v_ports ) {
|
|
||||||
next unless ( defined $v_ports->{$idx} );
|
next unless ( defined $v_ports->{$idx} );
|
||||||
my $portlist = $v_ports->{$idx}; # is an array reference
|
my $portlist = $v_ports->{$idx};
|
||||||
my $ret = [];
|
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
|
# Convert portlist bit array to bp_index array
|
||||||
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
||||||
@@ -241,11 +250,10 @@ sub i_vlan_membership {
|
|||||||
my $ifindex = $index->{$port};
|
my $ifindex = $index->{$port};
|
||||||
next unless ( defined($ifindex) ); # shouldn't happen
|
next unless ( defined($ifindex) ); # shouldn't happen
|
||||||
next if ( defined $partial and $ifindex !~ /^$partial$/ );
|
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 $vlan_hoa;
|
||||||
return $i_vlan_membership;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Pseudo ENTITY-MIB methods
|
# Pseudo ENTITY-MIB methods
|
||||||
@@ -655,6 +663,10 @@ to a hash.
|
|||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
|
=item $juniper->qb_fdb_index()
|
||||||
|
|
||||||
|
Returns reference to hash: key = VLAN ID, value = FDB ID.
|
||||||
|
|
||||||
=item $juniper->v_index()
|
=item $juniper->v_index()
|
||||||
|
|
||||||
(C<jnxExVlanTag>)
|
(C<jnxExVlanTag>)
|
||||||
@@ -675,11 +687,6 @@ to a hash.
|
|||||||
|
|
||||||
Returns a mapping between C<ifIndex> and the PVID or default VLAN.
|
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
|
=back
|
||||||
|
|
||||||
=head2 Pseudo F<ENTITY-MIB> information
|
=head2 Pseudo F<ENTITY-MIB> information
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::SONMP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::IEEE802dot11;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
# NOTE: Order creates precedence
|
# NOTE: Order creates precedence
|
||||||
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::RapidCity::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::RapidCity::MIBS,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::MAU;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.23';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user