Compare commits

...

96 Commits
3.26 ... 3.39

Author SHA1 Message Date
Oliver Gorwits
eb8af0c81b release 3.39 2017-12-17 20:19:54 +00:00
LBegnaud
bd49274808 Enhanced Ubiquiti device support (#236)
* Include EdgeSwitch and update subs to support more UBNT devices

* Adjust EdgeRouter model logic to use only standard OIDs

* Comments and code cleanup

* cleanup

* Include ER Infinity
2017-12-02 20:59:34 +00:00
Frank Maas
8b1547c589 Correct location of make_snmpdata.pl (#234)
Changed 't/util' to 'contrib/util'
2017-12-02 20:54:11 +00:00
Hannu Teulahti
c093f83848 Update HP.pm (#233)
Add missing J9774A -model
2017-12-02 20:53:53 +00:00
Jeroen van Ingen Schenau
c0b28c38c5 Merge pull request #235 from laelly/master
fix typo in CiscoASA.pm
2017-11-20 08:35:33 +01:00
laelly
4621a0898f fix typo 2017-11-18 14:53:40 +01:00
Oliver Gorwits
6f02e1035f release 3.38 2017-10-23 20:02:45 +01:00
Jeroen van Ingen
d4ae9237a6 Improve generic Info::Layer3 serial number detection
Serial numbers weren't reported for stackable Layer3::H3C devices, even
when not actually stacked. Report serial number not only if the entity
has no parent, but also if it has a parent but is of type "chassis".

This fixes #232.
2017-10-23 15:45:04 +02:00
Nathan Neulinger
914eb05a60 fdp_id masked via GLOBALS, rename to fdp_gid to match CDP module (#231) 2017-10-11 22:02:44 +01:00
Jeroen van Ingen
4da17227c1 Add newer data rates (mcs 16-23) for Cisco WLAN
Data rates up to MCS 15 (two spatial streams) at 20 MHz and 40 MHz were
defined; added MCS 16 through 23.
Decoding MCS rates at SS1 and SS2 not implemented yet.
2017-07-27 17:26:27 +02:00
operatorofhell
20014cab29 remove more bogus MAC's from Cisco ASA (#225) 2017-07-20 14:16:47 +01:00
Oliver Gorwits
9d62361c8a release 3.37 2017-07-11 21:03:39 +01:00
Oliver Gorwits
260992b7bf fix push_ver for new file loc 2017-07-11 21:02:20 +01:00
Oliver Gorwits
b9cd429551 Layer3::Juniper fixed to return os_ver for JUNOS 14.x and higher 2017-07-11 21:01:33 +01:00
Oliver Gorwits
2d18a75ad7 release 3.36 2017-06-28 22:56:35 +01:00
Oliver Gorwits
0cfc501f83 add Module::Build distmeta 2017-06-28 22:50:32 +01:00
Oliver Gorwits
44b19153f1 migrate from EUMM to Module::Build 2017-06-28 22:45:33 +01:00
Oliver Gorwits
433b87b9df release 3.35 2017-06-28 20:23:44 +01:00
Oliver Gorwits
f9464bcd6c #211 f5 class should respect UseEnums when faking i_type 2017-06-28 17:36:23 +01:00
Jeroen van Ingen
f5c5ec202a Include loading of LLDP-EXT-MED-MIB in LLDP.pm 2017-06-01 18:45:52 +02:00
Kirill Petrov
4b64a70830 Create DLink.pm (K.Petrov) (#223)
* Create DLink.pm

Create DLink class

* Update DLink.pm

* Update DLink.pm

* Update DLink.pm

* Update DLink.pm

* Update Info.pm

* Update DLink.pm

* Update DLink.pm

* Update DLink.pm

* Update DLink.pm

* Update DLink.pm

* Update DLink.pm

* Update DLink.pm
2017-05-23 08:16:31 +01:00
Endgame IT
4c8f7e298e fix error if debug is enabled (#213) 2017-02-27 14:19:05 +00:00
Oliver Gorwits
2d539be214 #50 remove interface specific part from vrf interfaces on IOS (#210)
* remove interface specific part from vrf interfaces in IOS

* Update ChangeLog

* Update ChangeLog
2017-02-04 18:35:50 +00:00
Oliver Gorwits
c35d5814b4 fix #180 support CiscoConfig on Nexus (#209)
* fix #180 support CiscoConfig on Nexus

* Update ChangeLog
2017-02-04 18:15:23 +00:00
Justin Hunter
7d19ad401b Merge branch 'master' of github.com:netdisco/snmp-info 2017-01-13 21:37:48 -07:00
Oliver Gorwits
985577ce79 Added issues template 2017-01-06 12:53:32 +00:00
Oliver Gorwits
24e20101d5 release 3.34 2016-11-20 17:45:49 +00:00
Jeroen van Ingen
76c884eb9f Document new L7::CiscoIPS support in ChangeLog 2016-10-19 10:36:42 +02:00
Jeroen van Ingen
7041dbab27 Merge remote-tracking branch 'operatorofhell/ciscoips' 2016-10-19 10:30:13 +02:00
Moritz Kraus
661051fde4 Documentation for Info::Layer7::CiscoIPS written 2016-10-12 10:52:58 +02:00
Justin Hunter
36cba5ce18 * better handling of i_vlan_membership()
* make funcs() for ALD related functions to ensure mib loaded
2016-09-19 14:46:27 -07:00
Justin Hunter
4753f30c53 return the original result unless we have the proper mapping tables 2016-09-09 16:44:04 -07:00
Justin Hunter
d719e240d2 return proper VLAN IDs for Juniper 2016-09-09 14:45:33 -07:00
Justin Hunter
e35faee278 add sensible fallback for native vlan 2016-09-09 14:31:22 -07:00
Moritz Kraus
fd3417a09a faked e_index with e_id 2016-09-09 15:59:52 +02:00
Moritz Kraus
1719709648 override e_index for IPS with e_id 2016-09-09 15:53:30 +02:00
Moritz Kraus
d37aa3378e Added sub productname 2016-09-08 17:41:11 +02:00
Moritz Kraus
f017d32860 added CiscoIPS Class 2016-09-08 16:59:53 +02:00
Justin Hunter
7b23edcb29 remove trailing comma from Juniper os_ver 2016-09-01 16:22:34 -07:00
Jeroen van Ingen
e48c4b4e84 Fix errors with serial number on Nexus and make Nexus.pm code style more consistent (#269) 2016-07-18 10:35:33 +02:00
Oliver Gorwits
aeca44c7aa Serial number on Nexus 9372 (genereic check for ID before using) (M. Caines) 2016-05-17 16:37:36 +01:00
Alexander Hartmaier
af6ae8e419 skip everything in the xt directory regardless of its name 2016-04-27 18:04:54 +02:00
Oliver Gorwits
5cf88ba3b7 release 3.33 2016-04-27 16:55:11 +01:00
Alexander Hartmaier
f901ba5591 Move author-only tests to xt directory
so they aren't run on installation by users
2016-04-27 17:49:26 +02:00
Alexander Hartmaier
7deea96bc3 Correct device serial number reporting for Cisco Nexus 5k switches with software version >= 7 2016-04-27 16:54:02 +02:00
Alexander Hartmaier
48dfb9bd08 fix Useless use of greediness modifier '?' in regex 2016-04-27 16:23:48 +02:00
Alexander Hartmaier
85372559fa fix t/00_local_pod-coverage.t 2016-04-27 16:18:49 +02:00
Alexander Hartmaier
98972b80ef fix t/00_local_docininfo.t 2016-04-27 15:54:04 +02:00
Alexander Hartmaier
d950244232 fix t/00_local_spelling.t 2016-04-27 15:39:17 +02:00
Oliver Gorwits
fd898829c3 release 3.32 2016-04-26 21:26:39 +01:00
Oliver Gorwits
b0158628bb update copyright year 2016-04-26 21:25:09 +01:00
Oliver Gorwits
0f69a7b391 Removed DeviceMatrix from the distribution 2016-04-26 21:24:27 +01:00
Oliver Gorwits
72773117e5 Respect version/comm/secname on passed Session obj 2016-04-26 21:17:35 +01:00
Oliver Gorwits
06806f5a6e AUTOLOAD typo-catcher search for SNMP::Info no longer anchored 2016-04-26 21:02:57 +01:00
Oliver Gorwits
a01c785ec8 add missing changelog entries GRRRRRR! 2016-04-26 21:01:08 +01:00
Brian De Wolf
502e206371 Improve VG350 detection
Cisco VG350s get detected as Aironet 350s, which breaks CDP collection.  This
overrides the behavior to mark VG350s as generic Cisco Layer3 devices.
2016-04-08 16:18:30 -07:00
Max Kosmach
8fba1bc6a9 Remove L2 from PaloAlto layers 2016-03-19 15:27:21 +03:00
Jeroen van Ingen
f43803d6d4 Merge /u/begemot/snmp-info/ branch support-for-paloalto-v2 into master
https://sourceforge.net/p/snmp-info/code/merge-requests/14/
2016-03-17 13:59:00 +00:00
Jeroen van Ingen
338cba6350 Merge /u/begemot/snmp-info/ branch support-for-vmware-v2 into master
https://sourceforge.net/p/snmp-info/code/merge-requests/15/
2016-03-11 08:16:12 +00:00
Jeroen van Ingen
2a15066062 APC: also report model for PDU products (#61) 2016-03-07 10:12:55 +01:00
Jeroen van Ingen
add86bc566 Add workaround in IPv6.pm to deal with possibly incorrect IPV6-MIB implementations 2016-03-01 08:37:26 +01:00
Jeroen van Ingen
e9b4eaaeb9 Merge /u/begemot/snmp-info/ branch fix-apc-mac into master
http://sourceforge.net/p/snmp-info/code/merge-requests/17/
2016-02-29 09:23:08 +00:00
Oliver Gorwits
07605051f5 Avoid deep recusion when AUTOLOAD and carp collide 2016-02-25 20:02:19 +00:00
Oliver Gorwits
998356484b Merge branch 'master' of ssh://git.code.sf.net/p/snmp-info/code 2016-02-25 17:54:11 +00:00
Oliver Gorwits
e97617ad60 Do not init table cache if Cache provided by user 2016-02-25 08:04:20 +00:00
Oliver Gorwits
9685c3afa8 Support undefined (noSuchIntance) values in Offline mode 2016-02-25 07:49:55 +00:00
Bill Fenner
c209b9a72f Merge /u/begemot/snmp-info/ branch fix-aggregate into master
http://sourceforge.net/p/snmp-info/code/merge-requests/18/
2016-02-24 16:49:59 +00:00
Max Kosmach
4999b769ba fix for 'Use of inherited AUTOLOAD for non-method SNMP::Info::Layer2::HP::agg_ports_ifstack() is deprecated' 2016-02-24 18:50:45 +03:00
Max Kosmach
d8b5ba2161 Add device MAC to APC UPS 2016-02-23 19:20:52 +03:00
Max Kosmach
6f4a4a91cf Add support for propMultiplexor as ifType.
3Com/H3C switches use this type for Link Aggegation without LACP.
2016-02-19 18:46:49 +03:00
Max Kosmach
0049f0d72e Add VMware support 2016-02-17 01:59:24 +03:00
Max Kosmach
4ea66fc0fd Add Palo Alto support 2016-02-17 01:45:32 +03:00
Max Kosmach
8426620572 Add 200 Mbps and 2.0 Gbps aliases to SPEED_MAP (useful withport aggregation) 2016-02-11 21:50:44 +03:00
Oliver Gorwits
76aece0a3f release 3.31 2016-01-22 20:40:09 +00:00
Eric A. Miller
508e7f77a0 Add support for channelized interfaces in L3::Passport.
Channelized interfaces are 40G or 100G ports split into multiple 10G sub ports, reported as Slot.Port.Sub-Port.  Note: Currently ifDescr reports the interface correctly as Slot/Port/Sub-Port on channelized interfaces but ifName misreports as just Slot/Port.
2016-01-19 23:24:00 -05:00
Eric A. Miller
d250a829cb SONMP support for Enhanced Topology Table
The Enhanced Topology Table (s5EnMsTopNmmEnhancedTable) supports channelized interfaces as sub ports and is the only table populated on newer VOSS based devices.
2016-01-19 23:16:21 -05:00
Oliver Gorwits
2fada0c31c Support for CiscoSB OS and Version (D. Tuecks) 2015-11-28 20:19:33 +00:00
Oliver Gorwits
e6ad08733d release 3.30 2015-11-16 21:35:59 +00:00
Eric A. Miller
a8d83b5e1c Statistics in the sysIfxStatTable are 64-bit counters, so they should override the 64-bit methods. See documentation at https://metacpan.org/pod/SNMP::Info#Interface-Statistics for implications. The proprietary MIB does not have 32-bit counters, as a result 32-bit counter methods are not overridden. 2015-11-10 23:05:47 -05:00
Eric A. Miller
9392b74cbc Correct port indexing of newer VSP 4K and 8K in L3::Passport 2015-11-10 22:42:15 -05:00
Eric A. Miller
e09624efd0 RT #106254: Add new sysObjectID mapping for Ubiquiti 2015-11-10 22:21:21 -05:00
Alexander Hartmaier
d4d7429de4 Correct link to MIB tarball 2015-11-10 10:26:31 +01:00
Oliver Gorwits
b97cef86a3 release 3.29 2015-10-13 22:31:16 +01:00
Jeroen van Ingen
70615a172b IPv6 related updated to Info::LLDP
- LLDP::lldp_addr() may now also return neighbor IPv6 addresses
- Make more clear in POD that lldp_addr() will not return all management addresses reported by neighbor, it's a kind of roulette
- Add LLDP::lldp_ipv6() and LLDP::lldp_mac() methods for remote management addresses of types IPv6 and MAC, respectively
2015-09-04 16:15:08 +02:00
Jeroen van Ingen
d399ca90d3 Add IPv6::ipv6_addr() method for decoding table instances to actual addresses 2015-09-01 14:53:34 +02:00
Jeroen van Ingen
bbc9695075 Report L2 capability on PacketFront devices if they have bridge ports 2015-06-29 17:02:48 +02:00
Oliver Gorwits
c8fceeb75b release 3.28 2015-06-18 22:37:26 +01:00
Eric A. Miller
036cb4556e Correct port indexing of VSP 4K in L3::Passport 2015-06-11 18:23:23 -04:00
Jeroen van Ingen
e7b06a0b06 POD fixes in Layer2::Aironet 2015-06-09 17:17:46 +02:00
Jeroen van Ingen
c0067113e9 Add model translation to Layer3::Huawei by loading correct MIB 2015-06-09 17:17:01 +02:00
Jeroen van Ingen
ce4349a188 Try to determine whether a device in generic Layer3::Cisco class needs community based indexing
Layer3 capable Cisco device without a mapping to a more specific class fall
under the Layer3::Cisco class. These can be "real" routers that don't need
community based indexing, or Layer 3 switches that do need community based
indexing (to fetch L2 forwarding tables for different VLANs). Generally, if
community based indexing is needed on a platform, it also supports the
CISCO-VTP-MIB. Dynamically return cisco_comm_indexing based on vtpVersion.
2015-06-02 18:07:50 +02:00
Jeroen van Ingen
224085dfca Add Layer3::Huawei class 2015-06-02 17:17:13 +02:00
Oliver Gorwits
9b3262a5fe release 3.27 2015-05-05 20:32:40 +01:00
Oliver Gorwits
86856b6d54 Only log adding mibdirs at debug level 2 2015-05-05 20:24:44 +01:00
Oliver Gorwits
d5bf08329e [#221] Drop Cisco Voice VLAN 4096 2015-05-05 20:18:48 +01:00
Bill Fenner
60efce8404 Add power supply information
Use ps1_type and ps1_status to report power injector type
(e.g., cdp negotiated, inline power, etc.) and status
(e.g., full power, reduced power)
2015-03-18 19:05:40 +00:00
145 changed files with 3296 additions and 3839 deletions

31
.github/issue_template.md vendored Normal file
View File

@@ -0,0 +1,31 @@
<!--- Provide a general summary of the issue in the Title above -->
<!--- https://guides.github.com/features/mastering-markdown/#examples -->
## Expected Behavior
<!--- If you're describing a bug, tell us what should happen -->
<!--- If you're suggesting a change/improvement, tell us how it should work -->
## Current Behavior
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
## Possible Solution
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
<!--- or ideas how to implement the addition or change -->
## Steps to Reproduce (for bugs)
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant, or attach screenshots -->
1.
2.
3.
4.
## Context
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Your Environment
<!--- Include as many relevant details about the environment you experienced the bug in -->
* SNMP::Info version used:
* Netdisco version (if used):

18
.gitignore vendored
View File

@@ -1,9 +1,11 @@
*.db *.swp
SNMP *.pid
*.komodo* test.pl
blib/
META.*
MYMETA.* MYMETA.*
Makefile *.tar.gz
Makefile.old MANIFEST.*
pm_to_blib *.komodo*
Makefile*
Build
_build
blib

36
Build.PL Normal file
View File

@@ -0,0 +1,36 @@
use strict;
use warnings;
use Module::Build;
Module::Build->new(
module_name => 'SNMP::Info',
license => 'bsd',
dist_author => 'Eric A. Miller <emiller@cpan.org>',
# dynamic_config => 1,
configure_requires => {
'Module::Build' => '0.42',
},
# build_requires => {
# },
requires => {
'SNMP' => '0',
'Math::BigInt' => '0',
},
# recommends => {
# },
test_requires => {
'Test::More' => '0.88',
},
# script_files => [
# ],
# share_dir => 'share',
meta_merge => {
resources => {
homepage => 'http://netdisco.org/',
bugtracker => 'https://github.com/netdisco/snmp-info/issues',
repository => 'https://github.com/netdisco/snmp-info',
MailingList => 'https://lists.sourceforge.net/lists/listinfo/snmp-info-users',
IRC => 'irc://irc.freenode.org/#netdisco',
},
},
)->create_build_script;

View File

@@ -1,5 +1,153 @@
SNMP::Info - Friendly OO-style interface to Network devices using SNMP. SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
version 3.39 (2017-12-17)
[ENHANCEMENTS]
* #236 Enhanced Ubiquiti device support (L. Begnaud)
* add HP J9774A model (H. Teulahti)
[BUG FIXES]
* fix scripts (F. Mass)
* fix CiscoASA typos (laelly)
version 3.38 (2017-10-23)
[ENHANCEMENTS]
* Layer2::Airespace several newer 802.11 data rates added
[BUG FIXES]
* #232 Improve generic Info::Layer3 serial number detection
version 3.37 (2017-07-11)
[ENHANCEMENTS]
* Layer3::Juniper fixed to return os_ver for JUNOS 14.x and higher
version 3.36 (2017-06-28)
[ENHANCEMENTS]
* Migrate to Module::Build for distribution maintenance
version 3.35 (2017-06-28)
[ENHANCEMENTS]
* Include loading of LLDP-EXT-MED-MIB in LLDP.pm
[BUG FIXES]
* #180 support CiscoConfig on Nexus (sf.net:scratchfury)
* #50 remove interface specific part from vrf interfaces on IOS (W. Vandersmissen)
* #211 f5 class should respect UseEnums when faking i_type
version 3.34 (2016-11-20)
[ENHANCEMENTS]
* Support Cisco IPS Modules homed on the Cisco ASA (M. Kraus)
[BUG FIXES]
* Serial number on Nexus 9372 (genereic check for ID before using) (M. Caines)
version 3.33 (2016-04-27)
[ENHANCEMENTS]
* Move author-only tests to xt directory so they aren't run on installation
by users
[BUG FIXES]
* Correct device serial number reporting for Cisco Nexus 5k switches with
software version >= 7
version 3.32 (2016-04-26)
[ENHANCEMENTS]
* Add 200 Mbps and 2.0 Gbps aliases to SPEED_MAP
* Add Palo Alto support
* Add VMware support
* Support for propMultiplexor as ifType
* Add device MAC to APC UPS
* [#61] Report APC model for PDU products
* Removed DeviceMatrix from the distribution
[BUG FIXES]
* Support undefined (noSuchInstance) values in Offline mode
* Do not init table cache if Cache provided by user
* Avoid deep recusion when AUTOLOAD and carp collide
* Detect Cisco VG350s as L3 devices instead of APs
* fix for 'Use of inherited AUTOLOAD for non-method SNMP::Info::Layer2::HP::agg_ports_ifstack() is deprecated'
* Workaround in IPv6.pm to deal with possibly incorrect IPV6-MIB implementations
* [#71] AUTOLOAD typo-catcher search for SNMP::Info no longer anchored
* [#70] Respect version/comm/secname on passed Session obj
version 3.31 (2016-01-22)
[ENHANCEMENTS]
* Support for CiscoSB OS and Version (D. Tuecks)
* SONMP support for Enhanced Topology Table
* Add support for channelized interfaces in L3::Passport
[BUG FIXES]
* Correct link to MIB tarball
version 3.30 (2015-11-16)
[ENHANCEMENTS]
* RT #106254: Add new sysObjectID mapping for Ubiquiti
[BUG FIXES]
* Correct link to MIB tarball
* Correct port indexing of newer VSP 4K and 8K in L3::Passport
* Statistics in the sysIfxStatTable are 64-bit counters, so they should
override the 64-bit methods.
version 3.29 (2015-10-13)
[ENHANCEMENTS]
* Add IPv6::ipv6_addr() method to map IPv6 interface address indexes to actual addresses
* Add support for (remote) IPv6 addresses to LLDP::lldp_addr()
* Add LLDP::lldp_ipv6() and LLDP::lldp_mac() so that remote management
addresses of specific types can be requested
version 3.28 (2015-06-18)
[ENHANCEMENTS]
* Add Layer3::Huawei class for Huawei Quidway switches
* Modified generic Layer3::Cisco class: use community based indexing if
the device returns a value for vtpVersion
[BUG FIXES]
* Correct port indexing of VSP 4K in L3::Passport
version 3.27 (2015-05-05)
[ENHANCEMENTS]
* Cisco Aironet PSU information
* Only log adding mibdirs at debug level 2
[BUG FIXES]
* [#221] Drop Cisco Voice VLAN 4096
version 3.26 (2015-03-07) version 3.26 (2015-03-07)
[ENHANCEMENTS] [ENHANCEMENTS]
@@ -619,7 +767,7 @@ version 1.05 (11/25/07) - CVS only. No official release
+ Added support for Cisco (Airespace) wireless controllers as new class + Added support for Cisco (Airespace) wireless controllers as new class
L2::Airespace L2::Airespace
+ Added support for Nortel Ethernet Routing Switch 2500 series and + Added support for Nortel Ethernet Routing Switch 2500 series and
Business Ethernet Switches (David Siebörger) Business Ethernet Switches (David Siebörger)
+ Update of L3::Foundry to support all Foundry devices including newer + Update of L3::Foundry to support all Foundry devices including newer
switches. Depreciate L2::Foundry. switches. Depreciate L2::Foundry.
+ Added generic device type detection using IANA assigned enterpise + Added generic device type detection using IANA assigned enterpise

File diff suppressed because it is too large Load Diff

View File

@@ -1,177 +0,0 @@
# SNMP::Info::Layer2::Ubiquiti
# $Id$
#
package SNMP::Info::Layer2::Ubiquiti;
use strict;
use Exporter;
use SNMP::Info::IEEE802dot11;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Ubiquiti::ISA
= qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Ubiquiti::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::IEEE802dot11::MIBS,
);
%GLOBALS
= ( %SNMP::Info::Layer2::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS, );
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::IEEE802dot11::FUNCS,
);
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::IEEE802dot11::MUNGE, );
sub os {
return 'Ubiquiti';
}
sub os_ver {
my $dot11 = shift;
my $versions = $dot11->dot11_prod_ver();
foreach my $iid ( keys %$versions ) {
my $ver = $versions->{$iid};
next unless defined $ver;
return $ver;
if ( $ver =~ /([\d\.]+)/ ) {
return $1;
}
}
return;
}
sub vendor {
return 'Ubiquiti Networks, Inc.';
}
sub model {
my $dot11 = shift;
my $names = $dot11->dot11_prod_name();
foreach my $iid ( keys %$names ) {
my $prod = $names->{$iid};
next unless defined $prod;
return $prod;
}
return;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Ubiquiti - SNMP Interface to Ubiquiti Access Points
=head1 AUTHOR
Max Kosmach
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $ubnt = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $ubnt->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from
Ubiquiti Access Point through SNMP.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $ubnt = new SNMP::Info::Layer2::Ubiquiti(...);
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=item SNMP::Info::IEEE802dot11
=back
=head2 Required MIBs
None.
=head2 Inherited MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::IEEE802dot11/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $ubnt->vendor()
Returns 'Ubiquiti Networks, Inc.'
=item $ubnt->model()
Returns the model extracted from C<dot11manufacturerProductName>.
=item $ubnt->os()
Returns 'Ubiquiti'
=item $ubnt->os_ver()
Returns the software version extracted from C<dot11manufacturerProductVersion>.
=back
=head2 Global Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::IEEE802dot11
See L<SNMP::Info::IEEE802dot11/"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::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::IEEE802dot11
See L<SNMP::Info::IEEE802dot11/"TABLE METHODS"> for details.
=cut

View File

@@ -1,5 +1,5 @@
All code from version 0.7 on All code from version 0.7 on
Copyright (c) 2003-2009 Max Baker and SNMP::Info Developers Copyright (c) 2003-2016 Max Baker and SNMP::Info Developers
All rights reserved. All rights reserved.
Original Code Original Code

261
MANIFEST
View File

@@ -1,125 +1,138 @@
ChangeLog Build.PL
COPYRIGHT Changes
DEVELOP contrib/DEVELOP
DeviceMatrix.txt contrib/util/docmunge
Info.pm contrib/util/make_dev_matrix.pl
Info/AdslLine.pm contrib/util/make_snmpdata.pl
Info/Aggregate.pm contrib/util/push_ver
Info/Airespace.pm contrib/util/run_test
Info/AMAP.pm contrib/util/test_class.pl
Info/Bridge.pm contrib/util/test_class_mocked.pl
Info/CDP.pm lib/SNMP/Info.pm
Info/CiscoAgg.pm lib/SNMP/Info/AdslLine.pm
Info/CiscoConfig.pm lib/SNMP/Info/Aggregate.pm
Info/CiscoPortSecurity.pm lib/SNMP/Info/Airespace.pm
Info/CiscoPower.pm lib/SNMP/Info/AMAP.pm
Info/CiscoQOS.pm lib/SNMP/Info/Bridge.pm
Info/CiscoRTT.pm lib/SNMP/Info/CDP.pm
Info/CiscoStack.pm lib/SNMP/Info/CiscoAgg.pm
Info/CiscoStats.pm lib/SNMP/Info/CiscoConfig.pm
Info/CiscoStpExtensions.pm lib/SNMP/Info/CiscoPortSecurity.pm
Info/CiscoVTP.pm lib/SNMP/Info/CiscoPower.pm
Info/EDP.pm lib/SNMP/Info/CiscoQOS.pm
Info/Entity.pm lib/SNMP/Info/CiscoRTT.pm
Info/EtherLike.pm lib/SNMP/Info/CiscoStack.pm
Info/FDP.pm lib/SNMP/Info/CiscoStats.pm
Info/IEEE802dot11.pm lib/SNMP/Info/CiscoStpExtensions.pm
Info/IEEE802dot3ad.pm lib/SNMP/Info/CiscoVTP.pm
Info/IPv6.pm lib/SNMP/Info/EDP.pm
Info/Layer1.pm lib/SNMP/Info/Entity.pm
Info/Layer1/Allied.pm lib/SNMP/Info/EtherLike.pm
Info/Layer1/Asante.pm lib/SNMP/Info/FDP.pm
Info/Layer1/Bayhub.pm lib/SNMP/Info/IEEE802dot11.pm
Info/Layer1/Cyclades.pm lib/SNMP/Info/IEEE802dot3ad.pm
Info/Layer1/S3000.pm lib/SNMP/Info/IPv6.pm
Info/Layer2.pm lib/SNMP/Info/Layer1.pm
Info/Layer2/3Com.pm lib/SNMP/Info/Layer1/Allied.pm
Info/Layer2/Airespace.pm lib/SNMP/Info/Layer1/Asante.pm
Info/Layer2/Aironet.pm lib/SNMP/Info/Layer1/Bayhub.pm
Info/Layer2/Allied.pm lib/SNMP/Info/Layer1/Cyclades.pm
Info/Layer2/Baystack.pm lib/SNMP/Info/Layer1/S3000.pm
Info/Layer2/C1900.pm lib/SNMP/Info/Layer2.pm
Info/Layer2/C2900.pm lib/SNMP/Info/Layer2/3Com.pm
Info/Layer2/Catalyst.pm lib/SNMP/Info/Layer2/Airespace.pm
Info/Layer2/Centillion.pm lib/SNMP/Info/Layer2/Aironet.pm
Info/Layer2/Cisco.pm lib/SNMP/Info/Layer2/Allied.pm
Info/Layer2/CiscoSB.pm lib/SNMP/Info/Layer2/Baystack.pm
Info/Layer2/HP.pm lib/SNMP/Info/Layer2/C1900.pm
Info/Layer2/HP4000.pm lib/SNMP/Info/Layer2/C2900.pm
Info/Layer2/HPVC.pm lib/SNMP/Info/Layer2/Catalyst.pm
Info/Layer2/Kentrox.pm lib/SNMP/Info/Layer2/Centillion.pm
Info/Layer2/N2270.pm lib/SNMP/Info/Layer2/Cisco.pm
Info/Layer2/NAP222x.pm lib/SNMP/Info/Layer2/CiscoSB.pm
Info/Layer2/Netgear.pm lib/SNMP/Info/Layer2/HP.pm
Info/Layer2/NWSS2300.pm lib/SNMP/Info/Layer2/HP4000.pm
Info/Layer2/Orinoco.pm lib/SNMP/Info/Layer2/HPVC.pm
Info/Layer2/Trapeze.pm lib/SNMP/Info/Layer2/Kentrox.pm
Info/Layer2/Ubiquiti.pm lib/SNMP/Info/Layer2/N2270.pm
Info/Layer2/ZyXEL_DSLAM.pm lib/SNMP/Info/Layer2/NAP222x.pm
Info/Layer3.pm lib/SNMP/Info/Layer2/Netgear.pm
Info/Layer3/Aironet.pm lib/SNMP/Info/Layer2/NWSS2300.pm
Info/Layer3/AlcatelLucent.pm lib/SNMP/Info/Layer2/Orinoco.pm
Info/Layer3/AlteonAD.pm lib/SNMP/Info/Layer2/Trapeze.pm
Info/Layer3/Altiga.pm lib/SNMP/Info/Layer2/Ubiquiti.pm
Info/Layer3/Arista.pm lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
Info/Layer3/Aruba.pm lib/SNMP/Info/Layer3.pm
Info/Layer3/BayRS.pm lib/SNMP/Info/Layer3/Aironet.pm
Info/Layer3/BlueCoatSG.pm lib/SNMP/Info/Layer3/AlcatelLucent.pm
Info/Layer3/C3550.pm lib/SNMP/Info/Layer3/AlteonAD.pm
Info/Layer3/C4000.pm lib/SNMP/Info/Layer3/Altiga.pm
Info/Layer3/C6500.pm lib/SNMP/Info/Layer3/Arista.pm
Info/Layer3/Cisco.pm lib/SNMP/Info/Layer3/Aruba.pm
Info/Layer3/CiscoASA.pm lib/SNMP/Info/Layer3/BayRS.pm
Info/Layer3/CiscoFWSM.pm lib/SNMP/Info/Layer3/BlueCoatSG.pm
Info/Layer3/CiscoSwitch.pm lib/SNMP/Info/Layer3/C3550.pm
Info/Layer3/Contivity.pm lib/SNMP/Info/Layer3/C4000.pm
Info/Layer3/Dell.pm lib/SNMP/Info/Layer3/C6500.pm
Info/Layer3/Enterasys.pm lib/SNMP/Info/Layer3/Cisco.pm
Info/Layer3/Extreme.pm lib/SNMP/Info/Layer3/CiscoASA.pm
Info/Layer3/F5.pm lib/SNMP/Info/Layer3/CiscoFWSM.pm
Info/Layer3/Force10.pm lib/SNMP/Info/Layer3/CiscoSwitch.pm
Info/Layer3/Fortinet.pm lib/SNMP/Info/Layer3/Contivity.pm
Info/Layer3/Foundry.pm lib/SNMP/Info/Layer3/Dell.pm
Info/Layer3/H3C.pm lib/SNMP/Info/Layer3/DLink.pm
Info/Layer3/HP9300.pm lib/SNMP/Info/Layer3/Enterasys.pm
Info/Layer3/IBMGbTor.pm lib/SNMP/Info/Layer3/Extreme.pm
Info/Layer3/Juniper.pm lib/SNMP/Info/Layer3/F5.pm
Info/Layer3/Lantronix.pm lib/SNMP/Info/Layer3/Force10.pm
Info/Layer3/Microsoft.pm lib/SNMP/Info/Layer3/Fortinet.pm
Info/Layer3/Mikrotik.pm lib/SNMP/Info/Layer3/Foundry.pm
Info/Layer3/N1600.pm lib/SNMP/Info/Layer3/H3C.pm
Info/Layer3/Netscreen.pm lib/SNMP/Info/Layer3/HP9300.pm
Info/Layer3/NetSNMP.pm lib/SNMP/Info/Layer3/Huawei.pm
Info/Layer3/Nexus.pm lib/SNMP/Info/Layer3/IBMGbTor.pm
Info/Layer3/PacketFront.pm lib/SNMP/Info/Layer3/Juniper.pm
Info/Layer3/Passport.pm lib/SNMP/Info/Layer3/Lantronix.pm
Info/Layer3/Pf.pm lib/SNMP/Info/Layer3/Microsoft.pm
Info/Layer3/Pica8.pm lib/SNMP/Info/Layer3/Mikrotik.pm
Info/Layer3/SonicWALL.pm lib/SNMP/Info/Layer3/N1600.pm
Info/Layer3/Steelhead.pm lib/SNMP/Info/Layer3/Netscreen.pm
Info/Layer3/Sun.pm lib/SNMP/Info/Layer3/NetSNMP.pm
Info/Layer3/Tasman.pm lib/SNMP/Info/Layer3/Nexus.pm
Info/Layer3/Timetra.pm lib/SNMP/Info/Layer3/PacketFront.pm
Info/Layer7.pm lib/SNMP/Info/Layer3/PaloAlto.pm
Info/Layer7/APC.pm lib/SNMP/Info/Layer3/Passport.pm
Info/Layer7/Neoteris.pm lib/SNMP/Info/Layer3/Pf.pm
Info/Layer7/Netscaler.pm lib/SNMP/Info/Layer3/Pica8.pm
Info/LLDP.pm lib/SNMP/Info/Layer3/SonicWALL.pm
Info/MAU.pm lib/SNMP/Info/Layer3/Steelhead.pm
Info/MRO.pm lib/SNMP/Info/Layer3/Sun.pm
Info/NortelStack.pm lib/SNMP/Info/Layer3/Tasman.pm
Info/PowerEthernet.pm lib/SNMP/Info/Layer3/Timetra.pm
Info/RapidCity.pm lib/SNMP/Info/Layer3/VMware.pm
Info/SONMP.pm lib/SNMP/Info/Layer7.pm
Makefile.PL lib/SNMP/Info/Layer7/APC.pm
lib/SNMP/Info/Layer7/CiscoIPS.pm
lib/SNMP/Info/Layer7/Neoteris.pm
lib/SNMP/Info/Layer7/Netscaler.pm
lib/SNMP/Info/LLDP.pm
lib/SNMP/Info/MAU.pm
lib/SNMP/Info/MRO.pm
lib/SNMP/Info/NortelStack.pm
lib/SNMP/Info/PowerEthernet.pm
lib/SNMP/Info/RapidCity.pm
lib/SNMP/Info/SONMP.pm
LICENSE
MANIFEST This list of files MANIFEST This list of files
README META.json
t/00-load.t META.yml
t/docmunge t/00_load.t
t/make_dev_matrix.pl xt/.perltidyrc
t/prereq.t xt/00_local_distribution.t
t/push_ver xt/00_local_docininfo.t
t/run_test xt/00_local_perlcritic.t
t/test_class.pl xt/00_local_pod-coverage.t
t/util/make_snmpdata.pl xt/00_local_pod.t
t/util/test_class_mocked.pl xt/00_local_prereq.t
xt/00_local_spelling.t
xt/00_local_versionsync.t

View File

@@ -1,28 +1,67 @@
# Version control files and dirs. \.bak$
\.pid$
\.swp$
^SNMP-Info-
^MANIFEST\.
# Avoid version control files.
\bRCS\b \bRCS\b
\bCVS\b \bCVS\b
\bSCCS\b
,v$ ,v$
\B\.svn\b \B\.svn\b
\B\.git\b \B\.git\b
.gitignore \B\.gitignore\b
\b_darcs\b
\B\.cvsignore$
# Makemaker generated files and dirs. # Avoid VMS specific MakeMaker generated files
^MANIFEST\. \bDescrip.MMS$
^Makefile$ \bDESCRIP.MMS$
^blib/ \bdescrip.mms$
^MakeMaker-\d
pm_to_blib
MYMETA.*
# Temp, old and emacs backup files. # Avoid Makemaker generated and utility files.
\bMANIFEST\.bak
\bMakefile$
\bblib/
\bMakeMaker-\d
\bpm_to_blib\.ts$
\bpm_to_blib$
\bblibdirs\.ts$ # 6.18 through 6.25 generated this
# Avoid Module::Build generated and utility files.
\bBuild$
\b_build/
\bBuild.bat$
\bBuild.COM$
\bBUILD.COM$
\bbuild.com$
# Avoid temp and backup files.
~$ ~$
\.old$ \.old$
^#.*#$ \#$
^\.# \b\.#
\.bak$
\.tmp$
\.#
\.rej$
# Private Regression Tests # Avoid OS-specific files/dirs
\d+_local_ # Mac OSX metadata
\.?perl\w+\.?rc$ \B\.DS_Store
# Mac OSX SMB mount metadata files
\B\._
# Komodo project file # Avoid Devel::Cover and Devel::CoverX::Covered files.
\.kpf$ \bcover_db\b
\bcovered\b
# Avoid MYMETA files
^MYMETA\.
.github
.travis
README.md

509
META.json Normal file
View File

@@ -0,0 +1,509 @@
{
"abstract" : "OO Interface to Network devices and MIBs through SNMP",
"author" : [
"Eric A. Miller <emiller@cpan.org>"
],
"dynamic_config" : 1,
"generated_by" : "Module::Build version 0.4224",
"license" : [
"bsd"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : 2
},
"name" : "SNMP-Info",
"prereqs" : {
"configure" : {
"requires" : {
"Module::Build" : "0.42"
}
},
"runtime" : {
"requires" : {
"Math::BigInt" : "0",
"SNMP" : "0"
}
},
"test" : {
"requires" : {
"Test::More" : "0.88"
}
}
},
"provides" : {
"SNMP::Info" : {
"file" : "lib/SNMP/Info.pm",
"version" : "3.39"
},
"SNMP::Info::AMAP" : {
"file" : "lib/SNMP/Info/AMAP.pm",
"version" : "3.39"
},
"SNMP::Info::AdslLine" : {
"file" : "lib/SNMP/Info/AdslLine.pm",
"version" : "3.39"
},
"SNMP::Info::Aggregate" : {
"file" : "lib/SNMP/Info/Aggregate.pm",
"version" : "3.39"
},
"SNMP::Info::Airespace" : {
"file" : "lib/SNMP/Info/Airespace.pm",
"version" : "3.39"
},
"SNMP::Info::Bridge" : {
"file" : "lib/SNMP/Info/Bridge.pm",
"version" : "3.39"
},
"SNMP::Info::CDP" : {
"file" : "lib/SNMP/Info/CDP.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoAgg" : {
"file" : "lib/SNMP/Info/CiscoAgg.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoConfig" : {
"file" : "lib/SNMP/Info/CiscoConfig.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoPortSecurity" : {
"file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoPower" : {
"file" : "lib/SNMP/Info/CiscoPower.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoQOS" : {
"file" : "lib/SNMP/Info/CiscoQOS.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoRTT" : {
"file" : "lib/SNMP/Info/CiscoRTT.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoStack" : {
"file" : "lib/SNMP/Info/CiscoStack.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoStats" : {
"file" : "lib/SNMP/Info/CiscoStats.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoStpExtensions" : {
"file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
"version" : "3.39"
},
"SNMP::Info::CiscoVTP" : {
"file" : "lib/SNMP/Info/CiscoVTP.pm",
"version" : "3.39"
},
"SNMP::Info::EDP" : {
"file" : "lib/SNMP/Info/EDP.pm",
"version" : "3.39"
},
"SNMP::Info::Entity" : {
"file" : "lib/SNMP/Info/Entity.pm",
"version" : "3.39"
},
"SNMP::Info::EtherLike" : {
"file" : "lib/SNMP/Info/EtherLike.pm",
"version" : "3.39"
},
"SNMP::Info::FDP" : {
"file" : "lib/SNMP/Info/FDP.pm",
"version" : "3.39"
},
"SNMP::Info::IEEE802dot11" : {
"file" : "lib/SNMP/Info/IEEE802dot11.pm",
"version" : "3.39"
},
"SNMP::Info::IEEE802dot3ad" : {
"file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
"version" : "3.39"
},
"SNMP::Info::IPv6" : {
"file" : "lib/SNMP/Info/IPv6.pm",
"version" : "3.39"
},
"SNMP::Info::LLDP" : {
"file" : "lib/SNMP/Info/LLDP.pm",
"version" : "3.39"
},
"SNMP::Info::Layer1" : {
"file" : "lib/SNMP/Info/Layer1.pm",
"version" : "3.39"
},
"SNMP::Info::Layer1::Allied" : {
"file" : "lib/SNMP/Info/Layer1/Allied.pm",
"version" : "3.39"
},
"SNMP::Info::Layer1::Asante" : {
"file" : "lib/SNMP/Info/Layer1/Asante.pm",
"version" : "3.39"
},
"SNMP::Info::Layer1::Bayhub" : {
"file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
"version" : "3.39"
},
"SNMP::Info::Layer1::Cyclades" : {
"file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
"version" : "3.39"
},
"SNMP::Info::Layer1::S3000" : {
"file" : "lib/SNMP/Info/Layer1/S3000.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2" : {
"file" : "lib/SNMP/Info/Layer2.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::3Com" : {
"file" : "lib/SNMP/Info/Layer2/3Com.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Airespace" : {
"file" : "lib/SNMP/Info/Layer2/Airespace.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Aironet" : {
"file" : "lib/SNMP/Info/Layer2/Aironet.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Allied" : {
"file" : "lib/SNMP/Info/Layer2/Allied.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Baystack" : {
"file" : "lib/SNMP/Info/Layer2/Baystack.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::C1900" : {
"file" : "lib/SNMP/Info/Layer2/C1900.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::C2900" : {
"file" : "lib/SNMP/Info/Layer2/C2900.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Catalyst" : {
"file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Centillion" : {
"file" : "lib/SNMP/Info/Layer2/Centillion.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Cisco" : {
"file" : "lib/SNMP/Info/Layer2/Cisco.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::CiscoSB" : {
"file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::HP" : {
"file" : "lib/SNMP/Info/Layer2/HP.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::HP4000" : {
"file" : "lib/SNMP/Info/Layer2/HP4000.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::HPVC" : {
"file" : "lib/SNMP/Info/Layer2/HPVC.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Kentrox" : {
"file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::N2270" : {
"file" : "lib/SNMP/Info/Layer2/N2270.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::NAP222x" : {
"file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::NWSS2300" : {
"file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Netgear" : {
"file" : "lib/SNMP/Info/Layer2/Netgear.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Orinoco" : {
"file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Trapeze" : {
"file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::Ubiquiti" : {
"file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
"version" : "3.39"
},
"SNMP::Info::Layer2::ZyXEL_DSLAM" : {
"file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3" : {
"file" : "lib/SNMP/Info/Layer3.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Aironet" : {
"file" : "lib/SNMP/Info/Layer3/Aironet.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::AlcatelLucent" : {
"file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::AlteonAD" : {
"file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Altiga" : {
"file" : "lib/SNMP/Info/Layer3/Altiga.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Arista" : {
"file" : "lib/SNMP/Info/Layer3/Arista.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Aruba" : {
"file" : "lib/SNMP/Info/Layer3/Aruba.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::BayRS" : {
"file" : "lib/SNMP/Info/Layer3/BayRS.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::BlueCoatSG" : {
"file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::C3550" : {
"file" : "lib/SNMP/Info/Layer3/C3550.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::C4000" : {
"file" : "lib/SNMP/Info/Layer3/C4000.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::C6500" : {
"file" : "lib/SNMP/Info/Layer3/C6500.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Cisco" : {
"file" : "lib/SNMP/Info/Layer3/Cisco.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::CiscoASA" : {
"file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::CiscoFWSM" : {
"file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::CiscoSwitch" : {
"file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Contivity" : {
"file" : "lib/SNMP/Info/Layer3/Contivity.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::DLink" : {
"file" : "lib/SNMP/Info/Layer3/DLink.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Dell" : {
"file" : "lib/SNMP/Info/Layer3/Dell.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Enterasys" : {
"file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Extreme" : {
"file" : "lib/SNMP/Info/Layer3/Extreme.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::F5" : {
"file" : "lib/SNMP/Info/Layer3/F5.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Force10" : {
"file" : "lib/SNMP/Info/Layer3/Force10.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Fortinet" : {
"file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Foundry" : {
"file" : "lib/SNMP/Info/Layer3/Foundry.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::H3C" : {
"file" : "lib/SNMP/Info/Layer3/H3C.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::HP9300" : {
"file" : "lib/SNMP/Info/Layer3/HP9300.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Huawei" : {
"file" : "lib/SNMP/Info/Layer3/Huawei.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::IBMGbTor" : {
"file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Juniper" : {
"file" : "lib/SNMP/Info/Layer3/Juniper.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Lantronix" : {
"file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Microsoft" : {
"file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Mikrotik" : {
"file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::N1600" : {
"file" : "lib/SNMP/Info/Layer3/N1600.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::NetSNMP" : {
"file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Netscreen" : {
"file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Nexus" : {
"file" : "lib/SNMP/Info/Layer3/Nexus.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::PacketFront" : {
"file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::PaloAlto" : {
"file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Passport" : {
"file" : "lib/SNMP/Info/Layer3/Passport.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Pf" : {
"file" : "lib/SNMP/Info/Layer3/Pf.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Pica8" : {
"file" : "lib/SNMP/Info/Layer3/Pica8.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::SonicWALL" : {
"file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Steelhead" : {
"file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Sun" : {
"file" : "lib/SNMP/Info/Layer3/Sun.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Tasman" : {
"file" : "lib/SNMP/Info/Layer3/Tasman.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::Timetra" : {
"file" : "lib/SNMP/Info/Layer3/Timetra.pm",
"version" : "3.39"
},
"SNMP::Info::Layer3::VMware" : {
"file" : "lib/SNMP/Info/Layer3/VMware.pm",
"version" : "3.39"
},
"SNMP::Info::Layer7" : {
"file" : "lib/SNMP/Info/Layer7.pm",
"version" : "3.39"
},
"SNMP::Info::Layer7::APC" : {
"file" : "lib/SNMP/Info/Layer7/APC.pm",
"version" : "3.39"
},
"SNMP::Info::Layer7::CiscoIPS" : {
"file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
"version" : "3.39"
},
"SNMP::Info::Layer7::Neoteris" : {
"file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
"version" : "3.39"
},
"SNMP::Info::Layer7::Netscaler" : {
"file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
"version" : "3.39"
},
"SNMP::Info::MAU" : {
"file" : "lib/SNMP/Info/MAU.pm",
"version" : "3.39"
},
"SNMP::Info::MRO" : {
"file" : "lib/SNMP/Info/MRO.pm",
"version" : "3.39"
},
"SNMP::Info::NortelStack" : {
"file" : "lib/SNMP/Info/NortelStack.pm",
"version" : "3.39"
},
"SNMP::Info::PowerEthernet" : {
"file" : "lib/SNMP/Info/PowerEthernet.pm",
"version" : "3.39"
},
"SNMP::Info::RapidCity" : {
"file" : "lib/SNMP/Info/RapidCity.pm",
"version" : "3.39"
},
"SNMP::Info::SONMP" : {
"file" : "lib/SNMP/Info/SONMP.pm",
"version" : "3.39"
}
},
"release_status" : "stable",
"resources" : {
"bugtracker" : {
"web" : "https://github.com/netdisco/snmp-info/issues"
},
"homepage" : "http://netdisco.org/",
"license" : [
"http://opensource.org/licenses/BSD-3-Clause"
],
"repository" : {
"url" : "https://github.com/netdisco/snmp-info"
},
"x_IRC" : "irc://irc.freenode.org/#netdisco",
"x_MailingList" : "https://lists.sourceforge.net/lists/listinfo/snmp-info-users"
},
"version" : "3.39",
"x_serialization_backend" : "JSON::PP version 2.94"
}

370
META.yml Normal file
View File

@@ -0,0 +1,370 @@
---
abstract: 'OO Interface to Network devices and MIBs through SNMP'
author:
- 'Eric A. Miller <emiller@cpan.org>'
build_requires:
Test::More: '0.88'
configure_requires:
Module::Build: '0.42'
dynamic_config: 1
generated_by: 'Module::Build version 0.4224, CPAN::Meta::Converter version 2.150010'
license: bsd
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: '1.4'
name: SNMP-Info
provides:
SNMP::Info:
file: lib/SNMP/Info.pm
version: '3.39'
SNMP::Info::AMAP:
file: lib/SNMP/Info/AMAP.pm
version: '3.39'
SNMP::Info::AdslLine:
file: lib/SNMP/Info/AdslLine.pm
version: '3.39'
SNMP::Info::Aggregate:
file: lib/SNMP/Info/Aggregate.pm
version: '3.39'
SNMP::Info::Airespace:
file: lib/SNMP/Info/Airespace.pm
version: '3.39'
SNMP::Info::Bridge:
file: lib/SNMP/Info/Bridge.pm
version: '3.39'
SNMP::Info::CDP:
file: lib/SNMP/Info/CDP.pm
version: '3.39'
SNMP::Info::CiscoAgg:
file: lib/SNMP/Info/CiscoAgg.pm
version: '3.39'
SNMP::Info::CiscoConfig:
file: lib/SNMP/Info/CiscoConfig.pm
version: '3.39'
SNMP::Info::CiscoPortSecurity:
file: lib/SNMP/Info/CiscoPortSecurity.pm
version: '3.39'
SNMP::Info::CiscoPower:
file: lib/SNMP/Info/CiscoPower.pm
version: '3.39'
SNMP::Info::CiscoQOS:
file: lib/SNMP/Info/CiscoQOS.pm
version: '3.39'
SNMP::Info::CiscoRTT:
file: lib/SNMP/Info/CiscoRTT.pm
version: '3.39'
SNMP::Info::CiscoStack:
file: lib/SNMP/Info/CiscoStack.pm
version: '3.39'
SNMP::Info::CiscoStats:
file: lib/SNMP/Info/CiscoStats.pm
version: '3.39'
SNMP::Info::CiscoStpExtensions:
file: lib/SNMP/Info/CiscoStpExtensions.pm
version: '3.39'
SNMP::Info::CiscoVTP:
file: lib/SNMP/Info/CiscoVTP.pm
version: '3.39'
SNMP::Info::EDP:
file: lib/SNMP/Info/EDP.pm
version: '3.39'
SNMP::Info::Entity:
file: lib/SNMP/Info/Entity.pm
version: '3.39'
SNMP::Info::EtherLike:
file: lib/SNMP/Info/EtherLike.pm
version: '3.39'
SNMP::Info::FDP:
file: lib/SNMP/Info/FDP.pm
version: '3.39'
SNMP::Info::IEEE802dot11:
file: lib/SNMP/Info/IEEE802dot11.pm
version: '3.39'
SNMP::Info::IEEE802dot3ad:
file: lib/SNMP/Info/IEEE802dot3ad.pm
version: '3.39'
SNMP::Info::IPv6:
file: lib/SNMP/Info/IPv6.pm
version: '3.39'
SNMP::Info::LLDP:
file: lib/SNMP/Info/LLDP.pm
version: '3.39'
SNMP::Info::Layer1:
file: lib/SNMP/Info/Layer1.pm
version: '3.39'
SNMP::Info::Layer1::Allied:
file: lib/SNMP/Info/Layer1/Allied.pm
version: '3.39'
SNMP::Info::Layer1::Asante:
file: lib/SNMP/Info/Layer1/Asante.pm
version: '3.39'
SNMP::Info::Layer1::Bayhub:
file: lib/SNMP/Info/Layer1/Bayhub.pm
version: '3.39'
SNMP::Info::Layer1::Cyclades:
file: lib/SNMP/Info/Layer1/Cyclades.pm
version: '3.39'
SNMP::Info::Layer1::S3000:
file: lib/SNMP/Info/Layer1/S3000.pm
version: '3.39'
SNMP::Info::Layer2:
file: lib/SNMP/Info/Layer2.pm
version: '3.39'
SNMP::Info::Layer2::3Com:
file: lib/SNMP/Info/Layer2/3Com.pm
version: '3.39'
SNMP::Info::Layer2::Airespace:
file: lib/SNMP/Info/Layer2/Airespace.pm
version: '3.39'
SNMP::Info::Layer2::Aironet:
file: lib/SNMP/Info/Layer2/Aironet.pm
version: '3.39'
SNMP::Info::Layer2::Allied:
file: lib/SNMP/Info/Layer2/Allied.pm
version: '3.39'
SNMP::Info::Layer2::Baystack:
file: lib/SNMP/Info/Layer2/Baystack.pm
version: '3.39'
SNMP::Info::Layer2::C1900:
file: lib/SNMP/Info/Layer2/C1900.pm
version: '3.39'
SNMP::Info::Layer2::C2900:
file: lib/SNMP/Info/Layer2/C2900.pm
version: '3.39'
SNMP::Info::Layer2::Catalyst:
file: lib/SNMP/Info/Layer2/Catalyst.pm
version: '3.39'
SNMP::Info::Layer2::Centillion:
file: lib/SNMP/Info/Layer2/Centillion.pm
version: '3.39'
SNMP::Info::Layer2::Cisco:
file: lib/SNMP/Info/Layer2/Cisco.pm
version: '3.39'
SNMP::Info::Layer2::CiscoSB:
file: lib/SNMP/Info/Layer2/CiscoSB.pm
version: '3.39'
SNMP::Info::Layer2::HP:
file: lib/SNMP/Info/Layer2/HP.pm
version: '3.39'
SNMP::Info::Layer2::HP4000:
file: lib/SNMP/Info/Layer2/HP4000.pm
version: '3.39'
SNMP::Info::Layer2::HPVC:
file: lib/SNMP/Info/Layer2/HPVC.pm
version: '3.39'
SNMP::Info::Layer2::Kentrox:
file: lib/SNMP/Info/Layer2/Kentrox.pm
version: '3.39'
SNMP::Info::Layer2::N2270:
file: lib/SNMP/Info/Layer2/N2270.pm
version: '3.39'
SNMP::Info::Layer2::NAP222x:
file: lib/SNMP/Info/Layer2/NAP222x.pm
version: '3.39'
SNMP::Info::Layer2::NWSS2300:
file: lib/SNMP/Info/Layer2/NWSS2300.pm
version: '3.39'
SNMP::Info::Layer2::Netgear:
file: lib/SNMP/Info/Layer2/Netgear.pm
version: '3.39'
SNMP::Info::Layer2::Orinoco:
file: lib/SNMP/Info/Layer2/Orinoco.pm
version: '3.39'
SNMP::Info::Layer2::Trapeze:
file: lib/SNMP/Info/Layer2/Trapeze.pm
version: '3.39'
SNMP::Info::Layer2::Ubiquiti:
file: lib/SNMP/Info/Layer2/Ubiquiti.pm
version: '3.39'
SNMP::Info::Layer2::ZyXEL_DSLAM:
file: lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
version: '3.39'
SNMP::Info::Layer3:
file: lib/SNMP/Info/Layer3.pm
version: '3.39'
SNMP::Info::Layer3::Aironet:
file: lib/SNMP/Info/Layer3/Aironet.pm
version: '3.39'
SNMP::Info::Layer3::AlcatelLucent:
file: lib/SNMP/Info/Layer3/AlcatelLucent.pm
version: '3.39'
SNMP::Info::Layer3::AlteonAD:
file: lib/SNMP/Info/Layer3/AlteonAD.pm
version: '3.39'
SNMP::Info::Layer3::Altiga:
file: lib/SNMP/Info/Layer3/Altiga.pm
version: '3.39'
SNMP::Info::Layer3::Arista:
file: lib/SNMP/Info/Layer3/Arista.pm
version: '3.39'
SNMP::Info::Layer3::Aruba:
file: lib/SNMP/Info/Layer3/Aruba.pm
version: '3.39'
SNMP::Info::Layer3::BayRS:
file: lib/SNMP/Info/Layer3/BayRS.pm
version: '3.39'
SNMP::Info::Layer3::BlueCoatSG:
file: lib/SNMP/Info/Layer3/BlueCoatSG.pm
version: '3.39'
SNMP::Info::Layer3::C3550:
file: lib/SNMP/Info/Layer3/C3550.pm
version: '3.39'
SNMP::Info::Layer3::C4000:
file: lib/SNMP/Info/Layer3/C4000.pm
version: '3.39'
SNMP::Info::Layer3::C6500:
file: lib/SNMP/Info/Layer3/C6500.pm
version: '3.39'
SNMP::Info::Layer3::Cisco:
file: lib/SNMP/Info/Layer3/Cisco.pm
version: '3.39'
SNMP::Info::Layer3::CiscoASA:
file: lib/SNMP/Info/Layer3/CiscoASA.pm
version: '3.39'
SNMP::Info::Layer3::CiscoFWSM:
file: lib/SNMP/Info/Layer3/CiscoFWSM.pm
version: '3.39'
SNMP::Info::Layer3::CiscoSwitch:
file: lib/SNMP/Info/Layer3/CiscoSwitch.pm
version: '3.39'
SNMP::Info::Layer3::Contivity:
file: lib/SNMP/Info/Layer3/Contivity.pm
version: '3.39'
SNMP::Info::Layer3::DLink:
file: lib/SNMP/Info/Layer3/DLink.pm
version: '3.39'
SNMP::Info::Layer3::Dell:
file: lib/SNMP/Info/Layer3/Dell.pm
version: '3.39'
SNMP::Info::Layer3::Enterasys:
file: lib/SNMP/Info/Layer3/Enterasys.pm
version: '3.39'
SNMP::Info::Layer3::Extreme:
file: lib/SNMP/Info/Layer3/Extreme.pm
version: '3.39'
SNMP::Info::Layer3::F5:
file: lib/SNMP/Info/Layer3/F5.pm
version: '3.39'
SNMP::Info::Layer3::Force10:
file: lib/SNMP/Info/Layer3/Force10.pm
version: '3.39'
SNMP::Info::Layer3::Fortinet:
file: lib/SNMP/Info/Layer3/Fortinet.pm
version: '3.39'
SNMP::Info::Layer3::Foundry:
file: lib/SNMP/Info/Layer3/Foundry.pm
version: '3.39'
SNMP::Info::Layer3::H3C:
file: lib/SNMP/Info/Layer3/H3C.pm
version: '3.39'
SNMP::Info::Layer3::HP9300:
file: lib/SNMP/Info/Layer3/HP9300.pm
version: '3.39'
SNMP::Info::Layer3::Huawei:
file: lib/SNMP/Info/Layer3/Huawei.pm
version: '3.39'
SNMP::Info::Layer3::IBMGbTor:
file: lib/SNMP/Info/Layer3/IBMGbTor.pm
version: '3.39'
SNMP::Info::Layer3::Juniper:
file: lib/SNMP/Info/Layer3/Juniper.pm
version: '3.39'
SNMP::Info::Layer3::Lantronix:
file: lib/SNMP/Info/Layer3/Lantronix.pm
version: '3.39'
SNMP::Info::Layer3::Microsoft:
file: lib/SNMP/Info/Layer3/Microsoft.pm
version: '3.39'
SNMP::Info::Layer3::Mikrotik:
file: lib/SNMP/Info/Layer3/Mikrotik.pm
version: '3.39'
SNMP::Info::Layer3::N1600:
file: lib/SNMP/Info/Layer3/N1600.pm
version: '3.39'
SNMP::Info::Layer3::NetSNMP:
file: lib/SNMP/Info/Layer3/NetSNMP.pm
version: '3.39'
SNMP::Info::Layer3::Netscreen:
file: lib/SNMP/Info/Layer3/Netscreen.pm
version: '3.39'
SNMP::Info::Layer3::Nexus:
file: lib/SNMP/Info/Layer3/Nexus.pm
version: '3.39'
SNMP::Info::Layer3::PacketFront:
file: lib/SNMP/Info/Layer3/PacketFront.pm
version: '3.39'
SNMP::Info::Layer3::PaloAlto:
file: lib/SNMP/Info/Layer3/PaloAlto.pm
version: '3.39'
SNMP::Info::Layer3::Passport:
file: lib/SNMP/Info/Layer3/Passport.pm
version: '3.39'
SNMP::Info::Layer3::Pf:
file: lib/SNMP/Info/Layer3/Pf.pm
version: '3.39'
SNMP::Info::Layer3::Pica8:
file: lib/SNMP/Info/Layer3/Pica8.pm
version: '3.39'
SNMP::Info::Layer3::SonicWALL:
file: lib/SNMP/Info/Layer3/SonicWALL.pm
version: '3.39'
SNMP::Info::Layer3::Steelhead:
file: lib/SNMP/Info/Layer3/Steelhead.pm
version: '3.39'
SNMP::Info::Layer3::Sun:
file: lib/SNMP/Info/Layer3/Sun.pm
version: '3.39'
SNMP::Info::Layer3::Tasman:
file: lib/SNMP/Info/Layer3/Tasman.pm
version: '3.39'
SNMP::Info::Layer3::Timetra:
file: lib/SNMP/Info/Layer3/Timetra.pm
version: '3.39'
SNMP::Info::Layer3::VMware:
file: lib/SNMP/Info/Layer3/VMware.pm
version: '3.39'
SNMP::Info::Layer7:
file: lib/SNMP/Info/Layer7.pm
version: '3.39'
SNMP::Info::Layer7::APC:
file: lib/SNMP/Info/Layer7/APC.pm
version: '3.39'
SNMP::Info::Layer7::CiscoIPS:
file: lib/SNMP/Info/Layer7/CiscoIPS.pm
version: '3.39'
SNMP::Info::Layer7::Neoteris:
file: lib/SNMP/Info/Layer7/Neoteris.pm
version: '3.39'
SNMP::Info::Layer7::Netscaler:
file: lib/SNMP/Info/Layer7/Netscaler.pm
version: '3.39'
SNMP::Info::MAU:
file: lib/SNMP/Info/MAU.pm
version: '3.39'
SNMP::Info::MRO:
file: lib/SNMP/Info/MRO.pm
version: '3.39'
SNMP::Info::NortelStack:
file: lib/SNMP/Info/NortelStack.pm
version: '3.39'
SNMP::Info::PowerEthernet:
file: lib/SNMP/Info/PowerEthernet.pm
version: '3.39'
SNMP::Info::RapidCity:
file: lib/SNMP/Info/RapidCity.pm
version: '3.39'
SNMP::Info::SONMP:
file: lib/SNMP/Info/SONMP.pm
version: '3.39'
requires:
Math::BigInt: '0'
SNMP: '0'
resources:
IRC: irc://irc.freenode.org/#netdisco
MailingList: https://lists.sourceforge.net/lists/listinfo/snmp-info-users
bugtracker: https://github.com/netdisco/snmp-info/issues
homepage: http://netdisco.org/
license: http://opensource.org/licenses/BSD-3-Clause
repository: https://github.com/netdisco/snmp-info
version: '3.39'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

View File

@@ -1,39 +0,0 @@
# Module makefile for SNMP::Info (using ExtUtils::MakeMaker)
# $Id$
require 5.006;
use strict;
use warnings;
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'SNMP::Info',
AUTHOR => 'Eric A. Miller <emiller@cpan.org>',
VERSION_FROM => 'Info.pm',
ABSTRACT_FROM => 'Info.pm',
PREREQ_PM => {
'Test::More' => 0,
'Math::BigInt' => 0,
'SNMP' => 0,
},
PMLIBDIRS => [ 'Info', '$(BASEEXT)' ],
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'SNMP-Info-*' },
realclean => { FILES => 'Makefile.old' },
( ( ExtUtils::MakeMaker->VERSION() lt '6.25' ) ? ( 'PL_FILES' => {} )
: ()
),
( ( ExtUtils::MakeMaker->VERSION() gt '6.30' ) ? ( 'LICENSE' => 'bsd' )
: ()
),
);
sub MY::postamble {
"
.PHONY: readme
readme: README
README: Info.pm
pod2text -l Info.pm > README";
}

2164
README

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,6 @@ Coding Guidelines:
- tab-width of 4, no tab characters - tab-width of 4, no tab characters
- keep POD documentation up-to-date - keep POD documentation up-to-date
- always update ChangeLog before committing - always update ChangeLog before committing
- always update DeviceMatrix.txt before committing
- check-in required mibs to netdisco-mibs and release new package if needed - check-in required mibs to netdisco-mibs and release new package if needed
Release and Testing Instructions: Release and Testing Instructions:

View File

@@ -3,9 +3,9 @@
use File::Glob qw/bsd_glob/; use File::Glob qw/bsd_glob/;
my @pms = glob_rec("../Info"); my @pms = glob_rec("../../lib");
$new_version = shift @ARGV || '3.01'; $new_version = shift @ARGV || die "missing new version\n";
foreach my $p (@pms) { foreach my $p (@pms) {
print "$p\n"; print "$p\n";
@@ -16,6 +16,7 @@ foreach my $p (@pms) {
while (<O>) { while (<O>) {
s/^\s*\$VERSION\s+=\s*'[^']+'\s*;/\$VERSION = '$new_version';/; s/^\s*\$VERSION\s+=\s*'[^']+'\s*;/\$VERSION = '$new_version';/;
s/^SNMP::Info - Version [\d.]+$/SNMP::Info - Version $new_version/;
print P; print P;
} }

View File

@@ -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.26'; $VERSION = '3.39';
=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.26 SNMP::Info - Version 3.39
=head1 AUTHOR =head1 AUTHOR
@@ -47,7 +47,9 @@ by Max Baker.
=head1 DEVICES SUPPORTED =head1 DEVICES SUPPORTED
See L<http://netdisco.org/doc/DeviceMatrix.html> or L<DeviceMatrix.txt> for more details. There are now generic classes for most types of device and so the authors
recommend loading SNMP::Info with AutoSpecify, and then reporting to the mail
list any missing functionality (such as neighbor discovery tables).
=head1 SYNOPSIS =head1 SYNOPSIS
@@ -168,7 +170,7 @@ install by hand.
SNMP::Info operates on textual descriptors found in MIBs. SNMP::Info operates on textual descriptors found in MIBs.
If you are using SNMP::Info separate from Netdisco, If you are using SNMP::Info separate from Netdisco,
download the Netdisco MIB package at L<http://sourceforge.net/project/showfiles.php?group_id=80033&package_id=135517> download the Netdisco MIB package at L<http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest-snapshot/>
Make sure that your snmp.conf is updated to point to your MIB directory Make sure that your snmp.conf is updated to point to your MIB directory
and that the MIBs are world-readable. and that the MIBs are world-readable.
@@ -632,7 +634,7 @@ See documentation in L<SNMP::Info::Layer2::Trapeze> for details.
=item SNMP::Info::Layer2::Ubiquiti =item SNMP::Info::Layer2::Ubiquiti
SNMP Interface to Ubiquiti Access Points SNMP Interface to Ubiquiti Access Points and other devices
See documentation in L<SNMP::Info::Layer2::Ubiquiti> for details. See documentation in L<SNMP::Info::Layer2::Ubiquiti> for details.
@@ -809,6 +811,12 @@ Original Equipment Manufacturer (OEM) such as the HP ProCurve 9300 and 6300 seri
See documentation in L<SNMP::Info::Layer3::HP9300> for details. See documentation in L<SNMP::Info::Layer3::HP9300> for details.
=item SNMP::Info::Layer3::Huawei
SNMP Interface to Huawei Layer 3 switches and routers.
See documentation in L<SNMP::Info::Layer3::Huawei> for details.
=item SNMP::Info::Layer3::IBMGbTor =item SNMP::Info::Layer3::IBMGbTor
SNMP Interface to IBM Rackswitch (formerly Blade Network Technologies) SNMP Interface to IBM Rackswitch (formerly Blade Network Technologies)
@@ -870,6 +878,12 @@ Subclass for PacketFront DRG series CPE.
See documentation in L<SNMP::Info::Layer3::PacketFront> for details. See documentation in L<SNMP::Info::Layer3::PacketFront> for details.
=item SNMP::Info::Layer3::PaloAlto
Subclass for Palo Alto firewalls.
See documentation in L<SNMP::Info::Layer3::PaloAlto> for details.
=item SNMP::Info::Layer3::Passport =item SNMP::Info::Layer3::Passport
Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000 series, Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000 series,
@@ -917,6 +931,12 @@ Alcatel-Lucent SR Class.
See documentation in L<SNMP::Info::Layer3::Timetra> for details. See documentation in L<SNMP::Info::Layer3::Timetra> for details.
=item SNMP::Info::Layer3::VMware
Subclass for VMware ESXi hosts.
See documentation in L<SNMP::Info::Layer3::VMware> for details.
=back =back
=back =back
@@ -1234,16 +1254,13 @@ sub new {
return; return;
} }
# Table function store
my $store = {};
# Save Args for later # Save Args for later
$new_obj->{store} = $store; $new_obj->{store} ||= {};
$new_obj->{sess} = $sess; $new_obj->{sess} = $sess;
$new_obj->{args} = \%args; $new_obj->{args} = \%args;
$new_obj->{snmp_ver} = $args{Version} || 2; $new_obj->{snmp_ver} = $sess->{Version} || $args{Version} || 2;
$new_obj->{snmp_comm} = $args{Community} || 'public'; $new_obj->{snmp_comm} = $sess->{Community} || $args{Community} || 'public';
$new_obj->{snmp_user} = $args{SecName} || 'initial'; $new_obj->{snmp_user} = $sess->{SecName} || $args{SecName} || 'initial';
return $auto_specific ? $new_obj->specify() : $new_obj; return $auto_specific ? $new_obj->specify() : $new_obj;
} }
@@ -1307,7 +1324,7 @@ sub update {
=head2 Data is Cached =head2 Data is Cached
Methods and subroutines requesting data from a device will only load the data Methods and subroutines requesting data from a device will only load the data
once, and then return cached versions of that data. once, and then return cached versions of that data.
Run $info->load_METHOD() where method is something like 'i_name' to reload Run $info->load_METHOD() where method is something like 'i_name' to reload
data from a method. data from a method.
@@ -1315,7 +1332,7 @@ data from a method.
Run $info->clear_cache() to clear the cache to allow reload of both globals Run $info->clear_cache() to clear the cache to allow reload of both globals
and table methods. and table methods.
The cache can be retreved or set using the $info->cache() method. This works The cache can be retrieved or set using the $info->cache() method. This works
together with the C<Offline> option. together with the C<Offline> option.
=head2 Object Scalar Methods =head2 Object Scalar Methods
@@ -1460,9 +1477,6 @@ SNMP::Info::Layer3 subclasses.
If the device still can be connected to via SNMP::Info, then If the device still can be connected to via SNMP::Info, then
SNMP::Info is returned. SNMP::Info is returned.
See L<http://netdisco.org/doc/DeviceMatrix.html> or L<DeviceMatrix.txt> for more details
about device support, or view C<device_type()> in F<Info.pm>.
=cut =cut
sub device_type { sub device_type {
@@ -1498,13 +1512,14 @@ sub device_type {
42 => 'SNMP::Info::Layer3::Sun', 42 => 'SNMP::Info::Layer3::Sun',
43 => 'SNMP::Info::Layer2::3Com', 43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack', 45 => 'SNMP::Info::Layer2::Baystack',
171 => 'SNMP::Info::Layer3::Dell', 171 => 'SNMP::Info::Layer3::DLink',
244 => 'SNMP::Info::Layer3::Lantronix', 244 => 'SNMP::Info::Layer3::Lantronix',
311 => 'SNMP::Info::Layer3::Microsoft', 311 => 'SNMP::Info::Layer3::Microsoft',
674 => 'SNMP::Info::Layer3::Dell', 674 => 'SNMP::Info::Layer3::Dell',
1872 => 'SNMP::Info::Layer3::AlteonAD', 1872 => 'SNMP::Info::Layer3::AlteonAD',
1916 => 'SNMP::Info::Layer3::Extreme', 1916 => 'SNMP::Info::Layer3::Extreme',
1991 => 'SNMP::Info::Layer3::Foundry', 1991 => 'SNMP::Info::Layer3::Foundry',
2011 => 'SNMP::Info::Layer3::Huawei',
2021 => 'SNMP::Info::Layer3::NetSNMP', 2021 => 'SNMP::Info::Layer3::NetSNMP',
2272 => 'SNMP::Info::Layer3::Passport', 2272 => 'SNMP::Info::Layer3::Passport',
2636 => 'SNMP::Info::Layer3::Juniper', 2636 => 'SNMP::Info::Layer3::Juniper',
@@ -1518,6 +1533,7 @@ sub device_type {
6027 => 'SNMP::Info::Layer3::Force10', 6027 => 'SNMP::Info::Layer3::Force10',
6486 => 'SNMP::Info::Layer3::AlcatelLucent', 6486 => 'SNMP::Info::Layer3::AlcatelLucent',
6527 => 'SNMP::Info::Layer3::Timetra', 6527 => 'SNMP::Info::Layer3::Timetra',
6876 => 'SNMP::Info::Layer3::VMware',
8072 => 'SNMP::Info::Layer3::NetSNMP', 8072 => 'SNMP::Info::Layer3::NetSNMP',
9303 => 'SNMP::Info::Layer3::PacketFront', 9303 => 'SNMP::Info::Layer3::PacketFront',
10002 => 'SNMP::Info::Layer2::Ubiquiti', 10002 => 'SNMP::Info::Layer2::Ubiquiti',
@@ -1529,9 +1545,12 @@ sub device_type {
14988 => 'SNMP::Info::Layer3::Mikrotik', 14988 => 'SNMP::Info::Layer3::Mikrotik',
17163 => 'SNMP::Info::Layer3::Steelhead', 17163 => 'SNMP::Info::Layer3::Steelhead',
25506 => 'SNMP::Info::Layer3::H3C', 25506 => 'SNMP::Info::Layer3::H3C',
25461 => 'SNMP::Info::Layer3::PaloAlto',
26543 => 'SNMP::Info::Layer3::IBMGbTor', 26543 => 'SNMP::Info::Layer3::IBMGbTor',
30065 => 'SNMP::Info::Layer3::Arista', 30065 => 'SNMP::Info::Layer3::Arista',
35098 => 'SNMP::Info::Layer3::Pica8', 35098 => 'SNMP::Info::Layer3::Pica8',
41112 => 'SNMP::Info::Layer2::Ubiquiti',
4413 => 'SNMP::Info::Layer2::Ubiquiti',
); );
my %l2sysoidmap = ( my %l2sysoidmap = (
@@ -1539,12 +1558,13 @@ sub device_type {
11 => 'SNMP::Info::Layer2::HP', 11 => 'SNMP::Info::Layer2::HP',
43 => 'SNMP::Info::Layer2::3Com', 43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack', 45 => 'SNMP::Info::Layer2::Baystack',
171 => 'SNMP::Info::Layer3::Dell', 171 => 'SNMP::Info::Layer3::DLink',
207 => 'SNMP::Info::Layer2::Allied', 207 => 'SNMP::Info::Layer2::Allied',
674 => 'SNMP::Info::Layer3::Dell', 674 => 'SNMP::Info::Layer3::Dell',
1872 => 'SNMP::Info::Layer3::AlteonAD', 1872 => 'SNMP::Info::Layer3::AlteonAD',
1916 => 'SNMP::Info::Layer3::Extreme', 1916 => 'SNMP::Info::Layer3::Extreme',
1991 => 'SNMP::Info::Layer3::Foundry', 1991 => 'SNMP::Info::Layer3::Foundry',
2011 => 'SNMP::Info::Layer3::Huawei',
2272 => 'SNMP::Info::Layer3::Passport', 2272 => 'SNMP::Info::Layer3::Passport',
2925 => 'SNMP::Info::Layer1::Cyclades', 2925 => 'SNMP::Info::Layer1::Cyclades',
3224 => 'SNMP::Info::Layer3::Netscreen', 3224 => 'SNMP::Info::Layer3::Netscreen',
@@ -1552,6 +1572,7 @@ sub device_type {
4526 => 'SNMP::Info::Layer2::Netgear', 4526 => 'SNMP::Info::Layer2::Netgear',
5624 => 'SNMP::Info::Layer3::Enterasys', 5624 => 'SNMP::Info::Layer3::Enterasys',
6486 => 'SNMP::Info::Layer3::AlcatelLucent', 6486 => 'SNMP::Info::Layer3::AlcatelLucent',
9303 => 'SNMP::Info::Layer3::PacketFront',
11898 => 'SNMP::Info::Layer2::Orinoco', 11898 => 'SNMP::Info::Layer2::Orinoco',
14179 => 'SNMP::Info::Layer2::Airespace', 14179 => 'SNMP::Info::Layer2::Airespace',
14525 => 'SNMP::Info::Layer2::Trapeze', 14525 => 'SNMP::Info::Layer2::Trapeze',
@@ -1599,6 +1620,9 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Aironet' $objtype = 'SNMP::Info::Layer3::Aironet'
if ( $desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/ ); if ( $desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/ );
# Override voice gateway device (VG350) showing up as Aironet
$objtype = 'SNMP::Info::Layer3::Cisco' if $desc =~ /VG350/;
# Cat6k with older SUPs (hybrid CatOS/IOS?) # Cat6k with older SUPs (hybrid CatOS/IOS?)
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/; $objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/;
@@ -1889,6 +1913,10 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::NWSS2300' $objtype = 'SNMP::Info::Layer2::NWSS2300'
if ( if (
$desc =~ /^(Nortel\s)??Wireless\sSecurity\sSwitch\s23[568][012]\b/); $desc =~ /^(Nortel\s)??Wireless\sSecurity\sSwitch\s23[568][012]\b/);
# Cisco IPS, older version which doesn't report layer 3 functionality
$objtype = 'SNMP::Info::Layer7::CiscoIPS'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.9\.1\.1545/i );
# Generic device classification based upon sysObjectID # Generic device classification based upon sysObjectID
if ( defined($id) and $objtype eq 'SNMP::Info') { if ( defined($id) and $objtype eq 'SNMP::Info') {
@@ -2913,7 +2941,7 @@ allows all developers to have visibility into the request. Please include
pointers to the applicable platform MIBs. For development we will need an pointers to the applicable platform MIBs. For development we will need an
C<snmpwalk> of the device. There is a tool now included in the SNMP::Info C<snmpwalk> of the device. There is a tool now included in the SNMP::Info
distribution to help with this task, although you'll most likely need to distribution to help with this task, although you'll most likely need to
download the distribution from CPAN as it's included in the "C<t/util>" download the distribution from CPAN as it's included in the "C<contrib/util>"
directory. directory.
The utility is named C<make_snmpdata.pl>. Run it with a command line like: The utility is named C<make_snmpdata.pl>. Run it with a command line like:
@@ -3294,6 +3322,7 @@ Makes human friendly speed ratings using %SPEED_MAP
'54000000' => '54 Mbps', '54000000' => '54 Mbps',
'64000000' => '64 Mbps', '64000000' => '64 Mbps',
'100000000' => '100 Mbps', '100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3', '149760000' => 'ATM on OC-3',
'155000000' => 'OC-3', '155000000' => 'OC-3',
'155519000' => 'OC-3', '155519000' => 'OC-3',
@@ -3303,6 +3332,7 @@ Makes human friendly speed ratings using %SPEED_MAP
'622000000' => 'OC-12', '622000000' => 'OC-12',
'622080000' => 'OC-12', '622080000' => 'OC-12',
'1000000000' => '1.0 Gbps', '1000000000' => '1.0 Gbps',
'2000000000' => '2.0 Gbps',
'2488000000' => 'OC-48', '2488000000' => 'OC-48',
) )
@@ -3339,6 +3369,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'54000000' => '54 Mbps', '54000000' => '54 Mbps',
'64000000' => '64 Mbps', '64000000' => '64 Mbps',
'100000000' => '100 Mbps', '100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3', '149760000' => 'ATM on OC-3',
'155000000' => 'OC-3', '155000000' => 'OC-3',
'155519000' => 'OC-3', '155519000' => 'OC-3',
@@ -3348,6 +3379,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'622000000' => 'OC-12', '622000000' => 'OC-12',
'622080000' => 'OC-12', '622080000' => 'OC-12',
'1000000000' => '1.0 Gbps', '1000000000' => '1.0 Gbps',
'2000000000' => '2.0 Gbps',
'2488000000' => 'OC-48', '2488000000' => 'OC-48',
); );
@@ -3622,7 +3654,8 @@ sub init {
foreach my $d (@$mibdirs) { foreach my $d (@$mibdirs) {
next unless -d $d; next unless -d $d;
print "SNMP::Info::init() - Adding new mibdir:$d\n" if $self->debug(); print "SNMP::Info::init() - Adding new mibdir:$d\n"
if $self->debug() > 1;
SNMP::addMibDirs($d); SNMP::addMibDirs($d);
} }
@@ -3782,6 +3815,7 @@ These methods return data as a scalar.
sub _global { sub _global {
my $method = shift; my $method = shift;
my $oid = shift; my $oid = shift;
return sub {} if $method eq 'CARP_TRACE';
return sub { return sub {
my $self = shift; my $self = shift;
@@ -3799,7 +3833,7 @@ sub _global {
# Return cached data unless loading # Return cached data unless loading
# We now store in raw format so munge before returning # We now store in raw format so munge before returning
# unless expecting raw data # unless expecting raw data
if ( defined $self->{"_$attr"} && !$load ) { if ( exists $self->{"_$attr"} && !$load ) {
my $val = $self->{"_$attr"}; my $val = $self->{"_$attr"};
if ( !$raw ) { if ( !$raw ) {
@@ -4509,6 +4543,11 @@ sub _validate_autoload_method {
$leaf_name =~ s/_/-/g; $leaf_name =~ s/_/-/g;
} }
# skip if offline
if ( $self->{Offline} ) {
return [1,(exists $self->{store}->{$method} ? 1: 0)];
}
# Translate MIB leaf node name to OID # Translate MIB leaf node name to OID
my $oid = SNMP::translateObj($leaf_name); my $oid = SNMP::translateObj($leaf_name);
@@ -4658,7 +4697,7 @@ sub AUTOLOAD {
# Typos in function calls in SNMP::Info subclasses turn into # Typos in function calls in SNMP::Info subclasses turn into
# AUTOLOAD requests for non-methods. While this is deprecated, # AUTOLOAD requests for non-methods. While this is deprecated,
# we'll still get called, so report a less confusing error. # we'll still get called, so report a less confusing error.
if ( ref($self) !~ /^SNMP::Info/ ) { if ( ref($self) !~ /SNMP::Info/ ) {
# croak reports one level too high. die reports here. # croak reports one level too high. die reports here.
# I would really like to get the place that's likely to # I would really like to get the place that's likely to

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS %MIBS
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', ); = ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' ); %MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = (); # IF-MIB %MIBS = (); # IF-MIB
@@ -61,7 +61,7 @@ sub agg_ports_ifstack {
foreach my $idx ( keys %$ifStack ) { foreach my $idx ( keys %$ifStack ) {
my ( $higher, $lower ) = split /\./, $idx; my ( $higher, $lower ) = split /\./, $idx;
next if ( $higher == 0 or $lower == 0 ); next if ( $higher == 0 or $lower == 0 );
if ( $ifType->{ $higher } eq 'ieee8023adLag' ) { if ( $ifType->{ $higher } eq 'ieee8023adLag' or $ifType->{ $higher } eq 'propMultiplexor') {
$ret->{ $lower } = $higher; $ret->{ $lower } = $higher;
} }
} }

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress', 'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',

View File

@@ -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.26'; $VERSION = '3.39';
# Five data structures required by SNMP::Info # Five data structures required by SNMP::Info
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' ); %MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable', 'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
@@ -97,6 +97,10 @@ sub copy_run_tftp {
print "Using new method, row iid: $rand\n" if $ciscoconfig->debug(); print "Using new method, row iid: $rand\n" if $ciscoconfig->debug();
#Check each set, delete created row if any fail #Check each set, delete created row if any fail
unless ( $ciscoconfig->set_config_row_status( 5, $rand ) ) {
$ciscoconfig->error_throw("Initializing config copy instruction failed");
return;
}
unless ( $ciscoconfig->set_config_source_type( 4, $rand ) ) { unless ( $ciscoconfig->set_config_source_type( 4, $rand ) ) {
$ciscoconfig->error_throw("Setting source type failed"); $ciscoconfig->error_throw("Setting source type failed");
unless ( $ciscoconfig->set_config_row_status( 6, $rand ) ) { unless ( $ciscoconfig->set_config_row_status( 6, $rand ) ) {

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB', 'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex', %MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' ); 'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', ); %MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', ); %MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', ); %MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
'SNMPv2-MIB' => 'sysDescr', 'SNMPv2-MIB' => 'sysDescr',

View File

@@ -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.26'; $VERSION = '3.39';
@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//;

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName', 'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -246,6 +246,7 @@ sub i_vlan_membership {
foreach my $port ( keys %$i_voice_vlan ) { foreach my $port ( keys %$i_voice_vlan ) {
my $vlan = $i_voice_vlan->{$port}; my $vlan = $i_voice_vlan->{$port};
next unless defined $vlan; next unless defined $vlan;
next unless ($vlan =~ m/[[:digit:]]+/ and $vlan < 4095);
my $dyn = $trunk_dyn->{$port}; my $dyn = $trunk_dyn->{$port};
unless ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))) { unless ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))) {
push( @{ $i_vlan_membership->{$port} }, $vlan ); push( @{ $i_vlan_membership->{$port} }, $vlan );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex', 'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' ); %MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' ); %MIBS = ( 'EtherLike-MIB' => 'etherMIB' );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' ); %MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
@@ -50,7 +50,7 @@ $VERSION = '3.26';
'fdp_run' => 'snFdpGlobalRun', 'fdp_run' => 'snFdpGlobalRun',
'fdp_interval' => 'snFdpGlobalMessageInterval', 'fdp_interval' => 'snFdpGlobalMessageInterval',
'fdp_holdtime' => 'snFdpGlobalHoldTime', 'fdp_holdtime' => 'snFdpGlobalHoldTime',
'fdp_id' => 'snFdpGlobalDeviceId', 'fdp_gid' => 'snFdpGlobalDeviceId',
); );
%FUNCS = ( %FUNCS = (
@@ -231,7 +231,7 @@ Time in seconds that FDP messages are kept.
(C<fdpGlobalHoldTime>) (C<fdpGlobalHoldTime>)
=item $fdp->fdp_id() =item $fdp->fdp_gid()
Returns FDP device ID. Returns FDP device ID.

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Aggregate::MIBS, %SNMP::Info::Aggregate::MIBS,

View File

@@ -44,7 +44,7 @@ use constant {
IPV6MIB => 3, IPV6MIB => 3,
}; };
$VERSION = '3.26'; $VERSION = '3.39';
@@ -72,10 +72,10 @@ $VERSION = '3.26';
'ip_pfx_origin' => 'ipAddressPrefixOrigin', # IP-MIB 'ip_pfx_origin' => 'ipAddressPrefixOrigin', # IP-MIB
'c_pfx_origin' => 'cIpAddressPfxOrigin', # CISCO-IETF-IP-MIB 'c_pfx_origin' => 'cIpAddressPfxOrigin', # CISCO-IETF-IP-MIB
'ip_addr6_pfx' => 'ipAddressPrefix', # IP-MIB 'ip_addr6_pfx' => 'ipAddressPrefix', # IP-MIB
'c_addr6_pfx' => 'cIpAddressPrefix', # CISCO-IETF-IP-MIB 'c_addr6_pfx' => 'cIpAddressPrefix', # CISCO-IETF-IP-MIB
'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIBw 'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIB
'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB 'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB
'ip_addr6_type' => 'ipAddressType', # IP-MIB 'ip_addr6_type' => 'ipAddressType', # IP-MIB
@@ -142,6 +142,12 @@ sub ipv6_n2p_addr {
# so what we've collected in that variable is actually the first byte of the address. # so what we've collected in that variable is actually the first byte of the address.
$v6_packed = pack('C', $addrsize) . $v6_packed; $v6_packed = pack('C', $addrsize) . $v6_packed;
} }
if (length($v6_packed) == 17) {
# Workaround for IPV6-MIB on Windows 2012: if the address is one byte too long, the SNMP agent probably has an incorrect
# implementation where a length field precedes the actual IPv6 address.
# In that case, the first character should be chr(16), ie 0x10; strip it if that's the case.
$v6_packed =~ s/^\x10//;
}
if (length($v6_packed) == 16) { if (length($v6_packed) == 16) {
$v6addr = join(':', map { sprintf("%04x", $_) } unpack("n*", $v6_packed) ); $v6addr = join(':', map { sprintf("%04x", $_) } unpack("n*", $v6_packed) );
$return->{$row} = $v6addr; $return->{$row} = $v6addr;
@@ -307,7 +313,9 @@ sub ipv6_addr_prefix {
foreach my $row (keys %$ipv6_addr_prefix){ foreach my $row (keys %$ipv6_addr_prefix){
if ($row =~ /^(\d+)\.[\d\.]+$/) { if ($row =~ /^(\d+)\.[\d\.]+$/) {
my $type = $1; my $type = $1;
if ($type == 2) { # IPv6 if (($type == 2) or ($type == 4)) { # IPv6
# Remove interface specific part from vrf interfaces
if ($row =~ /^((\d+\.){17}\d+)/) { $row = $1 }
# Remove the OID part from the value # Remove the OID part from the value
my $val = $ipv6_addr_prefix->{$row}; my $val = $ipv6_addr_prefix->{$row};
if ( $val =~ /^.+?((?:\d+\.){19}\d+)$/ ){ if ( $val =~ /^.+?((?:\d+\.){19}\d+)$/ ){
@@ -321,6 +329,29 @@ sub ipv6_addr_prefix {
return $return; return $return;
} }
sub ipv6_addr {
my $info = shift;
my $return;
my $indexes = $info->ipv6_index();
foreach my $row (keys %$indexes) {
my @parts = split(/\./, $row);
my $is_valid = 0;
if (scalar @parts == 18) {
my $addrtype = shift @parts;
$is_valid = 1;
} elsif (scalar @parts == 17) {
$is_valid = 1;
}
my $addrsize = shift @parts; # First element now is addrsize, should be 16
if ($is_valid && $addrsize == 16) {
$return->{$row} = join(':', unpack('(H4)*', pack('C*', @parts)));
} else {
warn sprintf("%s: unable to decode table index to IPv6 address. Raw data is [%s].\n", &_my_sub_name, $row);
}
}
return $return;
}
sub _method_used { sub _method_used {
my $info = shift; my $info = shift;
my $return = 'none of the MIBs'; my $return = 'none of the MIBs';
@@ -459,6 +490,10 @@ Maps an IPv6 prefix with its origin (manual, well-known, dhcp, etc.)
Maps IPv6 addresses with their prefixes Maps IPv6 addresses with their prefixes
=item $info->ipv6_addr()
Maps a table instance to an IPv6 address
=back =back
=head2 Internet Address Translation Table =head2 Internet Address Translation Table

View File

@@ -39,10 +39,11 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/; use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled', 'LLDP-MIB' => 'lldpLocSysCapEnabled',
'LLDP-EXT-MED-MIB' => 'lldpXMedMIB',
'LLDP-EXT-DOT1-MIB' => 'lldpXdot1MIB', 'LLDP-EXT-DOT1-MIB' => 'lldpXdot1MIB',
'LLDP-EXT-DOT3-MIB' => 'lldpXdot3MIB', 'LLDP-EXT-DOT3-MIB' => 'lldpXdot3MIB',
); );
@@ -149,6 +150,38 @@ sub lldp_ip {
return \%lldp_ip; return \%lldp_ip;
} }
sub lldp_ipv6 {
my $lldp = shift;
my $partial = shift;
my $rman_addr = $lldp->lldp_rman_addr($partial) || {};
my %lldp_ipv6;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
next unless defined $index;
next unless $proto == 2;
$lldp_ipv6{$index} = $addr;
}
return \%lldp_ipv6;
}
sub lldp_mac {
my $lldp = shift;
my $partial = shift;
my $rman_addr = $lldp->lldp_rman_addr($partial) || {};
my %lldp_ipv6;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
next unless defined $index;
next unless $proto == 6;
$lldp_ipv6{$index} = $addr;
}
return \%lldp_ipv6;
}
sub lldp_addr { sub lldp_addr {
my $lldp = shift; my $lldp = shift;
my $partial = shift; my $partial = shift;
@@ -323,13 +356,19 @@ sub _lldp_addr_index {
return ( $index, $proto, join( '.', @oids ) ); return ( $index, $proto, join( '.', @oids ) );
} }
# IPv6
elsif ( $proto == 2 ) {
return ( $index, $proto,
join(':', unpack('(H4)*', pack('C*', @oids)) ) );
}
# MAC # MAC
elsif ( $proto == 6 ) { elsif ( $proto == 6 ) {
return ( $index, $proto, return ( $index, $proto,
join( ':', map { sprintf "%02x", $_ } @oids ) ); join( ':', map { sprintf "%02x", $_ } @oids ) );
} }
# TODO - Need to handle other protocols, i.e. IPv6 # TODO - Other protocols may be used as well; implement when needed?
else { else {
return; return;
} }
@@ -397,6 +436,8 @@ None.
=item F<LLDP-MIB> =item F<LLDP-MIB>
=item F<LLDP-EXT-MED-MIB>
=item F<LLDP-EXT-DOT1-MIB> =item F<LLDP-EXT-DOT1-MIB>
=item F<LLDP-EXT-DOT3-MIB> =item F<LLDP-EXT-DOT3-MIB>
@@ -495,10 +536,24 @@ if unable defaults to (C<lldpRemLocalPortNum>).
Returns remote IPv4 address. Returns for all other address types, use Returns remote IPv4 address. Returns for all other address types, use
lldp_addr if you want any return address type. lldp_addr if you want any return address type.
=item $lldp->lldp_ipv6()
Returns remote IPv6 address, if known. Returns for all other address types,
use lldp_addr if you don't care about return address type.
=item $lldp->lldp_mac()
Returns remote (management) MAC address, if known. Returns for all other
address types, use lldp_addr if you don't care about return address type.
=item $lldp->lldp_addr() =item $lldp->lldp_addr()
Returns remote address. Type may be any IANA Address Family Number. Returns remote address. Type may be any IANA Address Family Number.
Currently only returns IPv4 or MAC addresses. Currently only returns IPv4, IPv6 or MAC addresses. If the remote device
returns more than one address type, this method will give only one. Which one
is returned is decided by chance, phase of the moon and Perl hash ordering.
Use lldp_mac, lldp_ip or lldp_ipv6 if you want a specific address type.
=item $lldp->lldp_port() =item $lldp->lldp_port()
@@ -530,7 +585,7 @@ the remote system.
=item $lldp->lldp_rem_id() =item $lldp->lldp_rem_id()
Returns the string value used to identify the chassis component associated Returns the string value used to identify the chassis component associated
with the remote system. with the remote system.
(C<lldpRemChassisId>) (C<lldpRemChassisId>)

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' ); %MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/; use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26'; $VERSION = '3.39';
# Set for No CDP # Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', ); %GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
@@ -78,7 +78,7 @@ sub model {
my $desc = $allied->description(); my $desc = $allied->description();
if ( $desc =~ /(AT-\d{4}\S{1}?)/ ) { if ( $desc =~ /(AT-\d{4}\S{1})/ ) {
return $1; return $1;
} }
return; return;

View File

@@ -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.26'; $VERSION = '3.39';
# Set for No CDP # Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, ); %GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer1::MIBS, %SNMP::Info::Layer1::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,

View File

@@ -46,7 +46,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/; use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS, %SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -11,7 +11,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/; use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::LLDP::MIBS, %SNMP::Info::LLDP::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS, %SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
@@ -97,6 +97,14 @@ my $mcs_index = {
m13 => '104', m13 => '104',
m14 => '117', m14 => '117',
m15 => '130', m15 => '130',
m16 => '19.5',
m17 => '39',
m18 => '58.5',
m19 => '78',
m20 => '117',
m21 => '156',
m22 => '175.5',
m23 => '195',
# This is a cheat for 802.11a bonded # This is a cheat for 802.11a bonded
m108 => '108', m108 => '108',
}, },
@@ -117,6 +125,14 @@ my $mcs_index = {
m13 => '240', m13 => '240',
m14 => '270', m14 => '270',
m15 => '300', m15 => '300',
m16 => '45',
m17 => '90',
m18 => '135',
m19 => '180',
m20 => '270',
m21 => '360',
m22 => '405',
m23 => '450',
} }
}; };
@@ -165,6 +181,7 @@ sub cd11_txrate {
elsif ( $rate =~ /^m/ ) { elsif ( $rate =~ /^m/ ) {
my $band = $protos->{$idx}; my $band = $protos->{$idx};
my $bw = $bws->{$band}; my $bw = $bws->{$band};
# FIXME throw some kind of error if we get an index/rate that we haven't implemented yet? Now we simply return "0.0"...
$cd11_txrate->{$idx} = [ $mcs_index->{$bw}->{$rate} || '0.0' ]; $cd11_txrate->{$idx} = [ $mcs_index->{$bw}->{$rate} || '0.0' ];
} }
else { else {

View File

@@ -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.26'; $VERSION = '3.39';
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::IEEE802dot11::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS,
@@ -60,7 +60,8 @@ $VERSION = '3.26';
%SNMP::Info::CiscoConfig::GLOBALS, %SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CDP::GLOBALS, %SNMP::Info::CDP::GLOBALS,
'serial' => 'entPhysicalSerialNum.1', 'serial' => 'entPhysicalSerialNum.1',
'descr' => 'sysDescr' 'descr' => 'sysDescr',
'ps1_type' => 'cpoePdCurrentPowerSource'
); );
%FUNCS = ( %FUNCS = (
@@ -97,6 +98,7 @@ $VERSION = '3.26';
'CISCO-DOT11-ASSOCIATION-MIB' => 'cDot11ClientSubIfIndex', 'CISCO-DOT11-ASSOCIATION-MIB' => 'cDot11ClientSubIfIndex',
'CISCO-DOT11-SSID-SECURITY-MIB' => 'cdot11SecVlanNameId', 'CISCO-DOT11-SSID-SECURITY-MIB' => 'cdot11SecVlanNameId',
'CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB' => 'cviRoutedVlanIfIndex', 'CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB' => 'cviRoutedVlanIfIndex',
'CISCO-POE-PD-MIB' => 'cpoePdCurrentPowerSource',
); );
%MUNGE = ( %MUNGE = (
@@ -457,6 +459,18 @@ sub i_ssidmac {
return $i_ssidmac; return $i_ssidmac;
} }
###
# PoE status. The ps1_type is the PoE injector type, which is just
# a scalar; the status is a little more complex.
sub ps1_status {
my $aironet = shift;
my $idx = $aironet->cpoePdCurrentPowerLevel();
my $mw = $aironet->cpoePdSupportedPower( $idx );
my $descr = $aironet->cpoePdSupportedPowerMode( $idx );
return sprintf( "%.2fW (%s)", $mw->{$idx} * 0.001, $descr->{$idx} );
}
1; 1;
__END__ __END__
@@ -540,17 +554,13 @@ These are methods that return scalar value from SNMP
=over =over
=item $aironet->discription()
Adds info from method e_descr() from SNMP::Info::Entity
=item $aironet->vendor() =item $aironet->vendor()
Returns 'cisco' Returns 'cisco'
=item $aironet->description() =item $aironet->description()
System description System description. Adds info from method e_descr() from SNMP::Info::Entity
=back =back
@@ -648,6 +658,11 @@ being broadcast.
With the same keys as i_ssidlist, returns the Basic service set With the same keys as i_ssidlist, returns the Basic service set
identification (BSSID), MAC address, the AP is using for the SSID. identification (BSSID), MAC address, the AP is using for the SSID.
=item $aironet ps1_status()
Returns the PoE injector status based on C<cpoePdSupportedPower> and
C<cpoePdSupportedPowerMode>.
=back =back
=head2 Table Methods imported from SNMP::Info::Layer2 =head2 Table Methods imported from SNMP::Info::Layer2

View File

@@ -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.26'; $VERSION = '3.39';
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS ); %GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::Layer2::GLOBALS,

View File

@@ -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.26'; $VERSION = '3.39';
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer2::Cisco::GLOBALS, %SNMP::Info::Layer2::Cisco::GLOBALS,

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,

View File

@@ -50,11 +50,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/; use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26'; $VERSION = '3.39';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
our $index = undef;
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::Layer2::GLOBALS,
@@ -98,6 +94,10 @@ sub vendor {
return 'cisco'; return 'cisco';
} }
sub os {
return 'ros';
}
# Walk the entPhysicalSerialNum table and return the first serial found # Walk the entPhysicalSerialNum table and return the first serial found
sub serial { sub serial {
my $ciscosb = shift; my $ciscosb = shift;
@@ -113,20 +113,26 @@ sub serial {
sub os_ver { sub os_ver {
my $ciscosb = shift; my $ciscosb = shift;
my $os_ver = $ciscosb->e_swver(); my $e_swver = $ciscosb->e_swver();
return $os_ver->{$index} if defined $index; foreach my $e ( sort keys %$e_swver ) {
if (defined $e_swver->{$e} and $e_swver->{$e} !~ /^\s*$/) {
return $e_swver->{$e};
}
}
} }
# Grab e_model from Entity and tag on e_hwver # Grab e_model from Entity and tag on e_hwver
sub model { sub model {
my $ciscosb = shift; my $ciscosb = shift;
my $e_model = $ciscosb->e_model(); my $e_model = $ciscosb->e_model();
my $e_hwver = $ciscosb->e_hwver(); my $e_hwver = $ciscosb->e_hwver();
if (defined ($index)) { foreach my $e ( sort keys %$e_model ) {
my $model = "$e_model->{$index} $e_hwver->{$index}"; if (defined $e_model->{$e} and $e_model->{$e} !~ /^\s*$/) {
return $model; my $model = "$e_model->{$e} $e_hwver->{$e}";
return $model;
}
} }
return $ciscosb->description(); return $ciscosb->description();
} }
@@ -156,14 +162,14 @@ Nic Bernstein (shamelessly stolen from Max Baker's Aironet code)
=head1 SYNOPSIS =head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you. # Let SNMP::Info determine the correct subclass for you.
my $ciscosb = new SNMP::Info( my $ciscosb = new SNMP::Info(
AutoSpecify => 1, AutoSpecify => 1,
Debug => 1, Debug => 1,
DestHost => 'myswitch', DestHost => 'myswitch',
Community => 'public', Community => 'public',
Version => 2 Version => 2
) )
or die "Can't connect to DestHost.\n"; or die "Can't connect to DestHost.\n";
my $class = $ciscosb->class(); my $class = $ciscosb->class();
@@ -210,6 +216,10 @@ These are methods that return scalar value from SNMP
Returns 'cisco' Returns 'cisco'
=item $ciscosb->os()
Returns 'ros'
=item $ciscosb->os_ver() =item $ciscosb->os_ver()
Returns software version (C<entPhysicalSoftwareRev>) Returns software version (C<entPhysicalSoftwareRev>)

View File

@@ -37,7 +37,7 @@ use Exporter;
use SNMP::Info::Layer3; use SNMP::Info::Layer3;
use SNMP::Info::MAU; use SNMP::Info::MAU;
use SNMP::Info::CDP; use SNMP::Info::CDP;
use SNMP::Info::Aggregate; use SNMP::Info::Aggregate 'agg_ports_ifstack';
@SNMP::Info::Layer2::HP::ISA = qw/ @SNMP::Info::Layer2::HP::ISA = qw/
SNMP::Info::Aggregate SNMP::Info::Aggregate
@@ -50,7 +50,7 @@ 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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -215,6 +215,7 @@ $VERSION = '3.26';
'J9085A' => '2610-24', 'J9085A' => '2610-24',
'J8762A' => '2600-8-PWR', 'J8762A' => '2600-8-PWR',
'J9780A' => '2530-8-PoE+', 'J9780A' => '2530-8-PoE+',
'J9774A' => '2530-8G-PoEP',
'J9777A' => '2530-8G', 'J9777A' => '2530-8G',
'J9783A' => '2530-8', 'J9783A' => '2530-8',
'J9778A' => '2530-48-PoE+', 'J9778A' => '2530-48-PoE+',

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,

View File

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

View File

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

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
# 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.

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::MIBS,

View File

@@ -0,0 +1,311 @@
# SNMP::Info::Layer2::Ubiquiti
# $Id$
#
package SNMP::Info::Layer2::Ubiquiti;
use strict;
use Exporter;
use SNMP::Info::IEEE802dot11;
use SNMP::Info::Layer2;
use SNMP::Info::Layer3; # only used in sub mac()
@SNMP::Info::Layer2::Ubiquiti::ISA
= qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Ubiquiti::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.39';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::IEEE802dot11::MIBS,
);
%GLOBALS
= ( %SNMP::Info::Layer2::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS, );
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::IEEE802dot11::FUNCS,
);
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::IEEE802dot11::MUNGE, );
sub os {
my $ubnt = shift;
my $names = $ubnt->dot11_prod_name();
foreach my $iid ( keys %$names ) {
my $prod = $names->{$iid};
next unless defined $prod;
# Product names that match AirOS products
if((lc $prod) =~ /station/ or (lc $prod) =~ /beam/ or (lc $prod) =~ /grid/){
return 'AirOS';
# Product names that match UAP
}elsif((lc $prod) =~ /uap/){
return 'UniFi';
}else{
# Continue below to find OS name
}
}
## EdgeMAX OS (EdgeSwitch and EdgeRouter) name is first field split by space
my $ver = $ubnt->description() || '';
my @myver = split(/ /, $ver);
return $myver[0];
}
sub os_ver {
my $dot11 = shift;
my $versions = $dot11->dot11_prod_ver();
foreach my $iid ( keys %$versions ) {
my $ver = $versions->{$iid};
next unless defined $ver;
return $ver;
## Not sure what this function does, it seems to be extraneous being in the same code block after a return statement?
if ( $ver =~ /([\d\.]+)/ ) {
return $1;
}
}
my $ver = $dot11->description() || '';
if($ver =~ /^edgeswitch/){
## EdgeSwitch OS version is second field split by comma
my @myver = split(/, /, $ver);
return $myver[1];
}
## EdgeRouter OS version is second field split by space
my @myver = split(/ /, $ver);
return $myver[1];
}
sub vendor {
return 'Ubiquiti Networks, Inc.';
}
sub model {
my $ubnt = shift;
my $names = $ubnt->dot11_prod_name();
foreach my $iid ( keys %$names ) {
my $prod = $names->{$iid};
next unless defined $prod;
return $prod;
}
my $desc = $ubnt->description() || '';
## Pull Model from beginning of description, separated by comma (EdgeSwitch)
if((lc $desc) =~ /^edgeswitch/){
my @mydesc = split(/, /, $desc);
return $mydesc[0];
}
if(!((lc $desc) =~ /edgeos/)){
# Not sure what type of device this is to get Model
# Wireless devices report dot11_prod_name
# EdgeSwitch includes mode directly and edgeos logic is in else statement
return ;
}else{
## do some logic to determine ER model based on tech specs from ubnt:
## https://help.ubnt.com/hc/en-us/articles/219652227--EdgeRouter-Which-EdgeRouter-Should-I-Use-#tech%20specs
## Would be nice if UBNT simply adds the model string to their SNMP daemon directly
my $ethCount = 0;
my $switchCount = 0;
#my $sfpCount = 0;
#my $poeCount = 0;
my $memTotalReal = $ubnt->memTotalReal;
my $cpuLoad = $ubnt->hrProcessorLoad;
my $cpuCount = 0;
## My perl is lacking. Not sure if there's a more efficient way to find the cpu count
foreach my $iid ( keys %$cpuLoad ) {
$cpuCount++;
}
my $ifDescs = $ubnt->ifDescr;
foreach my $iid ( keys %$ifDescs ) {
my $ifDesc = $ifDescs->{$iid};
next unless defined $ifDesc;
if((lc $ifDesc) =~ /^eth\d+$/){ # exclude vlan interfaces. Ex: eth1.5
$ethCount++;
}elsif((lc $ifDesc) =~ /^switch/){
$switchCount++;
}
}
## If people have other models to further fine-tune this logic that would be great.
if($ethCount eq 9){
## Should be ER Infinity
return "EdgeRouter Infinity"
}if($ethCount eq 8){
## Could be ER-8 Pro, ER-8, or EP-R8
return "EdgeRouter 8-Port"
}elsif($ethCount eq 5 and $cpuCount eq 4){
## Could be ER-X or ER-X-SFP
return "EdgeRouter X 5-Port"
}elsif($ethCount eq 5){
return "EdgeRouter PoE 5-Port"
}elsif($ethCount eq 3 and $cpuCount eq 2){
return "EdgeRouter LITE 3-Port"
}else{
## failback string
return "EdgeRouter eth-$ethCount switch-$switchCount mem-$memTotalReal cpuNum-$cpuCount";
}
}
}
## simply take the MAC and clean it up
sub serial {
my $ubnt = shift;
my $serial = $ubnt->mac();
if($serial){
$serial =~ s/://g;
return uc $serial;
}
return ;
}
## UBNT doesn't put the primary-mac interface at index 1
sub mac {
my $ubnt = shift;
my $ifDescs = $ubnt->ifDescr;
foreach my $iid ( keys %$ifDescs ) {
my $ifDesc = $ifDescs->{$iid};
next unless defined $ifDesc;
## CPU Interface will have the primary MAC for EdgeSwitch
## eth0 will have primary MAC for linux-based UBNT devices
if($ifDesc =~ /CPU/ or $ifDesc eq 'eth0'){
my $mac = $ubnt->ifPhysAddress->{$iid};
# syntax stolen from sub munge_mac in SNMP::Info
$mac = lc join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){5}[0-9A-F][0-9A-F]$/i;
}
}
# MAC malformed or missing
return;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Ubiquiti - SNMP Interface to Ubiquiti Access Points
=head1 AUTHOR
Max Kosmach
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $ubnt = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $ubnt->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from
Ubiquiti Access Point through SNMP.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $ubnt = new SNMP::Info::Layer2::Ubiquiti(...);
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=item SNMP::Info::IEEE802dot11
=back
=head2 Required MIBs
None.
=head2 Inherited MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::IEEE802dot11/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $ubnt->vendor()
Returns 'Ubiquiti Networks, Inc.'
=item $ubnt->model()
Returns the model extracted from C<dot11manufacturerProductName>, with failback to some complex logic for EdgeMax devices
=item $ubnt->os()
Returns 'Ubiquiti Networks, Inc.'
=item $ubnt->os_ver()
Returns the software version extracted from C<dot11manufacturerProductVersion>, with failback to description splitting for EdgeMax devices
=back
=head2 Global Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::IEEE802dot11
See L<SNMP::Info::IEEE802dot11/"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::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::IEEE802dot11
See L<SNMP::Info::IEEE802dot11/"TABLE METHODS"> for details.
=cut

View File

@@ -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.26'; $VERSION = '3.39';
# Set for No CDP # Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS ); %GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -53,7 +53,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/; use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::MIBS,
@@ -196,12 +196,15 @@ sub serial {
my $serial1 = $l3->serial1(); my $serial1 = $l3->serial1();
my $e_parent = $l3->e_parent() || {}; my $e_parent = $l3->e_parent() || {};
my $e_class = $l3->e_class() || {};
foreach my $iid ( keys %$e_parent ) { foreach my $iid ( keys %$e_parent ) {
my $parent = $e_parent->{$iid}; my $parent = $e_parent->{$iid};
if ( $parent eq '0' ) { my $class = $e_class->{$iid} || '';
# Only consider serial numbers for entries without a parent, or if they are of type "chassis"
if ( $parent eq '0' or $class eq 'chassis') {
my $serial = $l3->e_serial($iid); my $serial = $l3->e_serial($iid);
if ( $serial ) { if ( $serial && $serial->{$iid} ) {
return $serial->{$iid}; return $serial->{$iid};
} }
else { else {

View File

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

View File

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

View File

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

View File

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

View File

@@ -36,7 +36,7 @@ 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::LLDP;
use SNMP::Info::Aggregate; use SNMP::Info::Aggregate 'agg_ports_ifstack';
@SNMP::Info::Layer3::Arista::ISA = qw/ @SNMP::Info::Layer3::Arista::ISA = qw/
SNMP::Info::Aggregate SNMP::Info::Aggregate
@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,

View File

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

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,

View File

@@ -47,7 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//; @SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.26'; $VERSION = '3.39';
# 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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MAU::MIBS, %SNMP::Info::MAU::MIBS,

View File

@@ -51,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/; use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26'; $VERSION = '3.39';
# 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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -136,6 +136,13 @@ sub i_vlan {
return $i_vlan; return $i_vlan;
} }
sub cisco_comm_indexing {
my $cisco = shift;
# If we get a VTP version, it's *extremely* likely that the device needs community based indexing
my $vtp = $cisco->vtp_version() || '0';
return ($vtp ne '0');
}
1; 1;
__END__ __END__
@@ -237,6 +244,11 @@ These are methods that return scalar value from SNMP
(C<cEigrpAsRouterId>) (C<cEigrpAsRouterId>)
=item $switch->cisco_comm_indexing()
Returns 1 when the device is likely to need vlan indexing.
Determined by checking C<vtpVersion>.
=back =back
=head2 Global Methods imported from SNMP::Info::CiscoVTP =head2 Global Methods imported from SNMP::Info::CiscoVTP

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, ); %MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
@@ -73,8 +73,8 @@ sub b_mac {
foreach my $i ( keys %$macs ) { foreach my $i ( keys %$macs ) {
my $mac = $macs->{$i}; my $mac = $macs->{$i};
# don't catch the bad macs with zeroed OUI # don't catch the bad macs with bogus OUI
if ( $mac !~ m/(0{1,2}:){3}/ ) { if ( $mac !~ m/(0{1,2}:){2}(00|01)/ ) {
push( @macs, $mac ); push( @macs, $mac );
} }
@macs = sort(@macs); @macs = sort(@macs);

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, ); %MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS, %SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,

View File

@@ -0,0 +1,126 @@
package SNMP::Info::Layer3::DLink;
use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::LLDP;
@SNMP::Info::Layer3::DLink::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::DLink::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.39';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
'DLINK-ID-REC-MIB' => 'dlink',
'SWPRIMGMT-DES3200-MIB' => 'dlink-des3200SeriesProd',
'SWPRIMGMT-DES30XXP-MIB' => 'dlink-des30xxproductProd',
'SWPRIMGMT-DES1228ME-MIB' => 'dlink-des1228MEproductProd',
'SWDES3528-52PRIMGMT-MIB' => 'dlink-Des3500Series',
'DES-1210-28-AX' => 'des-1210-28ax',
'DES-1210-10MEbx' => 'des-1210-10mebx',
'DES-1210-26MEbx' => 'des-1210-26mebx',
'DES-1210-52-BX' => 'des-1210-52bx',
'DES-1210-52-CX' => 'des-1210-52-cx',
'DGS-1210-24-AX' => 'dgs-1210-24ax',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
'dlink_fw' => 'probeSoftwareRev',
'dlink_hw' => 'probeHardwareRev',
'dlink_stp_i_root_port' => 'MSTP_MIB__swMSTPInstRootPort',
'dlink_serial_no' => 'AGENT_GENERAL_MIB__agentSerialNumber',
);
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, %SNMP::Info::LLDP::MUNGE, );
sub model {
my $dlink=shift;
my $id = $dlink->id();
my $model = &SNMP::translateObj($id);
return $id unless defined $model;
if (defined $model && $model !~ /dlink-products/) {
return $model;
} else {
#If don't have a device MIB
return $dlink->description();
}
}
sub vendor {
return 'dlink';
}
sub serial {
my $dlink = shift;
my $model = $dlink->model();
my $id = $dlink->id();
my $serial;
if ($model =~ /1210/) {
#Due to the zoo of MIB from DLink by 1210 series
$serial->{0} = $dlink->session()->get($id.'.1.30.0');
} else {
$serial = $dlink->dlink_serial_no();
}
return $serial->{0} if ( defined $serial->{0} and $serial->{0} !~ /^\s*$/ and $serial->{0} !~ 'NOSUCHOBJECT' );
return $dlink->SUPER::serial();
}
sub fwver {
my $dlink=shift;
my $model = $dlink->model();
my $id = $dlink->id();
my $fw;
if ($model =~ /1210/) {
#Due to the zoo of MIB from DLink by 1210 series
$fw->{0} = $dlink->session()->get($id.'.1.3.0');
} else {
$fw = $dlink->dlink_fw();
}
return $fw->{0} if ( defined $fw->{0} and $fw->{0} !~ /^\s*$/ and $fw->{0} !~ 'NOSUCHOBJECT');
}
sub hwver {
my $dlink=shift;
my $model = $dlink->model();
my $id = $dlink->id();
my $hw;
if ($model =~ /1210/) {
#Due to the zoo of MIB from DLink by 1210 series
$hw->{0} = $dlink->session()->get($id.'.1.2.0');
} else {
$hw = $dlink->dlink_hw();
}
return $hw->{0} if ( defined $hw->{0} and $hw->{0} !~ /^\s*$/ and $hw->{0} !~ 'NOSUCHOBJECT');
}
sub stp_i_root_port {
my $dlink=shift;
my $model = $dlink->model();
my $id = $dlink->id();
my $stp_i_root_port;
if ($model =~ /1210-(?:10|26)/) {
#Due to the zoo of MIB from DLink by 1210 series
$stp_i_root_port->{0} = $dlink->session()->get($id.'.6.1.13.0');
} else {
$stp_i_root_port = $dlink->dlink_stp_i_root_port();
}
return $stp_i_root_port if ( defined $stp_i_root_port->{0} and $stp_i_root_port->{0} !~ /^\s*$/ and $stp_i_root_port->{0} !~ 'NOSUCHOBJECT');
return $dlink->SUPER::stp_i_root_port();
}
1;
__END__

View File

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

View File

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

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -72,10 +72,14 @@ $VERSION = '3.26';
'i_up' => 'sysInterfaceStatus', 'i_up' => 'sysInterfaceStatus',
# sysIfxStatTable # sysIfxStatTable
'i_octet_in' => 'sysIfxStatHcInOctets', 'i_octet_in64' => 'sysIfxStatHcInOctets',
'i_octet_out' => 'sysIfxStatHcOutOctets', 'i_octet_out64' => 'sysIfxStatHcOutOctets',
'i_pkts_ucast_in' => 'sysIfxStatHcInUcastPkts', 'i_pkts_ucast_in64' => 'sysIfxStatHcInUcastPkts',
'i_pkts_ucast_out' => 'sysIfxStatHcOutUcastPkts', 'i_pkts_ucast_out64' => 'sysIfxStatHcOutUcastPkts',
'i_pkts_mutli_in64' => 'sysIfxStatInMulticastPkts',
'i_pkts_multi_out64' => 'sysIfxStatOutMulticastPkts',
'i_pkts_bcast_in64' => 'sysIfxStatInBroadcastPkts',
'i_pkts_bcast_out64' => 'sysIfxStatOutBroadcastPkts',
# sysInterfaceStatTable # sysInterfaceStatTable
'i_discards_in' => 'sysInterfaceStatDropsIn', 'i_discards_in' => 'sysInterfaceStatDropsIn',
@@ -115,8 +119,8 @@ sub fan {
my $ret = ""; my $ret = "";
my $s = ""; my $s = "";
foreach my $i ( sort { $a <=> $b } keys %$fan_state ) { foreach my $i ( sort { $a <=> $b } keys %$fan_state ) {
$ret .= $s . $i . ": " . $fan_state->{$i}; $ret .= $s . $i . ': ' . $fan_state->{$i};
$s = ", "; $s = ', ';
} }
return if ( $s eq "" ); return if ( $s eq "" );
return $ret; return $ret;
@@ -161,8 +165,9 @@ sub i_type {
my %i_type; my %i_type;
foreach my $if ( keys %$idx ) { foreach my $if ( keys %$idx ) {
$i_type{$if} =
$i_type{$if} = 'ethernetCsmacd'; ((exists $f5->{sess}->{UseEnums} and $f5->{sess}->{UseEnums})
? 'ethernetCsmacd' : 6 );
} }
return \%i_type; return \%i_type;
} }

View File

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

View File

@@ -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.26'; $VERSION = '3.39';
%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