Compare commits

...

116 Commits
3.32 ... 3.48

Author SHA1 Message Date
Oliver Gorwits
c8b4f8f4fd release 3.48 2018-03-03 17:20:24 +00:00
Oliver Gorwits
6113dd3b98 fix pod for new Cumulus class 2018-03-03 17:18:29 +00:00
Oliver Gorwits
e21f22bb3b initial Cumulus Networks support 2018-03-02 23:42:46 +00:00
Oliver Gorwits
bb4578dea5 release 3.47 2018-02-27 22:51:38 +00:00
Oliver Gorwits
e83ca6fbe3 fix test 2018-02-27 22:49:44 +00:00
Oliver Gorwits
ae9963cf85 Add LLDP-MIB::lldpXMedRemInventoryTable methods 2018-02-27 22:48:26 +00:00
Oliver Gorwits
650aef9c2d release 3.46 2018-02-17 13:05:25 +00:00
Oliver Gorwits
397b14da22 Add method to show err-disable cause on Cisco (#248)
Method i_err_disable_cause implemented on CiscoPortSecurity.pm. Returns
sparse data: ifIndex -> textual err-disable cause, for interfaces that
are err-disabled.
2018-02-17 11:47:56 +00:00
Oliver Gorwits
0f00322e03 release 3.45 2018-02-14 22:16:26 +00:00
Oliver Gorwits
e2b688077e Enable Layer3::Foundry for Brocade VDX platform 2018-02-14 22:01:04 +00:00
Oliver Gorwits
4afbd37cbd fix #222 #238 #239 handle BayStack switches with port index 128 (zoeloe) 2018-02-12 22:15:38 +00:00
Oliver Gorwits
40d3340ac5 release 3.44 2018-02-12 19:32:53 +00:00
Oliver Gorwits
9bb71d3df7 Merge remote-tracking branch 'origin/ipv6-prefixlen' 2018-02-12 19:27:59 +00:00
Jeroen van Ingen Schenau
4860447b06 Merge pull request #247 from laelly/master
Improve F10 OS version detection
2018-02-12 09:10:05 +01:00
laelly
445b3f19a3 Improve F10 OS version detection 2018-02-10 01:50:27 +01:00
Jeroen van Ingen
32efd26999 Alternative ipv6_addr_prefixlength implementation 2018-02-05 20:23:06 +01:00
Oliver Gorwits
f2f95150bd release 3.43 2018-02-02 18:03:34 +00:00
Oliver Gorwits
f210bf8812 Fix identification of Brocade CES 2018-02-02 17:51:28 +00:00
Oliver Gorwits
c30e1a2446 release 3.42 2018-02-02 16:42:11 +00:00
Oliver Gorwits
10392fc08e IPv6 Prefix Length support via IPv6::ipv6_addr_prefixlength 2018-02-02 16:41:05 +00:00
Oliver Gorwits
df10473fb5 change in name of test host?! 2018-02-02 15:14:14 +00:00
Oliver Gorwits
6505e7e85f release 3.41 2018-02-01 22:55:12 +00:00
Oliver Gorwits
ffd80722b8 fix travis notifications 2018-02-01 20:59:14 +00:00
Oliver Gorwits
6bd5bb3dda change travis on success [skip ci] 2018-01-31 18:09:48 +00:00
Oliver Gorwits
83dec3c1d6 add irc notifications 2018-01-30 16:23:21 +00:00
Oliver Gorwits
82f2a83eec add adtran docs 2018-01-30 16:13:54 +00:00
Oliver Gorwits
5194af9d91 add dlink docs 2018-01-30 16:07:07 +00:00
Oliver Gorwits
a4c76d2fb9 add vyos docs 2018-01-30 16:02:06 +00:00
Oliver Gorwits
57a35075fa small bits of missing POD 2018-01-30 15:55:25 +00:00
Oliver Gorwits
fb69a60b45 add readme and update meta 2018-01-30 15:41:53 +00:00
Oliver Gorwits
2625381e5b fix Using a hash as a reference is deprecated warning 2018-01-30 15:38:43 +00:00
Oliver Gorwits
1c048320a6 \o/ working, quieten debug 2018-01-30 15:34:37 +00:00
Oliver Gorwits
c5c25cee7f try setting MIBS 2018-01-30 15:25:32 +00:00
Oliver Gorwits
dee8177a67 more debu 2018-01-30 14:25:44 +00:00
Oliver Gorwits
abbe040351 try snmpconf 2018-01-30 11:18:39 +00:00
Oliver Gorwits
29a0f849f1 fix typo 2018-01-30 10:58:33 +00:00
Oliver Gorwits
7e524f46c6 different command order 2018-01-30 10:50:22 +00:00
Oliver Gorwits
1146e99de2 different source for mibs 2018-01-30 10:47:24 +00:00
Oliver Gorwits
6740929d41 try to fix escaping 2018-01-30 10:22:27 +00:00
Oliver Gorwits
831788c1c9 try to fix escaping 2018-01-30 10:15:39 +00:00
Oliver Gorwits
7e9d4520af try to fix escaping 2018-01-30 10:08:11 +00:00
Oliver Gorwits
c4317e6e6b reorder build commands 2018-01-30 10:05:25 +00:00
Oliver Gorwits
e4e3debce0 reorder build commands 2018-01-30 09:54:08 +00:00
Oliver Gorwits
a5b7431070 try combining 2018-01-29 23:36:53 +00:00
Oliver Gorwits
054808f59d revert debug 2018-01-29 23:22:21 +00:00
Oliver Gorwits
0b313d627e more deps for MRO 2018-01-29 23:15:14 +00:00
Oliver Gorwits
9813b9db90 try more debug 2018-01-29 23:12:06 +00:00
Oliver Gorwits
9a4e024abb cd back to dist to build 2018-01-29 22:59:17 +00:00
Oliver Gorwits
04a669157f try building net-snmp 2018-01-29 22:48:39 +00:00
Oliver Gorwits
a364c1512d add libsnmp-perl dependency to travis 2018-01-29 22:35:00 +00:00
Oliver Gorwits
0451e6f0a6 add travis config file 2018-01-29 22:30:58 +00:00
Oliver Gorwits
b7f87d9e82 add real snmp test against demo.snmplabs.com 2018-01-28 21:28:21 +00:00
Oliver Gorwits
e2713fb57a fix versionsync test 2018-01-28 20:00:04 +00:00
Oliver Gorwits
c8eff78d34 change Checkpoint to CheckPoint 2018-01-28 19:57:29 +00:00
Oliver Gorwits
04ca5793fa fix for doc tests 2018-01-28 19:55:28 +00:00
Oliver Gorwits
83d00ee9c7 release 3.40 2018-01-28 18:53:50 +00:00
Oliver Gorwits
bf56ed2540 update changes 2018-01-28 18:50:44 +00:00
Oliver Gorwits
e75aba14b4 Merge pull request #240 from earendilfr/master
Improvement for Checkpoint, CiscoSB and H3C devices
2018-01-28 18:45:29 +00:00
Oliver Gorwits
5d2d2d416f Merge pull request #244 from pyro3d/master
Add Adtran Support, Some fixes for Juniper
2018-01-28 18:43:07 +00:00
LBegnaud
62799bfc9d Add support for Vyatta/VyOS (#241) 2018-01-28 18:39:43 +00:00
dtuecks
df8fbc3c03 Nexus.pm prints output even if $self->debug() is unset. (#243) 2018-01-28 18:36:06 +00:00
Ambroise
604de81ab8 Nexus vrf support (#246)
Initial commit to add the suport of the Interfaces in VRF for Nexus devices
To tune to correctly retrieve the context for the VRF

On Nexus device, you need to add the following command for each VRF:
snmp-server context <context> vrf <vrf>
2018-01-28 18:35:22 +00:00
Ryan Gasik
ed14b09567 Fix version number in Adtran 2018-01-12 19:28:30 -08:00
Ryan Gasik
800758815c Add Adtran, improve Juniper 2018-01-12 19:21:37 -08:00
Ambroise
058b74bd63 Fix some model error for 3Com and H3C devices 2017-12-21 16:54:22 +01:00
Ambroise
02a52a4e09 Some Cisco SB switches work as Layer3 devices + avoid a numbers of model type 2017-12-21 16:45:20 +01:00
Ambroise
74ddc93f7f Add a real support for Checkpoint devies through SNMP 2017-12-21 16:42:32 +01:00
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
151 changed files with 4083 additions and 723 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
SNMP
*.komodo*
blib/
META.*
*.swp
*.pid
test.pl
MYMETA.*
Makefile
Makefile.old
pm_to_blib
*.tar.gz
MANIFEST.*
*.komodo*
Makefile*
Build
_build
blib

31
.travis.yml Normal file
View File

@@ -0,0 +1,31 @@
language: perl
addons:
apt:
packages:
- jq
- libsnmp-dev
branches:
only:
- /^3\.\d{2}$/
- 'master'
before_install:
- mkdir ~/netdisco-mibs
- cd ~/netdisco-mibs
install:
- >
curl -sL https://downloads.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz |
tar --strip-components=1 -zxf -
- cpanm --quiet --notest PkgConfig Test::CChecker Alien::zlib::Static Alien::OpenSSL::Static Alien::SNMP::MAXTC
before_script:
- 'cd ${TRAVIS_BUILD_DIR}'
script:
- >
perl Build.PL &&
PERL_MM_USE_DEFAULT=1 ./Build installdeps --cpan_client 'cpanm --quiet --notest' &&
./Build test --test_files t/ --test_files xt/
notifications:
irc:
on_success: change
on_failure: always
channels:
- 'chat.freenode.net#netdisco'

43
Build.PL Normal file
View File

@@ -0,0 +1,43 @@
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,
create_readme => 1,
configure_requires => {
'Module::Build' => '0.42',
},
# build_requires => {
# },
requires => {
'SNMP' => '0',
'Math::BigInt' => '0',
},
recommends => {
'PPI' => '0',
'Class::ISA' => '0',
'Module::Info' => '0',
'Module::Load' => '0',
'File::Slurp' => '0',
},
test_requires => {
'Test::More' => '0.88',
'Test::Distribution' => '0',
},
# 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,4 +1,143 @@
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
version 3.48 (2018-03-03)
[ENHANCEMENTS]
* Add Layer3::Cumulus for Cumulus Networks devices
version 3.47 (2018-02-27)
[ENHANCEMENTS]
* Add LLDP-MIB::lldpXMedRemInventoryTable methods
version 3.46 (2018-02-17)
[ENHANCEMENTS]
* Add method to get err-disable cause for interfaces on Cisco
version 3.45 (2018-02-14)
[ENHANCEMENTS]
* Enable Layer3::Foundry for Brocade VDX platform
[BUG FIXES]
* #222 #238 #239 handle BayStack switches with port index 128 (zoeloe)
version 3.44 (2018-02-12)
[ENHANCEMENTS]
* Improve F10 OS version detection (laelly)
* Better IPv6 prefix derivation
version 3.43 (2018-02-02)
[BUG FIXES]
* Fix identification of Brocade CES
version 3.42 (2018-02-02)
[ENHANCEMENTS]
* IPv6 Prefix Length support via IPv6::ipv6_addr_prefixlength
[BUG FIXES]
* Fix test for updated snmplabs.com data
version 3.41 (2018-02-01)
[BUG FIXES]
* Fixes to distriution metadata
version 3.40 (2018-01-28)
[ENHANCEMENTS]
* #240 Support for CheckPoint devies through SNMP
* #240 Cisco SB switches fixup
* #244 Add Adtran support
* #241 Vyatta/VyOS support
* #246 Nexus VRF support (works with Netdisco)
* #244 Improve Juniper model reporting
* #240 Improve H3C reporting
[BUG FIXES]
* #243 Nexus additional debug lines should be hidden
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)
@@ -699,7 +838,7 @@ version 1.05 (11/25/07) - CVS only. No official release
+ Added support for Cisco (Airespace) wireless controllers as new class
L2::Airespace
+ 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
switches. Depreciate L2::Foundry.
+ Added generic device type detection using IANA assigned enterpise

View File

@@ -1,9 +0,0 @@
# SNMP Device Compatibility Matrix
# SNMP::Info - (C) 2004 Max Baker
# THIS FILE IS NO LONGER MAINTAINED
# THERE ARE NOW GENERIC CLASSES FOR MOST DEVICES, SIMPLY LOAD SNMP::Info AND
# TRY YOUR DEVICE, THEN REPORT TO THE MAIL LIST ANY MISSING FUNCTIONALITY.
# THANK YOU

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.32';
%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

268
MANIFEST
View File

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

View File

@@ -1,28 +1,67 @@
# Version control files and dirs.
\.bak$
\.pid$
\.swp$
^SNMP-Info-
^MANIFEST\.
# Avoid version control files.
\bRCS\b
\bCVS\b
\bSCCS\b
,v$
\B\.svn\b
\B\.git\b
.gitignore
\B\.gitignore\b
\b_darcs\b
\B\.cvsignore$
# Makemaker generated files and dirs.
^MANIFEST\.
^Makefile$
^blib/
^MakeMaker-\d
pm_to_blib
MYMETA.*
# Avoid VMS specific MakeMaker generated files
\bDescrip.MMS$
\bDESCRIP.MMS$
\bdescrip.mms$
# 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$
^#.*#$
^\.#
\#$
\b\.#
\.bak$
\.tmp$
\.#
\.rej$
# Private Regression Tests
\d+_local_
\.?perl\w+\.?rc$
# Avoid OS-specific files/dirs
# Mac OSX metadata
\B\.DS_Store
# Mac OSX SMB mount metadata files
\B\._
# Komodo project file
\.kpf$
# Avoid Devel::Cover and Devel::CoverX::Covered files.
\bcover_db\b
\bcovered\b
# Avoid MYMETA files
^MYMETA\.
.github
.travis
README.md

533
META.json Normal file
View File

@@ -0,0 +1,533 @@
{
"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" : {
"recommends" : {
"Class::ISA" : "0",
"File::Slurp" : "0",
"Module::Info" : "0",
"Module::Load" : "0",
"PPI" : "0"
},
"requires" : {
"Math::BigInt" : "0",
"SNMP" : "0"
}
},
"test" : {
"requires" : {
"Test::Distribution" : "0",
"Test::More" : "0.88"
}
}
},
"provides" : {
"SNMP::Info" : {
"file" : "lib/SNMP/Info.pm",
"version" : "3.48"
},
"SNMP::Info::AMAP" : {
"file" : "lib/SNMP/Info/AMAP.pm",
"version" : "3.48"
},
"SNMP::Info::AdslLine" : {
"file" : "lib/SNMP/Info/AdslLine.pm",
"version" : "3.48"
},
"SNMP::Info::Aggregate" : {
"file" : "lib/SNMP/Info/Aggregate.pm",
"version" : "3.48"
},
"SNMP::Info::Airespace" : {
"file" : "lib/SNMP/Info/Airespace.pm",
"version" : "3.48"
},
"SNMP::Info::Bridge" : {
"file" : "lib/SNMP/Info/Bridge.pm",
"version" : "3.48"
},
"SNMP::Info::CDP" : {
"file" : "lib/SNMP/Info/CDP.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoAgg" : {
"file" : "lib/SNMP/Info/CiscoAgg.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoConfig" : {
"file" : "lib/SNMP/Info/CiscoConfig.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoPortSecurity" : {
"file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoPower" : {
"file" : "lib/SNMP/Info/CiscoPower.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoQOS" : {
"file" : "lib/SNMP/Info/CiscoQOS.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoRTT" : {
"file" : "lib/SNMP/Info/CiscoRTT.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoStack" : {
"file" : "lib/SNMP/Info/CiscoStack.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoStats" : {
"file" : "lib/SNMP/Info/CiscoStats.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoStpExtensions" : {
"file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
"version" : "3.48"
},
"SNMP::Info::CiscoVTP" : {
"file" : "lib/SNMP/Info/CiscoVTP.pm",
"version" : "3.48"
},
"SNMP::Info::EDP" : {
"file" : "lib/SNMP/Info/EDP.pm",
"version" : "3.48"
},
"SNMP::Info::Entity" : {
"file" : "lib/SNMP/Info/Entity.pm",
"version" : "3.48"
},
"SNMP::Info::EtherLike" : {
"file" : "lib/SNMP/Info/EtherLike.pm",
"version" : "3.48"
},
"SNMP::Info::FDP" : {
"file" : "lib/SNMP/Info/FDP.pm",
"version" : "3.48"
},
"SNMP::Info::IEEE802dot11" : {
"file" : "lib/SNMP/Info/IEEE802dot11.pm",
"version" : "3.48"
},
"SNMP::Info::IEEE802dot3ad" : {
"file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
"version" : "3.48"
},
"SNMP::Info::IPv6" : {
"file" : "lib/SNMP/Info/IPv6.pm",
"version" : "3.48"
},
"SNMP::Info::LLDP" : {
"file" : "lib/SNMP/Info/LLDP.pm",
"version" : "3.48"
},
"SNMP::Info::Layer1" : {
"file" : "lib/SNMP/Info/Layer1.pm",
"version" : "3.48"
},
"SNMP::Info::Layer1::Allied" : {
"file" : "lib/SNMP/Info/Layer1/Allied.pm",
"version" : "3.48"
},
"SNMP::Info::Layer1::Asante" : {
"file" : "lib/SNMP/Info/Layer1/Asante.pm",
"version" : "3.48"
},
"SNMP::Info::Layer1::Bayhub" : {
"file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
"version" : "3.48"
},
"SNMP::Info::Layer1::Cyclades" : {
"file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
"version" : "3.48"
},
"SNMP::Info::Layer1::S3000" : {
"file" : "lib/SNMP/Info/Layer1/S3000.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2" : {
"file" : "lib/SNMP/Info/Layer2.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::3Com" : {
"file" : "lib/SNMP/Info/Layer2/3Com.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Adtran" : {
"file" : "lib/SNMP/Info/Layer2/Adtran.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Airespace" : {
"file" : "lib/SNMP/Info/Layer2/Airespace.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Aironet" : {
"file" : "lib/SNMP/Info/Layer2/Aironet.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Allied" : {
"file" : "lib/SNMP/Info/Layer2/Allied.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Baystack" : {
"file" : "lib/SNMP/Info/Layer2/Baystack.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::C1900" : {
"file" : "lib/SNMP/Info/Layer2/C1900.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::C2900" : {
"file" : "lib/SNMP/Info/Layer2/C2900.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Catalyst" : {
"file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Centillion" : {
"file" : "lib/SNMP/Info/Layer2/Centillion.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Cisco" : {
"file" : "lib/SNMP/Info/Layer2/Cisco.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::CiscoSB" : {
"file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::HP" : {
"file" : "lib/SNMP/Info/Layer2/HP.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::HP4000" : {
"file" : "lib/SNMP/Info/Layer2/HP4000.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::HPVC" : {
"file" : "lib/SNMP/Info/Layer2/HPVC.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Kentrox" : {
"file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::N2270" : {
"file" : "lib/SNMP/Info/Layer2/N2270.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::NAP222x" : {
"file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::NWSS2300" : {
"file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Netgear" : {
"file" : "lib/SNMP/Info/Layer2/Netgear.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Orinoco" : {
"file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Trapeze" : {
"file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::Ubiquiti" : {
"file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
"version" : "3.48"
},
"SNMP::Info::Layer2::ZyXEL_DSLAM" : {
"file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3" : {
"file" : "lib/SNMP/Info/Layer3.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Aironet" : {
"file" : "lib/SNMP/Info/Layer3/Aironet.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::AlcatelLucent" : {
"file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::AlteonAD" : {
"file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Altiga" : {
"file" : "lib/SNMP/Info/Layer3/Altiga.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Arista" : {
"file" : "lib/SNMP/Info/Layer3/Arista.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Aruba" : {
"file" : "lib/SNMP/Info/Layer3/Aruba.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::BayRS" : {
"file" : "lib/SNMP/Info/Layer3/BayRS.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::BlueCoatSG" : {
"file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::C3550" : {
"file" : "lib/SNMP/Info/Layer3/C3550.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::C4000" : {
"file" : "lib/SNMP/Info/Layer3/C4000.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::C6500" : {
"file" : "lib/SNMP/Info/Layer3/C6500.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::CheckPoint" : {
"file" : "lib/SNMP/Info/Layer3/CheckPoint.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Cisco" : {
"file" : "lib/SNMP/Info/Layer3/Cisco.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::CiscoASA" : {
"file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::CiscoFWSM" : {
"file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::CiscoSwitch" : {
"file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Contivity" : {
"file" : "lib/SNMP/Info/Layer3/Contivity.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Cumulus" : {
"file" : "lib/SNMP/Info/Layer3/Cumulus.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::DLink" : {
"file" : "lib/SNMP/Info/Layer3/DLink.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Dell" : {
"file" : "lib/SNMP/Info/Layer3/Dell.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Enterasys" : {
"file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Extreme" : {
"file" : "lib/SNMP/Info/Layer3/Extreme.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::F5" : {
"file" : "lib/SNMP/Info/Layer3/F5.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Force10" : {
"file" : "lib/SNMP/Info/Layer3/Force10.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Fortinet" : {
"file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Foundry" : {
"file" : "lib/SNMP/Info/Layer3/Foundry.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::H3C" : {
"file" : "lib/SNMP/Info/Layer3/H3C.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::HP9300" : {
"file" : "lib/SNMP/Info/Layer3/HP9300.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Huawei" : {
"file" : "lib/SNMP/Info/Layer3/Huawei.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::IBMGbTor" : {
"file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Juniper" : {
"file" : "lib/SNMP/Info/Layer3/Juniper.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Lantronix" : {
"file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Microsoft" : {
"file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Mikrotik" : {
"file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::N1600" : {
"file" : "lib/SNMP/Info/Layer3/N1600.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::NetSNMP" : {
"file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Netscreen" : {
"file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Nexus" : {
"file" : "lib/SNMP/Info/Layer3/Nexus.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::PacketFront" : {
"file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::PaloAlto" : {
"file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Passport" : {
"file" : "lib/SNMP/Info/Layer3/Passport.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Pf" : {
"file" : "lib/SNMP/Info/Layer3/Pf.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Pica8" : {
"file" : "lib/SNMP/Info/Layer3/Pica8.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::SonicWALL" : {
"file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Steelhead" : {
"file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Sun" : {
"file" : "lib/SNMP/Info/Layer3/Sun.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Tasman" : {
"file" : "lib/SNMP/Info/Layer3/Tasman.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::Timetra" : {
"file" : "lib/SNMP/Info/Layer3/Timetra.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::VMware" : {
"file" : "lib/SNMP/Info/Layer3/VMware.pm",
"version" : "3.48"
},
"SNMP::Info::Layer3::VyOS" : {
"file" : "lib/SNMP/Info/Layer3/VyOS.pm",
"version" : "3.48"
},
"SNMP::Info::Layer7" : {
"file" : "lib/SNMP/Info/Layer7.pm",
"version" : "3.48"
},
"SNMP::Info::Layer7::APC" : {
"file" : "lib/SNMP/Info/Layer7/APC.pm",
"version" : "3.48"
},
"SNMP::Info::Layer7::CiscoIPS" : {
"file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
"version" : "3.48"
},
"SNMP::Info::Layer7::Neoteris" : {
"file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
"version" : "3.48"
},
"SNMP::Info::Layer7::Netscaler" : {
"file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
"version" : "3.48"
},
"SNMP::Info::MAU" : {
"file" : "lib/SNMP/Info/MAU.pm",
"version" : "3.48"
},
"SNMP::Info::MRO" : {
"file" : "lib/SNMP/Info/MRO.pm",
"version" : "3.48"
},
"SNMP::Info::NortelStack" : {
"file" : "lib/SNMP/Info/NortelStack.pm",
"version" : "3.48"
},
"SNMP::Info::PowerEthernet" : {
"file" : "lib/SNMP/Info/PowerEthernet.pm",
"version" : "3.48"
},
"SNMP::Info::RapidCity" : {
"file" : "lib/SNMP/Info/RapidCity.pm",
"version" : "3.48"
},
"SNMP::Info::SONMP" : {
"file" : "lib/SNMP/Info/SONMP.pm",
"version" : "3.48"
}
},
"release_status" : "stable",
"resources" : {
"bugtracker" : {
"web" : "https://github.com/netdisco/snmp-info/issues"
},
"homepage" : "http://netdisco.org/",
"license" : [
"http://opensource.org/licenses/bsd-license.php"
],
"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.48",
"x_serialization_backend" : "JSON::PP version 2.97001"
}

389
META.yml Normal file
View File

@@ -0,0 +1,389 @@
---
abstract: 'OO Interface to Network devices and MIBs through SNMP'
author:
- 'Eric A. Miller <emiller@cpan.org>'
build_requires:
Test::Distribution: '0'
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.48'
SNMP::Info::AMAP:
file: lib/SNMP/Info/AMAP.pm
version: '3.48'
SNMP::Info::AdslLine:
file: lib/SNMP/Info/AdslLine.pm
version: '3.48'
SNMP::Info::Aggregate:
file: lib/SNMP/Info/Aggregate.pm
version: '3.48'
SNMP::Info::Airespace:
file: lib/SNMP/Info/Airespace.pm
version: '3.48'
SNMP::Info::Bridge:
file: lib/SNMP/Info/Bridge.pm
version: '3.48'
SNMP::Info::CDP:
file: lib/SNMP/Info/CDP.pm
version: '3.48'
SNMP::Info::CiscoAgg:
file: lib/SNMP/Info/CiscoAgg.pm
version: '3.48'
SNMP::Info::CiscoConfig:
file: lib/SNMP/Info/CiscoConfig.pm
version: '3.48'
SNMP::Info::CiscoPortSecurity:
file: lib/SNMP/Info/CiscoPortSecurity.pm
version: '3.48'
SNMP::Info::CiscoPower:
file: lib/SNMP/Info/CiscoPower.pm
version: '3.48'
SNMP::Info::CiscoQOS:
file: lib/SNMP/Info/CiscoQOS.pm
version: '3.48'
SNMP::Info::CiscoRTT:
file: lib/SNMP/Info/CiscoRTT.pm
version: '3.48'
SNMP::Info::CiscoStack:
file: lib/SNMP/Info/CiscoStack.pm
version: '3.48'
SNMP::Info::CiscoStats:
file: lib/SNMP/Info/CiscoStats.pm
version: '3.48'
SNMP::Info::CiscoStpExtensions:
file: lib/SNMP/Info/CiscoStpExtensions.pm
version: '3.48'
SNMP::Info::CiscoVTP:
file: lib/SNMP/Info/CiscoVTP.pm
version: '3.48'
SNMP::Info::EDP:
file: lib/SNMP/Info/EDP.pm
version: '3.48'
SNMP::Info::Entity:
file: lib/SNMP/Info/Entity.pm
version: '3.48'
SNMP::Info::EtherLike:
file: lib/SNMP/Info/EtherLike.pm
version: '3.48'
SNMP::Info::FDP:
file: lib/SNMP/Info/FDP.pm
version: '3.48'
SNMP::Info::IEEE802dot11:
file: lib/SNMP/Info/IEEE802dot11.pm
version: '3.48'
SNMP::Info::IEEE802dot3ad:
file: lib/SNMP/Info/IEEE802dot3ad.pm
version: '3.48'
SNMP::Info::IPv6:
file: lib/SNMP/Info/IPv6.pm
version: '3.48'
SNMP::Info::LLDP:
file: lib/SNMP/Info/LLDP.pm
version: '3.48'
SNMP::Info::Layer1:
file: lib/SNMP/Info/Layer1.pm
version: '3.48'
SNMP::Info::Layer1::Allied:
file: lib/SNMP/Info/Layer1/Allied.pm
version: '3.48'
SNMP::Info::Layer1::Asante:
file: lib/SNMP/Info/Layer1/Asante.pm
version: '3.48'
SNMP::Info::Layer1::Bayhub:
file: lib/SNMP/Info/Layer1/Bayhub.pm
version: '3.48'
SNMP::Info::Layer1::Cyclades:
file: lib/SNMP/Info/Layer1/Cyclades.pm
version: '3.48'
SNMP::Info::Layer1::S3000:
file: lib/SNMP/Info/Layer1/S3000.pm
version: '3.48'
SNMP::Info::Layer2:
file: lib/SNMP/Info/Layer2.pm
version: '3.48'
SNMP::Info::Layer2::3Com:
file: lib/SNMP/Info/Layer2/3Com.pm
version: '3.48'
SNMP::Info::Layer2::Adtran:
file: lib/SNMP/Info/Layer2/Adtran.pm
version: '3.48'
SNMP::Info::Layer2::Airespace:
file: lib/SNMP/Info/Layer2/Airespace.pm
version: '3.48'
SNMP::Info::Layer2::Aironet:
file: lib/SNMP/Info/Layer2/Aironet.pm
version: '3.48'
SNMP::Info::Layer2::Allied:
file: lib/SNMP/Info/Layer2/Allied.pm
version: '3.48'
SNMP::Info::Layer2::Baystack:
file: lib/SNMP/Info/Layer2/Baystack.pm
version: '3.48'
SNMP::Info::Layer2::C1900:
file: lib/SNMP/Info/Layer2/C1900.pm
version: '3.48'
SNMP::Info::Layer2::C2900:
file: lib/SNMP/Info/Layer2/C2900.pm
version: '3.48'
SNMP::Info::Layer2::Catalyst:
file: lib/SNMP/Info/Layer2/Catalyst.pm
version: '3.48'
SNMP::Info::Layer2::Centillion:
file: lib/SNMP/Info/Layer2/Centillion.pm
version: '3.48'
SNMP::Info::Layer2::Cisco:
file: lib/SNMP/Info/Layer2/Cisco.pm
version: '3.48'
SNMP::Info::Layer2::CiscoSB:
file: lib/SNMP/Info/Layer2/CiscoSB.pm
version: '3.48'
SNMP::Info::Layer2::HP:
file: lib/SNMP/Info/Layer2/HP.pm
version: '3.48'
SNMP::Info::Layer2::HP4000:
file: lib/SNMP/Info/Layer2/HP4000.pm
version: '3.48'
SNMP::Info::Layer2::HPVC:
file: lib/SNMP/Info/Layer2/HPVC.pm
version: '3.48'
SNMP::Info::Layer2::Kentrox:
file: lib/SNMP/Info/Layer2/Kentrox.pm
version: '3.48'
SNMP::Info::Layer2::N2270:
file: lib/SNMP/Info/Layer2/N2270.pm
version: '3.48'
SNMP::Info::Layer2::NAP222x:
file: lib/SNMP/Info/Layer2/NAP222x.pm
version: '3.48'
SNMP::Info::Layer2::NWSS2300:
file: lib/SNMP/Info/Layer2/NWSS2300.pm
version: '3.48'
SNMP::Info::Layer2::Netgear:
file: lib/SNMP/Info/Layer2/Netgear.pm
version: '3.48'
SNMP::Info::Layer2::Orinoco:
file: lib/SNMP/Info/Layer2/Orinoco.pm
version: '3.48'
SNMP::Info::Layer2::Trapeze:
file: lib/SNMP/Info/Layer2/Trapeze.pm
version: '3.48'
SNMP::Info::Layer2::Ubiquiti:
file: lib/SNMP/Info/Layer2/Ubiquiti.pm
version: '3.48'
SNMP::Info::Layer2::ZyXEL_DSLAM:
file: lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
version: '3.48'
SNMP::Info::Layer3:
file: lib/SNMP/Info/Layer3.pm
version: '3.48'
SNMP::Info::Layer3::Aironet:
file: lib/SNMP/Info/Layer3/Aironet.pm
version: '3.48'
SNMP::Info::Layer3::AlcatelLucent:
file: lib/SNMP/Info/Layer3/AlcatelLucent.pm
version: '3.48'
SNMP::Info::Layer3::AlteonAD:
file: lib/SNMP/Info/Layer3/AlteonAD.pm
version: '3.48'
SNMP::Info::Layer3::Altiga:
file: lib/SNMP/Info/Layer3/Altiga.pm
version: '3.48'
SNMP::Info::Layer3::Arista:
file: lib/SNMP/Info/Layer3/Arista.pm
version: '3.48'
SNMP::Info::Layer3::Aruba:
file: lib/SNMP/Info/Layer3/Aruba.pm
version: '3.48'
SNMP::Info::Layer3::BayRS:
file: lib/SNMP/Info/Layer3/BayRS.pm
version: '3.48'
SNMP::Info::Layer3::BlueCoatSG:
file: lib/SNMP/Info/Layer3/BlueCoatSG.pm
version: '3.48'
SNMP::Info::Layer3::C3550:
file: lib/SNMP/Info/Layer3/C3550.pm
version: '3.48'
SNMP::Info::Layer3::C4000:
file: lib/SNMP/Info/Layer3/C4000.pm
version: '3.48'
SNMP::Info::Layer3::C6500:
file: lib/SNMP/Info/Layer3/C6500.pm
version: '3.48'
SNMP::Info::Layer3::CheckPoint:
file: lib/SNMP/Info/Layer3/CheckPoint.pm
version: '3.48'
SNMP::Info::Layer3::Cisco:
file: lib/SNMP/Info/Layer3/Cisco.pm
version: '3.48'
SNMP::Info::Layer3::CiscoASA:
file: lib/SNMP/Info/Layer3/CiscoASA.pm
version: '3.48'
SNMP::Info::Layer3::CiscoFWSM:
file: lib/SNMP/Info/Layer3/CiscoFWSM.pm
version: '3.48'
SNMP::Info::Layer3::CiscoSwitch:
file: lib/SNMP/Info/Layer3/CiscoSwitch.pm
version: '3.48'
SNMP::Info::Layer3::Contivity:
file: lib/SNMP/Info/Layer3/Contivity.pm
version: '3.48'
SNMP::Info::Layer3::Cumulus:
file: lib/SNMP/Info/Layer3/Cumulus.pm
version: '3.48'
SNMP::Info::Layer3::DLink:
file: lib/SNMP/Info/Layer3/DLink.pm
version: '3.48'
SNMP::Info::Layer3::Dell:
file: lib/SNMP/Info/Layer3/Dell.pm
version: '3.48'
SNMP::Info::Layer3::Enterasys:
file: lib/SNMP/Info/Layer3/Enterasys.pm
version: '3.48'
SNMP::Info::Layer3::Extreme:
file: lib/SNMP/Info/Layer3/Extreme.pm
version: '3.48'
SNMP::Info::Layer3::F5:
file: lib/SNMP/Info/Layer3/F5.pm
version: '3.48'
SNMP::Info::Layer3::Force10:
file: lib/SNMP/Info/Layer3/Force10.pm
version: '3.48'
SNMP::Info::Layer3::Fortinet:
file: lib/SNMP/Info/Layer3/Fortinet.pm
version: '3.48'
SNMP::Info::Layer3::Foundry:
file: lib/SNMP/Info/Layer3/Foundry.pm
version: '3.48'
SNMP::Info::Layer3::H3C:
file: lib/SNMP/Info/Layer3/H3C.pm
version: '3.48'
SNMP::Info::Layer3::HP9300:
file: lib/SNMP/Info/Layer3/HP9300.pm
version: '3.48'
SNMP::Info::Layer3::Huawei:
file: lib/SNMP/Info/Layer3/Huawei.pm
version: '3.48'
SNMP::Info::Layer3::IBMGbTor:
file: lib/SNMP/Info/Layer3/IBMGbTor.pm
version: '3.48'
SNMP::Info::Layer3::Juniper:
file: lib/SNMP/Info/Layer3/Juniper.pm
version: '3.48'
SNMP::Info::Layer3::Lantronix:
file: lib/SNMP/Info/Layer3/Lantronix.pm
version: '3.48'
SNMP::Info::Layer3::Microsoft:
file: lib/SNMP/Info/Layer3/Microsoft.pm
version: '3.48'
SNMP::Info::Layer3::Mikrotik:
file: lib/SNMP/Info/Layer3/Mikrotik.pm
version: '3.48'
SNMP::Info::Layer3::N1600:
file: lib/SNMP/Info/Layer3/N1600.pm
version: '3.48'
SNMP::Info::Layer3::NetSNMP:
file: lib/SNMP/Info/Layer3/NetSNMP.pm
version: '3.48'
SNMP::Info::Layer3::Netscreen:
file: lib/SNMP/Info/Layer3/Netscreen.pm
version: '3.48'
SNMP::Info::Layer3::Nexus:
file: lib/SNMP/Info/Layer3/Nexus.pm
version: '3.48'
SNMP::Info::Layer3::PacketFront:
file: lib/SNMP/Info/Layer3/PacketFront.pm
version: '3.48'
SNMP::Info::Layer3::PaloAlto:
file: lib/SNMP/Info/Layer3/PaloAlto.pm
version: '3.48'
SNMP::Info::Layer3::Passport:
file: lib/SNMP/Info/Layer3/Passport.pm
version: '3.48'
SNMP::Info::Layer3::Pf:
file: lib/SNMP/Info/Layer3/Pf.pm
version: '3.48'
SNMP::Info::Layer3::Pica8:
file: lib/SNMP/Info/Layer3/Pica8.pm
version: '3.48'
SNMP::Info::Layer3::SonicWALL:
file: lib/SNMP/Info/Layer3/SonicWALL.pm
version: '3.48'
SNMP::Info::Layer3::Steelhead:
file: lib/SNMP/Info/Layer3/Steelhead.pm
version: '3.48'
SNMP::Info::Layer3::Sun:
file: lib/SNMP/Info/Layer3/Sun.pm
version: '3.48'
SNMP::Info::Layer3::Tasman:
file: lib/SNMP/Info/Layer3/Tasman.pm
version: '3.48'
SNMP::Info::Layer3::Timetra:
file: lib/SNMP/Info/Layer3/Timetra.pm
version: '3.48'
SNMP::Info::Layer3::VMware:
file: lib/SNMP/Info/Layer3/VMware.pm
version: '3.48'
SNMP::Info::Layer3::VyOS:
file: lib/SNMP/Info/Layer3/VyOS.pm
version: '3.48'
SNMP::Info::Layer7:
file: lib/SNMP/Info/Layer7.pm
version: '3.48'
SNMP::Info::Layer7::APC:
file: lib/SNMP/Info/Layer7/APC.pm
version: '3.48'
SNMP::Info::Layer7::CiscoIPS:
file: lib/SNMP/Info/Layer7/CiscoIPS.pm
version: '3.48'
SNMP::Info::Layer7::Neoteris:
file: lib/SNMP/Info/Layer7/Neoteris.pm
version: '3.48'
SNMP::Info::Layer7::Netscaler:
file: lib/SNMP/Info/Layer7/Netscaler.pm
version: '3.48'
SNMP::Info::MAU:
file: lib/SNMP/Info/MAU.pm
version: '3.48'
SNMP::Info::MRO:
file: lib/SNMP/Info/MRO.pm
version: '3.48'
SNMP::Info::NortelStack:
file: lib/SNMP/Info/NortelStack.pm
version: '3.48'
SNMP::Info::PowerEthernet:
file: lib/SNMP/Info/PowerEthernet.pm
version: '3.48'
SNMP::Info::RapidCity:
file: lib/SNMP/Info/RapidCity.pm
version: '3.48'
SNMP::Info::SONMP:
file: lib/SNMP/Info/SONMP.pm
version: '3.48'
recommends:
Class::ISA: '0'
File::Slurp: '0'
Module::Info: '0'
Module::Load: '0'
PPI: '0'
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-license.php
repository: https://github.com/netdisco/snmp-info
version: '3.48'
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";
}

299
README
View File

@@ -1,31 +1,26 @@
NAME
SNMP::Info - OO Interface to Network devices and MIBs through SNMP
VERSION
SNMP::Info - Version 3.32
SNMP::Info - Version 3.48
AUTHOR
SNMP::Info is maintained by team of Open Source authors headed by Eric
Miller, Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
Please visit <http://sourceforge.net/projects/snmp-info/> for most
Please visit http://sourceforge.net/projects/snmp-info/ for most
up-to-date list of developers.
SNMP::Info was originally created at UCSC for the Netdisco project
<http://netdisco.org> by Max Baker.
http://netdisco.org by Max Baker.
DEVICES SUPPORTED
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).
SYNOPSIS
use SNMP::Info;
my $info = new SNMP::Info(
@@ -81,13 +76,11 @@ SYNOPSIS
}
SUPPORT
Please direct all support, help, and bug requests to the snmp-info-users
Mailing List at
<http://lists.sourceforge.net/lists/listinfo/snmp-info-users>.
http://lists.sourceforge.net/lists/listinfo/snmp-info-users.
DESCRIPTION
SNMP::Info gives an object oriented interface to information obtained
through SNMP.
@@ -114,7 +107,6 @@ DESCRIPTION
a couple hashes. See EXTENDING SNMP::INFO.
REQUIREMENTS
1. Net-SNMP
To use this module, you must have Net-SNMP installed on your system.
More specifically you need the Perl modules that come with it.
@@ -124,9 +116,9 @@ REQUIREMENTS
The SNMP module is matched to an install of net-snmp, and must be
installed from the net-snmp source tree.
The Perl module "SNMP" is found inside the net-snmp distribution. Go
The Perl module `SNMP' is found inside the net-snmp distribution. Go
to the perl/ directory of the distribution to install it, or run
"./configure --with-perl-modules" from the top directory of the
`./configure --with-perl-modules' from the top directory of the
net-snmp distribution.
Net-SNMP can be found at http://net-snmp.sourceforge.net
@@ -145,28 +137,24 @@ REQUIREMENTS
If you are using SNMP::Info separate from Netdisco, download the
Netdisco MIB package at
<http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest
-snapshot/>
http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest-
snapshot/
Make sure that your snmp.conf is updated to point to your MIB
directory and that the MIBs are world-readable.
DESIGN GOALS
1. Use of textual MIB leaf identifier and enumerated values
* All values are retrieved via MIB Leaf node names
* All values are retrieved via MIB Leaf node names
For example SNMP::Info has an entry in its %GLOBALS hash for
``sysName'' instead of 1.3.6.1.2.1.1.5.
* Data returned is in the enumerated value form.
* Data returned is in the enumerated value form.
For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and
getting back 23
getting back `23'
SNMP::Info will ask for "RFC1213-MIB::ifType" and will get back
"ppp".
SNMP::Info will ask for `RFC1213-MIB::ifType' and will get back
`ppp'.
2. SNMP::Info is easily extended to new devices
You can create a new subclass for a device by providing four hashes
@@ -182,18 +170,16 @@ DESIGN GOALS
inclusion in the next version.
SUBCLASSES
These are the subclasses that implement MIBs and support devices:
Required MIBs not included in the install instructions above are noted
here.
MIB Subclasses
These subclasses implement method to access one or more MIBs. These are
not used directly, but rather inherited from device subclasses.
For more info run "perldoc" on any of the following module names.
For more info run `perldoc' on any of the following module names.
SNMP::Info::AdslLine
SNMP Interface to the ADSL-LINE-MIB for ADSL interfaces.
@@ -203,7 +189,7 @@ SUBCLASSES
See documentation in SNMP::Info::AdslLine for details.
SNMP::Info::Aggregate
SNMP Interface to IF-MIB "ifStackTable" Aggregated Links
SNMP Interface to IF-MIB `ifStackTable' Aggregated Links
See documentation in SNMP::Info::Aggregate for details.
@@ -367,7 +353,6 @@ SUBCLASSES
See documentation in SNMP::Info::SONMP for details.
Device Subclasses
These subclasses inherit from one or more classes to provide a common
interface to data obtainable from network devices.
@@ -420,6 +405,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::3Com for details.
SNMP::Info::Layer2::Adtran
Subclass for Adtran devices.
See documentation in SNMP::Info::Layer2::Adtran for details.
SNMP::Info::Layer2::Airespace
Subclass for Cisco (Airespace) wireless controllers.
@@ -463,7 +453,7 @@ SUBCLASSES
SNMP::Info::Layer2::Catalyst
Subclass for Cisco Catalyst switches running CatOS. These
switches usually report a model number that starts with "wsc".
switches usually report a model number that starts with `wsc'.
Note that this class does not support everything that has the
name Catalyst.
@@ -538,7 +528,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Trapeze for details.
SNMP::Info::Layer2::Ubiquiti
SNMP Interface to Ubiquiti Access Points
SNMP Interface to Ubiquiti Access Points and other devices
See documentation in SNMP::Info::Layer2::Ubiquiti for details.
@@ -615,6 +605,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::C6500 for details.
SNMP::Info::Layer3::CheckPoint
Subclass for CheckPoint devices
See documentation in SNMP::Info::Layer3::CheckPoint for details.
SNMP::Info::Layer3::Cisco
This is a simple wrapper around layer 3 for IOS devices and the
base layer 3 Cisco class for other device specific layer 3 Cisco
@@ -641,6 +636,16 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Contivity for details.
SNMP::Info::Layer3::Cumulus
Subclass for Cumulus Networks Routers.
See documentation in SNMP::Info::Layer3::Cumulus for details.
SNMP::Info::Layer3::DLink
Subclass for DLink devices.
See documentation in SNMP::Info::Layer3::DLink for details.
SNMP::Info::Layer3::Dell
Subclass for Dell PowerConnect switches. D-Link, the IBM
BladeCenter Gigabit Ethernet Switch Module and some Linksys
@@ -748,6 +753,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::PacketFront for
details.
SNMP::Info::Layer3::PaloAlto
Subclass for Palo Alto firewalls.
See documentation in SNMP::Info::Layer3::PaloAlto for details.
SNMP::Info::Layer3::Passport
Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000
series, Accelar, and VSP 9000 series switches.
@@ -787,6 +797,16 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Timetra for details.
SNMP::Info::Layer3::VyOS
Subclass for VyOS routers.
See documentation in SNMP::Info::Layer3::VyOS for details.
SNMP::Info::Layer3::VMware
Subclass for VMware ESXi hosts.
See documentation in SNMP::Info::Layer3::VMware for details.
SNMP::Info::Layer7
Generic Layer7 Devices.
@@ -797,6 +817,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer7::APC for details.
SNMP::Info::Layer7::CiscoIPS
SNMP Interface to Cisco IPS devices
See documentation in SNMP::Info::Layer7::Cisco IPS for details.
SNMP::Info::Layer7::Netscaler
SNMP Interface to Citrix Netscaler appliances
@@ -808,7 +833,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer7::Neoteris for details.
Thanks
Thanks for testing and coding help (in no particular order) to :
Alexander Barthel, Andy Ford, Alexander Hartmaier, Andrew Herrick, Alex
Kramarov, Bernhard Augenstein, Bradley Baetz, Brian Chow, Brian Wilson,
@@ -819,9 +843,7 @@ Thanks
Netdisco README!
USAGE
Constructor
new()
Creates a new object and connects via SNMP::Session.
@@ -852,7 +874,7 @@ USAGE
(default 0, which means "off")
BulkWalk
Set to 0 to turn off BULKWALK commands for SNMPv2 connections.
Set to `0' to turn off BULKWALK commands for SNMPv2 connections.
Note that BULKWALK is turned off for Net-SNMP versions 5.1.x
because of a bug.
@@ -860,8 +882,8 @@ USAGE
(default 1, which means "on")
BulkRepeaters
Set number of MaxRepeaters for BULKWALK operation. See "perldoc
SNMP" -> bulkwalk() for more info.
Set number of MaxRepeaters for BULKWALK operation. See `perldoc
SNMP' -> bulkwalk() for more info.
(default 20)
@@ -872,7 +894,7 @@ USAGE
detect loops during a bulkwalk operation, Net-SNMP's internal
bulkwalk function must detect the loop.
Set to 0 to turn off loop detection.
Set to `0' to turn off loop detection.
(default 1, which means "on")
@@ -882,8 +904,8 @@ USAGE
/usr/lib(64)/snmp, or $HOME/.snmp and uses those settings to
automatically parse MIB files, etc.
Set to 1 "on" to ignore Net-SNMP configuration files by
overriding the "SNMPCONFPATH" environmental variable during
Set to `1' "on" to ignore Net-SNMP configuration files by
overriding the `SNMPCONFPATH' environmental variable during
object initialization. Note: MibDirs must be defined or Net-SNMP
will not be able to load MIBs and initialize the object.
@@ -923,14 +945,14 @@ USAGE
Offline
Causes SNMP::Info to avoid network activity and return data only
from its cache. If you ask for something not in the cache, an
error is thrown. See also the "cache()" and "offline()" methods.
error is thrown. See also the `cache()' and `offline()' methods.
(default 0, which means "online")
Cache
Pass in a HashRef to prime the cache of retrieved data. Useful
for creating an instance in "Offline" mode from a previously
dumped cache. See also the "cache()" method to retrieve a cache
for creating an instance in `Offline' mode from a previously
dumped cache. See also the `cache()' method to retrieve a cache
after running actial queries.
OTHER
@@ -967,11 +989,10 @@ USAGE
This is useful, e.g., when a device supports multiple contexts (via
changes to the Community string, or via the SNMPv3 Context
parameter), but a context that you want to access does not support
the objects (e.g., "sysObjectID", "sysDescr") that we use to
the objects (e.g., `sysObjectID', `sysDescr') that we use to
identify the device.
Data is Cached
Methods and subroutines requesting data from a device will only load the
data once, and then return cached versions of that data.
@@ -981,11 +1002,10 @@ USAGE
Run $info->clear_cache() to clear the cache to allow reload of both
globals and table methods.
The cache can be retreved or set using the $info->cache() method. This
works together with the "Offline" option.
The cache can be retrieved or set using the $info->cache() method. This
works together with the `Offline' option.
Object Scalar Methods
These are for package related data, not directly supplied from SNMP.
$info->clear_cache()
@@ -1003,7 +1023,7 @@ USAGE
$info->cache([new_cache])
Returns a HashRef of all cached data in this object. There will be a
"store" key for table data and then one key for each leaf.
`store' key for table data and then one key for each leaf.
Optionally sets the cache parameters if passed a HashRef.
@@ -1018,7 +1038,7 @@ USAGE
Optionally sets the loopdetect parameter.
$info->device_type()
Returns the Subclass name for this device. "SNMP::Info" is returned
Returns the Subclass name for this device. `SNMP::Info' is returned
if no more specific class is available.
First the device is checked for Layer 3 support and a specific
@@ -1065,11 +1085,10 @@ USAGE
calls on certain Cisco devices.
See
<ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-community
Indexing.html>
ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-communityI
ndexing.html
Globals (Scalar Methods)
These are methods to return scalar data from RFC1213.
Some subset of these is probably available for any network device that
@@ -1078,16 +1097,16 @@ USAGE
$info->uptime()
Uptime in hundredths of seconds since device became available.
("sysUpTime")
(`sysUpTime')
$info->contact()
("sysContact")
(`sysContact')
$info->name()
("sysName")
(`sysName')
$info->location()
("sysLocation")
(`sysLocation')
$info->layers()
This returns a binary encoded string where each digit represents a
@@ -1100,7 +1119,7 @@ USAGE
See $info->has_layer()
("sysServices")
(`sysServices')
$info->ports()
Number of interfaces available on this device.
@@ -1108,17 +1127,16 @@ USAGE
Not too useful as the number of SNMP interfaces usually does not
correspond with the number of physical ports
("ifNumber")
(`ifNumber')
$info->ipforwarding()
The indication of whether the entity is acting as an IP gateway
Returns either forwarding or not-forwarding
("ipForwarding")
(`ipForwarding')
Table Methods
Each of these methods returns a hash_reference to a hash keyed on the
interface index in SNMP.
@@ -1133,14 +1151,13 @@ USAGE
cases changes between reboots of the network device.
Partial Table Fetches
If you want to get only a part of an SNMP table or a single instance
from the table and you know the IID for the part of the table that you
want, you can specify it in the call:
$local_routes = $info->ipr_route('192.168.0');
This will only fetch entries in the table that start with 192.168.0,
This will only fetch entries in the table that start with `192.168.0',
which in this case are routes on the local network.
Remember that you must supply the partial IID (a numeric OID).
@@ -1148,7 +1165,6 @@ USAGE
Partial table results are not cached.
Interface Information
$info->interfaces()
This methods is overridden in each subclass to provide a mapping
between the Interface Table Index (iid) and the physical port name.
@@ -1168,82 +1184,81 @@ USAGE
$info->i_index()
Default SNMP IID to Interface index.
("ifIndex")
(`ifIndex')
$info->i_description()
Description of the interface. Usually a little longer single word
name that is both human and machine friendly. Not always.
("ifDescr")
(`ifDescr')
$info->i_type()
Interface type, such as Vlan, Ethernet, Serial
("ifType")
(`ifType')
$info->i_mtu()
INTEGER. Interface MTU value.
("ifMtu")
(`ifMtu')
$info->i_speed()
Speed of the link, human format. See munge_speed() later in document
for details.
("ifSpeed", "ifHighSpeed" if necessary)
(`ifSpeed', `ifHighSpeed' if necessary)
$info->i_speed_raw()
Speed of the link in bits per second without munging. If
i_speed_high is available it will be used and multiplied by
1_000_000.
("ifSpeed", "ifHighSpeed" if necessary)
(`ifSpeed', `ifHighSpeed' if necessary)
$info->i_speed_high()
Speed of a high-speed link, human format. See munge_highspeed()
later in document for details. You should not need to call this
directly, as i_speed() will call it if it needs to.
("ifHighSpeed")
(`ifHighSpeed')
$info->i_mac()
MAC address of the interface. Note this is just the MAC of the port,
not anything connected to it.
("ifPhysAddress")
(`ifPhysAddress')
$info->i_up()
Link Status of the interface. Typical values are 'up' and 'down'.
("ifOperStatus")
(`ifOperStatus')
$info->i_up_admin()
Administrative status of the port. Typical values are 'enabled' and
'disabled'.
("ifAdminStatus")
(`ifAdminStatus')
$info->i_lastchange()
The value of "sysUpTime" when this port last changed states
The value of `sysUpTime' when this port last changed states
(up,down).
("ifLastChange")
(`ifLastChange')
$info->i_name()
Interface Name field. Supported by a smaller subset of devices, this
fields is often human set.
("ifName")
(`ifName')
$info->i_alias()
Interface Name field. For certain devices this is a more human
friendly form of i_description(). For others it is a human set field
like i_name().
("ifAlias")
(`ifAlias')
Interface Statistics
$info->i_octet_in(), $info->i_octets_out(), $info->i_octet_in64(),
$info->i_octets_out64()
Bandwidth.
@@ -1258,13 +1273,13 @@ USAGE
global $SNMP::Info::BIGINT to 1 , or pass the BigInt value to new()
if you want SNMP::Info to do it for you.
("ifInOctets") ("ifOutOctets") ("ifHCInOctets") ("ifHCOutOctets")
(`ifInOctets') (`ifOutOctets') (`ifHCInOctets') (`ifHCOutOctets')
$info->i_errors_in(), $info->i_errors_out()
Number of packets that contained an error preventing delivery. See
"IF-MIB" for more info.
`IF-MIB' for more info.
("ifInErrors") ("ifOutErrors")
(`ifInErrors') (`ifOutErrors')
$info->i_pkts_ucast_in(), $info->i_pkts_ucast_out(),
$info->i_pkts_ucast_in64(), $info->i_pkts_ucast_out64()
@@ -1272,17 +1287,17 @@ USAGE
64 bit version may not exist on all devices.
("ifInUcastPkts") ("ifOutUcastPkts") ("ifHCInUcastPkts")
("ifHCOutUcastPkts")
(`ifInUcastPkts') (`ifOutUcastPkts') (`ifHCInUcastPkts')
(`ifHCOutUcastPkts')
$info->i_pkts_nucast_in(), $info->i_pkts_nucast_out(),
Number of packets sent to a multicast or broadcast address.
These methods are deprecated by i_pkts_multi_in() and
i_pkts_bcast_in() according to "IF-MIB". Actual device usage may
i_pkts_bcast_in() according to `IF-MIB'. Actual device usage may
vary.
("ifInNUcastPkts") ("ifOutNUcastPkts")
(`ifInNUcastPkts') (`ifOutNUcastPkts')
$info->i_pkts_multi_in() $info->i_pkts_multi_out(),
$info->i_pkts_multi_in64(), $info->i_pkts_multi_out64()
@@ -1290,8 +1305,8 @@ USAGE
64 bit version may not exist on all devices.
("ifInMulticastPkts") ("ifOutMulticastPkts") ("ifHCInMulticastPkts")
("ifHCOutMulticastPkts")
(`ifInMulticastPkts') (`ifOutMulticastPkts') (`ifHCInMulticastPkts')
(`ifHCOutMulticastPkts')
$info->i_pkts_bcast_in() $info->i_pkts_bcast_out(),
$info->i_pkts_bcast_in64() $info->i_pkts_bcast_out64()
@@ -1299,17 +1314,17 @@ USAGE
64 bit version may not exist on all devices.
("ifInBroadcastPkts") ("ifOutBroadcastPkts") ("ifHCInBroadcastPkts")
("ifHCOutBroadcastPkts")
(`ifInBroadcastPkts') (`ifOutBroadcastPkts') (`ifHCInBroadcastPkts')
(`ifHCOutBroadcastPkts')
$info->i_discards_in() $info->i_discards_out()
"The number of inbound packets which were chosen to be discarded
even though no errors had been detected to prevent their being
deliverable to a higher-layer protocol. One possible reason for
discarding such a packet could be to free up buffer space."
("IF-MIB")
(`IF-MIB')
("ifInDiscards") ("ifOutDiscards")
(`ifInDiscards') (`ifOutDiscards')
$info->i_bad_proto_in()
"For packet-oriented interfaces, the number of packets received via
@@ -1321,74 +1336,72 @@ USAGE
that does not support protocol multiplexing, this counter will
always be 0."
("ifInUnknownProtos")
(`ifInUnknownProtos')
$info->i_qlen_out()
"The length of the output packet queue (in packets)."
("ifOutQLen")
(`ifOutQLen')
$info->i_specific()
See "IF-MIB" for full description
See `IF-MIB' for full description
("ifSpecific")
(`ifSpecific')
IP Address Table
Each entry in this table is an IP address in use on this device. Usually
this is implemented in Layer3 Devices.
$info->ip_index()
Maps the IP Table to the IID
("ipAdEntIfIndex")
(`ipAdEntIfIndex')
$info->ip_table()
Maps the Table to the IP address
("ipAdEntAddr")
(`ipAdEntAddr')
$info->ip_netmask()
Gives netmask setting for IP table entry.
("ipAdEntNetMask")
(`ipAdEntNetMask')
$info->ip_broadcast()
Gives broadcast address for IP table entry.
("ipAdEntBcastAddr")
(`ipAdEntBcastAddr')
IP Routing Table
$info->ipr_route()
The route in question. A value of 0.0.0.0 is the default gateway
route.
("ipRouteDest")
(`ipRouteDest')
$info->ipr_if()
The interface (IID) that the route is on. Use interfaces() to map.
("ipRouteIfIndex")
(`ipRouteIfIndex')
$info->ipr_1()
Primary routing metric for this route.
("ipRouteMetric1")
(`ipRouteMetric1')
$info->ipr_2()
If metrics are not used, they should be set to -1
("ipRouteMetric2")
(`ipRouteMetric2')
$info->ipr_3()
("ipRouteMetric3")
(`ipRouteMetric3')
$info->ipr_4()
("ipRouteMetric4")
(`ipRouteMetric4')
$info->ipr_5()
("ipRouteMetric5")
(`ipRouteMetric5')
$info->ipr_dest()
From RFC1213:
@@ -1399,7 +1412,7 @@ USAGE
of this field is the agent's IP address on that
interface.)"
("ipRouteNextHop")
(`ipRouteNextHop')
$info->ipr_type()
From RFC1213:
@@ -1411,7 +1424,6 @@ USAGE
-- route to a non-local
indirect(4) -- host/network/sub-network
"The type of route. Note that the values
direct(3) and indirect(4) refer to the notion of
direct and indirect routing in the IP
@@ -1431,7 +1443,7 @@ USAGE
Proper interpretation of such entries requires
examination of the relevant ipRouteType object."
("ipRouteType")
(`ipRouteType')
$info->ipr_proto()
From RFC1213:
@@ -1458,25 +1470,24 @@ USAGE
ospf(13),
bgp(14)
("ipRouteProto")
(`ipRouteProto')
$info->ipr_age()
Seconds since route was last updated or validated.
("ipRouteAge")
(`ipRouteAge')
$info->ipr_mask()
Subnet Mask of route. 0.0.0.0 for default gateway.
("ipRouteMask")
(`ipRouteMask')
$info->ipr_info()
Reference to MIB definition specific to routing protocol.
("ipRouteInfo")
(`ipRouteInfo')
Topology Information
Based upon the manufacturer and software version devices may support
some combination of Layer 2 topology protocol information. SNMP::Info
supports querying Link Layer Discovery Protocol (LLDP), Cisco Discovery
@@ -1493,18 +1504,16 @@ USAGE
EDP: See SNMP::Info::EDP for details.
AMAP: See SNMP::Info::AMAP for details.
Topology Capabilities
Topology Capabilities
$info->has_topo()
Reports Layer 2 topology protocols which are supported and running
on a device.
Returns either a reference to an array of protocols, possible values
being: "lldp", "cdp", "sonmp", "fdp", "edp", "amap" or "undef" if no
being: `lldp', `cdp', `sonmp', `fdp', `edp', `amap' or `undef' if no
protocols are supported or running.
Common Topology Table Information
Common Topology Table Information
The common topology table methods below will query the device for
information from the specified topology protocols and return a single
hash combining all information. As a result, there may be identical
@@ -1519,7 +1528,7 @@ USAGE
If a reference to an array is provided as the second argument, those
protocols will be queried for information. The supported array values
are: "lldp", "cdp", "sonmp", "fdp", "edp", "amap".
are: `lldp', `cdp', `sonmp', `fdp', `edp', `amap'.
If nothing is passed in as the second argument, the methods will call
has_topo() to determine supported and running topology protocols on the
@@ -1555,7 +1564,7 @@ USAGE
Returns reference to hash. Key: iid, Value: Remote Device Type
Note: EDP does not provide this information. LLDP uses
("lldpRemSysDesc") or "lldp_rem_sysname" as the closest match.
(`lldpRemSysDesc') or `lldp_rem_sysname' as the closest match.
$info->c_cap(partial, topology_protocol_arrayref)
Returns reference to hash of arrays. Key: iid, Value: Array of
@@ -1565,7 +1574,6 @@ USAGE
Note: Only CDP and LLDP support this method.
SETTING DATA VIA SNMP
This section explains how to use SNMP::Info to do SNMP Set operations.
$info->set_METHOD($value)
@@ -1587,7 +1595,7 @@ SETTING DATA VIA SNMP
$info->set_i_up_admin('down', $if_map{'FastEthernet0/0'})
or die "Couldn't disable the port. ",$info->error(1);
NOTE: You must be connected to your device with a "ReadWrite" community
NOTE: You must be connected to your device with a `ReadWrite' community
string in order for set operations to work.
NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data
@@ -1595,7 +1603,6 @@ SETTING DATA VIA SNMP
subroutines will need to be added if they haven't been already.
Quiet Mode
SNMP::Info will not chirp anything to STDOUT unless there is a serious
error (in which case it will probably die).
@@ -1610,7 +1617,6 @@ Quiet Mode
my $name = $info->name() or die "Couldn't get sysName!" . $name->error();
EXTENDING SNMP::INFO
To support a new class (vendor or platform) of device, add a Perl
package with the data structures and methods listed below.
@@ -1620,16 +1626,15 @@ EXTENDING SNMP::INFO
to verify the implementation.
Gathering MIB data for SNMP::Info Developers
The preference is to open a feature request in the SourceForge project.
This allows all developers to have visibility into the request. Please
include pointers to the applicable platform MIBs. For development we
will need an "snmpwalk" of the device. There is a tool now included in
will need an `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 download the distribution from CPAN as it's included in
the ""t/util"" directory.
the "`contrib/util'" directory.
The utility is named "make_snmpdata.pl". Run it with a command line
The utility is named `make_snmpdata.pl'. Run it with a command line
like:
./make_snmpdata.pl -c community -i -d device_ip \
@@ -1646,7 +1651,6 @@ EXTENDING SNMP::INFO
ticket.
Data Structures required in new Subclass
A class inheriting this class must implement these data structures :
$INIT
@@ -1670,7 +1674,7 @@ EXTENDING SNMP::INFO
%FUNCS
Contains a hash in the form ( method_name => SNMP MIB leaf name)
These are table entries, such as the "ifIndex"
These are table entries, such as the `ifIndex'
To resolve MIB leaf name conflicts between private MIBs, you may
prefix the leaf name with the MIB replacing each - (dash) and :
@@ -1703,7 +1707,6 @@ EXTENDING SNMP::INFO
)
Sample Subclass
Let's make a sample Layer 2 Device subclass. This class will inherit the
Cisco Vlan module as an example.
@@ -1747,7 +1750,6 @@ EXTENDING SNMP::INFO
'super_hero_powers' => 'SuperHeroIfPowers'
);
%MUNGE = (%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
'super_hero_powers' => \&munge_powers
@@ -1796,9 +1798,7 @@ EXTENDING SNMP::INFO
of SNMP::Info.
SNMP::INFO INTERNALS
Object Namespace
Internal data is stored with bareword keys. For example $info->{debug}
SNMP Data is stored or marked cached with keys starting with an
@@ -1808,7 +1808,6 @@ SNMP::INFO INTERNALS
above.
Package Globals
These set the default value for an object upon creation.
$DEBUG
@@ -1826,11 +1825,10 @@ SNMP::INFO INTERNALS
SNMP::Session. Or see method in new() to do it on an object scope.
$REPEATERS
Default 20. MaxRepeaters for BULKWALK operations. See "perldoc SNMP"
Default 20. MaxRepeaters for BULKWALK operations. See `perldoc SNMP'
for more info. Can change by passing BulkRepeaters option in new()
Data Munging Callback Subroutines
munge_speed()
Makes human friendly speed ratings using %SPEED_MAP
@@ -1875,13 +1873,13 @@ SNMP::INFO INTERNALS
)
Note: high speed interfaces (usually 1 Gbps or faster) have their
link speed in "ifHighSpeed". i_speed() automatically determines
whether to use "ifSpeed" or "ifHighSpeed"; if the latter is used,
link speed in `ifHighSpeed'. i_speed() automatically determines
whether to use `ifSpeed' or `ifHighSpeed'; if the latter is used,
the value is munged by munge_highspeed(). SNMP::Info can return
speeds up to terabit levels this way.
munge_highspeed()
Makes human friendly speed ratings for "ifHighSpeed"
Makes human friendly speed ratings for `ifHighSpeed'
munge_ip()
Takes a binary IP and makes it dotted ASCII
@@ -1912,8 +1910,8 @@ SNMP::INFO INTERNALS
See Math::BigInt for details.
munge_i_up
Net-SNMP tends to load "RFC1213-MIB" first, and so ignores the
updated enumeration for "ifOperStatus" in "IF-MIB". This munge
Net-SNMP tends to load `RFC1213-MIB' first, and so ignores the
updated enumeration for `ifOperStatus' in `IF-MIB'. This munge
handles the "newer" definitions for the enumeration in IF-MIB.
TODO: Get the precedence of MIBs and overriding of MIB data in
@@ -1934,7 +1932,6 @@ SNMP::INFO INTERNALS
Takes an OID and return the object name if the right MIB is loaded.
Internally Used Functions
$info->init()
Used internally. Loads all entries in %MIBS.
@@ -2054,7 +2051,7 @@ SNMP::INFO INTERNALS
a MIB Leaf node name contained within a table of a loaded MIB.
Supports partial table fetches and single instance table fetches.
See "Partial Table Fetches" in SNMP::Info.
See SNMP::Info.
These methods return data as a reference to a hash.
@@ -2072,7 +2069,7 @@ SNMP::INFO INTERNALS
$info->_cache(attr, data)
Cache retrieved data so that if it's asked for again, we use the
cache instead of going back to Net-SNMP. Data is cached inside the
blessed hashref $self.
blessed hashref `$self'.
Accepts the leaf and value (scalar, or hashref for a table). Does
not return anything useful.
@@ -2112,7 +2109,6 @@ SNMP::INFO INTERNALS
Returns undef if the method does not exist and can not be created.
AUTOLOAD
Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present in
loaded MIBs are used by AUTOLOAD() to create dynamic methods. Generated
methods are inserted into the symbol table so that subsequent calls can
@@ -2135,7 +2131,6 @@ SNMP::INFO INTERNALS
subclass.
COPYRIGHT AND LICENSE
Changes from SNMP::Info Version 0.7 and on are: Copyright (c) 2003-2010
Max Baker and SNMP::Info Developers All rights reserved.

View File

@@ -3,9 +3,9 @@
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) {
print "$p\n";
@@ -16,6 +16,7 @@ foreach my $p (@pms) {
while (<O>) {
s/^\s*\$VERSION\s+=\s*'[^']+'\s*;/\$VERSION = '$new_version';/;
s/^SNMP::Info - Version [\d.]+$/SNMP::Info - Version $new_version/;
print P;
}

View File

@@ -24,7 +24,7 @@ use vars
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
$NOSUCH $BIGINT $REPEATERS/;
$VERSION = '3.32';
$VERSION = '3.48';
=head1 NAME
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.32
SNMP::Info - Version 3.48
=head1 AUTHOR
@@ -439,7 +439,7 @@ interface to data obtainable from network devices.
All the required MIB files are included in the netdisco-mib package.
(See Above).
=over
=over 4
=item SNMP::Info::Layer1
@@ -447,7 +447,7 @@ Generic Layer1 Device subclass.
See documentation in L<SNMP::Info::Layer1> for details.
=over
=over 4
=item SNMP::Info::Layer1::Allied
@@ -501,6 +501,12 @@ SNMP::Info::Layer2::3Com - SNMP Interface to L2 3Com Switches
See documentation in L<SNMP::Info::Layer2::3Com> for details.
=item SNMP::Info::Layer2::Adtran
Subclass for Adtran devices.
See documentation in L<SNMP::Info::Layer2::Adtran> for details.
=item SNMP::Info::Layer2::Airespace
Subclass for Cisco (Airespace) wireless controllers.
@@ -634,7 +640,7 @@ See documentation in L<SNMP::Info::Layer2::Trapeze> for details.
=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.
@@ -724,6 +730,12 @@ This class covers Catalyst 6500s in native mode, hybrid mode. Catalyst
See documentation in L<SNMP::Info::Layer3::C6500> for details.
=item SNMP::Info::Layer3::CheckPoint
Subclass for CheckPoint devices
See documentation in L<SNMP::Info::Layer3::CheckPoint> for details.
=item SNMP::Info::Layer3::Cisco
This is a simple wrapper around layer 3 for IOS devices and the base layer 3
@@ -754,6 +766,18 @@ Subclass for Avaya/Nortel Contivity/VPN Routers.
See documentation in L<SNMP::Info::Layer3::Contivity> for details.
=item SNMP::Info::Layer3::Cumulus
Subclass for Cumulus Networks Routers.
See documentation in L<SNMP::Info::Layer3::Cumulus> for details.
=item SNMP::Info::Layer3::DLink
Subclass for DLink devices.
See documentation in L<SNMP::Info::Layer3::DLink> for details.
=item SNMP::Info::Layer3::Dell
Subclass for Dell PowerConnect switches. D-Link, the IBM BladeCenter
@@ -878,6 +902,12 @@ Subclass for PacketFront DRG series CPE.
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
Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000 series,
@@ -925,6 +955,18 @@ Alcatel-Lucent SR Class.
See documentation in L<SNMP::Info::Layer3::Timetra> for details.
=item SNMP::Info::Layer3::VyOS
Subclass for VyOS routers.
See documentation in L<SNMP::Info::Layer3::VyOS> for details.
=item SNMP::Info::Layer3::VMware
Subclass for VMware ESXi hosts.
See documentation in L<SNMP::Info::Layer3::VMware> for details.
=back
=back
@@ -945,6 +987,12 @@ SNMP Interface to APC UPS devices
See documentation in L<SNMP::Info::Layer7::APC> for details.
=item SNMP::Info::Layer7::CiscoIPS
SNMP Interface to Cisco IPS devices
See documentation in L<SNMP::Info::Layer7::Cisco IPS> for details.
=item SNMP::Info::Layer7::Netscaler
SNMP Interface to Citrix Netscaler appliances
@@ -1312,7 +1360,7 @@ sub update {
=head2 Data is Cached
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
data from a method.
@@ -1320,7 +1368,7 @@ data from a method.
Run $info->clear_cache() to clear the cache to allow reload of both globals
and table methods.
The cache can be retreved or set using the $info->cache() method. This works
The cache can be retrieved or set using the $info->cache() method. This works
together with the C<Offline> option.
=head2 Object Scalar Methods
@@ -1500,16 +1548,19 @@ sub device_type {
42 => 'SNMP::Info::Layer3::Sun',
43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack',
171 => 'SNMP::Info::Layer3::Dell',
171 => 'SNMP::Info::Layer3::DLink',
244 => 'SNMP::Info::Layer3::Lantronix',
311 => 'SNMP::Info::Layer3::Microsoft',
664 => 'SNMP::Info::Layer2::Adtran',
674 => 'SNMP::Info::Layer3::Dell',
1588 => 'SNMP::Info::Layer3::Foundry',
1872 => 'SNMP::Info::Layer3::AlteonAD',
1916 => 'SNMP::Info::Layer3::Extreme',
1991 => 'SNMP::Info::Layer3::Foundry',
2011 => 'SNMP::Info::Layer3::Huawei',
2021 => 'SNMP::Info::Layer3::NetSNMP',
2272 => 'SNMP::Info::Layer3::Passport',
2620 => 'SNMP::Info::Layer3::CheckPoint',
2636 => 'SNMP::Info::Layer3::Juniper',
2925 => 'SNMP::Info::Layer1::Cyclades',
3076 => 'SNMP::Info::Layer3::Altiga',
@@ -1538,6 +1589,9 @@ sub device_type {
30065 => 'SNMP::Info::Layer3::Arista',
35098 => 'SNMP::Info::Layer3::Pica8',
41112 => 'SNMP::Info::Layer2::Ubiquiti',
4413 => 'SNMP::Info::Layer2::Ubiquiti',
30803 => 'SNMP::Info::Layer3::VyOS',
40310 => 'SNMP::Info::Layer3::Cumulus',
);
my %l2sysoidmap = (
@@ -1545,8 +1599,9 @@ sub device_type {
11 => 'SNMP::Info::Layer2::HP',
43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack',
171 => 'SNMP::Info::Layer3::Dell',
171 => 'SNMP::Info::Layer3::DLink',
207 => 'SNMP::Info::Layer2::Allied',
664 => 'SNMP::Info::Layer2::Adtran',
674 => 'SNMP::Info::Layer3::Dell',
1872 => 'SNMP::Info::Layer3::AlteonAD',
1916 => 'SNMP::Info::Layer3::Extreme',
@@ -1659,7 +1714,9 @@ sub device_type {
=~ /^(BayStack|Ethernet\s+Routing\s+Switch)\s[2345](\d){2,3}/i );
# Nortel Contivity
$objtype = 'SNMP::Info::Layer3::Contivity' if $desc =~ /(\bCES\b|\bNVR\sV\d)/;
$objtype = 'SNMP::Info::Layer3::Contivity'
if $desc =~ /(\bCES\b|\bNVR\sV\d)/
and (!defined $id or !defined $l3sysoidmap{$id});
# SonicWALL
$objtype = 'SNMP::Info::Layer3::SonicWALL' if $desc =~ /SonicWALL/i;
@@ -1677,6 +1734,11 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::CiscoFWSM'
if ( $desc =~ /Cisco Firewall Services Module/i );
# Cisco Small Business (300 500) series override
# This is for enterprises(1).cisco(9).otherEnterprises(6).ciscosb(1)
$objtype = 'SNMP::Info::Layer2::CiscoSB'
if ( $soid =~ /^\.?1\.3\.6\.1\.4\.1\.9\.6\.1/ );
# Avaya Secure Router
$objtype = 'SNMP::Info::Layer3::Tasman'
if ( $desc =~ /^(avaya|nortel)\s+(SR|secure\srouter)\s+\d{4}/i );
@@ -1900,6 +1962,10 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::NWSS2300'
if (
$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
if ( defined($id) and $objtype eq 'SNMP::Info') {
@@ -2924,7 +2990,7 @@ allows all developers to have visibility into the request. Please include
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
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.
The utility is named C<make_snmpdata.pl>. Run it with a command line like:

View File

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

View File

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

View File

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

View File

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

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',

View File

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

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
@@ -97,6 +97,10 @@ sub copy_run_tftp {
print "Using new method, row iid: $rand\n" if $ciscoconfig->debug();
#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 ) ) {
$ciscoconfig->error_throw("Setting source type failed");
unless ( $ciscoconfig->set_config_row_status( 6, $rand ) ) {

View File

@@ -38,12 +38,13 @@ use Exporter;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
'CISCO-PAE-MIB' => 'ciscoPaeMIB',
'IEEE8021-PAE-MIB' => 'dot1xAuthLastEapolFrameSource',
'CISCO-ERR-DISABLE-MIB' => 'ciscoErrDisableMIB',
);
%GLOBALS = (
@@ -99,6 +100,9 @@ $VERSION = '3.32';
# IEEE8021-PAE-MIB::dot1xPaePortEntry
'pae_i_capabilities' => 'dot1xPaePortCapabilities',
'pae_i_last_eapol_frame_source' => 'dot1xAuthLastEapolFrameSource',
# CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusEntry
'cerr_i_cause' => 'cErrDisableIfStatusCause',
);
%MUNGE = (
@@ -123,13 +127,29 @@ sub munge_pae_capabilities {
return join( ' ', @vals );
}
# Define a generic method to show the cause for a port to be err-disabled.
# Cisco indexes cErrDisableIfStatusCause by {ifindex,vlan}, but for a more
# generic method, using ifIndex only makes it easier to implement across
# device classes. Besides, several (most?) err-disable features will disable
# the whole interface anyway, and not just a vlan on the interface.
sub i_err_disable_cause {
my $cps = shift;
my $ret;
my $causes = $cps->cerr_i_cause() || {};
foreach my $interfacevlan (keys %$causes) {
my ($iid, $vid) = split(/\./, $interfacevlan);
$ret->{$iid} = $causes->{$interfacevlan};
}
return $ret;
}
1;
__END__
=head1 NAME
SNMP::Info::CiscoPortSecurity - SNMP Interface to data from
F<CISCO-PORT-SECURITY-MIB> and F<CISCO-PAE-MIB>
F<CISCO-PORT-SECURITY-MIB>, F<CISCO-PAE-MIB> and F<CISCO-ERR-DISABLE-MIB>.
=head1 AUTHOR
@@ -153,8 +173,9 @@ Eric Miller
=head1 DESCRIPTION
SNMP::Info::CiscoPortSecurity is a subclass of SNMP::Info that provides
an interface to the F<CISCO-PORT-SECURITY-MIB> and F<CISCO-PAE-MIB>. These
MIBs are used across the Catalyst family under CatOS and IOS.
an interface to the F<CISCO-PORT-SECURITY-MIB>, F<CISCO-PAE-MIB> and
F<CISCO-ERR-DISABLE-MIB>. These MIBs are used across the Catalyst
family under CatOS and IOS.
Use or create in a subclass of SNMP::Info. Do not use directly.
@@ -172,6 +193,8 @@ None.
=item F<IEEE8021-PAE-MIB>
=item F<CISCO-ERR-DISABLE-MIB>
=back
=head1 GLOBALS
@@ -374,6 +397,31 @@ The source MAC address carried in the most recently received EAPOL frame.
=back
=head2 C<CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusEntry>
=over
=item $cps->cerr_i_cause()
C<cErrDisableIfStatusCause>
Indicates the feature/event that caused the {interface, vlan} (or the entire
interface) to be error-disabled.
=back
=head1 METHODS
=over
=item C<i_err_disable_cause>
Returns a HASH reference mapping ifIndex to err-disabled cause. The returned
data is sparse, so if the ifIndex is not present in the return value, the port
is not err-disabled.
=back
=head1 Data Munging Callback Subroutines
=over

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',

View File

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

View File

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

View File

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

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
@@ -50,7 +50,7 @@ $VERSION = '3.32';
'fdp_run' => 'snFdpGlobalRun',
'fdp_interval' => 'snFdpGlobalMessageInterval',
'fdp_holdtime' => 'snFdpGlobalHoldTime',
'fdp_id' => 'snFdpGlobalDeviceId',
'fdp_gid' => 'snFdpGlobalDeviceId',
);
%FUNCS = (
@@ -231,7 +231,7 @@ Time in seconds that FDP messages are kept.
(C<fdpGlobalHoldTime>)
=item $fdp->fdp_id()
=item $fdp->fdp_gid()
Returns FDP device ID.

View File

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

View File

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

View File

@@ -44,7 +44,7 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.32';
$VERSION = '3.48';
@@ -72,15 +72,18 @@ $VERSION = '3.32';
'ip_pfx_origin' => 'ipAddressPrefixOrigin', # 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
'ip_addr6_pfxlen' => 'ipAddressPrefixLength', # IP-MIB
'c_addr6_pfxlen' => 'cIpAddressPfxLength', # CISCO-IETF-IP-MIB
'i6_addr_pfxlen' => 'ipv6AddrPfxLength', # IPV6-MIB
'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIB
'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB
'ip_addr6_type' => 'ipAddressType', # IP-MIB
'c_addr6_type' => 'cIpAddressType', # CISCO-IETF-IP-MIB
);
%MUNGE = (
@@ -313,7 +316,9 @@ sub ipv6_addr_prefix {
foreach my $row (keys %$ipv6_addr_prefix){
if ($row =~ /^(\d+)\.[\d\.]+$/) {
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
my $val = $ipv6_addr_prefix->{$row};
if ( $val =~ /^.+?((?:\d+\.){19}\d+)$/ ){
@@ -327,6 +332,33 @@ sub ipv6_addr_prefix {
return $return;
}
sub ipv6_addr_prefixlength {
my $info = shift;
my $return;
my $ipv6_addr_prefix = &_test_methods( $info, {
ip_addr6_pfx => IPMIB,
c_addr6_pfx => CISCO,
});
return unless defined $ipv6_addr_prefix;
foreach my $row (keys %$ipv6_addr_prefix) {
if ($row =~ /^(\d+)\.[\d\.]+$/) {
my $type = $1;
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
my $val = $ipv6_addr_prefix->{$row};
if ( $val =~ /^.+?((?:\d+\.){19}(\d+))$/ ) {
$val = $2;
$return->{$row} = $val;
}
}
}
}
printf("%s: data comes from %s.\n", &_my_sub_name, $info->_method_used() ) if $info->debug();
return $return;
}
sub ipv6_addr {
my $info = shift;
my $return;
@@ -353,6 +385,7 @@ sub ipv6_addr {
sub _method_used {
my $info = shift;
my $return = 'none of the MIBs';
# FIXME ugh! a global. makes order of calls important for debug.
if (defined $info::METHOD) {
if ($info::METHOD eq IPMIB) {
$return = 'IP-MIB';
@@ -372,6 +405,7 @@ sub _test_methods {
foreach my $method (sort {$test->{$a} <=> $test->{$b}} keys %$test) {
$return = $info->$method || {};
if (scalar keys %$return) {
# FIXME ugh! a global. makes order of calls important for debug.
$info::METHOD = $test->{$method};
last;
}
@@ -488,6 +522,10 @@ Maps an IPv6 prefix with its origin (manual, well-known, dhcp, etc.)
Maps IPv6 addresses with their prefixes
=item $info->ipv6_addr_prefixlength()
Maps IPv6 addresses with their prefix length
=item $info->ipv6_addr()
Maps a table instance to an IPv6 address

View File

@@ -39,10 +39,11 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
'LLDP-EXT-MED-MIB' => 'lldpXMedMIB',
'LLDP-EXT-DOT1-MIB' => 'lldpXdot1MIB',
'LLDP-EXT-DOT3-MIB' => 'lldpXdot3MIB',
);
@@ -69,6 +70,18 @@ $VERSION = '3.32';
'lldp_rem_sys_cap' => 'lldpRemSysCapEnabled',
'lldp_rem_cap_spt' => 'lldpRemSysCapSupported',
# LLDP-MIB::lldpXMedRemInventoryTable
'lldp_rem_hw_rev' => 'lldpXMedRemHardwareRev',
'lldp_rem_fw_rev' => 'lldpXMedRemFirmwareRev',
'lldp_rem_sw_rev' => 'lldpXMedRemSoftwareRev',
'lldp_rem_serial' => 'lldpXMedRemSerialNum',
'lldp_rem_vendor' => 'lldpXMedRemMfgName',
'lldp_rem_model' => 'lldpXMedRemModelName',
'lldp_rem_asset' => 'lldpXMedRemAssetID',
'lldp_rem_media_cap' => 'lldpXMedRemCapCurrent',
'lldp_rem_media_cap_spt' => 'lldpXMedRemCapSupported',
# LLDP-MIB::lldpRemManAddrTable
'lldp_rman_addr' => 'lldpRemManAddrIfSubtype',
);
@@ -82,6 +95,17 @@ $VERSION = '3.32';
'lldp_sys_cap' => \&SNMP::Info::munge_bits,
'lldp_rem_sys_cap' => \&SNMP::Info::munge_bits,
'lldp_rem_cap_spt' => \&SNMP::Info::munge_bits,
'lldp_rem_hw_rev' => \&SNMP::Info::munge_null,
'lldp_rem_fw_rev' => \&SNMP::Info::munge_null,
'lldp_rem_sw_rev' => \&SNMP::Info::munge_null,
'lldp_rem_serial' => \&SNMP::Info::munge_null,
'lldp_rem_vendor' => \&SNMP::Info::munge_null,
'lldp_rem_model' => \&SNMP::Info::munge_null,
'lldp_rem_asset' => \&SNMP::Info::munge_null,
'lldp_rem_media_cap' => \&SNMP::Info::munge_bits,
'lldp_rem_media_cap_spt' => \&SNMP::Info::munge_bits,
);
sub hasLLDP {
@@ -323,6 +347,39 @@ sub lldp_cap {
return \%lldp_cap;
}
sub lldp_media_cap {
my $lldp = shift;
my $partial = shift;
my $lldp_caps = $lldp->lldp_rem_media_cap_spt($partial) || {};
# Encoded as BITS which Perl Net-SNMP implementation doesn't seem to
# be able to enumerate for us, so we have to get it from the MIB
# and enumerate ourselves
my $oid = SNMP::translateObj( 'lldpXMedRemCapCurrent', 0, 1 ) || '';
my $enums = (
( ref {} eq ref $SNMP::MIB{$oid}{'enums'} )
? $SNMP::MIB{$oid}{'enums'}
: {}
);
my %r_enums = reverse %$enums;
my %lldp_cap;
foreach my $key ( keys %$lldp_caps ) {
my $cap_bits = $lldp_caps->{$key};
next unless $cap_bits;
my $count = 0;
foreach my $bit ( split //, $cap_bits ) {
if ($bit) {
push( @{ $lldp_cap{$key} }, $r_enums{$count} );
}
$count++;
}
}
return \%lldp_cap;
}
#sub root_ip {
# my $lldp = shift;
#
@@ -435,6 +492,8 @@ None.
=item F<LLDP-MIB>
=item F<LLDP-EXT-MED-MIB>
=item F<LLDP-EXT-DOT1-MIB>
=item F<LLDP-EXT-DOT3-MIB>
@@ -567,6 +626,12 @@ Returns hash of arrays with each array containing the system capabilities
supported by the remote system. Possible elements in the array are
enumerated from C<LldpSystemCapabilitiesMap>.
=item $lldp->lldp_media_cap()
Returns hash of arrays with each array containing the media capabilities
supported by the remote system. Possible elements in the array are
enumerated from C<LldpXMedCapabilities>.
=back
=head2 LLDP Remote Table (C<lldpRemTable>)
@@ -628,6 +693,65 @@ Nulls are removed before the value is returned.
(C<lldpRemSysDesc>)
=item $lldp->lldp_rem_hw_rev()
Returns the string value used to identify the hardware revision of the
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemHardwareRev>)
=item $lldp->lldp_rem_fw_rev()
Returns the string value used to identify the firmware revision of the
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemHardwareRev>)
=item $lldp->lldp_rem_sw_rev()
Returns the string value used to identify the software revision of the
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemSoftwareRev>)
=item $lldp->lldp_rem_serial()
Returns the string value used to identify the serial number of the
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemSerialNum>)
=item $lldp->lldp_rem_vendor()
Returns the string value used to identify the manufacturer of the
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemMfgName>)
=item $lldp->lldp_rem_asset()
Returns the string value used to identify the asset number of the
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemAssetID>)
=item $lldp->lldp_rem_model()
Returns the string value used to identify the model of the
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemModelName>)
=item $lldp->lldp_rem_media_cap_spt()
Returns which media capabilities are supported on the remote system. Results
are munged into an ascii binary string, LSB.
=item $lldp->lldp_rem_media_cap()
Returns which media capabilities are enabled on the remote system. Results
are munged into an ascii binary string, LSB.
=item $lldp->lldp_rem_sys_cap()
Returns which system capabilities are enabled on the remote system. Results

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -46,7 +46,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%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/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::LLDP::MIBS,
@@ -73,6 +73,8 @@ sub model {
my $descr = $dsmodel->description();
if ( $descr =~ /^([\S ]+) Software.*/){
return $1;
} else {
return $descr;
}
}

View File

@@ -0,0 +1,286 @@
package SNMP::Info::Layer2::Adtran;
use strict;
use Exporter;
use SNMP::Info::LLDP;
use SNMP::Info::Layer2;
use SNMP::Info::Layer3;
@SNMP::Info::Layer2::Adtran::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Adtran::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.48';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
our $index = undef;
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::Layer3::MIBS,
'ADTRAN-GENEVC-MIB' => 'adGenEVCMIB',
'ADTRAN-GENMEF-MIB' => 'adGenMEFMIB',
'ADTRAN-GENPORT-MIB' => 'adGenPort',
'ADTRAN-MIB' => 'adtran',
'ADTRAN-AOSUNIT' => 'adGenAOSUnitMib',
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'serial' => 'adProdSerialNumber',
'ad_mgmtevcvid' => 'adGenEVCSysMgmtEVCSTagVID',
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS,
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
'ad_evcstag' => 'adGenEVCLookupName',
'ad_menport' => 'adGenMenPortRowStatus',
'ad_evcnamevid' => 'adGenEVCSTagVID',
'ad_mgmtevcports' => 'adGenSysMgmtEVCInterfaceConnectionType',
'ad_evcmapuniport' => 'adGenMEFMapUNIPort',
'ad_evcmapevc' => 'adGenMEFMapAssociatedEVCAlias',
'ad_genportcustuse' => 'adGenPortCustomerUse',
);
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::LLDP::MUNGE, %SNMP::Info::Layer3::MUNGE );
sub vendor {
return 'adtran';
}
sub os {
return 'aos';
}
sub layers {
my $adtran = shift;
my $layers = $adtran->SUPER::layers();
# Some netvantas don't report L2 properly
my $macs = $adtran->fw_mac();
if (keys %$macs) {
my $l = substr $layers, 6, 1, "1";
}
return $layers;
}
sub os_ver {
my $adtran = shift;
my $ver = $adtran->adProdSwVersion() || undef;
return $ver if (defined $ver);
my $aos_ver = $adtran->adAOSDeviceVersion();
return $aos_ver;
}
sub model {
my $adtran = shift;
my $id = $adtran->id();
my $mod = $adtran->adProdName() || undef;
return $mod if (defined $mod);
my $model = $adtran->adAOSDeviceProductName() || undef;
return $model;
}
sub serial {
my $adtran = shift;
my $e_serial = $adtran->e_serial() || {};
my $serial2 = $e_serial->{1} || undef;
return $serial2 if ( defined $serial2 );
return $adtran->orig_serial();
}
sub i_name {
my $adtran = shift;
my $partial = shift;
my $i_name = $adtran->SUPER::i_alias() || undef;
return $i_name if (defined $i_name);
$i_name = {};
my $adname = $adtran->ad_genportcustuse() || undef;
if (defined $adname) {
foreach my $port (keys %$adname) {
my @split = split(/\./,$port);
$i_name->{@split[1]} = $adname->{$port};
}
}
return $i_name;
}
sub i_vlan {
my $adtran = shift;
my $partial = shift;
my $uniports = $adtran->ad_evcmapuniport() || undef;
my $evcmaps = $adtran->ad_evcmapevc() || undef;
my $v_names = $adtran->ad_evcnamevid() || undef;
if (defined $uniports) {
my $vlans = {};
foreach my $oid (keys %$v_names) {
my $name = pack("C*", split(/\./,$oid));
$vlans->{$name} = $v_names->{$oid};
}
my $i_vlan = {};
foreach my $evcmap (keys %$evcmaps) {
$i_vlan->{$uniports->{$evcmap}} = $vlans->{$evcmaps->{$evcmap}};
}
return $i_vlan;
}
return {};
}
sub i_vlan_membership {
my $adtran = shift;
my $partial = shift;
my $i_vlan = $adtran->ad_menport();
if (defined $i_vlan) {
my $vlans = {};
my $v_name = $adtran->v_name();
foreach my $vid (keys %$v_name) {
$vlans->{$v_name->{$vid}} = $vid;
}
my $if_vlans = {};
foreach my $entry (keys %$i_vlan) {
my @split = split(/(\.0)+\./,$entry);
my $name = pack("C*", split(/\./,@split[0]));
push @{$if_vlans->{@split[2]}}, $vlans->{$name};
}
my $mgmtevcports = $adtran->ad_mgmtevcports();
my $mgmtevcid = $adtran->ad_mgmtevcvid();
foreach my $port (keys %$mgmtevcports) {
push @{$if_vlans->{$port}}, $mgmtevcid;
}
return $if_vlans;
}
return {};
}
sub v_name {
my $adtran = shift;
my $partial = shift;
my $v_index = $adtran->ad_evcstag();
return {} unless defined $v_index;
$v_index->{$adtran->ad_mgmtevcvid()} = 'system-management-evc';
return $v_index;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Adtran - SNMP Interface to Adtran Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $adtran = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $adtran->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for adtran Devices running JUNOS
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=item SNMP::Info::LLDP
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $adtran->vendor()
Returns 'adtran'
=item $adtran->os()
Returns 'aos'
=item $adtran->layers()
Ensures that layer two is reported, at least.
=item $adtran->os_ver()
Returns the software version extracted first from C<adProdSwVersion> or
C<adAOSDeviceVersion>.
=item $adtran->model()
Returns the model extracted first from C<adProdName> or
C<adAOSDeviceProductName>.
=item $adtran->serial()
Returns serial number.
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
to a hash.
=over
=item $adtran->v_name()
VLAN names table.
=item $adtran->i_name()
Interface names table.
=item $adtran->i_vlan()
Returns a mapping between C<ifIndex> and the PVID or default VLAN.
=item $adtran->i_vlan_membership()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs. These are the VLANs which are members of the egress list for the port.
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=cut

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
@@ -97,6 +97,14 @@ my $mcs_index = {
m13 => '104',
m14 => '117',
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
m108 => '108',
},
@@ -117,6 +125,14 @@ my $mcs_index = {
m13 => '240',
m14 => '270',
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/ ) {
my $band = $protos->{$idx};
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' ];
}
else {

View File

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

View File

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

View File

@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
@@ -229,7 +229,7 @@ sub index_factor {
if ( ( $model =~ /(470)/ )
or ( $os =~ m/(boss|bes)/ ) and ( $op_mode eq 'pure' ) );
$index_factor = 128
if ( ( $model =~ /(5[56]\d\d)|VSP/ )
if ( ( $model =~ /(5[56]\d\d)|VSP|4950|59100/ )
and ( $os_ver >= 6 ) );
return $index_factor;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -50,7 +50,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
@@ -121,7 +121,7 @@ sub os_ver {
}
}
}
# Grab e_model from Entity and tag on e_hwver
sub model {
my $ciscosb = shift;
@@ -130,8 +130,9 @@ sub model {
foreach my $e ( sort keys %$e_model ) {
if (defined $e_model->{$e} and $e_model->{$e} !~ /^\s*$/) {
my $model = "$e_model->{$e} $e_hwver->{$e}";
return $model;
return $e_model->{$e};
#my $model = "$e_model->{$e} $e_hwver->{$e}";
#return $model;
}
}
return $ciscosb->description();
@@ -162,14 +163,14 @@ Nic Bernstein (shamelessly stolen from Max Baker's Aironet code)
=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(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $ciscosb->class();
@@ -216,6 +217,10 @@ These are methods that return scalar value from SNMP
Returns 'cisco'
=item $ciscosb->os()
Returns 'ros'
=item $ciscosb->os_ver()
Returns software version (C<entPhysicalSoftwareRev>)

View File

@@ -50,7 +50,7 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -215,6 +215,7 @@ $VERSION = '3.32';
'J9085A' => '2610-24',
'J8762A' => '2600-8-PWR',
'J9780A' => '2530-8-PoE+',
'J9774A' => '2530-8G-PoEP',
'J9777A' => '2530-8G',
'J9783A' => '2530-8',
'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/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,319 @@
# 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.48';
%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->serial()
Serial Number.
=item $ubnt->mac()
Bridge MAC address.
=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/;
$VERSION = '3.32';
$VERSION = '3.48';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -53,7 +53,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::MIBS,
@@ -196,12 +196,15 @@ sub serial {
my $serial1 = $l3->serial1();
my $e_parent = $l3->e_parent() || {};
my $e_class = $l3->e_class() || {};
foreach my $iid ( keys %$e_parent ) {
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);
if ( $serial ) {
if ( $serial && $serial->{$iid} ) {
return $serial->{$iid};
}
else {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,330 @@
# SNMP::Info::Layer3::CheckPoint
# $Id$
#
# Copyright (c) 2008 Bill Fenner
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::CheckPoint;
use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::LLDP;
@SNMP::Info::Layer3::CheckPoint::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::CheckPoint::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
'CHECKPOINT-MIB' => 'fwProduct',
'UCD-SNMP-MIB' => 'versionTag',
'NET-SNMP-TC' => 'netSnmpAgentOIDs',
'NET-SNMP-EXTEND-MIB' => 'nsExtendNumEntries',
'HOST-RESOURCES-MIB' => 'hrSystem',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'netsnmp_vers' => 'versionTag',
'hrSystemUptime' => 'hrSystemUptime',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
# Net-SNMP Extend table that could but customize to add a the CheckPoint version
'extend_output_table' => 'nsExtendOutputFull',
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
sub vendor {
return 'checkpoint';
}
sub model {
my $ckp = shift;
my $id = $ckp->id;
my $model = &SNMP::translateObj($id);
if (defined $model) {
$model =~ s/^checkPoint//;
return $model;
} else {
return $id;
}
}
sub os {
return 'checkpoint';
}
sub os_ver {
my $ckp = shift;
my $extend_table = $ckp->extend_output_table() || {};
my $descr = $ckp->description();
my $vers = $ckp->netsnmp_vers();
my $os_ver = undef;
foreach my $ex (keys %$extend_table) {
(my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
if ($name eq 'ckpVersion') {
return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/);
last;
}
}
$os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ );
if ($vers) {
$os_ver = "???" unless defined($os_ver);
$os_ver .= " / Net-SNMP " . $vers;
}
return $os_ver;
}
sub serial {
my $ckp = shift;
my $extend_table = $ckp->extend_output_table() || {};
foreach my $ex (keys %$extend_table) {
(my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
if ($name eq 'ckpAsset') {
return $1 if ($extend_table->{$ex} =~ /Serial Number: (\S+)/);
last;
}
}
return '';
}
sub layers {
return '01001100';
}
# sysUptime gives us the time since the SNMP daemon has restarted,
# so return the system uptime since that's probably what the user
# wants. (Caution: this could cause trouble if using
# sysUptime-based discontinuity timers or other TimeStamp
# objects.
sub uptime {
my $ckp = shift;
my $uptime;
$uptime = $ckp->hrSystemUptime();
return $uptime if defined $uptime;
return $ckp->SUPER::uptime();
}
sub i_ignore {
my $l3 = shift;
my $partial = shift;
my $interfaces = $l3->interfaces($partial) || {};
my %i_ignore;
foreach my $if ( keys %$interfaces ) {
# lo0 etc
if ( $interfaces->{$if} =~ /\blo\d*\b/i ) {
$i_ignore{$if}++;
}
}
return \%i_ignore;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::CheckPoint - SNMP Interface to CheckPoint Devices
=head1 AUTHORS
Ambroise Rosset
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $ckp = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $ckp->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Generic Net-SNMP devices
=head2 WARNING
To correctly and completelly work, you should add the following line in the file C</etc/snmp/snmpd.local.conf> on each of your CheckPoint devices:
# Netdisco SNMP configuration
extend ckpVersion /opt/CPsuite-R77/fw1/bin/fw ver
extend ckpAsset /bin/clish -c 'show asset all'
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=back
=head2 Required MIBs
=over
=item F<UCD-SNMP-MIB>
=item F<NET-SNMP-TC>
=item F<HOST-RESOURCES-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3> for its own MIB requirements.
See L<SNMP::Info::LLDP> for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $ckp->vendor()
Returns 'checkpoint'.
=item $ckp->model()
Return the model type of the CheckPoint device (Based on the sysObjectOID translation).
=item $ckp->os()
Returns the OS extracted from C<sysDescr>.
=item $ckp->os_ver()
Returns the software version extracted from C<sysDescr>, along
with the Net-SNMP version.
=item $ckp->uptime()
Returns the system uptime instead of the agent uptime.
NOTE: discontinuity timers and other Time Stamp based objects
are based on agent uptime, so use orig_uptime().
=item $ckp->serial()
Return the serial number of the device if the SNMP server is configured as indicated previously.
Return '' in other case.
=item $ckp->layers()
Return '01001100'.
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP> for details.
=head1 TABLE ENTRIES
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Overrides
=over
=item $ckp->i_ignore()
Returns reference to hash. Increments value of IID if port is to be ignored.
Ignores loopback
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP> for details.
=head1 NOTES
In order to cause SNMP::Info to classify your device into this class, it
may be necessary to put a configuration line into your F<snmpd.conf>
similar to
sysobjectid .1.3.6.1.4.1.8072.3.2.N
where N is the object ID for your OS from the C<NET-SNMP-TC> MIB (or
255 if not listed). Some Net-SNMP installations default to an
incorrect return value for C<system.sysObjectId>.
In order to recognize a Net-SNMP device as Layer3, it may be necessary
to put a configuration line similar to
sysservices 76
in your F<snmpd.conf>.
=cut

View File

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

View File

@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.32';
$VERSION = '3.48';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
@@ -73,8 +73,8 @@ sub b_mac {
foreach my $i ( keys %$macs ) {
my $mac = $macs->{$i};
# don't catch the bad macs with zeroed OUI
if ( $mac !~ m/(0{1,2}:){3}/ ) {
# don't catch the bad macs with bogus OUI
if ( $mac !~ m/(0{1,2}:){2}(00|01)/ ) {
push( @macs, $mac );
}
@macs = sort(@macs);

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,271 @@
# SNMP::Info::Layer3::Cumulus
# $Id$
#
# Copyright (c) 2018 Bill Fenner and Oliver Gorwits
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::Cumulus;
use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::LLDP;
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
@SNMP::Info::Layer3::Cumulus::ISA = qw/
SNMP::Info::IEEE802dot3ad
SNMP::Info::LLDP
SNMP::Info::Layer3
Exporter
/;
@SNMP::Info::Layer3::Cumulus::EXPORT_OK = qw/ agg_ports /;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.48';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::IEEE802dot3ad::MIBS,
'UCD-SNMP-MIB' => 'versionTag',
'NET-SNMP-TC' => 'netSnmpAgentOIDs',
'HOST-RESOURCES-MIB' => 'hrSystem',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'netsnmp_vers' => 'versionTag',
'hrSystemUptime' => 'hrSystemUptime',
'chassis' => 'entPhysicalDescr.1',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
sub vendor { return 'Cumulus Networks' }
sub os { return 'cumulus' }
sub os_ver {
my $netsnmp = shift;
my $descr = $netsnmp->description();
# STRING: "Cumulus Linux version 3.5.1 running on innotek GmbH VirtualBox"
return $1 if ( $descr =~ /^Cumulus Linux (\S+)\s+/ );
return;
}
sub model {
my $netsnmp = shift;
my $chassis = $netsnmp->chassis();
# STRING: "Cumulus Networks VX Chassis"
return $1 if ( $chassis =~ /^Cumulus Networks\s+(.+)/ );
return $netsnmp->SUPER::model();
}
# sysUptime gives us the time since the SNMP daemon has restarted,
# so return the system uptime since that's probably what the user
# wants. (Caution: this could cause trouble if using
# sysUptime-based discontinuity timers or other TimeStamp
# objects.
sub uptime {
my $netsnmp = shift;
my $uptime;
$uptime = $netsnmp->hrSystemUptime();
return $uptime if defined $uptime;
return $netsnmp->SUPER::uptime();
}
#sub i_ignore {
# my $l3 = shift;
# my $partial = shift;
#
# my $interfaces = $l3->interfaces($partial) || {};
#
# my %i_ignore;
# foreach my $if ( keys %$interfaces ) {
#
# # lo0 etc
# if ( $interfaces->{$if} =~ /\blo\d*\b/i ) {
# $i_ignore{$if}++;
# }
# }
# return \%i_ignore;
#}
sub agg_ports { return agg_ports_lag(@_) }
1;
__END__
=head1 NAME
SNMP::Info::Layer3::Cumulus - SNMP Interface to Cumulus Networks Devices
=head1 AUTHORS
Oliver Gorwits - based on Layer3::NetSNMP implementation
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $cumulus = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $cumulus->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Cumulus Networks devices
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=back
=head2 Required MIBs
=over
=item F<UCD-SNMP-MIB>
=item F<NET-SNMP-TC>
=item F<HOST-RESOURCES-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3> for its own MIB requirements.
See L<SNMP::Info::LLDP> for its own MIB requirements.
See L<SNMP::Info::IEEE802dot3ad> for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $cumulus->vendor()
Returns 'Cumulus Networks'.
=item $cumulus->os()
Returns 'cumulus'.
=item $cumulus->os_ver()
Returns the software version extracted from C<sysDescr>.
=item $cumulus->uptime()
Returns the system uptime instead of the agent uptime.
NOTE: discontinuity timers and other Time Stamp based objects
are based on agent uptime, so use orig_uptime().
=item $l3->model()
Returns the chassis type.
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP> for details.
=head2 Globals imported from SNMP::Info::IEEE802dot3ad
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=head1 TABLE ENTRIES
These are methods that return tables of information in the form of a reference
to a hash.
=cut
#=item $cumulus->i_ignore()
#
#Returns reference to hash. Increments value of IID if port is to be ignored.
#
#Ignores loopback
=head2 Overrides
=over
=item C<agg_ports>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP> for details.
=head2 Table Methods imported from SNMP::Info::IEEE802dot3ad
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=cut

View File

@@ -0,0 +1,213 @@
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.48';
%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__
=head1 NAME
SNMP::Info::Layer3::DLink - SNMP Interface to DLink Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $dlink = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $dlink->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Vyatta Devices running dlink.
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=item SNMP::Info::LLDP
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $dlink->model()
Returns the ID or else description.
=item $dlink->vendor()
Returns 'dlink'.
=item $dlink->serial()
Returns serial number.
=item $dlink->fwver()
Returns the firmware version.
=item $dlink->hwver()
Returns the hardware version.
=item $dlink->stp_i_root_port()
Returns the STP root port.
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head1 TABLE METHODS
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=cut

View File

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

View File

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

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