Compare commits

...

178 Commits
3.65 ... 3.83

Author SHA1 Message Date
Oliver Gorwits
ef2500dcc7 release 3.83 2022-07-04 16:33:01 +01:00
Oliver Gorwits
70379aaf6e add HW Group STE temp monitor class 2022-07-04 16:29:39 +01:00
Oliver Gorwits
4d471b38fb release 3.82 2022-03-16 17:32:41 +00:00
Alexander Hartmaier
895b8ed373 rename parse_cisco_bgp_peer2_peer2entry_index to parse_cisco_bgp_peer2_entry_index 2022-03-16 09:29:10 +01:00
Alexander Hartmaier
efb32ac10d add Cisco BGP MIB support to all Cisco Layer 3 devices (#451)
This also adds a munge_inetaddress function which can be used to parse a 
binary IP address as defined by the SNMP InetAddress type.
2022-03-14 21:37:27 +00:00
Oliver Gorwits
7f3028cbdb more tolerant of weird subname calls in autoload 2022-03-02 22:11:56 +00:00
Oliver Gorwits
1c1dbe6464 remove custom CPAN::Uploader 2021-11-14 19:37:12 +00:00
Oliver Gorwits
b98b68c718 avoid error on macOS(?) with netmask of 64 or 128 on v4 addr 2021-10-23 22:38:33 +01:00
Oliver Gorwits
f55edced32 release 3.81 2021-10-07 17:16:42 +01:00
Oliver Gorwits
0d7b482edd only substr if layers returns 2021-10-07 17:09:50 +01:00
Oliver Gorwits
933766120f fix sprintf to printf 2021-10-07 16:52:33 +01:00
nick n
fbfa2ec154 i/if_ignore cleanup (#377)
* does not have an i_ignore function, don't mention it in the docs

* these interfaces don't even exist on oneaccess

remove i_ignore, mark tests as complete now

* don't see a reason for a function, so remove it:

sub i_ignore {return;}
2021-10-07 13:19:32 +01:00
Oliver Gorwits
0e75c44cb8 #401 add DLink layers always 2+3 2021-10-07 12:01:02 +01:00
Oliver Gorwits
bce84023ca #374 undefined error from H3C class 2021-10-07 11:41:38 +01:00
Oliver Gorwits
a0cd7c57e2 #378 fix several uninitialized vars 2021-10-07 10:19:28 +01:00
Oliver Gorwits
d535cea7db #394 Recognise hyphenated cumulus version strings 2021-10-07 09:15:40 +01:00
Oliver Gorwits
21f3b2b199 #400 change IPv6 decode warning to be debug-only 2021-10-07 09:01:45 +01:00
nick n
9f12bcf676 trapeze and nws deep recursion fix (#443)
* trapeze serial deep recursion

* NWSS2300 has the same problem

* same workaround as trapeze

* return empty if not found
2021-10-07 08:52:45 +01:00
Oliver Gorwits
dd1688a587 Update release.yml 2021-09-27 10:14:51 +01:00
Oliver Gorwits
8c50ef81af Update test_and_publish.yml 2021-09-27 10:14:38 +01:00
Oliver Gorwits
8b753c83af Update release.yml 2021-09-27 10:09:09 +01:00
Oliver Gorwits
7e3300552d if: github.repository == ‘netdisco/snmp-info’ 2021-09-27 10:08:54 +01:00
Oliver Gorwits
a3be7337bb if: github.repository == ‘netdisco/netdisco’ 2021-09-27 10:08:04 +01:00
Oliver Gorwits
1bf87a4cb2 release 3.80 2021-09-22 22:40:21 +01:00
Oliver Gorwits
d4269ad79b fix test for Layer3::Cisco.pm 2021-09-22 22:33:59 +01:00
Oliver Gorwits
807cd20da0 release 3.79 2021-09-22 22:14:43 +01:00
Oliver Gorwits
23a247c048 change default class for Cisco from Layer3::Cisco to Layer3::CiscoSwitch 2021-09-22 22:13:38 +01:00
Ambroise
2b3674dcae Add support for Riverbed SteelheadEx and Steelfusion (#438)
* Retrieve Serial Number and device type for CheckPoint devices at right place in MIB

* Add support for SteelheadEx and Steelfusion

* Update Info.pm

* fix tests

Co-authored-by: Oliver Gorwits <ollyg@users.noreply.github.com>
Co-authored-by: Oliver Gorwits <oliver@cpan.org>
2021-09-21 15:51:10 +01:00
Oliver Gorwits
86e120ea5f do not squawk to irc on pull_request test failure 2021-09-21 15:50:37 +01:00
Oliver Gorwits
48725546a2 fix error in pull_request event spec 2021-09-21 09:07:50 +01:00
Florian Schlichting
4731bbfe2f Fix typo in Whiterabbit.pm (#439) 2021-09-21 05:17:27 +02:00
nick n
6dc369efbc add link aggregation for fortios (#437)
* lag support for fortigate

* a few more tests

* mention fortinet lag
2021-09-12 21:01:11 +02:00
Oliver Gorwits
afc8eefaf1 release 3.78 2021-09-09 06:15:52 +01:00
Oliver Gorwits
d8a532febe Fix undefined value error in Bridge.pm i_vlan 2021-09-08 20:23:13 +01:00
Oliver Gorwits
fe39d38897 release 3.77 2021-09-04 06:28:03 +01:00
Oliver Gorwits
44cb254ee0 release 3.76 2021-09-03 21:10:54 +01:00
Oliver Gorwits
72d6d87bf9 working around flaky ruckus kit 2021-09-03 21:07:52 +01:00
Oliver Gorwits
81b8082fd4 release 3.75 2021-09-02 20:41:43 +01:00
Oliver Gorwits
948d96ed28 remove weird char breaking test 2021-09-02 19:57:13 +01:00
Oliver Gorwits
765a6417b2 set_i_vlan support for Ruckus/Brocade/Foundry 2021-09-02 19:04:33 +01:00
Oliver Gorwits
5a895a09ca release 3.74 2021-08-24 12:29:56 +01:00
Christoph Handel
2773594274 CH: patch H3C broken node-vlan mapping (#416)
* CH: patch H3C broken node-vlan mapping

see https://github.com/netdisco/snmp-info/issues/218

--+ qb_fw_vlan

qb_fw_vlan is called to figure out in which vlan a mac is located.

fetch qb_fw_port. This is a hash

  fdb_id.mac => fdb_port

for each key split of fdb_id

try to look it up in qb_fdb_ids to translate it to vlan
otherwise use it directly as vlan.

--+ qb_fw_port

qb_fw_port fetchs snmp dot1qTpFdbPort, oid 1.3.6.1.2.1.17.7.1.2.2.1.2

This snmp table returns

  fdb_id.mac => fdb_port

as an example data fetched from a HP switch (Layer2::HP)

  SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.3.52.20.95.80.231.59 = INTEGER: 9

fdb_id: 3
mac: 34:14:5f:50:e7:3b
fdb_port: 9
and an expample for a H3C (Layer3::H3C)

  SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.1.0.17.17.117.83.217 = INTEGER: 891

fdb_id: 1
mac: 0:11:11:75:53:d9
fdb_port: 891

snmp looks got. Verified with netdisco

/opt/netdisco/bin/netdisco-do show -d <SWITCH> -e Layer3::H3C::qb_fw_port
/opt/netdisco/bin/netdisco-do show -d <SWITCH> -e Layer2::HP::qb_fw_port

result looks good.

--+ qb_fdb_index

qb_fdb_index fetches snmp dot1qVlanFdbId which is oid 1.3.6.1.2.1.17.7.1.4.2.1.3

This snmp table returns

  timestamp.vlan => fdb_id

netdisco will strip the timestamp and build a hash

  fdb_id => vlan

for a HP switch i get snmp data

  SNMPv2-SMI::mib-2.17.7.1.4.2.1.3.0.64 = Gauge32: 6

vlan: 64
fdb_id: 6
for a H3C i get

  SNMPv2-SMI::mib-2.17.7.1.4.2.1.3.3330.64 = Gauge32: 1

vlan: 64
fdb_id: 1

and there are the issues.

not all vlans are listed
every line has fdb_id 1
as in all H3C switches i checked, the fdb_id is equal to the vlan i patched out
qb_fdb_index to return an empty hash.

* CH: H3C fix pod caverage test

Co-authored-by: Christoph Handel <c.handel@gsi.de>
2021-08-23 22:27:42 +01:00
Oliver Gorwits
846bb46e33 fix version 2021-08-23 16:22:45 +01:00
Oliver Gorwits
33d69e8dea Merge branch 'master' of github.com:netdisco/snmp-info 2021-08-23 16:20:44 +01:00
Oliver Gorwits
bbf5a5a570 also test on PR 2021-08-23 16:20:33 +01:00
Christoph Handel
651169f726 Whiterabbit (#417)
* CH: add white rabbit

* CH: .

* CH: better version field

* CH: whiterabbit fix version and pod documentation

* fix mib links

and a few wihtespace cleanups

* map enterprises.96

map enterprises.96 to whiterabbit.

this is the id of cern, only layer3::whiterabbit uses it

* removed inherited modules

remove modules that get pulled in via snmp::info::layer3
use SNMP::Info::LLDP;
use SNMP::Info::Bridge;

remove module that doesn't seems to be used
use Socket;

Co-authored-by: Christoph Handel <c.handel@gsi.de>
Co-authored-by: nick n <39005454+inphobia@users.noreply.github.com>
2021-08-23 16:13:28 +01:00
Jeroen van Ingen Schenau
9b8dc0916c Support PVID (vlan) change on Arista (#432) 2021-08-23 16:08:17 +01:00
Oliver Gorwits
f7ca5dfde2 github action: fix version format 2021-08-23 16:02:42 +01:00
Oliver Gorwits
80b88fbbb4 github action: update for latest ways from netdisco 2021-08-23 15:58:40 +01:00
Oliver Gorwits
98281e7df6 Update runtests.yml 2021-08-19 10:45:04 +01:00
Oliver Gorwits
470aca5c68 annoying typo 2021-08-18 20:35:13 +01:00
Oliver Gorwits
8f0183eeb8 add cpan upload to release 2021-08-18 20:30:23 +01:00
Oliver Gorwits
b5d88076a8 add release for SNMP::Info why not 2021-08-18 08:33:45 +01:00
Oliver Gorwits
56ceb86f97 Delete .travis.yml.disabled 2021-08-17 13:42:24 +01:00
Oliver Gorwits
abbc3d4a63 Update runtests.yml 2021-08-17 12:23:18 +01:00
Oliver Gorwits
d0609781e8 Update runtests.yml 2021-08-17 12:20:11 +01:00
Oliver Gorwits
2ff3021eae Update runtests.yml 2021-08-17 12:03:17 +01:00
Oliver Gorwits
31c286ca57 add github action to replace travis testing 2021-08-17 11:59:42 +01:00
nick n
dd982373a7 fix tests (#428)
* add arubacx, replace unicode backtick

* fix pod

* remove undef, is implicit in scalar context. fixes tests

* mention IEEE802_Bridge
2021-07-06 21:49:50 +02:00
Oliver Gorwits
42d3df0e9c release 3.73 2021-06-28 15:13:17 +01:00
Oliver Gorwits
774339e98f release 3.72 2021-06-28 08:38:06 +01:00
nick n
b0c1c7e2a7 CiscoPower, not Power 2021-06-27 07:08:49 +02:00
nick n
36f882d916 add bridge again
should fix netdisco#708
2021-06-18 04:36:41 +02:00
Jeroen van Ingen Schenau
b1225583cd Merge pull request #422 from netdisco/jvi-aoscx
Aruba CX support
2021-06-17 10:14:45 +02:00
nick n
b491a6921c remove non breaking space (#424)
only changed in comments.
2021-06-17 02:57:15 +02:00
nick n
63fedc6a41 mention ieee802_bridge in info.pm (#425)
* add ieee802_bridge to info.pm, fixes tests

* aerohive comes before airespace
2021-06-17 02:56:29 +02:00
nick n
aefd0364fb move to libera chat 2021-06-15 07:57:19 +02:00
Jeroen van Ingen
3ae7073198 Small Bridge.pm fix
This change will make sure that the internal _vlan_hoa() function will strip
any additional index levels that may be present in input data. Not only applies
to Q-BRIDGE-MIB tables with a TimeFilter index, but also to tables where part
of the data comes from IEEE8021-Q-BRIDGE-MIB with both TimeFilter and PBB ID.
2021-06-11 15:15:01 +02:00
Jeroen van Ingen
9c306812f9 Add support for Aruba CX switches 2021-06-11 15:15:01 +02:00
Jeroen van Ingen
3790a2fcb2 Add IEEE802_Bridge module
Initial version of module to fetch data from IEEE8021-Q-BRIDGE-MIB
2021-06-11 13:21:39 +02:00
nick n
0b86645a63 aerohive version support higher as 9 (#421)
* allow aerohive hiveos version numbers above 9
* aerohive is now owned by extreme
2021-06-04 18:38:13 +02:00
nick n
fa206be639 libera irc 2021-05-28 02:21:31 +02:00
nick n
350ee49293 libera irc 2021-05-28 02:21:05 +02:00
nick n
210d4d48a7 libera irc 2021-05-28 02:16:08 +02:00
nick n
ad8224bcec aerohive, not aironet
typos
2021-05-12 05:51:02 +02:00
nick n
9943dff277 mention #403 2021-04-29 09:20:51 +02:00
nick n
bf0b7d989f dont flip between dell and aruba
should fix #403
2021-04-29 09:18:27 +02:00
nick n
6ec90b3b9b sort a few things 2021-04-29 07:57:20 +02:00
nick n
2a2214a0ac ignore .vscode directory (#418) 2021-03-13 17:36:12 +01:00
Oliver Gorwits
31b231804f release 3.71 2020-11-27 09:46:24 +00:00
Jeroen van Ingen Schenau
a4c66663c1 Don't add AUTOLOAD generated methods in symbol table (#409) (#410)
When a method is resolved via AUTOLOAD (eg for objects defined in %FUNCS),
adding the method to the symbol table leads to skipping AUTOLOAD on subsequent
calls to the method. The method table however is global to the interpreter,
so even when a new SNMP::Info instance is created for a different device, all
methods created by a previous device are just "carried over" to the new one
if they are put into the symbol table. This breaks a method like "v_name",
which may resolve differently in different device classes, in the use case
where devices from different classes are polled one after another (even if
new SNMP::Info object instances are used every time).
2020-11-18 11:36:13 +00:00
nick n
b9e054093a a few things that got imported or fixed 2020-11-15 21:19:24 +01:00
nick n
1c7320ce1e some doc cleanup in ubiquiti (#411) 2020-11-15 20:04:41 +01:00
LBegnaud
50841b5109 UBNT adjustments - Add ER-12 (#398)
merging this for now so we don't forget about this, but ubiquiti seems to have expanded into switches & routers as well.
so in the future this class will either needs to be expanded or split into different ones (wifi/switch/router).


* Clean up EdgeOS and EdgeSwitch verion reporting

* Fixes EdgeOS hotfix versioning

* Also clean up AirOS firmware

* Support ER-12

* lowercase vendorname
2020-11-15 18:35:49 +01:00
nick n
babbbb4e57 clean scalance
a few typos
info::bridge & info::lldp get pulled in via info::layer3
use Socket could be dropped in favor of resolve_desthost(), but needs testing.

(not tested waiting for what travis says)
2020-11-14 20:13:47 +01:00
nick n
e2544129bc nxos6 lldp fixes 2020-10-28 11:56:03 +01:00
nick n
39b5b3af9f lldp fix for nxos6 #372 (#375)
* first part of fix for #372

makes lldp stop using lldpLocPortDesc directly but maps it to a function

start framework to allow nexus.pm to overwrite that function for nx-os6

* second part of fix for #372

make nx-os 6 return lldpLocPortId for lldp_lport_desc

* munge_null and whitespace nits
2020-10-28 11:54:25 +01:00
Jeroen van Ingen Schenau
a263f54744 Add initial support for Teltonika RUT9xx routers (#386)
Note that Teltonika routers run the net-snmp agent and can present the net-snmp enterprise ID; if so, configure the following through the router CLI to be identified as Teltonika and to be picked up by this device class:

uci set snmpd.@system[0].sysObjectID=.1.3.6.1.4.1.48690
uci commit
ubus call uci commit '{"config":"snmpd"}'
2020-10-28 09:00:18 +01:00
nick n
543072ca25 update manpage
after reading netdisco/netdisco#693 and checking the code it seems layers() does not return l2 support.

while here add required mibs and move layers() manpage to globals, not table entries
2020-01-27 22:36:16 +01:00
nick n
39356d72b4 typo 2019-11-04 02:04:59 +01:00
nick n
e013ac3a20 whitespace nitpicking
ocd kickin in...
2019-11-03 19:06:35 +01:00
nick n
a85c7a0404 typos 2019-10-17 05:27:58 +02:00
Oliver Gorwits
4852ed4668 release 3.70 2019-10-15 18:43:39 +01:00
Oliver Gorwits
d36fce44d0 release 3.69 2019-10-15 18:36:59 +01:00
Christian Ramseyer
60e63ac9cc Proposal to fix #370 (#371) 2019-10-15 18:29:16 +01:00
pyro3d
a97c48546c Support for DOCSIS Cable Modems (#368) 2019-10-15 18:28:32 +01:00
nick n
dd96147712 use latest mibs release instead of hardcoding version tag (#367) 2019-10-15 18:27:37 +01:00
nick n
912bf62e9b can't reach these returns (#363) 2019-10-15 18:27:06 +01:00
Christoph Handel
0791b7cccb Support Siemens Scalance Switch (#361) 2019-10-15 18:26:49 +01:00
pyro3d
78c194faee Layer3::Ciena class (#365)
Implement Ciena class
2019-10-02 13:24:36 -07:00
nick n
9d00126c83 use mibs 4.018 2019-10-02 21:03:01 +02:00
nick n
6fa54dd4db checkpoint cosmetic and doc changes (#366)
return lowercase vendor

update test

document changes in the manual

snmp.conf is most likely specific to ipso based devices?
2019-10-02 20:54:28 +02:00
nick n
eb6420125e prefer checkpoint mibs (#358) 2019-10-02 20:02:52 +02:00
Ambroise
51be2d5dc5 Retrieve Serial Number and device type for CheckPoint (#358)
* Retrieve Serial Number and device type for CheckPoint devices at right place in MIB

* Retrieve Serial Number and device type for CheckPoint

* Retrieve Serial Number and device type for CheckPoint

* Test not correct with cache data
2019-10-02 19:48:56 +02:00
nick n
762a01e619 ios- xe codename detection 2019-10-02 18:41:52 +02:00
Christoph Neuhaus
f0fb351137 detect ios-xe versions which use codenames (#359)
* Cisco is using codenames for ios-xe > 16.x
Example description:
Cisco IOS Software [Everest], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.6.6, RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport  Copyright (c) 1986-2019 by Cisco Systems, Inc.  Compiled Thu 11-Apr-19 02:24

* Gibraltar Codename added
2019-10-02 18:40:38 +02:00
nick n
6d39026616 netdisco-mibs has been updated to 4.017 2019-09-26 01:17:04 +02:00
nick n
723f8ea744 pulse secure os_ver fix 2019-09-26 01:16:08 +02:00
nick n
f941f432e9 remove trailing newline from os_ver, fixes netdisco #647 (#364)
* remove trailing newline from os_ver, fixes netdisco #647

* note why the newline is in the test

* also update tests

* typo
2019-09-26 00:58:16 +02:00
nick n
631f99f97b typo 2019-09-04 01:11:28 +02:00
nick n
1840089789 poe power usage & mac address for ciscosb (#357) 2019-08-31 10:52:16 +02:00
nick n
36029e38a7 we want info
draw more attention to the fact that we really like you to fill out everything we ask for if possible
2019-08-28 22:44:49 +02:00
nick n
3abffc4d59 fix cdp_port when returned value is exactly 6 chars (#355)
* revert fix 2 of commit 78119d6, breaks devices that report a port name
6 chars long
* and remove test case for the "packed mac" special case
* and mention cdp fix in changelog

ran this for over 2 months and did not have any regressions on my gear.
2019-08-27 22:44:26 +02:00
nick n
0f01c6c07c i don't think layer2 is needed, layer3 alrdy has all the same includes (#354)
and no layer2 specific functions that are not overwritten are used.

also, os name -> lowercase
mention 1 more used mib
2019-08-26 14:37:15 +02:00
nick n
68b001105d ubiquiti version cleanup 2019-08-26 13:53:14 +02:00
nick n
d459dd7f8c fix engrish
aka: typos
2019-08-26 13:50:36 +02:00
nick n
75a00fabe9 also added use warnings and strict
also fixed all reported errors by these, but work is still needed.

stuff like

sub thingy {
        my $thing = shift;
        my $stuff = $thing->os_ver();
        if ($stuff =~ /check/) {

-> newer perls (or perhaps just my config somehow) seems to prefer

        if ((defined $stuff) && ($stuff =~ /check/)) {

instead.

or perhaps i just don't understand autoloader magic & return type nuances.
2019-08-26 13:48:50 +02:00
nick n
091a3692e3 mentioned doc cleanup 2019-08-26 13:26:52 +02:00
nick n
3bcc522590 documentation overhaul (#353)
* ident
* remove $Id$ tags from rcs software which has been retired
* make an effort to sync required mib docs with actual code
* sync even more docs with what code actually does
* some whitespace nits
* fixup example to use snmpv2 for all but the most ancient devices
* remove blurb to find more specific snmp::info classes for classes
  which alrdy are as specific as they can get (eg snmp::info::layer3::vmware
  doesn't need info on to find a specific module since there ain't none)
* rename all sub {vendor} strings to lowercase vendor, if cisco, juniper
  and arista can be lowercase, so can be all the rest.
* fix tests
* spread some use warnings around
* use $ instead of @
* remove defines that are included via parent classes
* use strict + warnings
* remove alrdy included modules
* add comma after last list item
* typos
* mibs are found in our mib repo, not on the cisco site
* documentation fixes
2019-08-25 06:47:10 +02:00
LBegnaud
6c8d39d746 UBNT EdgeMax version reporting (#350)
* Clean up EdgeOS and EdgeSwitch verion reporting

* Fixes EdgeOS hotfix versioning

* Also clean up AirOS firmware
2019-08-25 06:35:23 +02:00
nick n
b6720a2b43 duplex support for ciscosb (#352) 2019-08-18 01:50:34 +02:00
nick n
6753b795b9 use older container for perl 5.10 2019-08-17 22:39:18 +02:00
nick n
cefbcce8e3 also uses IEEE802dot3ad mibs 2019-06-19 18:01:01 +02:00
nick n
910c5420e3 yaml withspace matters
mention markdown syntax on how to best represent withespace.
2019-06-16 05:24:25 +02:00
nick n
02c8ed0764 update mib doc
code says we want these 6 mibs. i trust the code.
2019-06-07 22:47:33 +02:00
nick n
fda13addf0 fix travis (#341)
add hook::lexwrap to testdeps (#341)
also use #!/usr/bin/env perl instead of #!/usr/bin/perl


can't see a related change to perl5.30 that could cause this however
2019-05-30 04:54:27 +02:00
nick n
211a06dbf1 perl 5.30
update travis
2019-05-30 04:07:32 +02:00
nick n
e886190e8e mib update
remove double defined FOUNDRY-SN-SWITCH-GROUP-MIB in code & docs
add BROCADE-PRODUCTS-MIB to docs as referenced in code
2019-05-22 02:41:51 +02:00
nick n
8b3a1fd357 typo 2019-05-04 04:41:30 +02:00
nick n
e7adf92b59 intellij exclusion support (#336)
having a go at intellij + perl support & cygwin. working surprisingly well.

exclude it's project configuration files. also fix 3 typos found when getting this to work.
2019-05-02 05:07:53 +02:00
nick n
7de14a2bd9 move testing targets to perl 5.10 and 5.28 2019-05-01 04:19:30 +02:00
nick n
f37225ee9a using my $b is not best practice
also update some manual statements while here
2019-05-01 04:17:58 +02:00
nick n
52f9042ef0 test a few more perl versions
test a few common perl version, namely 5.14, 5.20 & 5.26
2019-04-30 17:10:02 +02:00
Oliver Gorwits
d38ef69120 release 3.68 2019-04-28 20:01:52 +01:00
Oliver Gorwits
6341ad15f8 #330 fix redefine of port variable 2019-04-28 19:56:39 +01:00
Oliver Gorwits
f3f01d5f15 Merge branch 'master' of github.com:netdisco/snmp-info 2019-04-28 19:54:58 +01:00
Oliver Gorwits
23d11551c6 #332 fix undef error when debug on $info 2019-04-28 19:54:51 +01:00
nick n
73b63c8379 redlion cellular router (sn / ram series) support (#333) 2019-04-28 19:53:17 +01:00
Oliver Gorwits
2652998aba make the snmplabs test only run when AUTHOR_TESTING is set 2019-04-28 19:52:59 +01:00
nick n
254bfd11a3 typo in link
seems you need to prepend a slash to reference in the current pod.
2019-04-26 20:09:38 +02:00
nick n
2c61248016 mention CISCO-CONTEXT-MAPPING-MIB 2019-04-26 17:24:41 +02:00
nick n
45e56b332e lowercase vendor
just like all other snmp::info modules

use "vmware" instead of "VMware"
2019-04-26 17:21:19 +02:00
nick n
8003691e64 vendor is arista
not arista networks, inc. as it was way back in 3.06
2019-04-26 17:09:30 +02:00
nick n
25b1801fe4 update docs for serial() 2019-04-24 19:22:48 +02:00
nick n
737bb252a7 layer7::neoteris update for netdisco-mibs#80 (#328)
* use PULSESECURE-PSG-MIB in layer7::neoteris, also add model() function & remove neoteris fixup from layer7. tests updated.

* will need new mibs release
2019-04-24 13:21:33 +01:00
Ambroise
14e0aa0952 Netscaler serial number (#329)
Recover Netscaler serial number from the MIB.
2019-04-23 14:47:29 +01:00
nick n
e7d83a5918 typos 2019-04-22 00:32:35 +02:00
Oliver Gorwits
bfbb2fb2ab release 3.67 2019-04-20 12:01:59 +01:00
Oliver Gorwits
c8f686b7aa #294 snmp::info should show full class used 2019-04-20 11:28:48 +01:00
Oliver Gorwits
77fa064db5 #297 perl 5.28 removal of "use vars"
also adds pod for Layer3::DLink::interfaces
2019-04-20 10:32:24 +01:00
Oliver Gorwits
6b70ccfd79 #297 perl 5.28 removal of "use vars" 2019-04-20 10:20:10 +01:00
Oliver Gorwits
9b1995e90f #306 fix incorrect interfaces for d-link 2019-04-20 09:42:43 +01:00
Oliver Gorwits
75785f70c7 #321 clean interface descriptions of null and trailing space 2019-04-20 09:28:06 +01:00
Oliver Gorwits
ea9ad92cc4 #320 improve duplicate interfaces() fixup
1. sorts the interfaces as they are processed to make A/B testing easier
2. adds the interface index to the original when a duplicate is seen
3. there may be other de-duplication code in vendor modules, untouched
2019-04-20 09:07:14 +01:00
Oliver Gorwits
ad8762a7c4 Merge branch 'master' of github.com:netdisco/snmp-info 2019-04-20 07:47:50 +01:00
Oliver Gorwits
c73bc0ca2c #325 lazy load legacy RFC1213-MIB only if needed 2019-04-20 07:46:18 +01:00
nick n
07de5e53e3 make podchecker happy 2019-04-20 08:38:14 +02:00
Oliver Gorwits
141812bf4d add v3 Context update() tests for net-snmp 5.8+ 2019-04-20 07:36:17 +01:00
nick n
2308826147 full fix for aerohive tests (#327)
* full fix for aerohive tests
2019-04-20 08:35:18 +02:00
Oliver Gorwits
01fa098078 support debug via env vars (same as netdisco) 2019-04-20 07:14:12 +01:00
nick n
167cc2f3fa docsis (#326)
update meta
2019-04-20 08:02:02 +02:00
nick n
ea53f79bb8 3.66 2019-04-20 07:54:45 +02:00
pyro3d
4b75ef1889 Add DOCSIS head end support (#317)
* Add DOCSIS CMTS support for cable modem discovery

* Remove whitespace and update pod
2019-04-20 06:46:33 +01:00
nick n
c4ce6a2062 clean up exinda and add regression test (#324)
* simplify and clean up exinda code. perhaps mac handling should be done in a munge routine

* added exinda regression tests
2019-04-16 03:10:10 +02:00
nick n
9e4e0e3510 alphabetize
::ipv6 after ::ieee802dot3ad, not before
2019-04-15 23:08:00 +02:00
nick n
c0228965f4 explain why we overwrite layers
noticed when writing some tests
2019-04-15 23:05:09 +02:00
nick n
0896bd881c lenovo / cnos os support (#323)
while it's not yet complete is already is quite functional.
things like vlan, lldp, connected nodes, etc all work
test coverage also included.

features to be added:
link aggregation master/slave (some strange difference with standard 802.3ad i think)
spanning tree will most likely work too
fan/psu status
modules / entity-mib seems to be strangly formatted
2019-04-15 22:47:03 +02:00
nick n
42395d49fd fix regression test for aerohive (#322) 2019-04-14 22:27:40 +02:00
nick n
e08d22d51c flush cache in bp_index
netdisco/netdisco#496 has more background on the issue.

somewhere incorrect data is returned for bp_index mappings when running macsuck, but i cannot reproduce this when using snmp::info directly.

forcing i_index to reload works around the issue, performance impact is minimal.
2019-04-14 21:10:26 +02:00
nick n
f0b429039e make fortinet return a useful interface name. (#319)
* make fortinet return a useful interface name.

also fixes missing interface issue due to being unable to map the port
'interfaces - ignoring 54 (no port mapping)'
2019-04-01 19:32:40 +02:00
Oliver Gorwits
d63baa2473 Update .travis.yml 2019-03-28 22:15:18 +00:00
Oliver Gorwits
e8b4acbee6 release 3.66 2019-03-24 09:43:31 +00:00
nick n
b4734ea607 some files were missing eol at the end 2019-03-24 04:16:24 +01:00
nick n
6698b049a4 whitespace
githubs online editor autoidents, remove unneeded whitespace
2019-03-24 03:07:36 +01:00
nick n
68861fabfb get started for 3.66 2019-03-24 01:59:25 +01:00
pyro3d
d93e3ab1b6 Add IS-IS support (#316)
* Add ISIS support
* some doc fixups
mention isis-mib, use level so to not be confused with layer.
2019-03-19 06:55:38 +01:00
Oliver Gorwits
bfd71b5add use Alien::SNMP 2019-03-12 12:24:39 +00:00
nick n
9c8e8fa4e0 update MRO usage
at least with my perl 5.26.1 and Data::Printer 0.40 you can't pass subroutines to p().

seems useful info for the wiki, will draft up a page nxt week.
2019-03-03 02:38:11 +01:00
212 changed files with 6875 additions and 2203 deletions

View File

@@ -1,5 +1,20 @@
<!--- Provide a general summary of the issue in the Title above -->
<!--- https://guides.github.com/features/mastering-markdown/#examples -->
<!---
READ THIS FIRST!
----------------
the more info you can provide, the easier it is for us the help you, so please
fill out as many of the items below as possible.
Provide a general summary of the issue in the Title above
when including netdisco config snippets, whitespace matters since it's a yaml file
for github issues it really helps if you include the relevant config parts in a codeblock (code fencing)
see the "code" subject on https://guides.github.com/features/mastering-markdown/ for that)
this should preserve spaces in the issue tracker and make troubleshooting quicker
-->
## Expected Behavior
<!--- If you're describing a bug, tell us what should happen -->

19
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: GitHub Release on Tag
on:
push:
tags:
- '[0-9].[0-9][0-9]'
jobs:
release_snmp_info:
if: github.repository == 'netdisco/snmp-info'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Get the Tag
id: get_tag
run: echo ::set-output name=TAGVALUE::${GITHUB_REF#refs/tags/}
- name: Release
uses: softprops/action-gh-release@v1
with:
name: SNMP::Info ${{ steps.get_tag.outputs.TAGVALUE }}

122
.github/workflows/test_and_publish.yml vendored Normal file
View File

@@ -0,0 +1,122 @@
name: Test and Publish SNMP::Info
on:
workflow_dispatch:
inputs:
success_irc_squawk:
description: 'Squawk to IRC on successful tests'
required: false
default: false
debug_test_enabled:
description: 'With build and test debug'
required: false
default: false
push:
branches:
- master
tags:
- '[0-9].[0-9][0-9]'
pull_request:
types: [opened, synchronize, reopened]
jobs:
test_snmp_info:
name: Test and CPAN Upload
if: github.repository == 'netdisco/snmp-info'
runs-on: ubuntu-latest
container:
image: 'netdisco/netdisco:latest-do'
options: '--user root --entrypoint /bin/ash'
volumes:
- '/home/runner/work:/github/workspace'
defaults:
run:
working-directory: /github/workspace/snmp-info/snmp-info
steps:
- name: Get the Tag or Branch
run: echo "GH_REF_SHORT=$(echo ${GITHUB_REF##*/})" >> $GITHUB_ENV
- name: Install packages
run: apk add openssh xz tmux bash curl sudo gcc make musl-dev perl-dev unzip jq
- name: Install fake apt-get
run: echo 'if [ "$1" == "update" ]; then exec apk update; else exec apk add openssh xz; fi' > /usr/local/bin/apt-get && chmod +x /usr/local/bin/apt-get
- name: Check out latest code
uses: actions/checkout@v1
- name: Fix owner of checkout
run: chown -R netdisco:netdisco /github/workspace/snmp-info/snmp-info
- name: Install Perl deps
run: |
sudo -u netdisco /home/netdisco/bin/localenv cpanm --notest Hook::LexWrap Test::Class::Most Test::Distribution Test::MockObject::Extends PPI Class::ISA Module::Info File::Slurp Test::Perl::Critic Test::Spelling CPAN::Uploader
- name: Run Tests
id: build_and_run_tests
run: |
sudo -u netdisco /home/netdisco/bin/localenv perl ./Build.PL
sudo -u netdisco /home/netdisco/bin/localenv ./Build test --test_files t/ --test_files xt/
continue-on-error: true
- name: IRC test failure notification
if: (steps.build_and_run_tests.outcome == 'failure') && (github.event_name != 'workflow_dispatch') && (github.event_name != 'pull_request')
uses: Gottox/irc-message-action@v2
with:
channel: '#netdisco'
nickname: github-actions
message: |-
🤖 ${{ github.actor }} pushed to ${{ env.GH_REF_SHORT }}: https://github.com/${{ github.repository }}/commit/${{ github.sha }}
😭 TESTS have FAILED! 👀 https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
- name: IRC test success notification
if: (steps.build_and_run_tests.outcome == 'success') && github.event.inputs.success_irc_squawk
uses: Gottox/irc-message-action@v2
with:
channel: '#netdisco'
nickname: github-actions
message: |-
🤖 ${{ github.actor }} pushed to ${{ env.GH_REF_SHORT }}: https://github.com/${{ github.repository }}/commit/${{ github.sha }} (tests PASSED 🎉)
- name: Make release
if: steps.build_and_run_tests.outcome == 'success'
run: |
sudo -u netdisco /home/netdisco/bin/localenv rm ./MANIFEST
sudo -u netdisco /home/netdisco/bin/localenv ./Build manifest
sudo -u netdisco /home/netdisco/bin/localenv ./Build distmeta
sudo -u netdisco /home/netdisco/bin/localenv ./Build dist
- name: Upload to CPAN
id: upload_to_cpan
if: success() && startsWith(github.ref, 'refs/tags/')
env:
PAUSE_USERNAME: ${{ secrets.PAUSE_USERNAME }}
PAUSE_PASSWORD: ${{ secrets.PAUSE_PASSWORD }}
run: |
bash -c 'RELEASENAME=(SNMP-Info-*.tar.gz) && ! curl -LI --fail https://cpan.metacpan.org/authors/id/O/OL/OLIVER/${RELEASENAME}'
sudo -u netdisco /home/netdisco/bin/localenv cpan-upload -u '${{ env.PAUSE_USERNAME }}' -p '${{ env.PAUSE_PASSWORD }}' SNMP-Info-*.tar.gz
continue-on-error: true
- name: IRC upload failure notification
if: steps.upload_to_cpan.outcome == 'failure'
uses: Gottox/irc-message-action@v2
with:
channel: '#netdisco'
nickname: github-actions
message: |-
🤖 Failed to upload SNMP::Info release ${{ env.GH_REF_SHORT }} to CPAN! 😭
👀 https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
- name: IRC upload success notification
if: steps.upload_to_cpan.outcome == 'success'
uses: Gottox/irc-message-action@v2
with:
channel: '#netdisco'
nickname: github-actions
message: |-
🤖 Uploaded SNMP::Info release ${{ env.GH_REF_SHORT }} to CPAN 🎉
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: always() && github.event.inputs.debug_test_enabled
with:
sudo: true
- name: Preserve status from tests
if: always() && (steps.build_and_run_tests.outcome == 'failure')
run: exit 1

2
.gitignore vendored
View File

@@ -10,3 +10,5 @@ Build
_build
blib
cover_db
.idea
.vscode

View File

@@ -1,34 +0,0 @@
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://github.com/netdisco/netdisco-mibs/releases/download/4.014/netdisco-mibs.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: always
on_failure: always
channels:
- 'chat.freenode.net#netdisco'
email:
on_success: always
on_failure: always
recipients:
- 'snmp-info-cvs@lists.sourceforge.net'

View File

@@ -6,13 +6,13 @@ Module::Build->new(
module_name => 'SNMP::Info',
license => 'bsd',
dist_author => 'Eric A. Miller <emiller@cpan.org>',
# dynamic_config => 1,
# dynamic_config => 1,
create_readme => 1,
configure_requires => {
'Module::Build' => '0.42',
},
# build_requires => {
# },
# build_requires => {
# },
requires => {
'SNMP' => '0',
'Math::BigInt' => '0',
@@ -37,17 +37,18 @@ Module::Build->new(
'Class::Inspector' => '0',
'NetSNMP::default_store' => '0',
'Module::Find' => '0',
'Hook::LexWrap' => '0',
},
# script_files => [
# ],
# share_dir => 'share',
# 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',
IRC => 'irc://irc.libera.chat/#netdisco',
},
},
)->create_build_script;

175
Changes
View File

@@ -1,3 +1,172 @@
Version 3.82 (2022-03-16)
[NEW FEATURES]
* add Cisco BGP MIB support to all Cisco Layer 3 devices
Version 3.81 (2021-10-07)
[ENHANCEMENTS]
* #400 change IPv6 decode warning to be debug-only
* #394 Recognise hyphenated cumulus version strings
* #401 add DLink layers always 2+3
* #377 i/if_ignore cleanup
[BUG FIXES]
* #443 trapeze and nws deep recursion fix
* #378 fix several uninitialized vars
* #374 undefined error from H3C class
Version 3.80 (2021-09-22)
[NEW FEATURES]
* layer3::fortinet now supports link aggregation mapping
* Add support for Riverbed SteelheadEx and Steelfusion (#438)
[ENHANCEMENTS]
* change default class for Cisco from Layer3::Cisco to Layer3::CiscoSwitch
[BUG FIXES]
* Fix typo in Whiterabbit.pm (#439)
Version 3.78 (2021-09-08)
[BUG FIXES]
* Fix undefined value error in Bridge.pm i_vlan
Version 3.77 (2021-09-04)
[ENHANCEMENTS]
* set_i_vlan support for Ruckus/Brocade/Foundry
Version 3.74 (2021-08-24)
[NEW FEATURES]
* Support changing PVID on Arista switches (#429)
* Support for Whiterabbit devices
[ENHANCEMENTS]
* Patch H3C broken node-vlan mapping
Version 3.73 (2021-06-28)
[BUG FIXES]
* fix packaging error
Version 3.72 (2021-06-28)
[NEW FEATURES]
* Support for Aruba CX switches
* IEEE802_Bridge module
[BUG FIXES]
* #403 don't use layer3::dell for layer3::aruba devices
* layer2::aerohive supports version numbers above 9
Version 3.71 (2020-11-27)
[NEW FEATURES]
* #386 Teltonika RUT9XX support (jeroenvis)
[ENHANCEMENTS]
* #398, 411 more ubiquiti cleanup and support for er-12 (lbegnaud & inphobia)
[BUG FIXES]
* #409, 410 Don't add AUTOLOAD generated methods in symbol table
* #372, 375 fix lldp on nx-os6 (inphobia)
Version 3.70 (2019-10-15)
[NEW FEATURES]
* #361 Siemens Scalance switch support
* #365 Ciena Layer3 support
* #368 DOCSIS cable modem support
[ENHANCEMENTS]
* #350 ubiquiti version string cleanup (LBegnaud)
* #352 duplex support for ciscosb
* #353 report all vendor names in lowercase
* #353 sprinkle "use warnings" and "use strict" around
* #358 prefer checkpoint mib over net-snmp mib (earendilfr)
* #359 detect newer ios-xe using codenames (Christoph Neuhaus)
* #367 test using latest MIBs version dynamically
* #370 smarter Q-BRIDGE handling
* poe power usage & mac address for ciscosb
[BUG FIXES]
* #353 doc fixes: report all required mibs for each module as based on code
* #353 include fixes: don't include modules already imported from parent classes
* #355 fix #252, don't think 6char devices names are mac addresses
* #363 clean return calls in code
* #364 strip newline from neoteris os_ver, fixes netdisco #647
Version 3.68 (2019-04-28)
[NEW FEATURES]
* initial support for redlion cellular routers (inphobia)
[ENHANCEMENTS]
* use pulsesecure mib in layer7::neoteris instead of juniper-ive
Version 3.67 (2019-04-20)
[NEW FEATURES]
* #323 initial Lenovo / cnos support (inphobia)
* #317 #326 DOCSIS Head End support (Pyro3d)
[ENHANCEMENTS]
* add v3 Context update() tests for net-snmp 5.8+
* support INFO_TRACE and SNMP_TRACE environment variables for Debug
* #324 clean up exinda and add regression test
[BUG FIXES]
* #294 snmp::info should show full class used
* #297 perl 5.28 removal of "use vars"
* #306 fix incorrect interfaces for d-link
* #319 make fortinet return a useful interface name (inphobia)
* #320 improve duplicate interfaces() fixup
* #321 clean interface descriptions of null and trailing space
* #322 #327 full fix for aerohive tests
* #325 lazy load legacy RFC1213-MIB only if needed
* #496 fix for aerohive wireless clients support (inphobia)
Version 3.66 (2019-03-24)
[NEW FEATURES]
* #316 add support for IS-IS routing protocol (pyro3d)
[ENHANCEMENTS]
* switch to Alien::SNMP for travis builds (ollyg)
[BUG FIXES]
* clarify MRO usage
Version 3.65 (2019-02-24)
[ENHANCEMENTS]
@@ -94,7 +263,7 @@ Version 3.59 (2018-05-01)
[BUG FIXES]
* Capture fan ans power supply status in L3::Huawei when description is
* Capture fan and power supply status in L3::Huawei when description is
not available
Version 3.58 (2018-04-29)
@@ -298,13 +467,13 @@ version 3.41 (2018-02-01)
[BUG FIXES]
* Fixes to distriution metadata
* Fixes to distribution metadata
version 3.40 (2018-01-28)
[ENHANCEMENTS]
* #240 Support for CheckPoint devies through SNMP
* #240 Support for CheckPoint devices through SNMP
* #240 Cisco SB switches fixup
* #244 Add Adtran support
* #241 Vyatta/VyOS support

View File

@@ -17,6 +17,7 @@ lib/SNMP/Info/AMAP.pm
lib/SNMP/Info/Bridge.pm
lib/SNMP/Info/CDP.pm
lib/SNMP/Info/CiscoAgg.pm
lib/SNMP/Info/CiscoBGP.pm
lib/SNMP/Info/CiscoConfig.pm
lib/SNMP/Info/CiscoPortSecurity.pm
lib/SNMP/Info/CiscoPower.pm
@@ -26,10 +27,13 @@ lib/SNMP/Info/CiscoStack.pm
lib/SNMP/Info/CiscoStats.pm
lib/SNMP/Info/CiscoStpExtensions.pm
lib/SNMP/Info/CiscoVTP.pm
lib/SNMP/Info/DocsisCM.pm
lib/SNMP/Info/DocsisHE.pm
lib/SNMP/Info/EDP.pm
lib/SNMP/Info/Entity.pm
lib/SNMP/Info/EtherLike.pm
lib/SNMP/Info/FDP.pm
lib/SNMP/Info/IEEE802_Bridge.pm
lib/SNMP/Info/IEEE802dot11.pm
lib/SNMP/Info/IEEE802dot3ad.pm
lib/SNMP/Info/IPv6.pm
@@ -76,12 +80,14 @@ 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/ArubaCX.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/Ciena.pm
lib/SNMP/Info/Layer3/Cisco.pm
lib/SNMP/Info/Layer3/CiscoASA.pm
lib/SNMP/Info/Layer3/CiscoFWSM.pm
@@ -104,6 +110,7 @@ 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/Lenovo.pm
lib/SNMP/Info/Layer3/Microsoft.pm
lib/SNMP/Info/Layer3/Mikrotik.pm
lib/SNMP/Info/Layer3/N1600.pm
@@ -116,18 +123,25 @@ 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/Redlion.pm
lib/SNMP/Info/Layer3/Scalance.pm
lib/SNMP/Info/Layer3/SonicWALL.pm
lib/SNMP/Info/Layer3/Steelfusion.pm
lib/SNMP/Info/Layer3/Steelhead.pm
lib/SNMP/Info/Layer3/SteelheadEx.pm
lib/SNMP/Info/Layer3/Sun.pm
lib/SNMP/Info/Layer3/Tasman.pm
lib/SNMP/Info/Layer3/Teltonika.pm
lib/SNMP/Info/Layer3/Timetra.pm
lib/SNMP/Info/Layer3/VMware.pm
lib/SNMP/Info/Layer3/VyOS.pm
lib/SNMP/Info/Layer3/Whiterabbit.pm
lib/SNMP/Info/Layer7.pm
lib/SNMP/Info/Layer7/APC.pm
lib/SNMP/Info/Layer7/Arbor.pm
lib/SNMP/Info/Layer7/CiscoIPS.pm
lib/SNMP/Info/Layer7/Gigamon.pm
lib/SNMP/Info/Layer7/HWGroup.pm
lib/SNMP/Info/Layer7/Liebert.pm
lib/SNMP/Info/Layer7/Neoteris.pm
lib/SNMP/Info/Layer7/Netscaler.pm
@@ -199,6 +213,7 @@ xt/lib/Test/SNMP/Info/Layer2/Catalyst.pm
xt/lib/Test/SNMP/Info/Layer2/Centillion.pm
xt/lib/Test/SNMP/Info/Layer2/Cisco.pm
xt/lib/Test/SNMP/Info/Layer2/CiscoSB.pm
xt/lib/Test/SNMP/Info/Layer2/Exinda.pm
xt/lib/Test/SNMP/Info/Layer2/HP.pm
xt/lib/Test/SNMP/Info/Layer2/HP4000.pm
xt/lib/Test/SNMP/Info/Layer2/HPVC.pm
@@ -248,6 +263,7 @@ xt/lib/Test/SNMP/Info/Layer3/Huawei.pm
xt/lib/Test/SNMP/Info/Layer3/IBMGbTor.pm
xt/lib/Test/SNMP/Info/Layer3/Juniper.pm
xt/lib/Test/SNMP/Info/Layer3/Lantronix.pm
xt/lib/Test/SNMP/Info/Layer3/Lenovo.pm
xt/lib/Test/SNMP/Info/Layer3/Microsoft.pm
xt/lib/Test/SNMP/Info/Layer3/Mikrotik.pm
xt/lib/Test/SNMP/Info/Layer3/N1600.pm
@@ -260,10 +276,13 @@ xt/lib/Test/SNMP/Info/Layer3/PaloAlto.pm
xt/lib/Test/SNMP/Info/Layer3/Passport.pm
xt/lib/Test/SNMP/Info/Layer3/Pf.pm
xt/lib/Test/SNMP/Info/Layer3/Pica8.pm
xt/lib/Test/SNMP/Info/Layer3/Redlion.pm
xt/lib/Test/SNMP/Info/Layer3/Scalance.pm
xt/lib/Test/SNMP/Info/Layer3/SonicWALL.pm
xt/lib/Test/SNMP/Info/Layer3/Steelhead.pm
xt/lib/Test/SNMP/Info/Layer3/Sun.pm
xt/lib/Test/SNMP/Info/Layer3/Tasman.pm
xt/lib/Test/SNMP/Info/Layer3/Teltonika.pm
xt/lib/Test/SNMP/Info/Layer3/Timetra.pm
xt/lib/Test/SNMP/Info/Layer3/VMware.pm
xt/lib/Test/SNMP/Info/Layer3/VyOS.pm

View File

@@ -68,3 +68,6 @@ README.md
# Avoid Komodo project file
\.komodoproject$
# ignore intellij
\B\.idea

325
META.json
View File

@@ -4,7 +4,7 @@
"Eric A. Miller <emiller@cpan.org>"
],
"dynamic_config" : 1,
"generated_by" : "Module::Build version 0.4224",
"generated_by" : "Module::Build version 0.4231",
"license" : [
"bsd"
],
@@ -38,6 +38,7 @@
"Class::Inspector" : "0",
"File::Find" : "0",
"File::Slurper" : "0",
"Hook::LexWrap" : "0",
"Module::Find" : "0",
"NetSNMP::default_store" : "0",
"Path::Class" : "0",
@@ -52,519 +53,575 @@
"provides" : {
"SNMP::Info" : {
"file" : "lib/SNMP/Info.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::AMAP" : {
"file" : "lib/SNMP/Info/AMAP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::AdslLine" : {
"file" : "lib/SNMP/Info/AdslLine.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Aggregate" : {
"file" : "lib/SNMP/Info/Aggregate.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Airespace" : {
"file" : "lib/SNMP/Info/Airespace.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Bridge" : {
"file" : "lib/SNMP/Info/Bridge.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CDP" : {
"file" : "lib/SNMP/Info/CDP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoAgg" : {
"file" : "lib/SNMP/Info/CiscoAgg.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoBGP" : {
"file" : "lib/SNMP/Info/CiscoBGP.pm",
"version" : "3.83"
},
"SNMP::Info::CiscoConfig" : {
"file" : "lib/SNMP/Info/CiscoConfig.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoPortSecurity" : {
"file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoPower" : {
"file" : "lib/SNMP/Info/CiscoPower.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoQOS" : {
"file" : "lib/SNMP/Info/CiscoQOS.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoRTT" : {
"file" : "lib/SNMP/Info/CiscoRTT.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoStack" : {
"file" : "lib/SNMP/Info/CiscoStack.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoStats" : {
"file" : "lib/SNMP/Info/CiscoStats.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoStpExtensions" : {
"file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::CiscoVTP" : {
"file" : "lib/SNMP/Info/CiscoVTP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::DocsisCM" : {
"file" : "lib/SNMP/Info/DocsisCM.pm",
"version" : "3.83"
},
"SNMP::Info::DocsisHE" : {
"file" : "lib/SNMP/Info/DocsisHE.pm",
"version" : "3.83"
},
"SNMP::Info::EDP" : {
"file" : "lib/SNMP/Info/EDP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Entity" : {
"file" : "lib/SNMP/Info/Entity.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::EtherLike" : {
"file" : "lib/SNMP/Info/EtherLike.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::FDP" : {
"file" : "lib/SNMP/Info/FDP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::IEEE802_Bridge" : {
"file" : "lib/SNMP/Info/IEEE802_Bridge.pm",
"version" : "3.83"
},
"SNMP::Info::IEEE802dot11" : {
"file" : "lib/SNMP/Info/IEEE802dot11.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::IEEE802dot3ad" : {
"file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::IPv6" : {
"file" : "lib/SNMP/Info/IPv6.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::LLDP" : {
"file" : "lib/SNMP/Info/LLDP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer1" : {
"file" : "lib/SNMP/Info/Layer1.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer1::Allied" : {
"file" : "lib/SNMP/Info/Layer1/Allied.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer1::Asante" : {
"file" : "lib/SNMP/Info/Layer1/Asante.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer1::Bayhub" : {
"file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer1::Cyclades" : {
"file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer1::S3000" : {
"file" : "lib/SNMP/Info/Layer1/S3000.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2" : {
"file" : "lib/SNMP/Info/Layer2.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::3Com" : {
"file" : "lib/SNMP/Info/Layer2/3Com.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Adtran" : {
"file" : "lib/SNMP/Info/Layer2/Adtran.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Aerohive" : {
"file" : "lib/SNMP/Info/Layer2/Aerohive.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Airespace" : {
"file" : "lib/SNMP/Info/Layer2/Airespace.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Aironet" : {
"file" : "lib/SNMP/Info/Layer2/Aironet.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Allied" : {
"file" : "lib/SNMP/Info/Layer2/Allied.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Atmedia" : {
"file" : "lib/SNMP/Info/Layer2/Atmedia.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Baystack" : {
"file" : "lib/SNMP/Info/Layer2/Baystack.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::C1900" : {
"file" : "lib/SNMP/Info/Layer2/C1900.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::C2900" : {
"file" : "lib/SNMP/Info/Layer2/C2900.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Catalyst" : {
"file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Centillion" : {
"file" : "lib/SNMP/Info/Layer2/Centillion.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Cisco" : {
"file" : "lib/SNMP/Info/Layer2/Cisco.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::CiscoSB" : {
"file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Exinda" : {
"file" : "lib/SNMP/Info/Layer2/Exinda.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::HP" : {
"file" : "lib/SNMP/Info/Layer2/HP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::HP4000" : {
"file" : "lib/SNMP/Info/Layer2/HP4000.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::HPVC" : {
"file" : "lib/SNMP/Info/Layer2/HPVC.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Kentrox" : {
"file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::N2270" : {
"file" : "lib/SNMP/Info/Layer2/N2270.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::NAP222x" : {
"file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::NWSS2300" : {
"file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Netgear" : {
"file" : "lib/SNMP/Info/Layer2/Netgear.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Nexans" : {
"file" : "lib/SNMP/Info/Layer2/Nexans.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Orinoco" : {
"file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Sixnet" : {
"file" : "lib/SNMP/Info/Layer2/Sixnet.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Trapeze" : {
"file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::Ubiquiti" : {
"file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer2::ZyXEL_DSLAM" : {
"file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3" : {
"file" : "lib/SNMP/Info/Layer3.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Aironet" : {
"file" : "lib/SNMP/Info/Layer3/Aironet.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::AlcatelLucent" : {
"file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::AlteonAD" : {
"file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Altiga" : {
"file" : "lib/SNMP/Info/Layer3/Altiga.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Arista" : {
"file" : "lib/SNMP/Info/Layer3/Arista.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Aruba" : {
"file" : "lib/SNMP/Info/Layer3/Aruba.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::ArubaCX" : {
"file" : "lib/SNMP/Info/Layer3/ArubaCX.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::BayRS" : {
"file" : "lib/SNMP/Info/Layer3/BayRS.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::BlueCoatSG" : {
"file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::C3550" : {
"file" : "lib/SNMP/Info/Layer3/C3550.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::C4000" : {
"file" : "lib/SNMP/Info/Layer3/C4000.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::C6500" : {
"file" : "lib/SNMP/Info/Layer3/C6500.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::CheckPoint" : {
"file" : "lib/SNMP/Info/Layer3/CheckPoint.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Ciena" : {
"file" : "lib/SNMP/Info/Layer3/Ciena.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::Cisco" : {
"file" : "lib/SNMP/Info/Layer3/Cisco.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::CiscoASA" : {
"file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::CiscoFWSM" : {
"file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::CiscoSwitch" : {
"file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Contivity" : {
"file" : "lib/SNMP/Info/Layer3/Contivity.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Cumulus" : {
"file" : "lib/SNMP/Info/Layer3/Cumulus.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::DLink" : {
"file" : "lib/SNMP/Info/Layer3/DLink.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Dell" : {
"file" : "lib/SNMP/Info/Layer3/Dell.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::ERX" : {
"file" : "lib/SNMP/Info/Layer3/ERX.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Enterasys" : {
"file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Extreme" : {
"file" : "lib/SNMP/Info/Layer3/Extreme.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::F5" : {
"file" : "lib/SNMP/Info/Layer3/F5.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Force10" : {
"file" : "lib/SNMP/Info/Layer3/Force10.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Fortinet" : {
"file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Foundry" : {
"file" : "lib/SNMP/Info/Layer3/Foundry.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Genua" : {
"file" : "lib/SNMP/Info/Layer3/Genua.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::H3C" : {
"file" : "lib/SNMP/Info/Layer3/H3C.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::HP9300" : {
"file" : "lib/SNMP/Info/Layer3/HP9300.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Huawei" : {
"file" : "lib/SNMP/Info/Layer3/Huawei.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::IBMGbTor" : {
"file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Juniper" : {
"file" : "lib/SNMP/Info/Layer3/Juniper.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Lantronix" : {
"file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Lenovo" : {
"file" : "lib/SNMP/Info/Layer3/Lenovo.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::Microsoft" : {
"file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Mikrotik" : {
"file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::N1600" : {
"file" : "lib/SNMP/Info/Layer3/N1600.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::NetSNMP" : {
"file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Netscreen" : {
"file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Nexus" : {
"file" : "lib/SNMP/Info/Layer3/Nexus.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::OneAccess" : {
"file" : "lib/SNMP/Info/Layer3/OneAccess.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::PacketFront" : {
"file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::PaloAlto" : {
"file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Passport" : {
"file" : "lib/SNMP/Info/Layer3/Passport.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Pf" : {
"file" : "lib/SNMP/Info/Layer3/Pf.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Pica8" : {
"file" : "lib/SNMP/Info/Layer3/Pica8.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Redlion" : {
"file" : "lib/SNMP/Info/Layer3/Redlion.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::Scalance" : {
"file" : "lib/SNMP/Info/Layer3/Scalance.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::SonicWALL" : {
"file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Steelfusion" : {
"file" : "lib/SNMP/Info/Layer3/Steelfusion.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::Steelhead" : {
"file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::SteelheadEx" : {
"file" : "lib/SNMP/Info/Layer3/SteelheadEx.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::Sun" : {
"file" : "lib/SNMP/Info/Layer3/Sun.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Tasman" : {
"file" : "lib/SNMP/Info/Layer3/Tasman.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Teltonika" : {
"file" : "lib/SNMP/Info/Layer3/Teltonika.pm",
"version" : "3.83"
},
"SNMP::Info::Layer3::Timetra" : {
"file" : "lib/SNMP/Info/Layer3/Timetra.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::VMware" : {
"file" : "lib/SNMP/Info/Layer3/VMware.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::VyOS" : {
"file" : "lib/SNMP/Info/Layer3/VyOS.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer3::Whiterabbit" : {
"file" : "lib/SNMP/Info/Layer3/Whiterabbit.pm",
"version" : "3.83"
},
"SNMP::Info::Layer7" : {
"file" : "lib/SNMP/Info/Layer7.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer7::APC" : {
"file" : "lib/SNMP/Info/Layer7/APC.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer7::Arbor" : {
"file" : "lib/SNMP/Info/Layer7/Arbor.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer7::CiscoIPS" : {
"file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer7::Gigamon" : {
"file" : "lib/SNMP/Info/Layer7/Gigamon.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer7::HWGroup" : {
"file" : "lib/SNMP/Info/Layer7/HWGroup.pm",
"version" : "3.83"
},
"SNMP::Info::Layer7::Liebert" : {
"file" : "lib/SNMP/Info/Layer7/Liebert.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer7::Neoteris" : {
"file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::Layer7::Netscaler" : {
"file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::MAU" : {
"file" : "lib/SNMP/Info/MAU.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::MRO" : {
"file" : "lib/SNMP/Info/MRO.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::NortelStack" : {
"file" : "lib/SNMP/Info/NortelStack.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::PowerEthernet" : {
"file" : "lib/SNMP/Info/PowerEthernet.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::RapidCity" : {
"file" : "lib/SNMP/Info/RapidCity.pm",
"version" : "3.65"
"version" : "3.83"
},
"SNMP::Info::SONMP" : {
"file" : "lib/SNMP/Info/SONMP.pm",
"version" : "3.65"
"version" : "3.83"
}
},
"release_status" : "stable",
@@ -574,14 +631,14 @@
},
"homepage" : "http://netdisco.org/",
"license" : [
"http://opensource.org/licenses/BSD-3-Clause"
"http://opensource.org/licenses/bsd-license.php"
],
"repository" : {
"url" : "https://github.com/netdisco/snmp-info"
},
"x_IRC" : "irc://irc.freenode.org/#netdisco",
"x_IRC" : "irc://irc.libera.chat/#netdisco",
"x_MailingList" : "https://lists.sourceforge.net/lists/listinfo/snmp-info-users"
},
"version" : "3.65",
"x_serialization_backend" : "JSON::PP version 2.97001"
"version" : "3.83",
"x_serialization_backend" : "JSON::PP version 4.06"
}

309
META.yml
View File

@@ -6,6 +6,7 @@ build_requires:
Class::Inspector: '0'
File::Find: '0'
File::Slurper: '0'
Hook::LexWrap: '0'
Module::Find: '0'
NetSNMP::default_store: '0'
Path::Class: '0'
@@ -17,7 +18,7 @@ build_requires:
configure_requires:
Module::Build: '0.42'
dynamic_config: 1
generated_by: 'Module::Build version 0.4224, CPAN::Meta::Converter version 2.150010'
generated_by: 'Module::Build version 0.4231, CPAN::Meta::Converter version 2.150010'
license: bsd
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -26,391 +27,433 @@ name: SNMP-Info
provides:
SNMP::Info:
file: lib/SNMP/Info.pm
version: '3.65'
version: '3.83'
SNMP::Info::AMAP:
file: lib/SNMP/Info/AMAP.pm
version: '3.65'
version: '3.83'
SNMP::Info::AdslLine:
file: lib/SNMP/Info/AdslLine.pm
version: '3.65'
version: '3.83'
SNMP::Info::Aggregate:
file: lib/SNMP/Info/Aggregate.pm
version: '3.65'
version: '3.83'
SNMP::Info::Airespace:
file: lib/SNMP/Info/Airespace.pm
version: '3.65'
version: '3.83'
SNMP::Info::Bridge:
file: lib/SNMP/Info/Bridge.pm
version: '3.65'
version: '3.83'
SNMP::Info::CDP:
file: lib/SNMP/Info/CDP.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoAgg:
file: lib/SNMP/Info/CiscoAgg.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoBGP:
file: lib/SNMP/Info/CiscoBGP.pm
version: '3.83'
SNMP::Info::CiscoConfig:
file: lib/SNMP/Info/CiscoConfig.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoPortSecurity:
file: lib/SNMP/Info/CiscoPortSecurity.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoPower:
file: lib/SNMP/Info/CiscoPower.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoQOS:
file: lib/SNMP/Info/CiscoQOS.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoRTT:
file: lib/SNMP/Info/CiscoRTT.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoStack:
file: lib/SNMP/Info/CiscoStack.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoStats:
file: lib/SNMP/Info/CiscoStats.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoStpExtensions:
file: lib/SNMP/Info/CiscoStpExtensions.pm
version: '3.65'
version: '3.83'
SNMP::Info::CiscoVTP:
file: lib/SNMP/Info/CiscoVTP.pm
version: '3.65'
version: '3.83'
SNMP::Info::DocsisCM:
file: lib/SNMP/Info/DocsisCM.pm
version: '3.83'
SNMP::Info::DocsisHE:
file: lib/SNMP/Info/DocsisHE.pm
version: '3.83'
SNMP::Info::EDP:
file: lib/SNMP/Info/EDP.pm
version: '3.65'
version: '3.83'
SNMP::Info::Entity:
file: lib/SNMP/Info/Entity.pm
version: '3.65'
version: '3.83'
SNMP::Info::EtherLike:
file: lib/SNMP/Info/EtherLike.pm
version: '3.65'
version: '3.83'
SNMP::Info::FDP:
file: lib/SNMP/Info/FDP.pm
version: '3.65'
version: '3.83'
SNMP::Info::IEEE802_Bridge:
file: lib/SNMP/Info/IEEE802_Bridge.pm
version: '3.83'
SNMP::Info::IEEE802dot11:
file: lib/SNMP/Info/IEEE802dot11.pm
version: '3.65'
version: '3.83'
SNMP::Info::IEEE802dot3ad:
file: lib/SNMP/Info/IEEE802dot3ad.pm
version: '3.65'
version: '3.83'
SNMP::Info::IPv6:
file: lib/SNMP/Info/IPv6.pm
version: '3.65'
version: '3.83'
SNMP::Info::LLDP:
file: lib/SNMP/Info/LLDP.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer1:
file: lib/SNMP/Info/Layer1.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer1::Allied:
file: lib/SNMP/Info/Layer1/Allied.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer1::Asante:
file: lib/SNMP/Info/Layer1/Asante.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer1::Bayhub:
file: lib/SNMP/Info/Layer1/Bayhub.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer1::Cyclades:
file: lib/SNMP/Info/Layer1/Cyclades.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer1::S3000:
file: lib/SNMP/Info/Layer1/S3000.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2:
file: lib/SNMP/Info/Layer2.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::3Com:
file: lib/SNMP/Info/Layer2/3Com.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Adtran:
file: lib/SNMP/Info/Layer2/Adtran.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Aerohive:
file: lib/SNMP/Info/Layer2/Aerohive.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Airespace:
file: lib/SNMP/Info/Layer2/Airespace.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Aironet:
file: lib/SNMP/Info/Layer2/Aironet.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Allied:
file: lib/SNMP/Info/Layer2/Allied.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Atmedia:
file: lib/SNMP/Info/Layer2/Atmedia.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Baystack:
file: lib/SNMP/Info/Layer2/Baystack.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::C1900:
file: lib/SNMP/Info/Layer2/C1900.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::C2900:
file: lib/SNMP/Info/Layer2/C2900.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Catalyst:
file: lib/SNMP/Info/Layer2/Catalyst.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Centillion:
file: lib/SNMP/Info/Layer2/Centillion.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Cisco:
file: lib/SNMP/Info/Layer2/Cisco.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::CiscoSB:
file: lib/SNMP/Info/Layer2/CiscoSB.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Exinda:
file: lib/SNMP/Info/Layer2/Exinda.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::HP:
file: lib/SNMP/Info/Layer2/HP.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::HP4000:
file: lib/SNMP/Info/Layer2/HP4000.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::HPVC:
file: lib/SNMP/Info/Layer2/HPVC.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Kentrox:
file: lib/SNMP/Info/Layer2/Kentrox.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::N2270:
file: lib/SNMP/Info/Layer2/N2270.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::NAP222x:
file: lib/SNMP/Info/Layer2/NAP222x.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::NWSS2300:
file: lib/SNMP/Info/Layer2/NWSS2300.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Netgear:
file: lib/SNMP/Info/Layer2/Netgear.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Nexans:
file: lib/SNMP/Info/Layer2/Nexans.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Orinoco:
file: lib/SNMP/Info/Layer2/Orinoco.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Sixnet:
file: lib/SNMP/Info/Layer2/Sixnet.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Trapeze:
file: lib/SNMP/Info/Layer2/Trapeze.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::Ubiquiti:
file: lib/SNMP/Info/Layer2/Ubiquiti.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer2::ZyXEL_DSLAM:
file: lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3:
file: lib/SNMP/Info/Layer3.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Aironet:
file: lib/SNMP/Info/Layer3/Aironet.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::AlcatelLucent:
file: lib/SNMP/Info/Layer3/AlcatelLucent.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::AlteonAD:
file: lib/SNMP/Info/Layer3/AlteonAD.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Altiga:
file: lib/SNMP/Info/Layer3/Altiga.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Arista:
file: lib/SNMP/Info/Layer3/Arista.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Aruba:
file: lib/SNMP/Info/Layer3/Aruba.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::ArubaCX:
file: lib/SNMP/Info/Layer3/ArubaCX.pm
version: '3.83'
SNMP::Info::Layer3::BayRS:
file: lib/SNMP/Info/Layer3/BayRS.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::BlueCoatSG:
file: lib/SNMP/Info/Layer3/BlueCoatSG.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::C3550:
file: lib/SNMP/Info/Layer3/C3550.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::C4000:
file: lib/SNMP/Info/Layer3/C4000.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::C6500:
file: lib/SNMP/Info/Layer3/C6500.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::CheckPoint:
file: lib/SNMP/Info/Layer3/CheckPoint.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Ciena:
file: lib/SNMP/Info/Layer3/Ciena.pm
version: '3.83'
SNMP::Info::Layer3::Cisco:
file: lib/SNMP/Info/Layer3/Cisco.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::CiscoASA:
file: lib/SNMP/Info/Layer3/CiscoASA.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::CiscoFWSM:
file: lib/SNMP/Info/Layer3/CiscoFWSM.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::CiscoSwitch:
file: lib/SNMP/Info/Layer3/CiscoSwitch.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Contivity:
file: lib/SNMP/Info/Layer3/Contivity.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Cumulus:
file: lib/SNMP/Info/Layer3/Cumulus.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::DLink:
file: lib/SNMP/Info/Layer3/DLink.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Dell:
file: lib/SNMP/Info/Layer3/Dell.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::ERX:
file: lib/SNMP/Info/Layer3/ERX.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Enterasys:
file: lib/SNMP/Info/Layer3/Enterasys.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Extreme:
file: lib/SNMP/Info/Layer3/Extreme.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::F5:
file: lib/SNMP/Info/Layer3/F5.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Force10:
file: lib/SNMP/Info/Layer3/Force10.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Fortinet:
file: lib/SNMP/Info/Layer3/Fortinet.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Foundry:
file: lib/SNMP/Info/Layer3/Foundry.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Genua:
file: lib/SNMP/Info/Layer3/Genua.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::H3C:
file: lib/SNMP/Info/Layer3/H3C.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::HP9300:
file: lib/SNMP/Info/Layer3/HP9300.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Huawei:
file: lib/SNMP/Info/Layer3/Huawei.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::IBMGbTor:
file: lib/SNMP/Info/Layer3/IBMGbTor.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Juniper:
file: lib/SNMP/Info/Layer3/Juniper.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Lantronix:
file: lib/SNMP/Info/Layer3/Lantronix.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Lenovo:
file: lib/SNMP/Info/Layer3/Lenovo.pm
version: '3.83'
SNMP::Info::Layer3::Microsoft:
file: lib/SNMP/Info/Layer3/Microsoft.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Mikrotik:
file: lib/SNMP/Info/Layer3/Mikrotik.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::N1600:
file: lib/SNMP/Info/Layer3/N1600.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::NetSNMP:
file: lib/SNMP/Info/Layer3/NetSNMP.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Netscreen:
file: lib/SNMP/Info/Layer3/Netscreen.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Nexus:
file: lib/SNMP/Info/Layer3/Nexus.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::OneAccess:
file: lib/SNMP/Info/Layer3/OneAccess.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::PacketFront:
file: lib/SNMP/Info/Layer3/PacketFront.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::PaloAlto:
file: lib/SNMP/Info/Layer3/PaloAlto.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Passport:
file: lib/SNMP/Info/Layer3/Passport.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Pf:
file: lib/SNMP/Info/Layer3/Pf.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Pica8:
file: lib/SNMP/Info/Layer3/Pica8.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Redlion:
file: lib/SNMP/Info/Layer3/Redlion.pm
version: '3.83'
SNMP::Info::Layer3::Scalance:
file: lib/SNMP/Info/Layer3/Scalance.pm
version: '3.83'
SNMP::Info::Layer3::SonicWALL:
file: lib/SNMP/Info/Layer3/SonicWALL.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Steelfusion:
file: lib/SNMP/Info/Layer3/Steelfusion.pm
version: '3.83'
SNMP::Info::Layer3::Steelhead:
file: lib/SNMP/Info/Layer3/Steelhead.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::SteelheadEx:
file: lib/SNMP/Info/Layer3/SteelheadEx.pm
version: '3.83'
SNMP::Info::Layer3::Sun:
file: lib/SNMP/Info/Layer3/Sun.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Tasman:
file: lib/SNMP/Info/Layer3/Tasman.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Teltonika:
file: lib/SNMP/Info/Layer3/Teltonika.pm
version: '3.83'
SNMP::Info::Layer3::Timetra:
file: lib/SNMP/Info/Layer3/Timetra.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::VMware:
file: lib/SNMP/Info/Layer3/VMware.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::VyOS:
file: lib/SNMP/Info/Layer3/VyOS.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer3::Whiterabbit:
file: lib/SNMP/Info/Layer3/Whiterabbit.pm
version: '3.83'
SNMP::Info::Layer7:
file: lib/SNMP/Info/Layer7.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer7::APC:
file: lib/SNMP/Info/Layer7/APC.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer7::Arbor:
file: lib/SNMP/Info/Layer7/Arbor.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer7::CiscoIPS:
file: lib/SNMP/Info/Layer7/CiscoIPS.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer7::Gigamon:
file: lib/SNMP/Info/Layer7/Gigamon.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer7::HWGroup:
file: lib/SNMP/Info/Layer7/HWGroup.pm
version: '3.83'
SNMP::Info::Layer7::Liebert:
file: lib/SNMP/Info/Layer7/Liebert.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer7::Neoteris:
file: lib/SNMP/Info/Layer7/Neoteris.pm
version: '3.65'
version: '3.83'
SNMP::Info::Layer7::Netscaler:
file: lib/SNMP/Info/Layer7/Netscaler.pm
version: '3.65'
version: '3.83'
SNMP::Info::MAU:
file: lib/SNMP/Info/MAU.pm
version: '3.65'
version: '3.83'
SNMP::Info::MRO:
file: lib/SNMP/Info/MRO.pm
version: '3.65'
version: '3.83'
SNMP::Info::NortelStack:
file: lib/SNMP/Info/NortelStack.pm
version: '3.65'
version: '3.83'
SNMP::Info::PowerEthernet:
file: lib/SNMP/Info/PowerEthernet.pm
version: '3.65'
version: '3.83'
SNMP::Info::RapidCity:
file: lib/SNMP/Info/RapidCity.pm
version: '3.65'
version: '3.83'
SNMP::Info::SONMP:
file: lib/SNMP/Info/SONMP.pm
version: '3.65'
version: '3.83'
recommends:
Class::ISA: '0'
File::Slurp: '0'
@@ -422,11 +465,11 @@ requires:
NetAddr::IP: '4.068'
SNMP: '0'
resources:
IRC: irc://irc.freenode.org/#netdisco
IRC: irc://irc.libera.chat/#netdisco
MailingList: https://lists.sourceforge.net/lists/listinfo/snmp-info-users
bugtracker: https://github.com/netdisco/snmp-info/issues
homepage: http://netdisco.org/
license: http://opensource.org/licenses/BSD-3-Clause
license: http://opensource.org/licenses/bsd-license.php
repository: https://github.com/netdisco/snmp-info
version: '3.65'
version: '3.83'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

187
README
View File

@@ -2,7 +2,7 @@ NAME
SNMP::Info - OO Interface to Network devices and MIBs through SNMP
VERSION
SNMP::Info - Version 3.65
SNMP::Info - Version 3.83
AUTHOR
SNMP::Info is maintained by team of Open Source authors headed by Eric
@@ -213,17 +213,23 @@ SUBCLASSES
See documentation in SNMP::Info::Bridge for details.
SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in SNMP::Info::CiscoAgg for details.
SNMP::Info::CDP
CISCO-CDP-MIB. Cisco Discovery Protocol (CDP) Support. Inherited by
Cisco, Enterasys, and HP devices.
See documentation in SNMP::Info::CDP for details.
SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in SNMP::Info::CiscoAgg for details.
SNMP::Info::CiscoBGP
CISCO-BGP4-MIB. Cisco BGPv4 support. Inherited by Cisco devices with
Layer3 support.
See documentation in SNMP::Info::CiscoBGP for details.
SNMP::Info::CiscoConfig
CISCO-CONFIG-COPY-MIB, CISCO-FLASH-MIB, and OLD-CISCO-SYS-MIB. These
OIDs facilitate the writing of configuration files.
@@ -257,11 +263,6 @@ SUBCLASSES
See documentation in SNMP::Info::CiscoStack for details.
SNMP::Info::CiscoStpExtensions
CISCO-STP-EXTENSIONS-MIB
See documentation in SNMP::Info::CiscoStpExtensions for details.
SNMP::Info::CiscoStats
OLD-CISCO-CPU-MIB, CISCO-PROCESS-MIB, and CISCO-MEMORY-POOL-MIB.
Provides common interfaces for memory, cpu, and os statistics for
@@ -269,12 +270,27 @@ SUBCLASSES
See documentation in SNMP::Info::CiscoStats for details.
SNMP::Info::CiscoStpExtensions
CISCO-STP-EXTENSIONS-MIB
See documentation in SNMP::Info::CiscoStpExtensions for details.
SNMP::Info::CiscoVTP
CISCO-VTP-MIB, CISCO-VLAN-MEMBERSHIP-MIB,
CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB
See documentation in SNMP::Info::CiscoVTP for details.
SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in SNMP::Info::DocsisCM for details.
SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS
See documentation in SNMP::Info::DocsisHE for details.
SNMP::Info::EDP
Extreme Discovery Protocol. EXTREME-EDP-MIB
@@ -296,12 +312,10 @@ SUBCLASSES
See documentation in SNMP::Info::FDP for details.
SNMP::Info::IPv6
SNMP Interface for obtaining configured IPv6 addresses and mapping
IPv6 addresses to MAC addresses and interfaces, using information
from IP-MIB, IPV6-MIB and/or CISCO-IETF-IP-MIB.
SNMP::Info::IEEE802_Bridge
SNMP Interface to data available through the IEEE8021-Q-BRIDGE-MIB
See documentation in SNMP::Info::IPv6 for details.
See documentation in SNMP::Info::IEEE802_Bridge for details.
SNMP::Info::IEEE802dot11
IEEE802dot11-MIB. A collection of OIDs providing information about
@@ -314,6 +328,13 @@ SUBCLASSES
See documentation in SNMP::Info::IEEE802dot3ad for details.
SNMP::Info::IPv6
SNMP Interface for obtaining configured IPv6 addresses and mapping
IPv6 addresses to MAC addresses and interfaces, using information
from IP-MIB, IPV6-MIB and/or CISCO-IETF-IP-MIB.
See documentation in SNMP::Info::IPv6 for details.
SNMP::Info::LLDP
LLDP-MIB, LLDP-EXT-DOT1-MIB, and LLDP-EXT-DOT3-MIB. Link Layer
Discovery Protocol (LLDP) Support.
@@ -413,7 +434,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Adtran for details.
SNMP::Info::Layer2::Aerohive
Subclass for Aerohive Access Points.
Subclass for Aerohive / Extreme access points.
See documentation in SNMP::Info::Layer2::Aerohive for details.
@@ -475,7 +496,7 @@ SUBCLASSES
SNMP::Info::Layer2::Cisco
Generic Cisco subclass for layer 2 devices that are not yet
supported in more specific subclassesand the base layer 2 Cisco
supported in more specific subclasses and the base layer 2 Cisco
class for other device specific layer 2 Cisco classes.
See documentation in SNMP::Info::Layer2::Cisco for details.
@@ -534,7 +555,7 @@ SUBCLASSES
SNMP::Info::Layer2::Nexans
Subclass for Nexans switches
See documetion in SNMP::Info::Layer2::Nexans for details.
See documentation in SNMP::Info::Layer2::Nexans for details.
SNMP::Info::Layer2::NWSS2300
SNMP Interface to Avaya (Trapeze) Wireless Controllers
@@ -576,9 +597,6 @@ SUBCLASSES
Subclass for Cisco Aironet wireless access points (AP) not
running IOS. These are usually older devices.
MIBs for these devices now included in v2.tar.gz available from
ftp.cisco.com.
Note SNMP::Info::Layer2::Aironet
See documentation in SNMP::Info::Layer3::Aironet for details.
@@ -606,6 +624,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Aruba for details.
SNMP::Info::Layer3::ArubaCX
SNMP Interface to L3 Devices running ArubaOS-CX
See documentation in SNMP::Info::Layer3::ArubaCX for details.
SNMP::Info::Layer3::BayRS
Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This
includes BCN, BLN, ASN, ARN, AN, 2430, and 5430 routers.
@@ -613,7 +636,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::BayRS for details.
SNMP::Info::Layer3::BlueCoatSG
Subclass for Blue Coat SG series proxy devices.
Subclass for BlueCoat SG series proxy devices.
See documentation in SNMP::Info::Layer3::BlueCoatSG for details.
@@ -629,8 +652,9 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::C4000 for details.
SNMP::Info::Layer3::C6500
This class covers Catalyst 6500s in native mode, hybrid mode.
Catalyst 3750's, 2970's and probably others.
This class covers Catalyst 6500 series running CatOS or IOS, as
well as Catalyst 2960, 2970, 3750 and 3850 series, including
blade switches CBS30x0 and CBS31x0 series, all running IOS.
See documentation in SNMP::Info::Layer3::C6500 for details.
@@ -639,6 +663,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::CheckPoint for details.
SNMP::Info::Layer3::Ciena
Subclass for Ciena devices.
See documentation in SNMP::Info::Layer3::Ciena 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
@@ -670,11 +699,6 @@ SUBCLASSES
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. The IBM BladeCenter
Gigabit Ethernet Switch Module and some Linksys switches also
@@ -682,6 +706,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Dell for details.
SNMP::Info::Layer3::DLink
Subclass for DLink devices.
See documentation in SNMP::Info::Layer3::DLink for details.
SNMP::Info::Layer3::Enterasys
Subclass for Enterasys devices.
@@ -756,6 +785,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Lantronix for details.
SNMP::Info::Layer3::Lenovo
Subclass for Lenovo switches running CNOS.
See documentation in SNMP::Info::Layer3::Lenovo for details.
SNMP::Info::Layer3::Microsoft
Subclass for Generic Microsoft Routers running Microsoft Windows
OS.
@@ -819,16 +853,38 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Pica8 for details.
SNMP::Info::Layer3::Redlion
Subclass for redlion routers.
See documentation in SNMP::Info::Layer3::Redlion for details.
SNMP::Info::Layer3::Scalance
Subclass for Siemens Scalance devices.
See documentation in SNMP::Info::Layer3::Scalance for details.
SNMP::Info::Layer3::SonicWALL
Subclass for generic SonicWALL devices.
See documentation in SNMP::Info::Layer3::SonicWALL for details.
SNMP::Info::Layer3::Steelfusion
Subclass for Riverbed Steelfusion WAN optimization appliances.
See documentation in SNMP::Info::Layer3::Steelfusion for
details.
SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in SNMP::Info::Layer3::Steelhead for details.
SNMP::Info::Layer3::SteelheadEx
Subclass for Riverbed SteelheadEx WAN optimization appliances.
See documentation in SNMP::Info::Layer3::SteelheadEx for
details.
SNMP::Info::Layer3::Sun
Subclass for Generic Sun Routers running SunOS.
@@ -839,6 +895,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Tasman for details.
SNMP::Info::Layer3::Teltonika
Subclass for Teltonika RUT9xx series routers.
See documentation in SNMP::Info::Layer3::Teltonika for details.
SNMP::Info::Layer3::Timetra
Alcatel-Lucent SR Class.
@@ -854,6 +915,12 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::VMware for details.
SNMP::Info::Layer3::Whiterabbit
Subclass for whiterabbit devices.
See documentation in SNMP::Info::Layer3::Whiterabbit for
details.
SNMP::Info::Layer7
Generic Layer7 Devices.
@@ -879,13 +946,18 @@ SUBCLASSES
See documentation in SNMP::Info::Layer7::Gigamon for details.
SNMP::Info::Layer7::HWGroup
Subclass for HW Group devices.
See documentation in SNMP::Info::Layer7::HWGroup for details.
SNMP::Info::Layer7::Liebert
Subclass for Liebert devices.
See documentation in SNMP::Info::Layer7::Liebert for details.
SNMP::Info::Layer7::Neoteris
Subclass for Juniper SSL VPN appliances.
Subclass for Pulse Secure / Juniper SSL VPN appliances.
See documentation in SNMP::Info::Layer7::Neoteris for details.
@@ -1036,7 +1108,7 @@ USAGE
anything when a connection under Version 2 is attempted.
Some newer devices will support Version 1, but will not return all
the data they might have if you had connected under Version 1
the data they might have if you had connected under Version 1.
When trying to get info from a new device, you may have to try
version 2 and then fallback to version 1.
@@ -1136,7 +1208,7 @@ USAGE
my $info = new SNMP::Info(...);
# Returns more specific object type
$info = $info->specific();
my $specific = $info->specify();
Usually this method is called internally from new(AutoSpecify => 1)
@@ -1150,7 +1222,7 @@ USAGE
<ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-community
Indexing.html>
Globals (Scalar Methods)
GLOBALS (Scalar Methods)
These are methods to return scalar data from RFC1213.
Some subset of these is probably available for any network device that
@@ -1570,12 +1642,12 @@ USAGE
For protocol specific information and implementation:
LLDP: See SNMP::Info::LLDP for details.
CDP: See SNMP::Info::CDP for details.
SONMP: See SNMP::Info::SONMP for details.
FDP: See SNMP::Info::FDP for details.
EDP: See SNMP::Info::EDP for details.
AMAP: See SNMP::Info::AMAP for details.
CDP: See SNMP::Info::CDP for details.
EDP: See SNMP::Info::EDP for details.
FDP: See SNMP::Info::FDP for details.
LLDP: See SNMP::Info::LLDP for details.
SONMP: See SNMP::Info::SONMP for details.
Topology Capabilities
$info->has_topo()
@@ -1791,6 +1863,7 @@ EXTENDING SNMP::INFO
$VERSION = 0.1;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@@ -1800,18 +1873,18 @@ EXTENDING SNMP::INFO
SNMP::Info::CiscoVTP Exporter/;
@SNMP::Info::Layer2::Sample::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG);
%MIBS = (%SNMP::Info::Layer2::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
'SUPER-DOOPER-MIB' => 'supermibobject'
'SUPER-DOOPER-MIB' => 'supermibobject',
);
%GLOBALS = (%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
'name' => 'supermib_supername',
'favorite_color' => 'supermib_fav_color_object',
'favorite_movie' => 'supermib_fav_movie_val'
'favorite_movie' => 'supermib_fav_movie_val',
);
%FUNCS = (%SNMP::Info::Layer2::FUNCS,
@@ -1819,16 +1892,16 @@ EXTENDING SNMP::INFO
# Super Dooper MIB - Super Hero Table
'super_hero_index' => 'SuperHeroIfIndex',
'super_hero_name' => 'SuperHeroIfName',
'super_hero_powers' => 'SuperHeroIfPowers'
'super_hero_powers' => 'SuperHeroIfPowers',
);
%MUNGE = (%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
'super_hero_powers' => \&munge_powers
'super_hero_powers' => \&munge_powers,
);
# OverRide uptime() method from %SNMP::Info::GLOBALS
# Override uptime() method from %SNMP::Info::GLOBALS
sub uptime {
my $sample = shift;
@@ -1895,7 +1968,7 @@ SNMP::INFO INTERNALS
$REPEATERS
Default 20. MaxRepeaters for BULKWALK operations. See "perldoc SNMP"
for more info. Can change by passing BulkRepeaters option in new()
for more info. Can change by passing "BulkRepeaters" option in new()
Data Munging Callback Subroutines
munge_speed()
@@ -1904,7 +1977,7 @@ SNMP::INFO INTERNALS
%SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps',
'115000' => '115 kpbs',
'115000' => '115 kbps',
'1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1',
@@ -1915,9 +1988,9 @@ SNMP::INFO INTERNALS
'4000000' => '4.0 Mbps',
'10000000' => '10 Mbps',
'11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps',
'16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3',
'44736000' => 'T3',
'45000000' => '45 Mbps',
@@ -1927,11 +2000,11 @@ SNMP::INFO INTERNALS
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
'155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12',
'622000000' => 'OC-12',
@@ -1953,6 +2026,10 @@ SNMP::INFO INTERNALS
munge_ip()
Takes a binary IP and makes it dotted ASCII.
munge_inetaddress
Takes a binary IP address as defined by the SNMP InetAddress type
and returns it as human readable string;
munge_mac()
Takes an octet stream (HEX-STRING) and returns a colon separated
ASCII hex string.
@@ -1984,7 +2061,7 @@ SNMP::INFO INTERNALS
handles the "newer" definitions for the enumeration in IF-MIB.
TODO: Get the precedence of MIBs and overriding of MIB data in
Net-SNMP figured out. Heirarchy/precendence of MIBS in SNMP::Info.
Net-SNMP figured out. Hierarchy/precedence of MIBS in SNMP::Info.
munge_port_list()
Takes an octet string representing a set of ports and returns a
@@ -2004,7 +2081,7 @@ SNMP::INFO INTERNALS
resolve_desthost()
Takes the SNMP::Session "DestHost" argument and determines if it is
an 'IPv4' or 'IPv6' host. 'IPv6' hosts are prefixed with the "udp6:"
"transport-specifier" as required by the undelying "Net-SNMP"
"transport-specifier" as required by the underlying "Net-SNMP"
library. If unable to determine the type of address or resolve a DNS
name, dies with "croak".
@@ -2178,17 +2255,13 @@ SNMP::INFO INTERNALS
Calls parent can() first to see if method exists, if not validates
that a method should be created then dispatches to the appropriate
internal method for creation. The newly created method is inserted
into the symbol table returning to AUTOLOAD only for the initial
method call.
internal method for creation.
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
avoid AUTOLOAD() and dispatch directly.
loaded MIBs are used by AUTOLOAD() to create dynamic methods.
1. Returns unless method is listed in %FUNCS, %GLOBALS, or is a MIB Leaf
node name in a loaded MIB for given class.

View File

@@ -21,11 +21,11 @@ use NetAddr::IP::Lite ':lower';
@SNMP::Info::ISA = qw/Exporter/;
@SNMP::Info::EXPORT_OK = qw//;
use vars
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
$NOSUCH $BIGINT $REPEATERS/;
our
($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG, %SPEED_MAP,
$NOSUCH, $BIGINT, $REPEATERS);
$VERSION = '3.65';
$VERSION = '3.83';
=head1 NAME
@@ -33,7 +33,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.65
SNMP::Info - Version 3.83
=head1 AUTHOR
@@ -265,12 +265,6 @@ support.
See documentation in L<SNMP::Info::Bridge> for details.
=item SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in L<SNMP::Info::CiscoAgg> for details.
=item SNMP::Info::CDP
F<CISCO-CDP-MIB>. Cisco Discovery Protocol (CDP) Support. Inherited by
@@ -278,6 +272,19 @@ Cisco, Enterasys, and HP devices.
See documentation in L<SNMP::Info::CDP> for details.
=item SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in L<SNMP::Info::CiscoAgg> for details.
=item SNMP::Info::CiscoBGP
F<CISCO-BGP4-MIB>. Cisco BGPv4 support. Inherited by Cisco devices with
Layer3 support.
See documentation in L<SNMP::Info::CiscoBGP> for details.
=item SNMP::Info::CiscoConfig
F<CISCO-CONFIG-COPY-MIB>, F<CISCO-FLASH-MIB>, and F<OLD-CISCO-SYS-MIB>.
@@ -317,12 +324,6 @@ F<CISCO-STACK-MIB>.
See documentation in L<SNMP::Info::CiscoStack> for details.
=item SNMP::Info::CiscoStpExtensions
F<CISCO-STP-EXTENSIONS-MIB>
See documentation in L<SNMP::Info::CiscoStpExtensions> for details.
=item SNMP::Info::CiscoStats
F<OLD-CISCO-CPU-MIB>, F<CISCO-PROCESS-MIB>, and F<CISCO-MEMORY-POOL-MIB>.
@@ -331,6 +332,12 @@ devices.
See documentation in L<SNMP::Info::CiscoStats> for details.
=item SNMP::Info::CiscoStpExtensions
F<CISCO-STP-EXTENSIONS-MIB>
See documentation in L<SNMP::Info::CiscoStpExtensions> for details.
=item SNMP::Info::CiscoVTP
F<CISCO-VTP-MIB>, F<CISCO-VLAN-MEMBERSHIP-MIB>,
@@ -338,6 +345,18 @@ F<CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB>
See documentation in L<SNMP::Info::CiscoVTP> for details.
=item SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in L<SNMP::Info::DocsisCM> for details.
=item SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS
See documentation in L<SNMP::Info::DocsisHE> for details.
=item SNMP::Info::EDP
Extreme Discovery Protocol. F<EXTREME-EDP-MIB>
@@ -363,13 +382,11 @@ Foundry (Brocade) Discovery Protocol. F<FOUNDRY-SN-SWITCH-GROUP-MIB>
See documentation in L<SNMP::Info::FDP> for details.
=item SNMP::Info::IPv6
=item SNMP::Info::IEEE802_Bridge
SNMP Interface for obtaining configured IPv6 addresses and mapping IPv6
addresses to MAC addresses and interfaces, using information from F<IP-MIB>,
F<IPV6-MIB> and/or F<CISCO-IETF-IP-MIB>.
SNMP Interface to data available through the F<IEEE8021-Q-BRIDGE-MIB>
See documentation in L<SNMP::Info::IPv6> for details.
See documentation in L<SNMP::Info::IEEE802_Bridge> for details.
=item SNMP::Info::IEEE802dot11
@@ -384,6 +401,14 @@ SNMP Interface to IEEE Aggregated Links. F<IEEE8023-LAG-MIB>
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=item SNMP::Info::IPv6
SNMP Interface for obtaining configured IPv6 addresses and mapping IPv6
addresses to MAC addresses and interfaces, using information from F<IP-MIB>,
F<IPV6-MIB> and/or F<CISCO-IETF-IP-MIB>.
See documentation in L<SNMP::Info::IPv6> for details.
=item SNMP::Info::LLDP
F<LLDP-MIB>, F<LLDP-EXT-DOT1-MIB>, and F<LLDP-EXT-DOT3-MIB>. Link Layer
@@ -510,7 +535,7 @@ See documentation in L<SNMP::Info::Layer2::Adtran> for details.
=item SNMP::Info::Layer2::Aerohive
Subclass for Aerohive Access Points.
Subclass for Aerohive / Extreme access points.
See documentation in L<SNMP::Info::Layer2::Aerohive> for details.
@@ -577,7 +602,7 @@ See documentation in L<SNMP::Info::Layer2::Centillion> for details.
=item SNMP::Info::Layer2::Cisco
Generic Cisco subclass for layer 2 devices that are not yet supported
in more specific subclassesand the base layer 2 Cisco class for
in more specific subclasses and the base layer 2 Cisco class for
other device specific layer 2 Cisco classes.
See documentation in L<SNMP::Info::Layer2::Cisco> for details.
@@ -645,7 +670,7 @@ See documentation in L<SNMP::Info::Layer2::Netgear> for details.
Subclass for Nexans switches
See documetion in L<SNMP::Info::Layer2::Nexans> for details.
See documentation in L<SNMP::Info::Layer2::Nexans> for details.
=item SNMP::Info::Layer2::NWSS2300
@@ -698,8 +723,6 @@ See documentation in L<SNMP::Info::Layer3> for details.
Subclass for Cisco Aironet wireless access points (AP) not running IOS. These
are usually older devices.
MIBs for these devices now included in v2.tar.gz available from ftp.cisco.com.
Note L<SNMP::Info::Layer2::Aironet>
See documentation in L<SNMP::Info::Layer3::Aironet> for details.
@@ -731,6 +754,12 @@ Subclass for Aruba wireless switches.
See documentation in L<SNMP::Info::Layer3::Aruba> for details.
=item SNMP::Info::Layer3::ArubaCX
SNMP Interface to L3 Devices running ArubaOS-CX
See documentation in L<SNMP::Info::Layer3::ArubaCX> for details.
=item SNMP::Info::Layer3::BayRS
Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This includes
@@ -740,7 +769,7 @@ See documentation in L<SNMP::Info::Layer3::BayRS> for details.
=item SNMP::Info::Layer3::BlueCoatSG
Subclass for Blue Coat SG series proxy devices.
Subclass for BlueCoat SG series proxy devices.
See documentation in L<SNMP::Info::Layer3::BlueCoatSG> for details.
@@ -758,8 +787,9 @@ See documentation in L<SNMP::Info::Layer3::C4000> for details.
=item SNMP::Info::Layer3::C6500
This class covers Catalyst 6500s in native mode, hybrid mode. Catalyst
3750's, 2970's and probably others.
This class covers Catalyst 6500 series running CatOS or IOS, as well as
Catalyst 2960, 2970, 3750 and 3850 series, including blade switches
CBS30x0 and CBS31x0 series, all running IOS.
See documentation in L<SNMP::Info::Layer3::C6500> for details.
@@ -769,6 +799,12 @@ Subclass for CheckPoint devices.
See documentation in L<SNMP::Info::Layer3::CheckPoint> for details.
=item SNMP::Info::Layer3::Ciena
Subclass for Ciena devices.
See documentation in L<SNMP::Info::Layer3::Ciena> for details.
=item SNMP::Info::Layer3::Cisco
This is a simple wrapper around layer 3 for IOS devices and the base layer 3
@@ -805,12 +841,6 @@ 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. The IBM BladeCenter
@@ -819,6 +849,12 @@ also use this module based upon MIB support.
See documentation in L<SNMP::Info::Layer3::Dell> 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::Enterasys
Subclass for Enterasys devices.
@@ -906,6 +942,12 @@ Subclass for Lantronix devices.
See documentation in L<SNMP::Info::Layer3::Lantronix> for details.
=item SNMP::Info::Layer3::Lenovo
Subclass for Lenovo switches running CNOS.
See documentation in L<SNMP::Info::Layer3::Lenovo> for details.
=item SNMP::Info::Layer3::Microsoft
Subclass for Generic Microsoft Routers running Microsoft Windows OS.
@@ -979,18 +1021,42 @@ Subclass for Pica8 devices.
See documentation in L<SNMP::Info::Layer3::Pica8> for details.
=item SNMP::Info::Layer3::Redlion
Subclass for redlion routers.
See documentation in L<SNMP::Info::Layer3::Redlion> for details.
=item SNMP::Info::Layer3::Scalance
Subclass for Siemens Scalance devices.
See documentation in L<SNMP::Info::Layer3::Scalance> for details.
=item SNMP::Info::Layer3::SonicWALL
Subclass for generic SonicWALL devices.
See documentation in L<SNMP::Info::Layer3::SonicWALL> for details.
=item SNMP::Info::Layer3::Steelfusion
Subclass for Riverbed Steelfusion WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::Steelfusion> for details.
=item SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances.
Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::Steelhead> for details.
=item SNMP::Info::Layer3::SteelheadEx
Subclass for Riverbed SteelheadEx WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::SteelheadEx> for details.
=item SNMP::Info::Layer3::Sun
Subclass for Generic Sun Routers running SunOS.
@@ -1003,6 +1069,12 @@ Subclass for Avaya Secure Routers.
See documentation in L<SNMP::Info::Layer3::Tasman> for details.
=item SNMP::Info::Layer3::Teltonika
Subclass for Teltonika RUT9xx series routers.
See documentation in L<SNMP::Info::Layer3::Teltonika> for details.
=item SNMP::Info::Layer3::Timetra
Alcatel-Lucent SR Class.
@@ -1021,6 +1093,12 @@ Subclass for VMware ESXi hosts.
See documentation in L<SNMP::Info::Layer3::VMware> for details.
=item SNMP::Info::Layer3::Whiterabbit
Subclass for whiterabbit devices.
See documentation in L<SNMP::Info::Layer3::Whiterabbit> for details.
=back
=back
@@ -1059,6 +1137,12 @@ Subclass for Gigamon devices.
See documentation in L<SNMP::Info::Layer7::Gigamon> for details.
=item SNMP::Info::Layer7::HWGroup
Subclass for HW Group devices.
See documentation in L<SNMP::Info::Layer7::HWGroup> for details.
=item SNMP::Info::Layer7::Liebert
Subclass for Liebert devices.
@@ -1067,7 +1151,7 @@ See documentation in L<SNMP::Info::Layer7::Liebert> for details.
=item SNMP::Info::Layer7::Neoteris
Subclass for Juniper SSL VPN appliances.
Subclass for Pulse Secure / Juniper SSL VPN appliances.
See documentation in L<SNMP::Info::Layer7::Neoteris> for details.
@@ -1243,7 +1327,7 @@ Some older devices don't support SNMP version 2, and will not return anything
when a connection under Version 2 is attempted.
Some newer devices will support Version 1, but will not return all the data
they might have if you had connected under Version 1
they might have if you had connected under Version 1.
When trying to get info from a new device, you may have to try version 2 and
then fallback to version 1.
@@ -1376,7 +1460,15 @@ sub new {
$new_obj->{snmp_comm} = $sess->{Community} || $args{Community} || 'public';
$new_obj->{snmp_user} = $sess->{SecName} || $args{SecName} || 'initial';
return $auto_specific ? $new_obj->specify() : $new_obj;
my $info = $auto_specific ? $new_obj->specify() : $new_obj;
if (defined $info and ($info->debug() > 1)) {
require mro;
print STDERR (ref $info) ." has resolution order: \n";
print STDERR " $_\n" foreach @{ mro::get_linear_isa( ref $info ) };
}
return $info;
}
=item update()
@@ -1620,41 +1712,45 @@ sub device_type {
# Hash for generic fallback to a device class if unable to determine using
# the sysDescr regex.
my %l3sysoidmap = (
9 => 'SNMP::Info::Layer3::Cisco',
11 => 'SNMP::Info::Layer2::HP',
18 => 'SNMP::Info::Layer3::BayRS',
42 => 'SNMP::Info::Layer3::Sun',
43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack',
171 => 'SNMP::Info::Layer3::DLink',
244 => 'SNMP::Info::Layer3::Lantronix',
311 => 'SNMP::Info::Layer3::Microsoft',
9 => 'SNMP::Info::Layer3::CiscoSwitch',
11 => 'SNMP::Info::Layer2::HP',
18 => 'SNMP::Info::Layer3::BayRS',
42 => 'SNMP::Info::Layer3::Sun',
43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack',
96 => 'SNMP::Info::Layer3::Whiterabbit',
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',
3224 => 'SNMP::Info::Layer3::Netscreen',
3375 => 'SNMP::Info::Layer3::F5',
3417 => 'SNMP::Info::Layer3::BlueCoatSG',
3717 => 'SNMP::Info::Layer3::Genua',
4526 => 'SNMP::Info::Layer2::Netgear',
4874 => 'SNMP::Info::Layer3::ERX',
5624 => 'SNMP::Info::Layer3::Enterasys',
6027 => 'SNMP::Info::Layer3::Force10',
6486 => 'SNMP::Info::Layer3::AlcatelLucent',
6527 => 'SNMP::Info::Layer3::Timetra',
6876 => 'SNMP::Info::Layer3::VMware',
8072 => 'SNMP::Info::Layer3::NetSNMP',
9303 => 'SNMP::Info::Layer3::PacketFront',
674 => 'SNMP::Info::Layer3::Dell',
1588 => 'SNMP::Info::Layer3::Foundry',
1872 => 'SNMP::Info::Layer3::AlteonAD',
1890 => 'SNMP::Info::Layer3::Redlion',
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',
3224 => 'SNMP::Info::Layer3::Netscreen',
3375 => 'SNMP::Info::Layer3::F5',
3417 => 'SNMP::Info::Layer3::BlueCoatSG',
3717 => 'SNMP::Info::Layer3::Genua',
4413 => 'SNMP::Info::Layer2::Ubiquiti',
4526 => 'SNMP::Info::Layer2::Netgear',
4874 => 'SNMP::Info::Layer3::ERX',
5624 => 'SNMP::Info::Layer3::Enterasys',
6027 => 'SNMP::Info::Layer3::Force10',
6141 => 'SNMP::Info::Layer3::Ciena',
6486 => 'SNMP::Info::Layer3::AlcatelLucent',
6527 => 'SNMP::Info::Layer3::Timetra',
6876 => 'SNMP::Info::Layer3::VMware',
8072 => 'SNMP::Info::Layer3::NetSNMP',
9303 => 'SNMP::Info::Layer3::PacketFront',
10002 => 'SNMP::Info::Layer2::Ubiquiti',
10418 => 'SNMP::Info::Layer1::Cyclades',
12325 => 'SNMP::Info::Layer3::Pf',
@@ -1665,18 +1761,20 @@ sub device_type {
14823 => 'SNMP::Info::Layer3::Aruba',
14988 => 'SNMP::Info::Layer3::Mikrotik',
17163 => 'SNMP::Info::Layer3::Steelhead',
19046 => 'SNMP::Info::Layer3::Lenovo',
21091 => 'SNMP::Info::Layer2::Exinda',
25506 => 'SNMP::Info::Layer3::H3C',
25461 => 'SNMP::Info::Layer3::PaloAlto',
25506 => 'SNMP::Info::Layer3::H3C',
26543 => 'SNMP::Info::Layer3::IBMGbTor',
30065 => 'SNMP::Info::Layer3::Arista',
35098 => 'SNMP::Info::Layer3::Pica8',
41112 => 'SNMP::Info::Layer2::Ubiquiti',
4413 => 'SNMP::Info::Layer2::Ubiquiti',
26928 => 'SNMP::Info::Layer2::Aerohive',
30065 => 'SNMP::Info::Layer3::Arista',
30803 => 'SNMP::Info::Layer3::VyOS',
44641 => 'SNMP::Info::Layer3::VyOS',
35098 => 'SNMP::Info::Layer3::Pica8',
40310 => 'SNMP::Info::Layer3::Cumulus',
41112 => 'SNMP::Info::Layer2::Ubiquiti',
44641 => 'SNMP::Info::Layer3::VyOS',
47196 => 'SNMP::Info::Layer3::ArubaCX',
48690 => 'SNMP::Info::Layer3::Teltonika',
);
my %l2sysoidmap = (
@@ -1684,12 +1782,14 @@ sub device_type {
11 => 'SNMP::Info::Layer2::HP',
43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack',
96 => 'SNMP::Info::Layer3::Whiterabbit',
171 => 'SNMP::Info::Layer3::DLink',
207 => 'SNMP::Info::Layer2::Allied',
266 => 'SNMP::Info::Layer2::Nexans',
664 => 'SNMP::Info::Layer2::Adtran',
674 => 'SNMP::Info::Layer3::Dell',
1872 => 'SNMP::Info::Layer3::AlteonAD',
1890 => 'SNMP::Info::Layer3::Redlion',
1916 => 'SNMP::Info::Layer3::Extreme',
1991 => 'SNMP::Info::Layer3::Foundry',
2011 => 'SNMP::Info::Layer3::Huawei',
@@ -1699,6 +1799,7 @@ sub device_type {
3375 => 'SNMP::Info::Layer3::F5',
4526 => 'SNMP::Info::Layer2::Netgear',
5624 => 'SNMP::Info::Layer3::Enterasys',
6141 => 'SNMP::Info::Layer3::Ciena',
6486 => 'SNMP::Info::Layer3::AlcatelLucent',
9303 => 'SNMP::Info::Layer3::PacketFront',
10418 => 'SNMP::Info::Layer1::Cyclades',
@@ -1712,6 +1813,8 @@ sub device_type {
21091 => 'SNMP::Info::Layer2::Exinda',
26543 => 'SNMP::Info::Layer3::IBMGbTor',
26928 => 'SNMP::Info::Layer2::Aerohive',
47196 => 'SNMP::Info::Layer3::ArubaCX',
48690 => 'SNMP::Info::Layer3::Teltonika',
);
my %l1sysoidmap = (
@@ -1724,8 +1827,9 @@ sub device_type {
476 => 'SNMP::Info::Layer7::Liebert',
5951 => 'SNMP::Info::Layer7::Netscaler',
9694 => 'SNMP::Info::Layer7::Arbor',
14525 => 'SNMP::Info::Layer2::Trapeze',
12532 => 'SNMP::Info::Layer7::Neoteris',
14525 => 'SNMP::Info::Layer2::Trapeze',
21796 => 'SNMP::Info::Layer7::HWGroup',
26866 => 'SNMP::Info::Layer7::Gigamon',
);
@@ -1758,7 +1862,7 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Aironet'
if ( $desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/ );
# Override voice gateway device (VG350) showing up as Aironet
# Override voice gateway device (VG350) showing up as Aironet
$objtype = 'SNMP::Info::Layer3::Cisco' if $desc =~ /VG350/;
# Cat6k with older SUPs (hybrid CatOS/IOS?)
@@ -1867,6 +1971,32 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::NWSS2300'
if (
$desc =~ /^(Nortel\s)??Wireless\sSecurity\sSwitch\s23[568][012]\b/);
# Siemens Simatic Scalance
# Scalance overwrites layers later,
# so if we don't add it here (layer3) and at other
# it would flip/flop between those
$objtype = 'SNMP::Info::Layer3::Scalance'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.4329\.6\.1\.2/i );
# Aruba wireless switches (issue #403)
$objtype = 'SNMP::Info::Layer3::Aruba'
if ( $desc =~ /ArubaOS/ );
# Teltonika RUT9xx Series
$objtype = 'SNMP::Info::Layer3::Teltonika'
if (
$desc =~ /\bTeltonika.*RUT9\d{2}\b/);
# Riverbed Steelfusion
$objtype = 'SNMP::Info::Layer3::SteelheadEx'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.17163\.1\.51/i );
$objtype = 'SNMP::Info::Layer3::Steelfusion'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.17163\.1\.52/i );
# Whiterabbit Timing
$objtype = 'SNMP::Info::Layer3::Whiterabbit'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.96\.100\.1000/i );
# Generic device classification based upon sysObjectID
if ( ( $objtype eq 'SNMP::Info::Layer3' )
@@ -1875,7 +2005,6 @@ sub device_type {
{
$objtype = $l3sysoidmap{$id};
}
# Layer 2 Supported
}
elsif ( $info->has_layer(2) ) {
@@ -1997,6 +2126,11 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::ZyXEL_DSLAM'
if ( $desc =~ /8-port .DSL Module\(Annex .\)/i );
# Generic DOCSIS Cable Modem override
# If sysDesc follows the DOCSIS standard
$objtype = 'SNMP::Info::DocsisCM'
if ( $desc =~ /<<HW_REV: .*; VENDOR: .*; BOOTR: .*; SW_REV: .*; MODEL: .*>>/i);
# Generic device classification based upon sysObjectID
if ( ( $objtype eq 'SNMP::Info::Layer2' )
and ( defined($id) )
@@ -2067,6 +2201,22 @@ sub device_type {
$objtype = 'SNMP::Info::Layer7::CiscoIPS'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.9\.1\.1545/i );
# Siemens Simatic Scalance
# Scalance overwrites layers later,
# so if we don't add it here (layer3) and at other
# it would flip/flop between those
$objtype = 'SNMP::Info::Layer3::Scalance'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.4329\.6\.1\.2/i );
# Whiterabbit Timing
$objtype = 'SNMP::Info::Layer3::Whiterabbit'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.96\.100\.1000/i );
# Teltonika RUT9xx Series
$objtype = 'SNMP::Info::Layer3::Teltonika'
if (
$desc =~ /\bTeltonika.*RUT9\d{2}\b/);
# Generic device classification based upon sysObjectID
if ( defined($id) and $objtype eq 'SNMP::Info') {
if ( defined $l3sysoidmap{$id} ) {
@@ -2152,7 +2302,7 @@ Returns an object of a more-specific subclass.
my $info = new SNMP::Info(...);
# Returns more specific object type
$info = $info->specific();
my $specific = $info->specify();
Usually this method is called internally from new(AutoSpecify => 1)
@@ -2195,6 +2345,7 @@ sub specify {
$self->debug()
and print "SNMP::Info::specify() - Changed Class to $device_type.\n";
return $sub_obj;
}
@@ -2213,7 +2364,7 @@ sub cisco_comm_indexing {
=back
=head2 Globals (Scalar Methods)
=head2 GLOBALS (Scalar Methods)
These are methods to return scalar data from RFC1213.
@@ -2767,17 +2918,17 @@ For protocol specific information and implementation:
=over
=item LLDP: See L<SNMP::Info::LLDP> for details.
=item AMAP: See L<SNMP::Info::AMAP> for details.
=item CDP: See L<SNMP::Info::CDP> for details.
=item SONMP: See L<SNMP::Info::SONMP> for details.
=item EDP: See L<SNMP::Info::EDP> for details.
=item FDP: See L<SNMP::Info::FDP> for details.
=item EDP: See L<SNMP::Info::EDP> for details.
=item LLDP: See L<SNMP::Info::LLDP> for details.
=item AMAP: See L<SNMP::Info::AMAP> for details.
=item SONMP: See L<SNMP::Info::SONMP> for details.
=back
@@ -2872,7 +3023,7 @@ sub ip_netmask {
$prefix = $1;
}
my $new_iid = join( ".", @parts );
my $mask = NetAddr::IP::Lite->new( $new_iid . '/' . $prefix )->mask()
my $mask = eval { NetAddr::IP::Lite->new( $new_iid . '/' . $prefix )->mask() }
|| undef;
$ip_netmask{$new_iid} = $mask;
@@ -3204,7 +3355,7 @@ A class inheriting this class must implement these data structures :
=over
=item $INIT
=item $INIT
Used to flag if the MIBs have been loaded yet.
@@ -3351,10 +3502,10 @@ $info->init() will throw an exception if a MIB does not load.
%MIBS = (
# Include these here for cases where the Net-SNMP default MIB list has
# been overridden during the compliation of the local Net-SNMP library.
# been overridden during the compilation of the local Net-SNMP library.
# These cover the globals and funcs defined in this file.
'SNMPv2-MIB' => 'sysObjectID',
'RFC1213-MIB' => 'ipRouteIfIndex',
# (#325) 'RFC1213-MIB' => 'ipRouteIfIndex',
'IP-MIB' => 'ipAdEntAddr',
'IF-MIB' => 'ifIndex',
);
@@ -3408,6 +3559,7 @@ will inherit the Cisco Vlan module as an example.
$VERSION = 0.1;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@@ -3417,18 +3569,18 @@ will inherit the Cisco Vlan module as an example.
SNMP::Info::CiscoVTP Exporter/;
@SNMP::Info::Layer2::Sample::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG);
%MIBS = (%SNMP::Info::Layer2::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
'SUPER-DOOPER-MIB' => 'supermibobject'
'SUPER-DOOPER-MIB' => 'supermibobject',
);
%GLOBALS = (%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
'name' => 'supermib_supername',
'favorite_color' => 'supermib_fav_color_object',
'favorite_movie' => 'supermib_fav_movie_val'
'favorite_movie' => 'supermib_fav_movie_val',
);
%FUNCS = (%SNMP::Info::Layer2::FUNCS,
@@ -3436,16 +3588,16 @@ will inherit the Cisco Vlan module as an example.
# Super Dooper MIB - Super Hero Table
'super_hero_index' => 'SuperHeroIfIndex',
'super_hero_name' => 'SuperHeroIfName',
'super_hero_powers' => 'SuperHeroIfPowers'
'super_hero_powers' => 'SuperHeroIfPowers',
);
%MUNGE = (%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
'super_hero_powers' => \&munge_powers
'super_hero_powers' => \&munge_powers,
);
# OverRide uptime() method from %SNMP::Info::GLOBALS
# Override uptime() method from %SNMP::Info::GLOBALS
sub uptime {
my $sample = shift;
@@ -3533,7 +3685,7 @@ $NOSUCH = 1;
=item $REPEATERS
Default 20. MaxRepeaters for BULKWALK operations. See C<perldoc SNMP> for
more info. Can change by passing L<BulkRepeaters> option in new()
more info. Can change by passing L</BulkRepeaters> option in new()
=cut
@@ -3552,7 +3704,7 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
%SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps',
'115000' => '115 kpbs',
'115000' => '115 kbps',
'1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1',
@@ -3563,9 +3715,9 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
'4000000' => '4.0 Mbps',
'10000000' => '10 Mbps',
'11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps',
'16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3',
'44736000' => 'T3',
'45000000' => '45 Mbps',
@@ -3575,11 +3727,11 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
'155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12',
'622000000' => 'OC-12',
@@ -3599,7 +3751,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
%SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps',
'115000' => '115 kpbs',
'115000' => '115 kbps',
'1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1',
@@ -3610,9 +3762,9 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'4000000' => '4.0 Mbps',
'10000000' => '10 Mbps',
'11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps',
'16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3',
'44736000' => 'T3',
'45000000' => '45 Mbps',
@@ -3622,11 +3774,11 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
'155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12',
'622000000' => 'OC-12',
@@ -3684,6 +3836,27 @@ sub munge_ip {
return join( '.', unpack( 'C4', $ip ) );
}
=item munge_inetaddress
Takes a binary IP address as defined by the SNMP InetAddress type and returns
it as human readable string;
=cut
sub munge_inetaddress {
my $ip = shift;
# 4 bytes = IPv4
if (length($ip) == 4) {
return SNMP::Info::munge_ip($ip);
}
# 16 bytes = IPv6
elsif (length($ip) == 16) {
return sprintf( "%x:%x:%x:%x:%x:%x:%x:%x",
unpack( 'n8', $ip ));
}
return '';
}
=item munge_mac()
Takes an octet stream (HEX-STRING) and returns a colon separated ASCII hex
@@ -3796,7 +3969,7 @@ updated enumeration for C<ifOperStatus> in C<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 Net-SNMP
figured out. Heirarchy/precendence of MIBS in SNMP::Info.
figured out. Hierarchy/precedence of MIBS in SNMP::Info.
=cut
@@ -3868,7 +4041,7 @@ sub munge_e_type {
Takes the SNMP::Session C<DestHost> argument and determines if it is an
'IPv4' or 'IPv6' host. 'IPv6' hosts are prefixed with the C<udp6:>
C<transport-specifier> as required by the undelying C<Net-SNMP> library.
C<transport-specifier> as required by the underlying C<Net-SNMP> library.
If unable to determine the type of address or resolve a DNS name, dies with
C<croak>.
@@ -4581,7 +4754,7 @@ sub _load_attr {
# Another check for SNMPv1 - noSuchName return may results in an $iid
# we've already seen and $val an empty string. If we don't catch
# this here we erronously report a loop below.
# this here we erroneously report a loop below.
if ( defined $seen{$iid} and $seen{$iid} and $val eq '' ) {
last;
}
@@ -4822,6 +4995,11 @@ sub _validate_autoload_method {
return [1,(exists $self->{store}->{$method} ? 1: 0)];
}
# (#325) lazy load legacy RFC1213-MIB only if needed
SNMP::loadModules('RFC1213-MIB')
if $leaf_name =~ m/^(?:RFC1213-MIB::|ipr_|ipRoute)/
and not SNMP::translateObj($leaf_name);
# Translate MIB leaf node name to OID
my $oid = SNMP::translateObj($leaf_name);
@@ -4851,7 +5029,7 @@ sub _validate_autoload_method {
|| ($method !~ /^set/ && $access eq 'NoAccess')) {
print
"SNMP::Info::_validate_autoload_method($attr : $oid) Not accessable for requested operation.\n"
"SNMP::Info::_validate_autoload_method($attr : $oid) Not accessible for requested operation.\n"
if $self->debug();
return;
@@ -4898,8 +5076,7 @@ capabilities to include dynamic methods generated at run time via AUTOLOAD.
Calls parent can() first to see if method exists, if not validates that a
method should be created then dispatches to the appropriate internal method
for creation. The newly created method is inserted into the symbol table
returning to AUTOLOAD only for the initial method call.
for creation.
Returns undef if the method does not exist and can not be created.
@@ -4933,18 +5110,24 @@ sub can {
# We could add load_/orig_/_raw alternatives to symbol table here on
# first call of any type for a global or func since they all use the same
# destination code, but they aren't used heavily in main code base so
# well just create if/when they are called rather than pollute the
# we'll just create if/when they are called rather than pollute the
# symbol table with entries that never get called.
# Between 2012-2020 we actually added the methods generated below to the
# symbol table, but they were global to the SNMP::Info class, while
# methods for different device classes may point to different SNMP
# objects. This made interacting with multiple device types from a single
# script somewhat unreliable.
# Check for set_ ing.
if ( $method =~ /^set_/ ) {
return *{$method} = _make_setter( $method, $oid, @_ );
return _make_setter( $method, $oid, @_ );
}
elsif ( defined $funcs->{$base_method} || $table ) {
return *{$method} = _load_attr( $method, $oid, @_ );
return _load_attr( $method, $oid, @_ );
}
else {
return *{$method} = _global( $method, $oid );
return _global( $method, $oid );
}
}
@@ -4953,9 +5136,7 @@ sub can {
=head2 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 avoid
AUTOLOAD() and dispatch directly.
loaded MIBs are used by AUTOLOAD() to create dynamic methods.
=over
@@ -4984,13 +5165,11 @@ subclass.
=cut
our $AUTOLOAD;
sub AUTOLOAD {
my $self = shift;
my ($sub_name) = $AUTOLOAD =~ /::(\w+)$/;
my ($sub_name) = $AUTOLOAD =~ /::([a-zA-Z0-9_-]+)$/;
return if $sub_name eq 'CARP_TRACE';
return if $sub_name eq 'CARP_TRACE';
# Typos in function calls in SNMP::Info subclasses turn into
# AUTOLOAD requests for non-methods. While this is deprecated,

View File

@@ -30,26 +30,27 @@
package SNMP::Info::AMAP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::AMAP::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::AMAP::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
%MIBS = (
'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType',
);
%GLOBALS = (
);
%FUNCS = (
# EXTREME-EDP-MIB::extremeEdpTable
# ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB::aipAMAPRemHostname
'amap_rem_sysname' => 'aipAMAPRemHostname',
);
@@ -91,7 +92,7 @@ sub _conn_table_mac {
# address since they should all originate from the same device, but we don't
# know if they would all be reachable from the network management application.
#
# We don't inplement partials since this is private index function
# We don't implement partials since this is private index function
sub _amap_index {
my $amap = shift;
@@ -253,7 +254,7 @@ Eric Miller
$hasamap = $amap->hasAMAP() ? 'yes' : 'no';
# Print out a map of device ports with LLDP neighbors:
# Print out a map of device ports with AMAP neighbors:
my $interfaces = $amap->interfaces();
my $amap_if = $amap->amap_if();
my $amap_ip = $amap->amap_ip();
@@ -291,7 +292,7 @@ None.
=back
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP

View File

@@ -30,15 +30,16 @@
package SNMP::Info::AdslLine;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::AdslLine::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::AdslLine::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
@@ -105,8 +106,6 @@ none.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
=over

View File

@@ -30,15 +30,16 @@
package SNMP::Info::Aggregate;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::Aggregate::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::Aggregate::EXPORT_OK = qw/agg_ports_ifstack/;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
# Load MIB for leafs referenced within class
%MIBS = ('IF-MIB' => 'ifIndex',);

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Airespace
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::Airespace;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::Airespace::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::Airespace::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Bridge
# $Id$
#
# Changes since Version 0.7 Copyright (c) 2004 Max Baker
# All rights reserved.
@@ -34,15 +33,16 @@
package SNMP::Info::Bridge;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::Bridge::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::Bridge::EXPORT_OK = qw//;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
our ($VERSION, $DEBUG, %MIBS, %FUNCS, %GLOBALS, %MUNGE, $INIT);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
@@ -105,7 +105,7 @@ $VERSION = '3.65';
'stp_p_bridge' => 'dot1dStpPortDesignatedBridge',
'stp_p_port' => 'dot1dStpPortDesignatedPort',
# Rapid Spanning Tree Protocol Table : dot1dStpExtPortEntry
# Rapid Spanning Tree Protocol Table : dot1dStpExtPortEntry
'is_edgeport_admin' => 'dot1dStpPortAdminEdgePort',
'is_edgeport_oper' => 'dot1dStpPortOperEdgePort',
@@ -242,8 +242,10 @@ sub qb_fdb_index {
sub fw_mac {
my $bridge = shift;
my $qb = $bridge->qb_fw_mac();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
unless ($bridge->can('cisco_comm_indexing') && $bridge->cisco_comm_indexing()){
my $qb = $bridge->qb_fw_mac();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
}
return $bridge->SUPER::fw_mac();
}
@@ -251,8 +253,10 @@ sub fw_mac {
sub fw_port {
my $bridge = shift;
my $qb = $bridge->qb_fw_port();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
unless ($bridge->can('cisco_comm_indexing') && $bridge->cisco_comm_indexing()){
my $qb = $bridge->qb_fw_port();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
}
return $bridge->SUPER::fw_port();
}
@@ -260,8 +264,10 @@ sub fw_port {
sub fw_status {
my $bridge = shift;
my $qb = $bridge->qb_fw_status();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
unless ($bridge->can('cisco_comm_indexing') && $bridge->cisco_comm_indexing()){
my $qb = $bridge->qb_fw_status();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
}
return $bridge->SUPER::fw_status();
}
@@ -296,11 +302,11 @@ sub i_stp_port {
my %i_stp_port;
foreach my $index ( keys %$stp_p_port ) {
my $bridge = $stp_p_port->{$index};
my $bport = $stp_p_port->{$index};
my $iid = $bp_index->{$index};
next unless defined $iid;
next unless defined $bridge;
$i_stp_port{$iid} = $bridge;
next unless defined $bport;
$i_stp_port{$iid} = $bport;
}
return \%i_stp_port;
}
@@ -315,11 +321,11 @@ sub i_stp_id {
my %i_stp_id;
foreach my $index ( keys %$stp_p_id ) {
my $bridge = $stp_p_id->{$index};
my $bport = $stp_p_id->{$index};
my $iid = $bp_index->{$index};
next unless defined $iid;
next unless defined $bridge;
$i_stp_id{$iid} = $bridge;
next unless defined $bport;
$i_stp_id{$iid} = $bport;
}
return \%i_stp_id;
}
@@ -334,11 +340,11 @@ sub i_stp_bridge {
my %i_stp_bridge;
foreach my $index ( keys %$stp_p_bridge ) {
my $bridge = $stp_p_bridge->{$index};
my $bport = $stp_p_bridge->{$index};
my $iid = $bp_index->{$index};
next unless defined $iid;
next unless defined $bridge;
$i_stp_bridge{$iid} = $bridge;
next unless defined $bport;
$i_stp_bridge{$iid} = $bport;
}
return \%i_stp_bridge;
}
@@ -360,7 +366,7 @@ sub i_vlan {
my $bridge = shift;
my $partial = shift;
my $index = $bridge->bp_index();
my $index = $bridge->bp_index() or return {};
# If given a partial it will be an ifIndex, we need to use dot1dBasePort
if ($partial) {
@@ -423,7 +429,7 @@ sub _vlan_hoa {
my $vlan;
# Strip TimeFilter if we're using VlanCurrentTable
( $vlan = $idx ) =~ s/^\d+\.//;
($vlan = $idx) =~ s/^(\d+\.)*//g;
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
@@ -609,12 +615,11 @@ None.
=item F<Q-BRIDGE-MIB>
=item F<RSTP-MIB>
=back
F<BRIDGE-MIB> needs to be extracted from
ftp://ftp.cisco.com/pub/mibs/v1/v1.tar.gz
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CDP
# $Id$
#
# Changes since Version 0.7 Copyright (c) 2004 Max Baker
# All rights reserved.
@@ -34,16 +33,17 @@
package SNMP::Info::CDP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CDP::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CDP::EXPORT_OK = qw//;
use vars
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
our
($VERSION, $DEBUG, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $INIT, %CDP_CAPABILITIES);
$VERSION = '3.65';
$VERSION = '3.83';
# Five data structures required by SNMP::Info
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
@@ -82,7 +82,6 @@ $VERSION = '3.65';
'cdp_ver' => \&SNMP::Info::munge_null,
'cdp_ip' => \&SNMP::Info::munge_ip,
'cdp_power' => \&munge_power,
);
%CDP_CAPABILITIES = (
@@ -222,11 +221,17 @@ sub cdp_port {
my $ch = $cdp->cdp_dev_port($partial) || {};
# most devices return a string with the interface name here (Port-ID TLV)
# see https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/cdp/command/cdp-cr-book/cdp-cr-a1.html
# it seems however that some devices report hex encoded mac addresses for this, see
# https://github.com/netdisco/snmp-info/issues/252
# once these bad devices get known we can figure out workarounds for them
my %cdp_port;
foreach my $key ( sort keys %$ch ) {
my $port = $ch->{$key};
next unless $port;
$port = SNMP::Info::munge_mac($port) || SNMP::Info::munge_null($port);
$port = SNMP::Info::munge_null($port);
$cdp_port{$key} = $port;
}
return \%cdp_port;
@@ -259,7 +264,7 @@ Max Baker
$hascdp = $cdp->hasCDP() ? 'yes' : 'no';
# Print out a map of device ports with CDP neighbors:
my $interfaces = $cdp->interfaces();
my $interfaces = $cdp->interfaces();
my $cdp_if = $cdp->cdp_if();
my $cdp_ip = $cdp->cdp_ip();
my $cdp_port = $cdp->cdp_port();
@@ -278,8 +283,8 @@ SNMP::Info::CDP is a subclass of SNMP::Info that provides an object oriented
interface to CDP information through SNMP.
CDP is a Layer 2 protocol that supplies topology information of devices that
also speak CDP, mostly switches and routers. CDP is implemented in Cisco and
some HP devices.
also speak CDP, mostly switches and routers. CDP is implemented by Cisco and
several other vendors.
Create or use a device subclass that inherits this class. Do not use
directly.
@@ -299,9 +304,7 @@ None.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP
@@ -479,9 +482,10 @@ Returns remote platform id
=item $cdp->cdp_port()
Returns remote port ID
Returns remote Port-ID. Most of the time this is a string with the port name, but this
is not guaranteed to be so.
(C<cdpDevicePort>)
(C<cdpCacheDevicePort>)
=item $cdp->cdp_proto()

View File

@@ -30,7 +30,7 @@
package SNMP::Info::CiscoAgg;
use strict;
#use warnings;
use warnings;
use Exporter;
use SNMP::Info::IEEE802dot3ad;
@@ -46,9 +46,9 @@ use SNMP::Info::IEEE802dot3ad;
agg_ports_pagp
/;
use vars qw/$DEBUG $VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($DEBUG, $VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::IEEE802dot3ad::MIBS,
@@ -191,9 +191,7 @@ L<SNMP::Info::IEEE802dot3ad>
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 METHODS
=head1 TABLE METHODS
=over 4

267
lib/SNMP/Info/CiscoBGP.pm Normal file
View File

@@ -0,0 +1,267 @@
# SNMP::Info::CiscoBGP
#
# Copyright (c) 2022 Alexander Hartmaier
# 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::CiscoBGP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoBGP::ISA = qw( SNMP::Info Exporter );
@SNMP::Info::CiscoBGP::EXPORT_OK = qw(
parse_cisco_bgp_peer2_entry_index
);
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.83';
%MIBS = ( 'CISCO-BGP4-MIB' => 'cbgpPeer2State', );
%GLOBALS = ();
%FUNCS = (
# cbgpPeer2Table
'cisco_bgp_peer2_state' => 'cbgpPeer2State',
'cisco_bgp_peer2_adminstatus' => 'cbgpPeer2AdminStatus',
'cisco_bgp_peer2_localaddr' => 'cbgpPeer2LocalAddr',
'cisco_bgp_peer2_localport' => 'cbgpPeer2LocalPort',
'cisco_bgp_peer2_localas' => 'cbgpPeer2LocalAs',
'cisco_bgp_peer2_localidentifier' => 'cbgpPeer2LocalIdentifier',
'cisco_bgp_peer2_remoteport' => 'cbgpPeer2RemotePort',
'cisco_bgp_peer2_remoteas' => 'cbgpPeer2RemoteAs',
'cisco_bgp_peer2_remoteidentifier' => 'cbgpPeer2RemoteIdentifier',
'cisco_bgp_peer2_inupdates' => 'cbgpPeer2InUpdates',
'cisco_bgp_peer2_outupdates' => 'cbgpPeer2OutUpdates',
'cisco_bgp_peer2_intotalmessages' => 'cbgpPeer2InTotalMessages',
'cisco_bgp_peer2_outtotalmessages' => 'cbgpPeer2OutTotalMessages',
'cisco_bgp_peer2_lasterror' => 'cbgpPeer2LastError',
'cisco_bgp_peer2_fsmestablishedtransitions'
=> 'cbgpPeer2FsmEstablishedTransitions',
'cisco_bgp_peer2_fsmestablishedtime' => 'cbgpPeer2FsmEstablishedTime',
'cisco_bgp_peer2_connectretryinterval'=> 'cbgpPeer2ConnectRetryInterval',
'cisco_bgp_peer2_holdtime' => 'cbgpPeer2HoldTime',
'cisco_bgp_peer2_keepalive' => 'cbgpPeer2KeepAlive',
'cisco_bgp_peer2_holdtimeconfigured' => 'cbgpPeer2HoldTimeConfigured',
'cisco_bgp_peer2_keepaliveconfigured' => 'cbgpPeer2KeepAliveConfigured',
'cisco_bgp_peer2_minasoriginationinterval'
=> 'cbgpPeer2MinASOriginationInterval',
'cisco_bgp_peer2_inupdatelapsedtime' => 'cbgpPeer2InUpdateElapsedTime',
'cisco_bgp_peer2_lasterrortxt' => 'cbgpPeer2LastErrorTxt',
'cisco_bgp_peer2_prevstate' => 'cbgpPeer2PrevState',
# cbgpPeer2AddrFamilyPrefixTable
'cisco_bgp_peer2_acceptedprefixes' => 'cbgpPeer2AcceptedPrefixes',
'cisco_bgp_peer2_deniedprefixes' => 'cbgpPeer2DeniedPrefixes',
'cisco_bgp_peer2_prefixadminlimit' => 'cbgpPeer2PrefixAdminLimit',
'cisco_bgp_peer2_prefixthreshold' => 'cbgpPeer2PrefixThreshold',
'cisco_bgp_peer2_prefixclearthreshold'=> 'cbgpPeer2PrefixClearThreshold',
'cisco_bgp_peer2_advertisedprefixes' => 'cbgpPeer2AdvertisedPrefixes',
'cisco_bgp_peer2_suppressedprefixes' => 'cbgpPeer2SuppressedPrefixes',
'cisco_bgp_peer2_withdrawnprefixes' => 'cbgpPeer2WithdrawnPrefixes',
);
%MUNGE = (
'cisco_bgp_peer2_localaddr' => \&SNMP::Info::munge_inetaddress,
'cisco_bgp_peer2_lasterror' => \&SNMP::Info::munge_octet2hex,
);
sub parse_cisco_bgp_peer2_entry_index {
my ($self, $index) = @_;
my ($type, $addrlength, $ip) = split(/\./, $index, 3);
# decode IPv6 remote address
if ($addrlength == 16) {
# copied from SNMP::Info::IPv6/ipv6_addr
my @parts = split(/\./, $ip);
$ip = sprintf("%x:%x:%x:%x:%x:%x:%x:%x",
unpack('n8', pack('C*', @parts)));
}
return $type, $addrlength, $ip;
}
1;
__END__
=head1 NAME
SNMP::Info::CiscoBGP - SNMP Interface to Cisco's BGP MIBs
=head1 AUTHOR
Alexander Hartmaier
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $device = SNMP::Info->(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
) or die "Can't connect to DestHost.\n";
my $remoteas_for_index = $device->cisco_bgp_peer2_remoteas;
for my $index (keys $remoteas_for_index->%*) {
my ($type, $addrlength, $ip) =
$device->parse_cisco_bgp_peer2_entry_index($index);
printf('remote: %-39s type: %-4s remote AS: %5d',
$ip, $type, $remoteas_for_index->{$index});
}
=head1 DESCRIPTION
SNMP::Info::CiscoBGP is a subclass of SNMP::Info that provides
information about a cisco device's BGP configuration and state.
Use or create in a subclass of SNMP::Info. Do not use directly.
=head2 Inherited Classes
none.
=head2 Required MIBs
=over
=item F<CISCO-BGP4-MIB>
=back
=head1 GLOBALS
=over
None
=back
=head1 TABLE METHODS
=head2 Cisco BGP Peer 2 Table (cbgpPeer2Table)
This table contains, one entry per BGP peer, information about the connections
with BGP peers.
=over
=item cisco_bgp_peer2_state (cbgpPeer2State)
=item cisco_bgp_peer2_adminstatus (cbgpPeer2AdminStatus)
=item cisco_bgp_peer2_localaddr (cbgpPeer2LocalAddr)
=item cisco_bgp_peer2_localport (cbgpPeer2LocalPort)
=item cisco_bgp_peer2_localas (cbgpPeer2LocalAs)
=item cisco_bgp_peer2_localidentifier (cbgpPeer2LocalIdentifier)
=item cisco_bgp_peer2_remoteport (cbgpPeer2RemotePort)
=item cisco_bgp_peer2_remoteas (cbgpPeer2RemoteAs)
=item cisco_bgp_peer2_remoteidentifier (cbgpPeer2RemoteIdentifier)
=item cisco_bgp_peer2_inupdates (cbgpPeer2InUpdates)
=item cisco_bgp_peer2_outupdates (cbgpPeer2OutUpdates)
=item cisco_bgp_peer2_intotalmessages (cbgpPeer2InTotalMessages)
=item cisco_bgp_peer2_outtotalmessages (cbgpPeer2OutTotalMessages)
=item cisco_bgp_peer2_lasterror (cbgpPeer2LastError)
=item cisco_bgp_peer2_fsmestablishedtransitions (cbgpPeer2FsmEstablishedTransitions)
=item cisco_bgp_peer2_fsmestablishedtime (cbgpPeer2FsmEstablishedTime)
=item cisco_bgp_peer2_connectretryinterval (cbgpPeer2ConnectRetryInterval)
=item cisco_bgp_peer2_holdtime (cbgpPeer2HoldTime)
=item cisco_bgp_peer2_keepalive (cbgpPeer2KeepAlive)
=item cisco_bgp_peer2_holdtimeconfigured (cbgpPeer2HoldTimeConfigured)
=item cisco_bgp_peer2_keepaliveconfigured (cbgpPeer2KeepAliveConfigured)
=item cisco_bgp_peer2_minasoriginationinterval (cbgpPeer2MinASOriginationInterval)
=item cisco_bgp_peer2_inupdatelapsedtime (cbgpPeer2InUpdateElapsedTime)
=item cisco_bgp_peer2_lasterrortxt (cbgpPeer2LastErrorTxt)
=item cisco_bgp_peer2_prevstate (cbgpPeer2PrevState)
=back
=head2 Cisco BGP Peer 2 Address Family Prefix Table (cbgpPeer2AddrFamilyPrefixTable)
This table contains prefix related information related to address families
supported by a peer.
=over
=item cisco_bgp_peer2_acceptedprefixes (cbgpPeer2AcceptedPrefixes)
=item cisco_bgp_peer2_deniedprefixes (cbgpPeer2DeniedPrefixes)
=item cisco_bgp_peer2_prefixadminlimit (cbgpPeer2PrefixAdminLimit)
=item cisco_bgp_peer2_prefixthreshold (cbgpPeer2PrefixThreshold)
=item cisco_bgp_peer2_prefixclearthreshold (cbgpPeer2PrefixClearThreshold)
=item cisco_bgp_peer2_advertisedprefixes (cbgpPeer2AdvertisedPrefixes)
=item cisco_bgp_peer2_suppressedprefixes (cbgpPeer2SuppressedPrefixes)
=item cisco_bgp_peer2_withdrawnprefixes (cbgpPeer2WithdrawnPrefixes)
=back
=head2 METHODS
=over
=item parse_cisco_bgp_peer2_entry_index
Takes a cbgpPeer2Entry index as returned by all methods of the Cisco BGP Peer
2 Table methods.
Returns a list of type (numeric, cbgpPeer2Type), address length (in bytes:
4 for IPv4, 16 for IPv6) and the remote IP address as string.
=back
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoConfig
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::CiscoConfig;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoConfig::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoConfig::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoPortSecurity
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::CiscoPortSecurity;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoPortSecurity::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoPortSecurity::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE, %PAECAPABILITIES);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
@@ -110,7 +110,7 @@ $VERSION = '3.65';
%PAECAPABILITIES = (
0 => 'dot1xPaePortAuthCapable',
1 => 'dot1xPaePortSuppCapable'
1 => 'dot1xPaePortSuppCapable',
);
sub munge_pae_capabilities {

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoPower
# $Id$
#
# Copyright (c) 2008 Bill Fenner
# All rights reserved.
@@ -31,18 +30,20 @@
package SNMP::Info::CiscoPower;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoPower::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoPower::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption',
);
%GLOBALS = ();
@@ -153,6 +154,8 @@ Note that it requires that the device inherits from Info::Entity.
=item F<CISCO-POWER-ETHERNET-EXT-MIB>
=item F<CISCO-CDP-MIB>
=back
=head1 GLOBALS

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoQOS
# $Id$
#
# Copyright (c) 2005 Alexander Hartmaier
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::CiscoQOS;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoQOS::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoQOS::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
@@ -118,8 +118,6 @@ none.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoRTT
# $Id$
#
# Copyright (c) 2005 Alexander Hartmaier
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::CiscoRTT;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoRTT::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoRTT::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
@@ -99,8 +99,6 @@ none.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
=over
@@ -113,7 +111,7 @@ None
=head2 Overall Control Group Table
This table is from C<CISCO-RTTMAN-MIB::rttMonCtrlAdminTable>
This table is from C<CISCO-RTTMON-MIB::rttMonCtrlAdminTable>
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoStack
# $Id$
#
# Copyright (c) 2008 Max Baker
# All rights reserved.
@@ -31,14 +30,15 @@
package SNMP::Info::CiscoStack;
use strict;
use warnings;
use Exporter;
@SNMP::Info::CiscoStack::ISA = qw/Exporter/;
@SNMP::Info::CiscoStack::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE, %PORTSTAT);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
@@ -106,7 +106,7 @@ $VERSION = '3.65';
1 => 'other',
2 => 'ok',
3 => 'minorFault',
4 => 'majorFault'
4 => 'majorFault',
);
# Changes binary byte describing each port into ascii, and returns
@@ -286,8 +286,7 @@ __END__
=head1 NAME
SNMP::Info::CiscoStack - SNMP Interface to data from F<CISCO-STACK-MIB> and
F<CISCO-PORT-SECURITY-MIB>
SNMP::Info::CiscoStack - SNMP Interface to data from F<CISCO-STACK-MIB>
=head1 AUTHOR
@@ -296,7 +295,7 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $ciscostats = new SNMP::Info(
my $ciscostack = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
@@ -305,7 +304,7 @@ Max Baker
)
or die "Can't connect to DestHost.\n";
my $class = $ciscostats->class();
my $class = $ciscostack->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoStats
# $Id$
#
# Changes since Version 0.7 Copyright (c) 2008-2009 Max Baker and SNMP::Info Developers
# All rights reserved.
@@ -34,15 +33,16 @@
package SNMP::Info::CiscoStats;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoStats::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoStats::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
'SNMPv2-MIB' => 'sysDescr',
@@ -105,6 +105,10 @@ sub os {
# order here matters - there are Catalysts that run IOS and have catalyst
# in their description field, as well as Catalysts that run IOS-XE.
return 'ios-xe' if ( $descr =~ /Denali/ );
return 'ios-xe' if ( $descr =~ /Fuji/ );
return 'ios-xe' if ( $descr =~ /Everest/ );
return 'ios-xe' if ( $descr =~ /Gibraltar/ );
return 'ios-xe' if ( $descr =~ /IOS-XE/ );
return 'ios-xr' if ( $descr =~ /IOS XR/ );
return 'ios' if ( $descr =~ /IOS/ );
@@ -385,8 +389,6 @@ None.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
=over

View File

@@ -29,14 +29,14 @@
package SNMP::Info::CiscoStpExtensions;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
our ($VERSION, $DEBUG, %MIBS, %FUNCS, %GLOBALS, %MUNGE, %PORTSTAT, $INIT);
$VERSION = '3.65';
$VERSION = '3.83';
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
@@ -317,9 +317,7 @@ For debugging you can call new() directly as you would in SNMP::Info
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoVTP
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::CiscoVTP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoVTP::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoVTP::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -565,8 +565,6 @@ None.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
=over

126
lib/SNMP/Info/DocsisCM.pm Normal file
View File

@@ -0,0 +1,126 @@
# SNMP::Info::DocsisCM - SNMP Interface to DOCSIS Cable Modems
#
# Copyright (c) 2019 by The Netdisco Developer Team.
#
# 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::DocsisCM;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::DocsisCM::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::DocsisCM::EXPORT_OK = qw//;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE
);
sub vendor {
my $cm = shift;
my $descr = $cm->description();
return $1 if $descr =~ /VENDOR: (.*?);/;
}
sub model {
my $cm = shift;
my $descr = $cm->description();
return $1 if $descr =~ /MODEL: (.*?)>>/;
}
sub os {
return "CM";
}
sub os_ver {
my $cm = shift;
my $descr = $cm->description();
return $1 if $descr =~ /SW_REV: (.*?);/;
}
1;
__END__
=head1 NAME
SNMP::Info::DocsisCM - SNMP Interface for DOCSIS Cable Modems
=head1 DESCRIPTION
SNMP::Info::DocsisCM is a subclass of SNMP::Info that provides info
about a given cable modem. Extracts data from the sysDescr, which is
mandated in the DOCSIS specification to match
"HW_REV: <value>; VENDOR: <value>; BOOTR: <value>; SW_REV: <value>; MODEL: <value>"
=head2 Inherited Classes
None.
=head2 Required MIBs
None.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $cm->vendor()
Returns the vendor of the cable modem.
=item $cm->model()
Returns the model of the cable modem.
=item $cm->os()
Returns 'cm', as the actual os is vendor and model dependent.
=item $cm->os_ver()
Returns the version of the software, extracted from the SW_REV field.
=back

124
lib/SNMP/Info/DocsisHE.pm Normal file
View File

@@ -0,0 +1,124 @@
package SNMP::Info::DocsisHE;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::DocsisHE::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::DocsisHE::EXPORT_OK = qw//;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.83';
%MIBS = (
'DOCS-IF3-MIB' => 'docsIf3Mib',
'DOCS-IF-MIB' => 'docsIfMib',
);
%GLOBALS = ();
%FUNCS = (
# DOCSIS 3.0 (DOCS-IF3-MIB) from CableLabs
'docs_if3_cmts_cm_status_md_if_index'=> 'docsIf3CmtsCmRegStatusMdIfIndex',
# DOCSIS (1.1, etc) from IETF
'docs_if_cmts_cm_status_inet_address_type' => 'docsIfCmtsCmStatusInetAddressType',
'docs_if_cmts_cm_status_inet_address' => 'docsIfCmtsCmStatusInetAddress',
'docs_cmts_cm_down_channel_if_index' => 'docsIfCmtsCmStatusDownChannelIfIndex',
'docs_cmts_cm_up_channel_if_index' => 'docsIfCmtsCmStatusUpChannelIfIndex',
);
%MUNGE = ();
1;
__END__
=head1 NAME
SNMP::Info::DocsisHE - SNMP Interface for F<DOCS-IF-MIB> and F<DOCS-IF3-MIB>
=head1 AUTHOR
Ryan Gasik
=head1 SYNOPSIS
my $cmts = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'cmts',
Community => 'public',
Version => 2
);
# Get a list of modems off the DOCSIS CMTS
my $modems = $cmts->docs_if_cmts_cm_status_inet_address()
=head1 DESCRIPTION
SNMP::Info::DocsisHE is a subclass of SNMP::Info that provides information
about the cable modems of a DOCSIS CMTS.
=head2 Inherited Classes
None.
=head2 Required MIBs
=over
=item F<DOCS-IF-MIB>
Standard IETF MIBs for DOCSIS 1.1
=item F<DOCS-IF3-MIB>
CableLabs MIBs for DOCSIS 3
=back
=head1 GLOBALS
None.
=head1 TABLE METHODS
=over
=item $info->docs_if3_cmts_cm_status_md_if_index()
Returns reference to hash of the IfIndex associated with each cable modem.
(C<docsIf3CmtsCmRegStatusMdIfIndex>)
=item $info->docs_if_cmts_cm_status_inet_address_type()
Returns reference to hash of the type of IP address (ie, IPv4, IPv6)
associated with each cable modem
(C<docsIfCmtsCmStatusInetAddressType>)
=item $info->docs_if_cmts_cm_status_inet_address()
Returns reference to hash of the IP address associated with each
cable modem.
(C<docsIfCmtsCmStatusInetAddress>)
=item $info->docs_cmts_cm_down_channel_if_index()
Returns reference to hash of the IfIndex of the down channel
(for DOCSIS 1.1) or a down channel (DOCSIS 3+) associated with each
cable modem.
(C<docsIfCmtsCmStatusDownChannelIfIndex>)
=item $info->docs_cmts_cm_up_channel_if_index()
Returns reference to hash of the IfIndex of the up channel
(for DOCSIS 1.1) or a up channel (DOCSIS 3+) associated with each
cable modem.
(C<docsIfCmtsCmStatusUpChannelIfIndex>)
=back
=cut

View File

@@ -31,15 +31,16 @@
package SNMP::Info::EDP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::EDP::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::EDP::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
@@ -75,7 +76,7 @@ sub hasEDP {
# address since they should all originate from the same device, but we don't
# know if they would all be reachable from the network management application.
#
# We don't inplement partials since this is private index function
# We don't implement partials since this is private index function
sub _edp_index {
my $edp = shift;
@@ -204,10 +205,10 @@ Eric Miller
my $class = $edp->class();
print " Using device sub class : $class\n";
$haslldp = $edp->hasLLDP() ? 'yes' : 'no';
$hasedp = $edp->hasEDP() ? 'yes' : 'no';
# Print out a map of device ports with LLDP neighbors:
my $interfaces = $edp->interfaces();
# Print out a map of device ports with EDP neighbors:
my $interfaces = $edp->interfaces();
my $edp_if = $edp->edp_if();
my $edp_ip = $edp->edp_ip();
my $edp_port = $edp->edp_port();
@@ -243,7 +244,7 @@ None.
=back
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP
@@ -251,7 +252,7 @@ These are methods that return scalar values from SNMP
=item $edp->hasEDP()
Is EDP is active in this device?
Is EDP active on this device?
=back

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Entity
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::Entity;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::Entity::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::Entity::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
@@ -75,7 +75,7 @@ sub e_index {
my $entity = shift;
my $partial = shift;
# Force use of MIB leaf to avoid inheritance issues in psuedo classes
# Force use of MIB leaf to avoid inheritance issues in pseudo classes
my $e_descr = $entity->entPhysicalDescr($partial);
return unless ($e_descr);
@@ -213,8 +213,6 @@ none.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
none.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::EtherLike
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::EtherLike;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::EtherLike::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::EtherLike::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
@@ -68,7 +68,7 @@ $VERSION = '3.65';
'el_xmit_defer' => 'dot3StatsDeferredTransmissions',
# Ethernet-like Collision Statistics Group
'el_coll_freq' => 'dot3CollFrequencies'
'el_coll_freq' => 'dot3CollFrequencies',
);
%MUNGE = ( %SNMP::Info::MUNGE, 'el_duplex' => \&munge_el_duplex, );
@@ -103,7 +103,7 @@ Max Baker
Version => 2
);
my $class = $cdp->class();
my $class = $el->class();
print " Using device sub class : $class\n";
# Find the duplex setting for a port on a device that implements
@@ -143,8 +143,6 @@ None.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
These are methods that return scalar values from SNMP

View File

@@ -1,5 +1,4 @@
# SNMP::Info::FDP
# $Id$
#
# Copyright (c) 2008 Bruce Rodger, Max Baker
# All rights reserved.
@@ -34,15 +33,16 @@
package SNMP::Info::FDP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::FDP::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::FDP::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
@@ -65,7 +65,7 @@ $VERSION = '3.65';
%MUNGE = (
'fdp_capabilities' => \&SNMP::Info::munge_bits,
'fdp_ip' => \&SNMP::Info::munge_ip
'fdp_ip' => \&SNMP::Info::munge_ip,
);
sub fdp_run {
@@ -146,7 +146,7 @@ Bruce Rodger, Max Baker
$hasfdp = $fdp->hasFDP() ? 'yes' : 'no';
# Print out a map of device ports with FDP neighbors:
my $interfaces = $fdp->interfaces();
my $interfaces = $fdp->interfaces();
my $fdp_if = $fdp->fdp_if();
my $fdp_ip = $fdp->fdp_ip();
my $fdp_port = $fdp->fdp_port();
@@ -190,7 +190,7 @@ work with B2R07600C.
=back
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP

View File

@@ -0,0 +1,230 @@
# SNMP::Info::IEEE802_Bridge
#
# Changes since Version 0.7 Copyright (c) 2004 Max Baker
# All rights reserved.
#
# Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::IEEE802_Bridge;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::IEEE802_Bridge::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::IEEE802_Bridge::EXPORT_OK = qw//;
our ($VERSION, $DEBUG, %MIBS, %FUNCS, %GLOBALS, %MUNGE, $INIT);
$VERSION = '3.83';
%MIBS = (
'IEEE8021-Q-BRIDGE-MIB' => 'ieee8021QBridgeVlanCurrentEgressPorts',
);
%GLOBALS = (
);
%FUNCS = (
'iqb_i_vlan' => 'ieee8021QBridgePvid',
'iqb_i_vlan_type' => 'ieee8021QBridgePortAcceptableFrameTypes',
'iqb_i_vlan_in_flt' => 'ieee8021QBridgePortIngressFiltering',
'iqb_cv_egress' => 'ieee8021QBridgeVlanCurrentEgressPorts',
'iqb_cv_untagged' => 'ieee8021QBridgeVlanCurrentUntaggedPorts',
'iqb_cv_stat' => 'ieee8021QBridgeVlanStatus',
'iqb_v_name' => 'ieee8021QBridgeVlanStaticName',
'iqb_v_egress' => 'ieee8021QBridgeVlanStaticEgressPorts',
'iqb_v_fbdn_egress' => 'ieee8021QBridgeVlanForbiddenEgressPorts',
'iqb_v_untagged' => 'ieee8021QBridgeVlanStaticUntaggedPorts',
'iqb_v_stat' => 'ieee8021QBridgeVlanStaticRowStatus',
);
%MUNGE = (
# Inherit all the built in munging
%SNMP::Info::MUNGE,
# Add ones for our class
'iqb_cv_egress' => \&SNMP::Info::munge_port_list,
'iqb_cv_untagged' => \&SNMP::Info::munge_port_list,
'iqb_v_egress' => \&SNMP::Info::munge_port_list,
'iqb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
'iqb_v_untagged' => \&SNMP::Info::munge_port_list,
);
1;
__END__
=head1 NAME
SNMP::Info::IEEE802_Bridge - SNMP Interface to SNMP data available through the
F<IEEE8021-Q-BRIDGE-MIB>
=head1 AUTHOR
Jeroen van Ingen
=head1 SYNOPSIS
FIXME update with better example
my $bridge = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'switch',
Community => 'public',
Version => 2
);
my $class = $bridge->class();
print " Using device sub class : $class\n";
# Grab Forwarding Tables
my $interfaces = $bridge->interfaces();
my $fw_mac = $bridge->fw_mac();
my $fw_port = $bridge->fw_port();
my $bp_index = $bridge->bp_index();
foreach my $fw_index (keys %$fw_mac){
my $mac = $fw_mac->{$fw_index};
my $bp_id = $fw_port->{$fw_index};
my $iid = $bp_index->{$bp_id};
my $port = $interfaces->{$iid};
print "Port:$port forwarding to $mac\n";
}
=head1 DESCRIPTION
F<IEEE8021-Q-BRIDGE-MIB> is used by some newer switches / Layer 2 devices.
It is derived from the IETF Q-BRIDGE-MIB (RFC 4363), extending it with the
concept of multiple VLAN-aware bridges (PBB).
Create or use a subclass of SNMP::Info that inherits this class. Do not use
directly.
For debugging you can call new() directly as you would in SNMP::Info
my $bridge = new SNMP::Info::IEEE802_Bridge(...);
=head2 Inherited Classes
None.
=head2 Required MIBs
=over
=item F<IEEE8021-Q-BRIDGE-MIB>
=back
=head1 GLOBALS
These are methods that return scalar values from SNMP
=over
=back
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Per-port VLAN configuration in the device (C<ieee8021QBridgePortVlanTable>)
=over
=item $bridge->iqb_i_vlan()
(C<ieee8021QBridgePvid>)
=item $bridge->iqb_i_vlan_type()
(C<ieee8021QBridgePortAcceptableFrameTypes>)
=item $bridge->iqb_i_vlan_in_flt()
(C<ieee8021QBridgePortIngressFiltering>)
=back
=head2 VLAN Current Table (C<ieee8021QBridgeVlanCurrentTable>)
=over
=item $bridge->iqb_cv_egress()
(C<ieee8021QBridgeVlanCurrentEgressPorts>)
=item $bridge->iqb_cv_untagged()
(C<ieee8021QBridgeVlanCurrentUntaggedPorts>)
=item $bridge->iqb_cv_stat()
(C<ieee8021QBridgeVlanStatus>)
=back
=head2 VLAN Static Table (C<ieee8021QBridgeVlanStaticTable>)
=over
=item $bridge->iqb_v_name()
(C<ieee8021QBridgeVlanStaticName>)
=item $bridge->iqb_v_egress()
(C<ieee8021QBridgeVlanStaticEgressPorts>)
=item $bridge->iqb_v_fbdn_egress()
(C<ieee8021QBridgeVlanForbiddenEgressPorts>)
=item $bridge->iqb_v_untagged()
(C<ieee8021QBridgeVlanStaticUntaggedPorts>)
=item $bridge->iqb_v_stat()
C<active> !
(C<ieee8021QBridgeVlanStaticRowStatus>)
=back
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::IEEE802dot11
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::IEEE802dot11;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::IEEE802dot11::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::IEEE802dot11::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );

View File

@@ -30,6 +30,7 @@
package SNMP::Info::IEEE802dot3ad;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Aggregate;
@@ -41,9 +42,9 @@ use SNMP::Info::Aggregate;
agg_ports_lag
/;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Aggregate::MIBS,

View File

@@ -30,13 +30,14 @@
package SNMP::Info::IPv6;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::IPv6::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::IPv6::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE $METHOD/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE, $METHOD);
use constant {
IPMIB => 1,
@@ -44,7 +45,7 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.65';
$VERSION = '3.83';
@@ -348,7 +349,7 @@ sub ipv6_addr_prefixlength {
# 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};
my $val = $ipv6_addr_prefix->{$row} || '';
if ( $val =~ /^.+?((?:\d+\.){19}(\d+))$/ ) {
$val = $2;
$return->{$row} = $val;
@@ -362,7 +363,7 @@ sub ipv6_addr_prefixlength {
sub ipv6_addr {
my $info = shift;
my $return;
my $return = {};
my $indexes = $info->ipv6_index();
foreach my $row (keys %$indexes) {
my @parts = split(/\./, $row);
@@ -376,8 +377,8 @@ sub ipv6_addr {
my $addrsize = shift @parts; # First element now is addrsize, should be 16
if ($is_valid && $addrsize == 16) {
$return->{$row} = join(':', unpack('(H4)*', pack('C*', @parts)));
} else {
warn sprintf("%s: unable to decode table index to IPv6 address. Raw data is [%s].\n", &_my_sub_name, $row);
} elsif ($info->debug()) {
printf("%s: unable to decode table index to IPv6 address. Raw data is [%s].\n", &_my_sub_name, $row);
}
}
return $return;
@@ -479,7 +480,9 @@ none.
=over
=item F<IP-MIB>
=item F<IPV6-MIB>
=item F<CISCO-IETF-IP-MIB>
=back

View File

@@ -1,5 +1,4 @@
# SNMP::Info::LLDP
# $Id$
#
# Copyright (c) 2018 Eric Miller
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::LLDP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::LLDP::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::LLDP::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -55,10 +55,13 @@ $VERSION = '3.65';
);
%FUNCS = (
# LLDP-MIB::lldpLocManAddrTable
'lldp_lman_addr' => 'lldpLocManAddrIfId',
# LLDP-MIB::LldpLocPortEntry
'lldp_lport_id' => 'lldpLocPortId',
'lldp_lport_desc' => 'lldpLocPortDesc',
# LLDP-MIB::lldpRemTable
'lldp_rem_id_type' => 'lldpRemChassisIdSubtype',
'lldp_rem_id' => 'lldpRemChassisId',
@@ -92,6 +95,8 @@ $VERSION = '3.65';
'lldp_rem_sysname' => \&SNMP::Info::munge_null,
'lldp_rem_sysdesc' => \&SNMP::Info::munge_null,
'lldp_rem_port_desc' => \&SNMP::Info::munge_null,
'lldp_lport_id' => \&SNMP::Info::munge_null,
'lldp_lport_desc' => \&SNMP::Info::munge_null,
'lldp_sys_cap' => \&SNMP::Info::munge_bits,
'lldp_rem_sys_cap' => \&SNMP::Info::munge_bits,
'lldp_rem_cap_spt' => \&SNMP::Info::munge_bits,
@@ -146,7 +151,11 @@ sub lldp_if {
# ifAlias because using cross ref with description is correct
# behavior according to the LLDP-MIB. Some devices (eg H3C gear)
# seem to use ifAlias though.
my $lldp_desc = $lldp->lldpLocPortDesc($port);
# snmp::info #372 -> to make things even more complex some devices
# have different behaviour depending on os version (nx-os 6 vs 7)
# so we made this a function to allow overrides in more specific
# modules
my $lldp_desc = $lldp->lldp_lport_desc($port);
my $desc = $lldp_desc->{$port};
# If cross reference is successful use it, otherwise stick with
@@ -512,7 +521,7 @@ None.
=back
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer1 - SNMP Interface to Layer1 Devices
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::Layer1;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::Layer1::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::Layer1::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
@@ -49,7 +49,7 @@ $VERSION = '3.65';
%SNMP::Info::GLOBALS,
'ports_managed' => 'ifNumber',
'rptr_slots' => 'rptrGroupCapacity',
'slots' => 'rptrGroupCapacity'
'slots' => 'rptrGroupCapacity',
);
%FUNCS = (
@@ -86,7 +86,7 @@ sub ports {
}
# $l1->model() - Looks at sysObjectID which gives the oid of the system
# name, contained in a propriatry MIB.
# name, contained in a proprietary MIB.
sub model {
my $l1 = shift;
my $id = $l1->id();
@@ -178,7 +178,7 @@ Max Baker
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 1
Version => 2
)
or die "Can't connect to DestHost.\n";
@@ -227,12 +227,9 @@ after determining a more specific class using the method above.
=back
MIBs required for L<SNMP::Info/"Required MIBs">
MIBs required for L<SNMP::Info/"REQUIREMENTS">
See L<SNMP::Info/"Required MIBs"> for its MIB requirements.
F<SNMP-REPEATER-MIB> needs to be extracted from
ftp://ftp.cisco.com/pub/mibs/v1/v1.tar.gz
See L<SNMP::Info/"REQUIREMENTS"> for its MIB requirements.
=head1 GLOBALS
@@ -278,7 +275,7 @@ Number of 'groups' in the Repeater MIB
=head2 Global Methods imported from SNMP::Info
See documentation in L<SNMP::Info/"GLOBALS"> for details.
See documentation in L<SNMP::Info/"USAGE"> for details.
=head1 TABLE METHODS
@@ -341,6 +338,6 @@ Group (slot) Number for given port.
=head2 Table Methods imported from SNMP::Info
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info/"USAGE"> for details.
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer1::Allied
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::Layer1::Allied;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer1;
@SNMP::Info::Layer1::Allied::ISA = qw/SNMP::Info::Layer1 Exporter/;
@SNMP::Info::Layer1::Allied::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
@@ -52,9 +52,14 @@ $VERSION = '3.65';
'ati_up' => 'linkTestLED',
);
%MIBS = ( %SNMP::Info::Layer1::MIBS, 'ATI-MIB' => 'atiPortGroupIndex' );
%MIBS = (
%SNMP::Info::Layer1::MIBS,
'ATI-MIB' => 'atiPortGroupIndex',
);
%MUNGE = ( %SNMP::Info::Layer1::MUNGE, );
%MUNGE = (
%SNMP::Info::Layer1::MUNGE,
);
sub vendor {
return 'allied';
@@ -68,7 +73,7 @@ sub os_ver {
my $allied = shift;
my $descr = $allied->description();
if ( $descr =~ m/version (\d+\.\d+)/ ) {
if ( defined ($descr) && $descr =~ m/version (\d+\.\d+)/ ) {
return $1;
}
return;
@@ -79,7 +84,7 @@ sub model {
my $desc = $allied->description();
if ( $desc =~ /(AT-\d{4}\S{1})/ ) {
if ( defined ($desc) && $desc =~ /(AT-\d{4}\S{1})/ ) {
return $1;
}
return;

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer1::Asante
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::Layer1::Asante;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer1;
@SNMP::Info::Layer1::Asante::ISA = qw/SNMP::Info::Layer1 Exporter/;
@SNMP::Info::Layer1::Asante::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
@@ -81,7 +81,7 @@ sub os_ver {
my $asante = shift;
my $descr = $asante->description();
if ( $descr =~ /software v(\d+\.\d+)/ ) {
if ( defined ($descr) && $descr =~ /software v(\d+\.\d+)/ ) {
return $1;
}
return;
@@ -188,7 +188,7 @@ Max Baker
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
Provides abstraction to the configuration information obtainable from an
Asante device through SNMP.
=head2 Inherited Classes
@@ -227,7 +227,7 @@ Culls software version from description()
=item $asante->vendor()
Returns 'asante' :)
Returns 'asante'
=item $asante->model()

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer1::Bayhub
# $Id$
#
# Copyright (c) 2008 Eric Miller, Max Baker
# All rights reserved.
@@ -31,18 +30,19 @@
package SNMP::Info::Layer1::Bayhub;
use strict;
use warnings;
use Exporter;
use SNMP::Info::SONMP;
use SNMP::Info::NortelStack;
use SNMP::Info::Layer2;
@SNMP::Info::Layer1::Bayhub::ISA
= qw/SNMP::Info::SONMP SNMP::Info::NortelStack SNMP::Info::Layer2 Exporter/;
= qw/SNMP::Info::SONMP SNMP::Info::NortelStack SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer1::Bayhub::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -505,11 +505,6 @@ Provides abstraction to the configuration information obtainable from a
Bay hub device through SNMP. Also provides device MAC to port mapping through
the proprietary MIB.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $bayhub = new SNMP::Info::Layer1::Bayhub(...);
=head2 Inherited Classes
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer1::Cyclades
# $Id$
#
# Copyright (c) 2018 Eric Miller
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::Layer1::Cyclades;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer1;
@SNMP::Info::Layer1::Cyclades::ISA = qw/SNMP::Info::Layer1 Exporter/;
@SNMP::Info::Layer1::Cyclades::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer1::MIBS,
@@ -498,11 +498,6 @@ Eric Miller
Provides abstraction to the configuration information obtainable from a
Cyclades/Avocent device 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 $cyclades = new SNMP::Info::Layer1::Cyclades(...);
=head2 Inherited Classes
=over
@@ -515,6 +510,10 @@ my $cyclades = new SNMP::Info::Layer1::Cyclades(...);
=over
=item F<ACS-MIB>
=item F<ACS6000-MIB>
=item F<CYCLADES-ACS-SYS-MIB>
=item F<CYCLADES-ACS-CONF-MIB>
@@ -527,8 +526,6 @@ my $cyclades = new SNMP::Info::Layer1::Cyclades(...);
=item F<CYCLADES-ACS5K-INFO-MIB>
=item F<ACS6000-MIB>
=back
=head2 Inherited MIBs

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer1::S3000
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::Layer1::S3000;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer1::S3000::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer1::S3000::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -386,11 +386,6 @@ Provides abstraction to the configuration information obtainable from a
Bay hub device through SNMP. Also provides device MAC to port mapping through
the proprietary MIB.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $s3000 = new SNMP::Info::Layer1::S3000(...);
=head2 Inherited Classes
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2 - SNMP Interface to Layer2 Devices
# $Id$
#
# Copyright (c) 2008 Max Baker -- All changes from Version 0.7 on
#
@@ -33,30 +32,33 @@
package SNMP::Info::Layer2;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
use SNMP::Info::Entity;
use SNMP::Info::PowerEthernet;
use SNMP::Info::LLDP;
use SNMP::Info::DocsisHE;
@SNMP::Info::Layer2::ISA
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::Entity SNMP::Info::PowerEthernet SNMP::Info::LLDP Exporter/;
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::Entity SNMP::Info::PowerEthernet SNMP::Info::LLDP SNMP::Info::DocsisHE Exporter/;
@SNMP::Info::Layer2::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
%SNMP::Info::Entity::MIBS, %SNMP::Info::PowerEthernet::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::LLDP::MIBS, %SNMP::Info::DocsisHE::MIBS,
);
%GLOBALS = (
%SNMP::Info::GLOBALS,
%SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::DocsisHE::GLOBALS,
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::PowerEthernet::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
@@ -67,7 +69,7 @@ $VERSION = '3.65';
%FUNCS = (
%SNMP::Info::FUNCS, %SNMP::Info::Bridge::FUNCS,
%SNMP::Info::Entity::FUNCS, %SNMP::Info::PowerEthernet::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::LLDP::FUNCS, %SNMP::Info::DocsisHE::FUNCS,
);
%MUNGE = (
@@ -75,6 +77,7 @@ $VERSION = '3.65';
# Inherit all the built in munging
%SNMP::Info::MUNGE,
%SNMP::Info::Bridge::MUNGE,
%SNMP::Info::DocsisHE::MUNGE,
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::PowerEthernet::MUNGE,
%SNMP::Info::LLDP::MUNGE,
@@ -83,7 +86,7 @@ $VERSION = '3.65';
# Method OverRides
# $l2->model() - Looks at sysObjectID which gives the oid of the system
# name, contained in a propriatry MIB.
# name, contained in a proprietary MIB.
sub model {
my $l2 = shift;
my $id = $l2->id();
@@ -102,8 +105,8 @@ sub model {
sub vendor {
my $l2 = shift;
my $model = $l2->model();
my $descr = $l2->description();
my $model = $l2->model() || '';
my $descr = $l2->description() || '';
if ( $model =~ /hp/i or $descr =~ /\bhp\b/i ) {
return 'hp';
@@ -142,15 +145,25 @@ sub interfaces {
# Replace the Index with the ifDescr field.
# Check for duplicates in ifDescr, if so uniquely identify by adding
# ifIndex to repeated values
my %seen;
foreach my $iid ( keys %$i_descr ) {
my (%seen, %first_seen_as);
foreach my $iid ( sort keys %$i_descr ) {
my $port = $i_descr->{$iid};
next unless defined $port;
$port = SNMP::Info::munge_null($port);
$port =~ s/^\s+//; $port =~ s/\s+$//;
next unless length $port;
if ( $seen{$port}++ ) {
# (#320) also fixup the port this is a duplicate of
$interfaces->{ $first_seen_as{$port} }
= sprintf( "%s (%d)", $port, $first_seen_as{$port} );
$interfaces->{$iid} = sprintf( "%s (%d)", $port, $iid );
}
else {
$interfaces->{$iid} = $port;
$first_seen_as{$port} = $iid;
}
}
return $interfaces;
@@ -215,10 +228,14 @@ after determining a more specific class using the method above.
=item SNMP::Info::Bridge
=item SNMP::Info::DocsisHE
=item SNMP::Info::Entity
=item SNMP::Info::LLDP
=item SNMP::Info::PowerEthernet
=back
=head2 Required MIBs
@@ -262,7 +279,7 @@ Returns a serial number if found from F<ENTITY-MIB> and F<OLD-CISCO->... MIB.
=head2 Globals imported from SNMP::Info
See documentation in L<SNMP::Info/"GLOBALS"> for details.
See documentation in L<SNMP::Info/"USAGE"> for details.
=head2 Globals imported from SNMP::Info::Bridge
@@ -296,7 +313,7 @@ Defaults to C<ifDescr> but checks and overrides with C<ifName>
=head2 Table Methods imported from SNMP::Info
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info/"USAGE"> for details.
=head2 Table Methods imported from SNMP::Info::Bridge

View File

@@ -29,40 +29,35 @@
package SNMP::Info::Layer2::3Com;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::LLDP;
use SNMP::Info::CDP;
@SNMP::Info::Layer2::3Com::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::3Com::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::3Com::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::Layer2::MIBS,
'A3Com-products-MIB' => 'wlanAP7760',
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
sub os {
return '3Com';
}
@@ -94,17 +89,19 @@ sub os_ver {
}
sub vendor {
return '3Com';
return '3com';
}
sub model {
my $dsmodel = shift;
my $descr = $dsmodel->description();
if ( $descr =~ /^([\S ]+) Software.*/){
if (defined ($descr)) {
if ($descr =~ /^([\S ]+) Software.*/) {
return $1;
} else {
} else {
return $descr;
}
}
return;
}
@@ -128,7 +125,7 @@ Max Kosmach
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 1
Version => 2
)
or die "Can't connect to DestHost.\n";
@@ -169,7 +166,7 @@ These are methods that return scalar value from SNMP
=item $device->vendor()
Returns '3Com'
Returns '3com'
=item $device->os()

View File

@@ -29,17 +29,17 @@
package SNMP::Info::Layer2::Adtran;
use strict;
use warnings;
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::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Adtran::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
@@ -58,14 +58,12 @@ our $index = undef;
%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',
@@ -75,7 +73,7 @@ our $index = undef;
'ad_genportcustuse' => 'adGenPortCustomerUse',
);
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::LLDP::MUNGE, %SNMP::Info::Layer3::MUNGE );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::Layer3::MUNGE );
sub vendor {
return 'adtran';
@@ -130,8 +128,8 @@ sub 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};
my @splitout = split(/\./,$port);
$i_name->{$splitout[1]} = $adname->{$port};
}
}
return $i_name;
@@ -170,9 +168,9 @@ sub i_vlan_membership {
}
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 @splitout = split(/(\.0)+\./,$entry);
my $name = pack("C*", split(/\./,$splitout[0]));
push @{$if_vlans->{$splitout[2]}}, $vlans->{$name};
}
my $mgmtevcports = $adtran->ad_mgmtevcports();
my $mgmtevcid = $adtran->ad_mgmtevcvid();
@@ -223,17 +221,17 @@ Subclass for adtran Devices running JUNOS
=over
=item SNMP::Info::Layer3
=item SNMP::Info::Layer2
=item SNMP::Info::LLDP
=item SNMP::Info::Layer3
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
@@ -273,10 +271,6 @@ Returns serial number.
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
@@ -303,12 +297,12 @@ IDs. These are the VLANs which are members of the egress list for the port.
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::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

@@ -30,15 +30,16 @@
package SNMP::Info::Layer2::Aerohive;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Aerohive::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Aerohive::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -83,6 +84,7 @@ $VERSION = '3.65';
%MUNGE
= ( %SNMP::Info::Layer2::MUNGE, 'at_paddr' => \&SNMP::Info::munge_mac, );
# hiveos does not have sysServices
sub layers {
return '00000111';
}
@@ -106,13 +108,12 @@ sub os_ver {
my $aerohive = shift;
my $descr = $aerohive->description();
if ( $descr =~ m/\bHiveOS\s(\d\.\w+)\b/ix ) {
if ( defined ($descr) && $descr =~ m/\bHiveOS\s(\d+\.\w+)\b/ix ) {
return $1;
}
return;
}
sub mac {
my $aerohive = shift;
my $ahmac = $aerohive->ah_mac();
@@ -136,12 +137,11 @@ sub mac {
return $macs[0];
}
sub model {
my $aerohive = shift;
my $descr = $aerohive->description();
if ( $descr =~ m/\b(?:Hive|)(AP\d+)\b/ix ) {
if ( defined ($descr) && $descr =~ m/\b(?:Hive|)(AP\d+)\b/ix ) {
return $1;
}
return;
@@ -221,7 +221,10 @@ sub bp_index {
my $aerohive = shift;
my $partial = shift;
my $i_index = $aerohive->i_index($partial) || {};
# somewhere caching is doing something strange, without load_
# netdisco can't find bp_index mappings & will not registerer
# any clients. netdisco/netdisco#496
my $i_index = $aerohive->load_i_index($partial) || {};
my %bp_index;
foreach my $iid ( keys %$i_index ) {
@@ -315,7 +318,8 @@ __END__
=head1 NAME
SNMP::Info::Layer2::Aerohive - SNMP Interface to Aerohive Access Points
SNMP::Info::Layer2::Aerohive - SNMP Interface to Aerohive / Extreme
access points
=head1 AUTHOR
@@ -339,12 +343,7 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from an
Aerohive wireless 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 $aerohive = new SNMP::Info::Layer2::Aerohive(...);
Aerohive / Extreme wireless access point through SNMP.
=head2 Inherited Classes
@@ -450,11 +449,11 @@ radio interface.
C<ahRadioTxPower>
=item $aironet->cd11_port()
=item $aerohive->cd11_port()
Returns radio interfaces.
=item $aironet->cd11_mac()
=item $aerohive->cd11_mac()
Returns client radio interface MAC addresses.

View File

@@ -29,6 +29,7 @@
package SNMP::Info::Layer2::Airespace;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Bridge;
use SNMP::Info::CDP;
@@ -38,9 +39,9 @@ use SNMP::Info::Airespace;
= qw/SNMP::Info::Airespace SNMP::Info::CDP SNMP::Info::Bridge Exporter/;
@SNMP::Info::Layer2::Airespace::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
@@ -272,11 +273,6 @@ Eric Miller
Provides abstraction to the configuration information obtainable from
Cisco (Airespace) Wireless Controllers 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 $airespace = new SNMP::Info::Layer2::Airespace(...);
=head2 Inherited Classes
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Aironet
# $Id$
#
# Copyright (c) 2008-2009 Max Baker changes from version 0.8 and beyond.
#
@@ -33,9 +32,9 @@
package SNMP::Info::Layer2::Aironet;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::Entity;
use SNMP::Info::EtherLike;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoConfig;
@@ -43,30 +42,28 @@ use SNMP::Info::CDP;
use SNMP::Info::IEEE802dot11;
@SNMP::Info::Layer2::Aironet::ISA
= qw/SNMP::Info::Layer2 SNMP::Info::Entity SNMP::Info::EtherLike
= qw/SNMP::Info::Layer2 SNMP::Info::EtherLike
SNMP::Info::CiscoStats SNMP::Info::CiscoConfig SNMP::Info::CDP Exporter/;
@SNMP::Info::Layer2::Aironet::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%GLOBALS = (
%SNMP::Info::IEEE802dot11::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::EtherLike::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
'serial' => 'entPhysicalSerialNum.1',
'ps1_type' => 'cpoePdCurrentPowerSource'
'ps1_type' => 'cpoePdCurrentPowerSource',
);
%FUNCS = (
%SNMP::Info::IEEE802dot11::FUNCS,
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::Entity::FUNCS,
%SNMP::Info::EtherLike::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
@@ -88,7 +85,6 @@ $VERSION = '3.65';
%MIBS = (
%SNMP::Info::IEEE802dot11::MIBS,
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::Entity::MIBS,
%SNMP::Info::EtherLike::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
@@ -103,7 +99,6 @@ $VERSION = '3.65';
%MUNGE = (
%SNMP::Info::IEEE802dot11::MUNGE,
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::EtherLike::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
@@ -118,7 +113,6 @@ $VERSION = '3.65';
= \&SNMP::Info::IEEE802dot11::dot11_cur_tx_pwr_mw;
sub vendor {
# Sorry, but it's true.
return 'cisco';
}
@@ -138,8 +132,13 @@ sub description {
my $descr = $aironet->SUPER::description();
my $e_descr = $aironet->e_descr();
$descr = "$e_descr->{1} $descr" if defined $e_descr->{1};
if (defined $e_descr->{1}) {
if (defined $descr) {
$descr = "$e_descr->{1} $descr"
} else {
$descr = "$e_descr->{1}"
}
}
return $descr;
}
@@ -527,8 +526,6 @@ my $aironet = new SNMP::Info::Layer2::Aironet(...);
=item SNMP::Info::Layer2
=item SNMP::Info::Entity
=item SNMP::Info::EtherLike
=item SNMP::Info::CiscoStats
@@ -541,6 +538,16 @@ my $aironet = new SNMP::Info::Layer2::Aironet(...);
=over
=item F<CISCO-DOT11-ASSOCIATION-MIB>
=item F<CISCO-DOT11-IF-MIB>
=item F<CISCO-DOT11-SSID-SECURITY-MIB>
=item F<CISCO-POE-PD-MIB>
=item F<CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB>
=item Inherited Classes
MIBs required by the inherited classes listed above.
@@ -567,10 +574,6 @@ System description. Adds info from method e_descr() from SNMP::Info::Entity
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::EtherLike
See documentation in L<SNMP::Info::EtherLike/"GLOBALS"> for details.
@@ -668,10 +671,6 @@ C<cpoePdSupportedPowerMode>.
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::EtherLike
See documentation in L<SNMP::Info::EtherLike/"TABLE METHODS"> for details.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Allied
# $Id$
#
# Copyright (c) 2008 Max Baker
# All rights reserved.
@@ -31,6 +30,7 @@
package SNMP::Info::Layer2::Allied;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::Layer1;
@@ -38,9 +38,9 @@ use SNMP::Info::Layer1;
@SNMP::Info::Layer2::Allied::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Allied::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
@@ -70,7 +70,7 @@ sub os_ver {
my $allied = shift;
my $descr = $allied->description();
if ( $descr =~ m/version (\d+\.\d+)/ ) {
if ( defined ($descr) && $descr =~ m/version (\d+\.\d+)/ ) {
return $1;
}
return;
@@ -78,10 +78,9 @@ sub os_ver {
sub model {
my $allied = shift;
my $desc = $allied->description();
if ( $desc =~ /(AT-80\d{2}\S*)/ ) {
if ( defined ($desc) && $desc =~ /(AT-80\d{2}\S*)/ ) {
return $1;
}
return;
@@ -191,7 +190,7 @@ These are methods that return scalar value from SNMP
=item $allied->vendor()
Returns 'allied' :)
Returns 'allied'
=item $allied->os()

View File

@@ -30,15 +30,16 @@
package SNMP::Info::Layer2::Atmedia;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Atmedia::ISA = qw/SNMP::Info::Layer2/;
@SNMP::Info::Layer2::Atmedia::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( %SNMP::Info::Layer2::MIBS );
@@ -68,10 +69,12 @@ sub model {
my $atmedia = shift;
my $atmedia_model = $atmedia->atm_model();
$atmedia_model =~ s/\<|\>//g;
$atmedia_model =~ s/\//_/g;
return $atmedia_model;
if (defined $atmedia_model) {
$atmedia_model =~ s/\<|\>//g;
$atmedia_model =~ s/\//_/g;
return $atmedia_model;
}
return;
}
sub vendor {

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Baystack
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
# All rights reserved.
@@ -31,38 +30,38 @@
package SNMP::Info::Layer2::Baystack;
use strict;
use warnings;
use Exporter;
use SNMP::Info::SONMP;
use SNMP::Info::NortelStack;
use SNMP::Info::RapidCity;
use SNMP::Info::LLDP;
use SNMP::Info::Layer3;
@SNMP::Info::Layer2::Baystack::ISA
= qw/SNMP::Info::SONMP SNMP::Info::NortelStack
SNMP::Info::RapidCity SNMP::Info::LLDP
SNMP::Info::RapidCity
SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer2::Baystack::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::RapidCity::MIBS, %SNMP::Info::NortelStack::MIBS,
%SNMP::Info::SONMP::MIBS,
'BAY-STACK-PETH-EXT-MIB' => 'bspePethPsePortExtMeasuredPower',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS, %SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::RapidCity::GLOBALS, %SNMP::Info::NortelStack::GLOBALS,
%SNMP::Info::SONMP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS, %SNMP::Info::LLDP::FUNCS,
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::RapidCity::FUNCS, %SNMP::Info::NortelStack::FUNCS,
%SNMP::Info::SONMP::FUNCS,
'peth_port_power' => 'bspePethPsePortExtMeasuredPower',
@@ -74,7 +73,7 @@ $SNMP::Info::SPEED_MAP{200_000_000} = '100 Mbps';
$SNMP::Info::SPEED_MAP{2_000_000_000} = '1.0 Gbps';
%MUNGE = (
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::LLDP::MUNGE,
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::RapidCity::MUNGE, %SNMP::Info::NortelStack::MUNGE,
%SNMP::Info::SONMP::MUNGE,
);
@@ -429,11 +428,6 @@ Provides abstraction to the configuration information obtainable from an
Avaya Ethernet Switch (formerly Nortel/Bay Baystack) and VSP 7000 series
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 $baystack = new SNMP::Info::Layer2::Baystack(...);
=head2 Inherited Classes
=over
@@ -444,8 +438,6 @@ my $baystack = new SNMP::Info::Layer2::Baystack(...);
=item SNMP::Info::RapidCity
=item SNMP::Info::LLDP
=item SNMP::Info::Layer3
=back
@@ -454,7 +446,7 @@ my $baystack = new SNMP::Info::Layer2::Baystack(...);
=over
=item F<BAY-STACK-PETH-EXT-MIBB>
=item F<BAY-STACK-PETH-EXT-MIB>
=back
@@ -466,8 +458,6 @@ See L<SNMP::Info::NortelStack/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::RapidCity/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
@@ -537,10 +527,6 @@ See L<SNMP::Info::NortelStack/"GLOBALS"> for details.
See L<SNMP::Info::RapidCity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer3
See L<SNMP::Info::Layer3/"GLOBALS"> for details.
@@ -566,10 +552,6 @@ Returns reference to the map between IID and physical Port.
The physical port name is returned as slot.port.
=item $baystack->i_ignore()
Returns reference to hash of IIDs to ignore.
=item $baystack->i_mac()
Returns the C<ifPhysAddress> table entries.
@@ -700,10 +682,6 @@ See L<SNMP::Info::NortelStack/"TABLE METHODS"> for details.
See L<SNMP::Info::RapidCity/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer3
See L<SNMP::Info::Layer3/"TABLE METHODS"> for details.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::C1900
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,6 +32,7 @@
package SNMP::Info::Layer2::C1900;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
@@ -46,9 +46,9 @@ use SNMP::Info::Layer2;
Exporter/;
@SNMP::Info::Layer2::C1900::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
@@ -311,11 +311,6 @@ Catalyst 1900 device through SNMP. See SNMP::Info for full documentation
Note that most of these devices only talk SNMP version 1, but not all.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $c1900 = new SNMP::Info::Layer2::C1900(...);
=head2 Inherited classes
=over
@@ -342,8 +337,6 @@ after determining a more specific class using the method above.
F<ESSWITCH-MIB> is included in the Version 1 MIBs from Cisco.
They can be found at ftp://ftp.cisco.com/pub/mibs/v1/v1.tar.gz
=back
=head2 Inherited MIBs
@@ -386,7 +379,7 @@ the version from there.
=item $c1900->vendor()
Returns 'cisco' :)
Returns 'cisco'
=back
@@ -420,10 +413,6 @@ See L<SNMP::Info::CiscoConfig/"GLOBALS"> for details.
See L<SNMP::Info::CiscoStpExtensions/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoAgg
See L<SNMP::Info::CiscoAgg/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::C2900
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::Layer2::C2900;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2::Cisco;
@SNMP::Info::Layer2::C2900::ISA = qw/SNMP::Info::Layer2::Cisco Exporter/;
@SNMP::Info::Layer2::C2900::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%GLOBALS = (
%SNMP::Info::Layer2::Cisco::GLOBALS,
@@ -244,11 +244,6 @@ Max Baker
Provides abstraction to the configuration information obtainable from a
C2900 device 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 $c2900 = new SNMP::Info::Layer2::C2900(...);
=head2 Inherited Classes
=over
@@ -281,7 +276,7 @@ These are methods that return scalar value from SNMP
=item $c2900->vendor()
Returns 'cisco' :)
Returns 'cisco'
=item $c2900->cisco_comm_indexing()

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Catalyst
# $Id$
#
# Copyright (c) 2002,2003 Regents of the University of California
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond
@@ -32,6 +31,7 @@
package SNMP::Info::Layer2::Catalyst;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoStack;
use SNMP::Info::Layer2::Cisco;
@@ -40,9 +40,9 @@ use SNMP::Info::Layer2::Cisco;
= qw/SNMP::Info::CiscoStack SNMP::Info::Layer2::Cisco Exporter/;
@SNMP::Info::Layer2::Catalyst::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::Cisco::MIBS,
@@ -64,7 +64,7 @@ $VERSION = '3.65';
%SNMP::Info::CiscoStack::MUNGE,
);
# Overidden Methods
# Overridden Methods
# i_physical sets a hash entry as true if the iid is a physical port
sub i_physical {

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Centillion
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,9 +30,9 @@
package SNMP::Info::Layer2::Centillion;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
use SNMP::Info::NortelStack;
use SNMP::Info::SONMP;
@@ -41,9 +40,9 @@ use SNMP::Info::SONMP;
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::NortelStack SNMP::Info::SONMP Exporter/;
@SNMP::Info::Layer2::Centillion::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS,
@@ -292,11 +291,6 @@ Eric Miller
Provides abstraction to the configuration information obtainable from a
Centillion device 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 $centillion = new SNMP::Info::Layer2::centillion(...);
Note: This class supports version 4.X and 5.X which are VLAN based rather
than bridge group based.
@@ -328,7 +322,7 @@ than bridge group based.
=item Inherited Classes' MIBs
See L<SNMP::Info/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info/"REQUIREMENTS"> for its own MIB requirements.
See L<SNMP::Info::Bridge/"Required MIBs"> for its own MIB requirements.
@@ -346,7 +340,7 @@ These are methods that return scalar value from SNMP
=item $centillion->vendor()
Returns 'Nortel'
Returns 'nortel'
=item $centillion->model()
@@ -357,7 +351,7 @@ Removes C<sreg-> from the model name
=item $centillion->os()
Returns 'Centillion'
Returns 'centillion'
=item $centillion->tftp_action()
@@ -399,7 +393,7 @@ start at 0. Returns 0.
=head2 Globals imported from SNMP::Info
See documentation in L<SNMP::Info/"GLOBALS"> for details.
See documentation in L<SNMP::Info/"USAGE"> for details.
=head2 Globals imported from SNMP::Info::Bridge
@@ -513,7 +507,7 @@ Returns reference to hash. Key: Table entry, Value: VLAN Type
=head2 Table Methods imported from SNMP::Info
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info/"USAGE"> for details.
=head2 Table Methods imported from SNMP::Info::Bridge

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Cisco
# $Id$
#
# Copyright (c) 2008 Max Baker
# All rights reserved.
@@ -31,6 +30,7 @@
package SNMP::Info::Layer2::Cisco;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CDP;
@@ -50,9 +50,9 @@ use SNMP::Info::Layer2;
Exporter/;
@SNMP::Info::Layer2::Cisco::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -194,7 +194,7 @@ These are methods that return scalar value from SNMP
=item $cisco->vendor()
Returns 'cisco'
Returns 'cisco'
=back
@@ -226,10 +226,6 @@ See documentation in L<SNMP::Info::CiscoPortSecurity/"GLOBALS"> for details.
See documentation in L<SNMP::Info::CiscoStpExtensions/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoAgg
See documentation in L<SNMP::Info::CiscoAgg/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.

View File

@@ -34,61 +34,60 @@
package SNMP::Info::Layer2::CiscoSB;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::Entity;
use SNMP::Info::EtherLike;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoConfig;
use SNMP::Info::CDP;
@SNMP::Info::Layer2::CiscoSB::ISA
= qw/SNMP::Info::Layer2 SNMP::Info::Entity SNMP::Info::EtherLike
= qw/SNMP::Info::Layer2 SNMP::Info::EtherLike
SNMP::Info::CiscoStats SNMP::Info::CiscoConfig SNMP::Info::CDP Exporter/;
@SNMP::Info::Layer2::CiscoSB::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::EtherLike::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
'descr' => 'sysDescr'
'descr' => 'sysDescr',
'mac' => 'rndBasePhysicalAddress',
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::Entity::FUNCS,
%SNMP::Info::EtherLike::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
%SNMP::Info::CDP::FUNCS,
'peth_port_power' => 'rlPethPsePortOutputPower',
);
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::Entity::MIBS,
%SNMP::Info::EtherLike::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
%SNMP::Info::CDP::MIBS,
'CISCOSB-POE-MIB' => 'rlPethPsePortOutputPower',
'CISCOSB-DEVICEPARAMS-MIB' => 'rndBasePhysicalAddress',
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::EtherLike::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CDP::MUNGE,
);
sub vendor {
return 'cisco';
}
@@ -137,6 +136,26 @@ sub model {
return $ciscosb->description();
}
# CISCOSBinterfaces.mib also contains duplex info if needed
sub i_duplex {
my $ciscosb = shift;
my $partial = shift;
my $el_duplex = $ciscosb->el_duplex($partial);
if ( defined $el_duplex and scalar( keys %$el_duplex ) ) {
my %i_duplex;
foreach my $el_port ( keys %$el_duplex ) {
my $duplex = $el_duplex->{$el_port};
next unless defined $duplex;
$i_duplex{$el_port} = 'half' if $duplex =~ /half/i;
$i_duplex{$el_port} = 'full' if $duplex =~ /full/i;
}
return \%i_duplex;
}
}
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name.
sub interfaces {
@@ -189,8 +208,6 @@ managed switches. [i.e. those matching enterprises(1).cisco(9).otherEnterprises(
=item SNMP::Info::CiscoStats
=item SNMP::Info::Entity
=item SNMP::Info::EtherLike
=item SNMP::Info::Layer2
@@ -201,6 +218,10 @@ managed switches. [i.e. those matching enterprises(1).cisco(9).otherEnterprises(
=over
=item F<CISCOSB-DEVICEPARAMS-MIB>
=item F<CISCOSB-POE-MIB>
=item Inherited Classes
MIBs required by the inherited classes listed above.
@@ -213,6 +234,10 @@ These are methods that return scalar value from SNMP.
=over
=item $ciscosb->mac()
Returns mac from (C<rndBasePhysicalAddress>)
=item $ciscosb->os_ver()
Returns software version (C<entPhysicalSoftwareRev>)
@@ -246,16 +271,25 @@ Returns 'ros'.
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::EtherLike
See documentation in L<SNMP::Info::EtherLike/"GLOBALS"> for details.
=head1 TABLE METHODS
=over
=item $ciscosb->peth_port_power()
Power supplied by PoE ports, in milliwatts.
(C<rlPethPsePortOutputPower>)
=item $ciscosb->i_duplex()
Return duplex based upon the result of EtherLike->el_duplex().
=back
=head2 Overrides
=over
@@ -270,10 +304,6 @@ Uses the i_name() field.
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::EtherLike
See documentation in L<SNMP::Info::EtherLike/"TABLE METHODS"> for details.

View File

@@ -30,6 +30,7 @@
package SNMP::Info::Layer2::Exinda;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@@ -40,9 +41,9 @@ use SNMP::Info::Layer2;
/;
@SNMP::Info::Layer2::Exinda::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -52,9 +53,10 @@ $VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
# EXINDA-MIB
'uptime' => 'systemUptime',
'os_ver' => 'systemVersion',
'serial1' => 'systemHostId',
'exinda_model' => 'hardwareSeries',
'serial1' => 'systemHostId',
'uptime' => 'systemUptime',
'os_ver' => 'systemVersion',
);
%FUNCS = (
@@ -65,10 +67,11 @@ $VERSION = '3.65';
%SNMP::Info::Layer2::MUNGE,
);
# layer 2: bridged shaping and failopen interfaces
# layer 3/4: ip and layer 4 protocol fiddling and accell
# layer 7: wccp support
sub layers {
# layer 2: bridged shaping and failopen interfaces
# layer 3/4: ip and layer 4 protocol fiddling and accell
# layer 7: wccp supprt
return '01001110';
}
@@ -76,21 +79,19 @@ sub vendor {
return 'exinda';
}
# overwrite l2->model, hardwareSeries returns a plain string
sub model {
my $exinda = shift;
return $exinda->hardwareSeries();
return $exinda->exinda_model;
}
# systemHostId (and thus serial1) is actually also a mac address
sub mac {
# systemHostId is actually also a mac address
my $exinda = shift;
my $exinda_mac = $exinda->systemHostId();
my $exinda_mac = $exinda->serial1;
$exinda_mac =~ s/(..)/$1:/g;
chop $exinda_mac;
return $exinda_mac;
return unless (defined $exinda_mac && (length $exinda_mac) == 12);
return join(":", $exinda_mac =~ m/\w{2}/g);
}
sub os {
@@ -164,7 +165,7 @@ Returns a mac address extracted from C<systemHostId>.
=item $exinda->model()
Returns the model extracted from C<hardwareSeries>.
Returns C<hardwareSeries>.
=item $exinda->os()
@@ -172,11 +173,7 @@ Returns 'exos'.
=item $exinda->os_ver()
Returns the os version extracted from C<systemVersion>.
=item $exinda->serial1()
Returns the serial extracted from C<systemHostId>.
Returns C<systemVersion>.
=item $exinda->uptime()

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::HP - SNMP Interface to HP ProCurve Switches
# $Id$
#
# Copyright (c) 2008-2009 Max Baker changes from version 0.8 and beyond.
#
@@ -33,6 +32,7 @@
package SNMP::Info::Layer2::HP;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
@@ -48,9 +48,9 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
/;
@SNMP::Info::Layer2::HP::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MODEL_MAP, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -32,6 +32,7 @@
package SNMP::Info::Layer2::HP4000;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
@@ -42,14 +43,13 @@ use SNMP::Info::CDP;
SNMP::Info::CDP Exporter/;
@SNMP::Info::Layer2::HP4000::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MODEL_MAP, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CDP::MIBS,
'RFC1271-MIB' => 'logDescription',
'HP-ICF-OID' => 'hpSwitch4000',
@@ -427,7 +427,7 @@ sub set_i_vlan {
$hp->error_throw("Error removing previous untagged vlan from port, should never happen...\n") unless defined $rv;
}
} else {
# If vlan change was not succesful, try to revert to the old situation.
# If vlan change was not successful, try to revert to the old situation.
if (defined $old_untagged) {
$rv = $hp->set_hp_v_if_tag(2, $old_untagged) if defined $old_untagged;
if (defined $rv) {
@@ -504,11 +504,6 @@ Note: Some HP Switches will connect via SNMP version 1, but a lot of config
data will not be available. Make sure you try and connect with Version 2
first, and then fail back to version 1.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $hp = new SNMP::Info::Layer2::HP4000(...);
=head2 Inherited Classes
=over

View File

@@ -31,21 +31,20 @@
package SNMP::Info::Layer2::HPVC;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::LLDP;
@SNMP::Info::Layer2::HPVC::ISA
= qw/SNMP::Info::Layer2 SNMP::Info::LLDP Exporter/;
= qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::HPVC::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::LLDP::MIBS,
'HPVC-MIB' => 'vcDomainName',
'CPQSINFO-MIB' => 'cpqSiSysSerialNum',
'HPVCMODULE-MIB' => 'vcModuleDomainName',
@@ -53,7 +52,6 @@ $VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'serial1' => 'cpqSiSysSerialNum.0',
'os_ver' => 'cpqHoSWRunningVersion.1',
'os_bin' => 'cpqHoFwVerVersion.1',
@@ -62,17 +60,13 @@ $VERSION = '3.65';
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
# Inherit all the built in munging
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
# Method Overrides
sub os {
@@ -120,11 +114,6 @@ Jeroen van Ingen
Provides abstraction to the configuration information obtainable from a
HP Virtual Connect Switch via 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 $hp = new SNMP::Info::Layer2::HPVC(...);
=head2 Inherited Classes
=over

View File

@@ -28,15 +28,16 @@ package SNMP::Info::Layer2::Kentrox;
# POSSIBILITY OF SUCH DAMAGE.
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Kentrox::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Kentrox::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -57,13 +58,13 @@ $VERSION = '3.65';
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub os {
return 'Kentrox';
return 'kentrox';
}
sub os_ver {
my $dsver = shift;
my $descr = $dsver->description();
if ( $descr =~ /^\S+\s\S+\s\S+\s(\S+)/){
if ( defined ($descr) && $descr =~ /^\S+\s\S+\s\S+\s(\S+)/){
return $1;
}
return;
@@ -72,20 +73,20 @@ sub os_ver {
sub serial {
my $dsserial = shift;
my $serial = $dsserial->ds_sysinfo();
if ( $serial =~ /SERIAL\s(\S+)/){
if ( defined ($serial) && $serial =~ /SERIAL\s(\S+)/){
my $str = substr($1,8,10);
return $str;
}
return;
}
sub vendor {
return 'Kentrox';
return 'kentrox';
}
sub model {
my $dsmodel = shift;
my $descr = $dsmodel->description();
if ( $descr =~ /^(\S+\s\S+)/){
if ( defined ($descr) && $descr =~ /^(\S+\s\S+)/){
return $1;
}
return;
@@ -110,7 +111,7 @@ phishphreek@gmail.com
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 1
Version => 2
)
or die "Can't connect to DestHost.\n";

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::N2270
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,38 +30,42 @@
package SNMP::Info::Layer2::N2270;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
use SNMP::Info::Layer2;
use SNMP::Info::SONMP;
use SNMP::Info::Airespace;
@SNMP::Info::Layer2::N2270::ISA
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::SONMP SNMP::Info::Airespace Exporter/;
= qw/SNMP::Info::Layer2 SNMP::Info::SONMP SNMP::Info::Airespace Exporter/;
@SNMP::Info::Layer2::N2270::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
%SNMP::Info::SONMP::MIBS, %SNMP::Info::Airespace::MIBS,
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::SONMP::MIBS,
%SNMP::Info::Airespace::MIBS,
);
%GLOBALS = (
%SNMP::Info::GLOBALS, %SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::SONMP::GLOBALS, %SNMP::Info::Airespace::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::SONMP::GLOBALS,
%SNMP::Info::Airespace::GLOBALS,
);
%FUNCS = (
%SNMP::Info::FUNCS, %SNMP::Info::Bridge::FUNCS,
%SNMP::Info::SONMP::FUNCS, %SNMP::Info::Airespace::FUNCS,
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::SONMP::FUNCS,
%SNMP::Info::Airespace::FUNCS,
);
%MUNGE = (
%SNMP::Info::MUNGE, %SNMP::Info::Bridge::MUNGE,
%SNMP::Info::SONMP::MUNGE, %SNMP::Info::Airespace::MUNGE,
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::SONMP::MUNGE,
%SNMP::Info::Airespace::MUNGE,
);
sub os {
@@ -126,18 +129,11 @@ Eric Miller
Provides abstraction to the configuration information obtainable from a
Nortel 2270 Series Wireless Switch 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 $n2270 = new SNMP::Info::Layer2::N2270(...);
=head2 Inherited Classes
=over
=item SNMP::Info
=item SNMP::Info::Bridge
=item SNMP::Info::Layer2
=item SNMP::Info::SONMP
@@ -151,9 +147,7 @@ my $n2270 = new SNMP::Info::Layer2::N2270(...);
=item Inherited Classes' MIBs
See L<SNMP::Info/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Bridge/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::SONMP/"Required MIBs"> for its own MIB requirements.
@@ -200,13 +194,9 @@ start at 0. Returns 0.
=back
=head2 Globals imported from SNMP::Info
=head2 Globals imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"GLOBALS"> for details.
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::SONMP
@@ -229,13 +219,9 @@ to a hash.
=back
=head2 Table Methods imported from SNMP::Info
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::SONMP

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::NAP222x
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,6 +30,7 @@
package SNMP::Info::Layer2::NAP222x;
use strict;
use warnings;
use Exporter;
use SNMP::Info::SONMP;
use SNMP::Info::IEEE802dot11;
@@ -40,9 +40,9 @@ use SNMP::Info::Layer2;
= qw/SNMP::Info::SONMP SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::NAP222x::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
@@ -393,11 +393,6 @@ Eric Miller
Provides abstraction to the configuration information obtainable from a Nortel
2220 series wireless Access Points 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 $nap222x = new SNMP::Info::Layer2::NAP222x(...);
=head2 Inherited Classes
=over

View File

@@ -29,21 +29,20 @@
package SNMP::Info::Layer2::NWSS2300;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::NWSS2300::ISA
= qw/SNMP::Info SNMP::Info::Bridge Exporter/;
= qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::NWSS2300::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS,
%SNMP::Info::Bridge::MIBS,
%SNMP::Info::Layer2::MIBS,
'NTWS-REGISTRATION-DEVICES-MIB' => 'ntwsSwitch2380',
'NTWS-AP-STATUS-MIB' => 'ntwsApStatNumAps',
'NTWS-CLIENT-SESSION-MIB' => 'ntwsClSessTotalSessions',
@@ -53,16 +52,14 @@ $VERSION = '3.65';
);
%GLOBALS = (
%SNMP::Info::GLOBALS,
%SNMP::Info::Bridge::GLOBALS,
'os_ver' => 'ntwsVersionString',
'serial' => 'ntwsSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
%SNMP::Info::Layer2::GLOBALS,
'os_ver' => 'ntwsVersionString',
'nws_serial' => 'ntwsSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
);
%FUNCS = (
%SNMP::Info::FUNCS,
%SNMP::Info::Bridge::FUNCS,
%SNMP::Info::Layer2::FUNCS,
# NTWS-AP-STATUS-MIB::ntwsApStatApStatusTable
'nwss2300_ap_mac' => 'ntwsApStatApStatusBaseMac',
@@ -125,8 +122,7 @@ $VERSION = '3.65';
);
%MUNGE = (
%SNMP::Info::MUNGE,
%SNMP::Info::Bridge::MUNGE,
%SNMP::Info::Layer2::MUNGE,
'nwss2300_apif_mac' => \&SNMP::Info::munge_mac,
'nwss2300_apif_bssid' => \&SNMP::Info::munge_mac,
);
@@ -143,6 +139,14 @@ sub vendor {
return 'avaya';
}
sub serial {
my $nwss2300 = shift;
my $ser = $nwss2300->ntwsSerialNumber();
# my $ser = $nwss2300->nws_serial();
return $ser;
}
sub model {
my $nwss2300 = shift;
my $id = $nwss2300->id();
@@ -658,7 +662,7 @@ sub e_serial {
my %e_serial;
# Chassis
$e_serial{1} = $nwss2300->serial();
$e_serial{1} = $nwss2300->serial() || '';
# APs
foreach my $iid ( keys %$ap_serial ) {
@@ -813,18 +817,11 @@ This class emulates bridge functionality for the wireless switch. This enables
end station MAC addresses collection and correlation to the thin access point
the end station is using for communication.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $nwss2300 = new SNMP::Info::Layer2::NWSS2300(...);
=head2 Inherited Classes
=over
=item SNMP::Info
=item SNMP::Info::Bridge
=item SNMP::Info::Layer2
=back
@@ -846,9 +843,7 @@ my $nwss2300 = new SNMP::Info::Layer2::NWSS2300(...);
=head2 Inherited Classes' MIBs
See L<SNMP::Info/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Bridge/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
@@ -895,13 +890,9 @@ proprietary MIBs.
=back
=head2 Global Methods imported from SNMP::Info
=head2 Global Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"GLOBALS"> for details.
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head1 TABLE METHODS
@@ -1141,13 +1132,9 @@ These emulate the F<CISCO-DOT11-MIB>
=back
=head2 Table Methods imported from SNMP::Info
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Overrides

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Netgear
# $Id$
#
# Copyright (c) 2008 Bill Fenner
# All rights reserved.
@@ -31,33 +30,33 @@
package SNMP::Info::Layer2::Netgear;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::LLDP;
@SNMP::Info::Layer2::Netgear::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Netgear::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Netgear::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
# 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::LLDP::MIBS, );
%MIBS = ( %SNMP::Info::Layer2::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
ng_fsosver => '.1.3.6.1.4.1.4526.11.11.1.0',
ng_gsmserial => '.1.3.6.1.4.1.4526.10.1.1.1.4.0',
ng_gsmosver => '.1.3.6.1.4.1.4526.10.1.1.1.13.0',
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, %SNMP::Info::LLDP::FUNCS, );
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::LLDP::MUNGE, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'netgear';
@@ -87,7 +86,7 @@ sub serial {
return $e_serial->{$index} if defined $index;
}
# Without Enitity-MIB, we've got to work our way through a bunch of
# Without Entity-MIB, we've got to work our way through a bunch of
# different locales...
return $netgear->ng_gsmserial() if defined $netgear->model and $netgear->model =~ m/[FG]SM\d/i;;
return 'none';
@@ -109,7 +108,7 @@ sub model {
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name. If all else fails,
# concatentate ifDesc and ifIndex.
# concatenate ifDesc and ifIndex.
sub interfaces {
my $netgear = shift;
my $partial = shift;
@@ -192,8 +191,6 @@ inherited methods.
=over
=item SNMP::Info::Layer2
=item SNMP::Info::Entity
=item SNMP::Info::LLDP
=back
@@ -206,10 +203,6 @@ inherited methods.
MIBs listed in L<SNMP::Info::Layer2/"Required MIBs"> and its inherited
classes.
See L<SNMP::Info::Entity/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its MIB requirements.
=back
=head1 GLOBALS
@@ -248,14 +241,6 @@ serial number).
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of
@@ -275,12 +260,4 @@ Uses the i_name() field.
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=cut

View File

@@ -30,15 +30,16 @@
package SNMP::Info::Layer2::Nexans;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Nexans::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Nexans::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -157,11 +158,6 @@ tested devices:
gigaSwitch641DeskSfpTp version 3.68, 4.14W
gigaSwitchV3d2SfpSfp version 3.68, 4.02, 4.02B, 4.10C, 4,14W
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $nexans = new SNMP::Info::Layer2::Nexans(...);
=head2 Inherited Classes
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::Orinoco
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,6 +30,7 @@
package SNMP::Info::Layer2::Orinoco;
use strict;
use warnings;
use Exporter;
use SNMP::Info::IEEE802dot11;
use SNMP::Info::Layer2;
@@ -39,9 +39,9 @@ use SNMP::Info::Layer2;
= qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Orinoco::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -189,11 +189,6 @@ Provides abstraction to the configuration information obtainable from
Orinoco Access Point through SNMP. Orinoco devices have been manufactured
by Proxim, Agere, and Lucent.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $orinoco = new SNMP::Info::Layer2::Orinoco(...);
=head2 Inherited Classes
=over
@@ -234,7 +229,7 @@ Returns the model extracted from C<sysDescr>.
=item $orinoco->os()
Returns 'Orinoco'
Returns 'orinoco'
=item $orinoco->os_ver()

View File

@@ -30,15 +30,16 @@
package SNMP::Info::Layer2::Sixnet;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Sixnet::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Sixnet::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (%SNMP::Info::Layer2::MIBS, 'SIXNET-MIB' => 'sxid',);
@@ -108,11 +109,6 @@ Eric Miller
SNMP::Info::Layer2::Sixnet is a subclass of SNMP::Info that provides an
interface to Sixnet industrial switches.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $sixnet = new SNMP::Info::Layer2::Sixnet(...);
=head2 Inherited Classes
=over

View File

@@ -29,23 +29,20 @@
package SNMP::Info::Layer2::Trapeze;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
use SNMP::Info::LLDP;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Trapeze::ISA
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::LLDP Exporter/;
= qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Trapeze::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS,
%SNMP::Info::Bridge::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::Layer2::MIBS,
'TRAPEZE-NETWORKS-REGISTRATION-DEVICES-MIB' => 'wirelessLANController',
'TRAPEZE-NETWORKS-AP-STATUS-MIB' => 'trpzApStatNumAps',
'TRAPEZE-NETWORKS-CLIENT-SESSION-MIB' => 'trpzClSessTotalSessions',
@@ -55,18 +52,14 @@ $VERSION = '3.65';
);
%GLOBALS = (
%SNMP::Info::GLOBALS,
%SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'os_ver' => 'trpzVersionString',
'serial' => 'trpzSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
%SNMP::Info::Layer2::GLOBALS,
'os_ver' => 'trpzVersionString',
'tr_serial' => 'trpzSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
);
%FUNCS = (
%SNMP::Info::FUNCS,
%SNMP::Info::Bridge::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::Layer2::FUNCS,
# TRAPEZE-NETWORKS-AP-STATUS-MIB::trpzApStatApStatusTable
'trapeze_ap_mac' => 'trpzApStatApStatusBaseMac',
'trapeze_ap_name' => 'trpzApStatApStatusApName',
@@ -128,9 +121,7 @@ $VERSION = '3.65';
);
%MUNGE = (
%SNMP::Info::MUNGE,
%SNMP::Info::Bridge::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::Layer2::MUNGE,
'trapeze_apif_mac' => \&SNMP::Info::munge_mac,
'trapeze_apif_bssid' => \&SNMP::Info::munge_mac,
);
@@ -147,6 +138,14 @@ sub vendor {
return 'juniper';
}
sub serial {
my $trapeze = shift;
my $ser = $trapeze->trpzSerialNumber();
# my $ser = $trapeze->tr_serial();
return $ser;
}
sub model {
my $trapeze = shift;
my $id = $trapeze->id();
@@ -662,7 +661,7 @@ sub e_serial {
my %e_serial;
# Chassis
$e_serial{1} = $trapeze->serial();
$e_serial{1} = $trapeze->serial() || '';
# APs
foreach my $iid ( keys %$ap_serial ) {
@@ -817,18 +816,11 @@ This class emulates bridge functionality for the wireless switch. This enables
end station MAC addresses collection and correlation to the thin access point
the end station is using for communication.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $trapeze = new SNMP::Info::Layer2::Trapeze(...);
=head2 Inherited Classes
=over
=item SNMP::Info
=item SNMP::Info::Bridge
=item SNMP::Info::Layer2
=back
@@ -850,9 +842,7 @@ my $trapeze = new SNMP::Info::Layer2::Trapeze(...);
=head2 Inherited Classes' MIBs
See L<SNMP::Info/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Bridge/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
@@ -899,13 +889,9 @@ proprietary MIBs.
=back
=head2 Global Methods imported from SNMP::Info
=head2 Global Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"GLOBALS"> for details.
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head1 TABLE METHODS
@@ -1147,11 +1133,7 @@ These emulate the F<CISCO-DOT11-MIB>
=head2 Table Methods imported from SNMP::Info
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Overrides

View File

@@ -29,6 +29,7 @@
package SNMP::Info::Layer2::Ubiquiti;
use strict;
use warnings;
use Exporter;
use SNMP::Info::IEEE802dot11;
use SNMP::Info::Layer2;
@@ -40,23 +41,23 @@ use SNMP::Info::Layer3; # only used in sub mac()
= qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Ubiquiti::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::IEEE802dot11::MIBS,
);
%GLOBALS
= ( %SNMP::Info::Layer2::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS, );
%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, );
@@ -70,14 +71,14 @@ sub os {
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
}
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
@@ -89,35 +90,54 @@ sub os {
}
sub os_ver {
my $dot11 = shift;
my $ubnt = shift;
my $versions = $dot11->dot11_prod_ver();
my $versions = $ubnt->dot11_prod_ver();
foreach my $iid ( keys %$versions ) {
my $ver = $versions->{$iid};
next unless defined $ver;
my $os = $ubnt->os;
if($os == 'AirOS'){
## pretty up the version reporting for AirOS to include hardware (XW, XM, etc) and three major groups of firmware
my @firmware = split(/v/, $ver);
my @firmwareSplit = split(/\./, $firmware[1]);
my @prefix = split(/\./, $ver);
$ver = $prefix[0] . '-v' . join('.', @firmwareSplit[0,1,2]);
}
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;
}
#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];
my $ver = $ubnt->description() || '';
if((lc $ver) =~ /^edgeswitch/){
## EdgeSwitch OS version is second field split by comma and bootcode version is last
my @myver = split(/, /, $ver);
my @firmware = split(/\./, $myver[1]);
my @bootcode = split(/\./, $myver[-1]);
## Return only three major version groupings and include bootcode version
return join('.', @firmware[0,1,2]) . '.-b' . join('.', @bootcode[0,1,2]);
}
## EdgeRouter OS version is second field split by space
my @myver = split(/ /, $ver);
my @firmware = split(/\./, $myver[1]);
return $myver[1];
if($firmware[2] =~ /hotfix$/){
# edge case where EdgeOS has hotfix versions in format "EdgeOS v1.9.7+hotfix.4.5024004.171005.0403"
$firmware[2] = $firmware[2] . '.' . $firmware[3]
}
## Return only three major version groupings
return join('.', @firmware[0,1,2]);
}
sub vendor {
return 'Ubiquiti Networks, Inc.';
return 'ubiquiti';
}
sub model {
@@ -142,7 +162,7 @@ sub model {
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
# EdgeSwitch includes model directly and edgeos logic is in else statement
return ;
}else{
## do some logic to determine ER model based on tech specs from ubnt:
@@ -179,6 +199,9 @@ sub model {
}if($ethCount eq 8){
## Could be ER-8 Pro, ER-8, or EP-R8
return "EdgeRouter 8-Port"
}if($ethCount eq 12){
## ER-12
return "EdgeRouter 12-Port"
}elsif($ethCount eq 5 and $cpuCount eq 4){
## Could be ER-X or ER-X-SFP
return "EdgeRouter X 5-Port"
@@ -210,13 +233,14 @@ sub serial {
sub mac {
my $ubnt = shift;
my $ifDescs = $ubnt->ifDescr;
my $erModel = $ubnt->model;
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'){
## eth0 will have primary MAC for linux-based UBNT devices, except ER-12 which is eth11
if($ifDesc =~ /CPU/ or ($ifDesc eq 'eth0' and !($erModel =~ /EdgeRouter 12/)) or ($ifDesc eq 'eth11' and ($erModel =~ /EdgeRouter 12/))){
my $mac = $ubnt->ifPhysAddress->{$iid};
# syntax stolen from sub munge_mac in SNMP::Info
@@ -230,11 +254,11 @@ sub mac {
}
sub interfaces {
my $netgear = shift;
my $ubnt = shift;
my $partial = shift;
my $interfaces = $netgear->i_index($partial) || {};
my $i_descr = $netgear->i_description($partial) || {};
my $interfaces = $ubnt->i_index($partial) || {};
my $i_descr = $ubnt->i_description($partial) || {};
my $return = {};
foreach my $iid ( keys %$i_descr ) {
@@ -304,11 +328,6 @@ Max Kosmach
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
@@ -337,11 +356,11 @@ These are methods that return scalar value from SNMP
=item $ubnt->vendor()
Returns 'Ubiquiti Networks, Inc.'
Returns 'ubiquiti'
=item $ubnt->model()
Returns the model extracted from C<dot11manufacturerProductName>, with failback to some complex logic for EdgeMax devices
Returns the model extracted from C<dot11manufacturerProductName>, with fallback to some complex logic for EdgeMax devices
=item $ubnt->serial()
@@ -353,11 +372,11 @@ Bridge MAC address.
=item $ubnt->os()
Returns 'Ubiquiti Networks, Inc.'
Returns C<AirOS>, C<UniFi> or C<EdgeOS> depending on model.
=item $ubnt->os_ver()
Returns the software version extracted from C<dot11manufacturerProductVersion>, with failback to description splitting for EdgeMax devices
Returns the software version extracted from C<dot11manufacturerProductVersion>, with fallback to description splitting for EdgeMax devices
=back
@@ -378,11 +397,11 @@ to a hash.
=over
=item $ubiquiti->interfaces()
=item $ubnt->interfaces()
Uses the i_name() field.
=item $ubiquiti->i_ignore()
=item $ubnt->i_ignore()
Ignores interfaces with "CPU Interface" in them.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::ZyXEL_DSLAM
# $Id$
#
# Copyright (c) 2008 Max Baker
# All rights reserved.
@@ -31,15 +30,16 @@
package SNMP::Info::Layer2::ZyXEL_DSLAM;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::ZyXEL_DSLAM::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::ZyXEL_DSLAM::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
@@ -77,7 +77,7 @@ sub os_ver {
my $zyxel = shift;
my $descr = $zyxel->description();
if ( $descr =~ m/version (\S+) / ) {
if ( defined ($descr) && $descr =~ m/version (\S+) / ) {
return $1;
}
return;
@@ -88,11 +88,13 @@ sub model {
my $desc = $zyxel->description();
if ( $desc =~ /8-port ADSL Module\(Annex A\)/ ) {
if (defined $desc) {
if ($desc =~ /8-port ADSL Module\(Annex A\)/) {
return "AAM1008-61";
}
elsif ( $desc =~ /8-port ADSL Module\(Annex B\)/ ) {
}
elsif ($desc =~ /8-port ADSL Module\(Annex B\)/) {
return "AAM1008-63";
}
}
return;
}
@@ -130,11 +132,11 @@ Dmitry Sergienko (C<dmitry@trifle.net>)
Debug => 1,
DestHost => 'myhub',
Community => 'public',
Version => 1
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $l2->class();
my $class = $zyxel->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
@@ -174,11 +176,11 @@ These are methods that return scalar value from SNMP
=item $zyxel->vendor()
Returns 'ZyXEL' :)
Returns 'zyxel'
=item $zyxel->os()
Returns 'ZyXEL'
Returns 'zyxel'
=item $zyxel->os_ver()

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3 - SNMP Interface to Layer3 devices
# $Id$
#
# Copyright (c) 2008 Max Baker -- All changes from Version 0.7 on
#
@@ -33,6 +32,7 @@
package SNMP::Info::Layer3;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
@@ -42,23 +42,25 @@ use SNMP::Info::PowerEthernet;
use SNMP::Info::IPv6;
use SNMP::Info::AdslLine;
use SNMP::Info::LLDP;
use SNMP::Info::DocsisHE;
@SNMP::Info::Layer3::ISA = qw/
SNMP::Info::PowerEthernet SNMP::Info::IPv6
SNMP::Info::Entity SNMP::Info::EtherLike
SNMP::Info::Bridge SNMP::Info::AdslLine
SNMP::Info::LLDP
SNMP::Info::LLDP SNMP::Info::DocsisHE
SNMP::Info Exporter/;
@SNMP::Info::Layer3::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS,
%SNMP::Info::AdslLine::MIBS,
%SNMP::Info::Bridge::MIBS,
%SNMP::Info::DocsisHE::MIBS,
%SNMP::Info::EtherLike::MIBS,
%SNMP::Info::Entity::MIBS,
%SNMP::Info::PowerEthernet::MIBS,
@@ -66,6 +68,7 @@ $VERSION = '3.65';
%SNMP::Info::LLDP::MIBS,
'IP-MIB' => 'ipNetToMediaIfIndex',
'OSPF-MIB' => 'ospfRouterId',
'ISIS-MIB' => 'isisSysID',
'BGP4-MIB' => 'bgpIdentifier',
);
@@ -75,6 +78,7 @@ $VERSION = '3.65';
%SNMP::Info::GLOBALS,
%SNMP::Info::AdslLine::GLOBALS,
%SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::DocsisHE::GLOBALS,
%SNMP::Info::EtherLike::GLOBALS,
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::PowerEthernet::GLOBALS,
@@ -92,6 +96,7 @@ $VERSION = '3.65';
%SNMP::Info::FUNCS,
%SNMP::Info::AdslLine::FUNCS,
%SNMP::Info::Bridge::FUNCS,
%SNMP::Info::DocsisHE::FUNCS,
%SNMP::Info::EtherLike::FUNCS,
%SNMP::Info::Entity::FUNCS,
%SNMP::Info::PowerEthernet::FUNCS,
@@ -123,6 +128,20 @@ $VERSION = '3.65';
'ospf_peer_id' => 'ospfNbrRtrId',
'ospf_peer_state' => 'ospfNbrState',
# ISIS-MIB::isisCircTable
'isis_circ_if_idx' => 'isisCircIfIndex' ,
'isis_circ_admin' => 'isisCircAdminState',
'isis_circ_type' => 'isisCircType',
'isis_circ_level_type' => 'isisCircLevelType',
# ISIS-MIB::isisISAdjTable
'isis_adj_state' => 'isisISAdjState',
'isis_adj_type' => 'isisISAdjNeighSysType',
'isis_adj_usage' => 'isisISAdjUsage',
'isis_adj_id' => 'isisISAdjNeighSysID',
'isis_adj_ip_type' => 'isisISAdjIPAddrType',
'isis_adj' => 'isisISAdjIPAddrAddress',
# BGP4-MIB::bgpPeerTable
'bgp_peers' => 'bgpPeerLocalAddr',
'bgp_peer_id' => 'bgpPeerIdentifier',
@@ -152,6 +171,7 @@ $VERSION = '3.65';
%SNMP::Info::AdslLine::MUNGE,
%SNMP::Info::Bridge::MUNGE,
%SNMP::Info::EtherLike::MUNGE,
%SNMP::Info::DocsisHE::MUNGE,
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::PowerEthernet::MUNGE,
%SNMP::Info::IPv6::MUNGE,
@@ -161,6 +181,32 @@ $VERSION = '3.65';
'n2p_paddr' => \&SNMP::Info::munge_mac,
);
sub isis_peers {
my $l3 = shift;
my $isis_peers = {};
# Returns hexstrings. Need to convert to IPv4 dotted or IPv6 hex notation
my $adjacencies = $l3->isis_adj();
foreach my $key (keys %$adjacencies) {
my $hexstr = $adjacencies->{$key};
my $l = length $hexstr;
my $ip;
# 4 bytes = IPv4
if ($l == 4) {
$ip = join(".", unpack("C*", $hexstr));
$isis_peers->{$key} = $ip;
}
# 16 bytes = IPv6
elsif ($l == 16) {
$ip = unpack("H*", $hexstr);
$ip =~ s/....(?=.)\K/:/sg ;
$isis_peers->{$key} = $ip;
}
}
return $isis_peers;
}
# Method OverRides
sub root_ip {
@@ -284,15 +330,25 @@ sub interfaces {
# Check for duplicates in ifDescr, if so uniquely identify by adding
# ifIndex to repeated values
my %seen;
foreach my $iid ( keys %$i_descr ) {
my (%seen, %first_seen_as);
foreach my $iid ( sort keys %$i_descr ) {
my $port = $i_descr->{$iid};
next unless defined $port;
$port = SNMP::Info::munge_null($port);
$port =~ s/^\s+//; $port =~ s/\s+$//;
next unless length $port;
if ( $seen{$port}++ ) {
# (#320) also fixup the port this is a duplicate of
$interfaces->{ $first_seen_as{$port} }
= sprintf( "%s (%d)", $port, $first_seen_as{$port} );
$interfaces->{$iid} = sprintf( "%s (%d)", $port, $iid );
}
else {
$interfaces->{$iid} = $port;
$first_seen_as{$port} = $iid;
}
}
return $interfaces;
@@ -301,8 +357,8 @@ sub interfaces {
sub vendor {
my $l3 = shift;
my $descr = $l3->description();
my $id = $l3->id();
my $descr = $l3->description() || '';
my $id = $l3->id() || '';
# .1.3.6.1.4.1.9.1 is the CISCO-PRODUCTS-MIB
# .1.3.6.1.4.1.9.9.368.4 is an old tree that Cisco CSSs were numbered from
@@ -407,6 +463,10 @@ after determining a more specific class using the method above.
=item SNMP::Info::LLDP
=item SNMP::Info::DocsisHE
=item SNMP::Info::AdslLine
=back
=head2 Required MIBs
@@ -415,6 +475,8 @@ after determining a more specific class using the method above.
=item F<IP-MIB>
=item F<ISIS-MIB>
=item F<OSPF-MIB>
=item F<BGP4-MIB>
@@ -423,7 +485,7 @@ after determining a more specific class using the method above.
=head2 Inherited MIBs
See L<SNMP::Info/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info/"REQUIREMENTS"> for its MIB requirements.
See L<SNMP::Info::Bridge/"Required MIBs"> for its MIB requirements.
@@ -437,6 +499,10 @@ See L<SNMP::Info::IPv6/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::DocsisHE/"Required MIBs"> for its MIB requirements.
See L<SNMP::Info::AdslLine/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
@@ -495,7 +561,7 @@ found: OSPF Router ID (C<ospfRouterId>) or any OSPF Host IP Address
=head2 Globals imported from SNMP::Info
See L<SNMP::Info/"GLOBALS"> for details.
See L<SNMP::Info/"USAGE"> for details.
=head2 Global Methods imported from SNMP::Info::Bridge
@@ -521,6 +587,14 @@ See L<SNMP::Info::IPv6/"GLOBALS"> for details.
See L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::DocsisHE
See L<SNMP::Info::DocsisHE/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::AdslLine
See L<SNMP::Info::AdslLine/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -550,7 +624,7 @@ Returns reference to hash of iid to current link duplex setting.
Maps $l3->el_index() to $l3->el_duplex, then culls out
full,half, or auto and sets the map to that value.
See L<SNMP::Info::Etherlike> for the el_index() and el_duplex() methods.
See L<SNMP::Info::EtherLike> for the el_index() and el_duplex() methods.
=back
@@ -766,9 +840,85 @@ routers
=back
=head2 IS-IS Circuit Table
=over
=item $l3->isis_circ_if_idx()
Returns reference to hash of the interface index associated with the IS-IS
circuit
(C<isisCircIfIndex>)
=item $l3->isis_circ_admin()
Returns reference to hash of the IS-IS circuit's admin status
(C<isisCircAdminState>)
=item $l3->isis_circ_type()
Returns reference to hash of the IS-IS circuit's type
(C<isisCircType>)
=item $l3->isis_circ_level_type()
Returns reference to hash of the IS-IS circuit's level
(C<isisCircLevelType>)
=back
=head2 IS-IS Adjacency Table
=over
=item $l3->isis_adj_id()
Returns reference to hash of the peer id of adjacencies.
(C<isisISAdjNeighSysID>)
=item $l3->isis_adj_type()
Returns reference to hash of the type of adjacencies (Level 1
Intermediate System, Level 2 Intermediate System, Level 1+2
Intermediate System, unknown)
(C<isisISAdjNeighSysType>)
=item $l3->isis_adj_usage()
Returns reference to hash of the type of adjacencies in use
(undefined, Level 1, Level 2, Level1+2)
(C<isisISAdjNeighUsage>)
=item $l3->isis_adj_ip_type()
Returns reference to hash of type of address (IPv4, IPv6, etc) on adjacencies.
(C<isisISAdjIPAddrType>)
=item $l3->isis_adj()
Returns reference to hash of addresses (IPv4, IPv6, etc) on adjacencies.
Note this returns hash-strings, for IPs, use $l3->isis_peers()
(C<isisISAdjIPAddrAddress>)
=item $l3->isis_peers()
Returns reference to hash of addresses (IPv4, IPv6) on adjacencies.
Convert hash strings from isis_adj to proper
IP (v4 and v6) formatting.
=back
=head2 Table Methods imported from SNMP::Info
See L<SNMP::Info/"TABLE METHODS"> for details.
See L<SNMP::Info/"USAGE"> for details.
=head2 Table Methods imported from SNMP::Info::Bridge
@@ -794,4 +944,12 @@ See L<SNMP::Info::IPv6/"TABLE METHODS"> for details.
See L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::DocsisHE
See L<SNMP::Info::DocsisHE/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::AdslLine
See L<SNMP::Info::AdslLine/"TABLE METHODS"> for details.
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Aironet
# $Id$
#
# Copyright (c) 2008 Max Baker changes from version 0.8 and beyond.
#
@@ -33,15 +32,16 @@
package SNMP::Info::Layer3::Aironet;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Aironet::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Aironet::EXPORT_OK = qw//;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -279,9 +279,6 @@ after determining a more specific class using the method above.
=back
These MIBs are now included in the v2.tar.gz archive available from
ftp.cisco.com. Make sure you have a current version.
=head1 GLOBALS
These are methods that return scalar value from SNMP

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::AlcatelLucent
# $Id$
#
# Copyright (c) 2008 Bill Fenner
#
@@ -30,6 +29,7 @@
package SNMP::Info::Layer3::AlcatelLucent;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
@@ -47,9 +47,9 @@ use SNMP::Info::LLDP;
SNMP::Info::MAU SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::AlcatelLucent::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -115,7 +115,9 @@ sub os_ver {
my $alu = shift;
my $descr = $alu->description();
return $1 if $descr =~ m/\b(\d[\.\d]+R\d+) (?:GA|Service Release), /;
if (defined ($descr)) {
return $1 if $descr =~ m/\b(\d[\.\d]+R\d+) (?:GA|Service Release), /;
}
# No clue what this will try but hey
return $alu->SUPER::os_ver();
@@ -370,7 +372,7 @@ These are methods that return scalar value from SNMP
=item $alu->vendor()
Returns 'alcatel-lucent'
Returns 'alcatel-lucent'
=item $alu->model()

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::AlteonAD
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All Rights Reserved
@@ -31,15 +30,16 @@
package SNMP::Info::Layer3::AlteonAD;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::AlteonAD::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::AlteonAD::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -450,11 +450,6 @@ Eric Miller
Abstraction subclass for Radware Alteon Series ADC switches and
Nortel BladeCenter Layer2-3 GbE Switch Modules.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $alteon = new SNMP::Info::Layer3::AlteonAD(...);
=head2 Inherited Classes
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Altiga
# $Id$
#
# Copyright (c) 2008 Jeroen van Ingen Schenau
# All rights reserved.
@@ -31,16 +30,17 @@
package SNMP::Info::Layer3::Altiga;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Altiga::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Altiga::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
$int_include_vpn $fake_idx $type_class/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE,
$int_include_vpn, $fake_idx, $type_class);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -281,7 +281,7 @@ Jeroen van Ingen Schenau
Debug => 1,
DestHost => 'my_vpn_host',
Community => 'public',
Version => 1
Version => 2
)
or die "Can't connect to DestHost.\n";
@@ -304,6 +304,12 @@ Subclass for Cisco (formerly Altiga) VPN concentrators
=over
=item F<ALTIGA-VERSION-STATS-MIB>
=item F<ALTIGA-SESSION-STATS-MIB>
=item F<ALTIGA-HARDWARE-STATS-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Arista
# $Id$
#
# Copyright (c) 2008 Arista Networks, Inc.
# All rights reserved.
@@ -31,29 +30,27 @@
package SNMP::Info::Layer3::Arista;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::LLDP;
use SNMP::Info::Aggregate 'agg_ports_ifstack';
@SNMP::Info::Layer3::Arista::ISA = qw/
SNMP::Info::Aggregate
SNMP::Info::LLDP
SNMP::Info::MAU
SNMP::Info::Layer3 Exporter
SNMP::Info::Layer3
Exporter
/;
@SNMP::Info::Layer3::Arista::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::Aggregate::MIBS,
'ARISTA-PRODUCTS-MIB' => 'aristaDCS7124S',
);
@@ -61,19 +58,16 @@ $VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::MAU::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::MAU::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::MAU::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
# use MAU-MIB for admin. duplex and admin. speed
@@ -92,11 +86,14 @@ sub os {
sub os_ver {
my $arista = shift;
my $descr = $arista->description();
my $os_ver = undef;
my $descr = $arista->description();
$os_ver = $1 if ( $descr =~ /\s+EOS\s+version\s+(\S+)\s+/ );
return $os_ver;
if (defined ($descr)) {
my $os_ver = undef;
$os_ver = $1 if ($descr =~ /\s+EOS\s+version\s+(\S+)\s+/);
return $os_ver;
}
return;
}
sub model {
@@ -131,6 +128,11 @@ sub lldp_if {
return $lldp_if;
}
sub set_i_vlan {
my ($arista, $vlan, $iid) = @_;
return $arista->set_qb_i_vlan($vlan, $iid);
}
sub agg_ports { return agg_ports_ifstack(@_) }
1;
@@ -174,8 +176,6 @@ Subclass for Arista Networks EOS-based devices
=item SNMP::Info::MAU
=item SNMP::Info::LLDP
=back
=head2 Required MIBs
@@ -192,8 +192,6 @@ See L<SNMP::Info::Aggregate/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::MAU/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
=back
=head1 GLOBALS
@@ -204,7 +202,7 @@ These are methods that return scalar values from SNMP
=item $arista->vendor()
Returns 'Arista Networks, Inc.'
Returns 'arista'
=item $arista->model()
@@ -230,10 +228,6 @@ See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
=head2 Global Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -269,8 +263,17 @@ See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
=head1 SET METHODS
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
These are methods that provide SNMP set functionality for overridden methods
or provide a simpler interface to complex set operations. See
L<SNMP::Info/"SETTING DATA VIA SNMP"> for general information on set
operations.
=over
=item set_i_vlan()
=back
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Aruba
# $Id$
#
# Copyright (c) 2013 Eric Miller
# All rights reserved.
@@ -31,20 +30,19 @@
package SNMP::Info::Layer3::Aruba;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::LLDP;
@SNMP::Info::Layer3::Aruba::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Aruba::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Aruba::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
'WLSR-AP-MIB' => 'wlsrHideSSID',
'WLSX-IFEXT-MIB' => 'ifExtVlanName',
'WLSX-POE-MIB' => 'wlsxPseSlotPowerAvailable',
@@ -58,7 +56,6 @@ $VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'aruba_serial_old' => 'wlsxSwitchLicenseSerialNumber',
'aruba_serial_new' => 'wlsxSysExtLicenseSerialNumber',
'aruba_model' => 'wlsxModelName',
@@ -67,7 +64,6 @@ $VERSION = '3.65';
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
# WLSR-AP-MIB::wlsrConfigTable
'aruba_ap_ssidbcast' => 'wlsrHideSSID',
@@ -143,7 +139,6 @@ $VERSION = '3.65';
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::LLDP::MUNGE,
'aruba_ap_fqln' => \&munge_aruba_fqln,
'aruba_ap_type' => \&SNMP::Info::munge_e_type,
'aruba_card_type' => \&SNMP::Info::munge_e_type,
@@ -170,10 +165,9 @@ sub vendor {
$id = $1 if ( defined($id) && $id =~ /^\.1\.3\.6\.1\.4\.1\.(\d+)/ );
if ( defined($id) and exists( $oidmap{$id} ) ) {
return $oidmap{$id};
}
else {
return 'aruba';
return $oidmap{$id};
} else {
return 'aruba';
}
}
@@ -183,7 +177,7 @@ sub os_ver {
return unless defined $descr;
if ( $descr =~ m/Version\s+(\d+\.\d+\.\d+\.\d+)/ ) {
return $1;
return $1;
}
return;
@@ -1421,11 +1415,6 @@ This class emulates bridge functionality for the wireless switch. This enables
end station MAC addresses collection and correlation to the thin access point
the end station is using for communication.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $aruba = new SNMP::Info::Layer3::Aruba(...);
=head2 Inherited Classes
=over

View File

@@ -0,0 +1,340 @@
# SNMP::Info::Layer3::ArubaCX
#
# Copyright (c) 2021 Jeroen van Ingen
# 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::ArubaCX;
use strict;
use warnings;
use Exporter;
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use SNMP::Info::Layer3;
use SNMP::Info::IEEE802_Bridge;
@SNMP::Info::Layer3::ArubaCX::ISA = qw/
SNMP::Info::IEEE802dot3ad
SNMP::Info::Layer3
SNMP::Info::IEEE802_Bridge
Exporter
/;
@SNMP::Info::Layer3::ArubaCX::EXPORT_OK = qw/
agg_ports
/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::IEEE802dot3ad::MIBS,
%SNMP::Info::IEEE802_Bridge::MIBS,
'ARUBAWIRED-FAN-MIB' => 'arubaWiredFanName',
'ARUBAWIRED-VSF-MIB' => 'arubaWiredVsfTrapEnable',
'ARUBAWIRED-POWERSUPPLY-MIB' => 'arubaWiredPSUName',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::IEEE802_Bridge::GLOBALS,
'ps1_type' => 'arubaWiredPSUProductName.1.1',
'ps2_type' => 'arubaWiredPSUProductName.1.2',
'ps1_status' => 'arubaWiredPSUState.1.1',
'ps2_status' => 'arubaWiredPSUState.1.2',
'vsf_topology' => 'arubaWiredVsfTopology',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::IEEE802dot3ad::FUNCS,
%SNMP::Info::IEEE802_Bridge::FUNCS,
'fan_names' => 'arubaWiredFanName',
'fan_states' => 'arubaWiredFanState',
'psu_names' => 'arubaWiredPSUName',
'psu_types' => 'arubaWiredPSUProductName',
'psu_states' => 'arubaWiredPSUState',
'vsf_prod_names' => 'arubaWiredVsfMemberProductName',
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::IEEE802dot3ad::MUNGE,
%SNMP::Info::IEEE802_Bridge::MUNGE,
);
sub _at_pbb_one {
my $in = shift // {};
my $ret = {};
foreach my $key (keys %$in) {
if ($key =~ /^1\.(\d+)$/) {
$ret->{$1} = $in->{$key};
}
}
return $ret;
}
sub fan {
my $cx = shift;
my $names = $cx->fan_names() || {};
my $states = $cx->fan_states() || {};
my @ary = ();
foreach my $idx (sort keys %$names) {
my $name = $names->{$idx} // 'n/a';
my $state = $states->{$idx} // 'n/a';
push @ary, sprintf("%s: %s", $name, $state);
}
return join (', ', @ary);
}
sub vendor {
my $cx = shift;
my $mfg = $cx->entPhysicalMfgName(1) || {};
my $vendor = $mfg->{1} || "aruba";
return lc($vendor);
}
sub stack_info {
my $cx = shift;
my $vsf_topo = $cx->vsf_topology();
if (defined $vsf_topo and $vsf_topo ne 'standalone') {
my $member_prod_names = $cx->vsf_prod_names() || {};
my $num_members = scalar keys %$member_prod_names;
my $fullname = (values %$member_prod_names)[0];
my $modelname = '';
if ($fullname =~ /^(\S+)/) {
$modelname = $1;
}
return sprintf("%s (stack of %d)", $modelname, $num_members);
} else {
return;
}
}
sub model {
my $cx = shift;
my $model = $cx->entPhysicalModelName(1) || {};
my $id = $cx->id();
my $translated_id = &SNMP::translateObj($id) || $id;
$translated_id =~ s/arubaWiredSwitch//i;
return $cx->stack_info() || $model->{1} || $translated_id;
}
sub os {
return "arubaos-cx";
}
sub os_ver {
my $cx = shift;
my $ver_release = $cx->entPhysicalSoftwareRev(1) || {};
return $ver_release->{1};
}
sub agg_ports { return agg_ports_lag(@_) }
# Overrides for VLAN & forwarding table methods
sub v_name {
my $cx = shift;
return _at_pbb_one($cx->iqb_v_name()) || $cx->SUPER::v_name();
}
sub qb_i_vlan {
my $cx = shift;
return _at_pbb_one($cx->iqb_i_vlan()) || $cx->SUPER::qb_i_vlan();
}
sub i_vlan_type {
my $cx = shift;
return _at_pbb_one($cx->iqb_i_vlan_type()) || $cx->SUPER::qb_i_vlan_type();
}
sub qb_v_egress {
my $cx = shift;
return $cx->iqb_v_egress() || $cx->SUPER::qb_v_egress();
}
sub qb_cv_egress {
my $cx = shift;
return $cx->iqb_cv_egress() || $cx->SUPER::qb_cv_egress();
}
sub qb_v_untagged {
my $cx = shift;
return $cx->iqb_v_untagged() || $cx->SUPER::qb_v_untagged();
}
sub qb_cv_untagged {
my $cx = shift;
return $cx->iqb_cv_untagged() || $cx->SUPER::qb_cv_untagged();
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::ArubaCX - SNMP Interface to L3 Devices running ArubaOS-CX
=head1 AUTHORS
Jeroen van Ingen
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $cx = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $cx->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for devices running ArubaOS-CX
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=item SNMP::Info::IEEE802_Bridge
=item SNMP::Info::IEEE802dot3ad
=back
=head2 Required MIBs
=over
=item F<ARUBAWIRED-FAN-MIB>
=item F<ARUBAWIRED-VSF-MIB>
=item F<ARUBAWIRED-POWERSUPPLY-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3> for its own MIB requirements.
See L<SNMP::Info::IEEE802_Bridge> 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 $cx->stack_info()
If the device supports VSF stacking and is not in standalone mode, returns
a string describing the switch family and the number of stack members.
Example return value: '6300M (stack of 2)'. Will return undef when VSF is not
supported or when the device is VSF standalone.
=item $cx->model()
Returns L<stack_info()> if defined, otherwise will fall back to returning the
model from C<entPhysicalModelName.1>; if that's also not set, will use
C<sysObjectID> as a last resort, stripping 'arubaWiredSwitch' from the value.
=item $cx->vendor()
Returns (lowercased) value for C<entPhysicalMfgName.1>, or 'aruba'.
=item $cx->os()
Returns 'arubaos-cx'.
=item $cx->os_ver()
Returns the software version. Either C<entPhysicalSoftwareRev.1> or
extracted from C<sysDescr>.
=item $cx->fan()
Returns a string with status information for all fans listed in
C<ARUBAWIRED-FAN-MIB>.
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=head2 Globals imported from SNMP::Info::IEEE802_Bridge
See documentation in L<SNMP::Info::IEEE802_Bridge> 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.
=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.
=item C<v_name>
=item C<qb_i_vlan>
=item C<i_vlan_type>
=item C<qb_v_egress>
=item C<qb_cv_egress>
=item C<qb_v_untagged>
=item C<qb_cv_untagged>
All overridden to return the VLAN data structures that we'd expect for a
device that implements C<Q-BRIDGE-MIB>, but with data from
L<SNMP::Info::IEEE8021_Bridge> at PBB 1.
=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::IEEE802_Bridge
See documentation in L<SNMP::Info::IEEE802_Bridge> for details.
=head2 Table Methods imported from SNMP::Info::IEEE802dot3ad
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::BayRS
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,24 +30,21 @@
package SNMP::Info::Layer3::BayRS;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Layer3;
use SNMP::Info::Bridge;
@SNMP::Info::Layer3::BayRS::ISA = qw/SNMP::Info SNMP::Info::Layer3
SNMP::Info::Bridge Exporter/;
@SNMP::Info::Layer3::BayRS::ISA = qw/SNMP::Info::Layer3
Exporter/;
@SNMP::Info::Layer3::BayRS::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
%MODID_MAP %PROCID_MAP/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE, %MODEL_MAP,
%MODID_MAP, %PROCID_MAP);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS,
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::Bridge::MIBS,
'Wellfleet-HARDWARE-MIB' => 'wfHwBpIdOpt',
'Wellfleet-OSPF-MIB' => 'wfOspfRouterId',
'Wellfleet-DOT1QTAG-CONFIG-MIB' => 'wfDot1qTagCfgVlanName',
@@ -57,18 +53,14 @@ $VERSION = '3.65';
);
%GLOBALS = (
%SNMP::Info::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::Bridge::GLOBALS,
'bp_id' => 'wfHwBpIdOpt',
'bp_serial' => 'wfHwBpSerialNumber',
'ospf_rtr_id' => 'wfOspfRouterId',
);
%FUNCS = (
%SNMP::Info::FUNCS,
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::Bridge::FUNCS,
# From Wellfleet-CSMACD-MIB::wfCSMACDTable
'wf_csmacd_cct' => 'wfCSMACDCct',
@@ -107,9 +99,7 @@ $VERSION = '3.65';
);
%MUNGE = (
%SNMP::Info::MUNGE,
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::Bridge::MUNGE,
'wf_hw_boot' => \&munge_hw_rev,
'wf_hw_diag' => \&munge_hw_rev,
'wf_hw_mobo_ser' => \&munge_wf_serial,
@@ -541,7 +531,10 @@ sub model {
my $bayrs = shift;
my $bp_id = $bayrs->bp_id();
return defined $MODEL_MAP{$bp_id} ? $MODEL_MAP{$bp_id} : $bp_id;
if (defined $bp_id) {
return defined $MODEL_MAP{$bp_id} ? $MODEL_MAP{$bp_id} : $bp_id;
}
return;
}
sub vendor {
@@ -776,7 +769,7 @@ sub e_index {
my $bp_id = $bayrs->bp_id();
# Don't like polling all these columns to build the index, can't think of
# a better way right now. Luckly all this data will be cached for the
# a better way right now. Luckily all this data will be cached for the
# rest of the e_* methods
# Using mib leafs so we don't have to define everything in FUNCS
@@ -805,7 +798,7 @@ sub e_index {
my @slots = ( $wf_mb, $wf_db, $wf_bb, $wf_mod, $wf_mod1, $wf_mod2 );
my @mods = ( $wf_mm, $wf_dm );
# We're going to hack an index: Slot/Module/Postion
# We're going to hack an index: Slot/Module/Position
my %wf_e_index;
# Chassis on BN types
@@ -1406,19 +1399,10 @@ Eric Miller
Abstraction subclass for routers running Avaya/Nortel BayRS.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $bayrs = new SNMP::Info::Layer3::BayRS(...);
=head2 Inherited Classes
=over
=item SNMP::Info
=item SNMP::Info::Bridge
=item SNMP::Info::Layer3
=back
@@ -1441,10 +1425,6 @@ after determining a more specific class using the method above.
=head2 Inherited MIBs
See L<SNMP::Info/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Bridge/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
@@ -1500,14 +1480,6 @@ undefined.
=back
=head2 Globals imported from SNMP::Info
See documentation in L<SNMP::Info/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
@@ -1625,14 +1597,6 @@ is not contained in any other entity.
=back
=head2 Table Methods imported from SNMP::Info
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Bridge
See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.

View File

@@ -28,15 +28,16 @@ package SNMP::Info::Layer3::BlueCoatSG;
# POSSIBILITY OF SUCH DAMAGE.
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::BlueCoatSG::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::BlueCoatSG::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -55,7 +56,7 @@ $VERSION = '3.65';
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::Layer3::MUNGE, );
sub vendor {
return 'Blue Coat';
return 'bluecoat';
}
sub os {
@@ -65,7 +66,7 @@ sub os {
sub os_ver {
my $sg = shift;
my $os_string = $sg->sw_ver();
if ($os_string =~ /^Version:\s(\w+)\s([\d\.]+)/) {
if (defined ($os_string) && $os_string =~ /^Version:\s(\w+)\s([\d\.]+)/) {
return $2;
} else {
return ''; # perhaps we can try sysDescr or some other object...
@@ -92,7 +93,7 @@ Jeroen van Ingen
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 1
Version => 2
)
or die "Can't connect to DestHost.\n";
@@ -113,10 +114,10 @@ Subclass for Blue Coat SG Series proxy devices
=head2 Required MIBs
BLUECOAT-SG-PROXY-MIB
=over
=item F<BLUECOAT-SG-PROXY-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
@@ -133,7 +134,7 @@ These are methods that return scalar value from SNMP
=item $router->vendor()
Returns C<'Blue Coat'>
Returns C<'bluecoat'>
=item $router->os()

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::C3550
# $Id$
#
# Copyright (c) 2008-2009 Max Baker changes from version 0.8 and beyond.
# Copyright (c) 2004 Regents of the University of California
@@ -37,7 +36,7 @@ use Exporter;
use SNMP::Info::CiscoStack;
use SNMP::Info::Layer3::CiscoSwitch;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
# NOTE : Top-most items gets precedence for @ISA
@SNMP::Info::Layer3::C3550::ISA = qw/
@@ -47,7 +46,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.65';
$VERSION = '3.83';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
@@ -105,7 +104,7 @@ sub ports {
return $ports;
}
# Verions prior to 12.1(22)EA1a use the older CiscoStack method
# Versions prior to 12.1(22)EA1a use the older CiscoStack method
# Newer versions use the ETHERLIKE-MIB to report operational duplex.
# See http://www.ciscosystems.com/en/US/products/hw/switches/ps646/prod_release_note09186a00802a08ee.html
@@ -228,11 +227,6 @@ These devices run IOS but have some of the same characteristics as the
Catalyst WS-C family (5xxx,6xxx). For example, forwarding tables are held in
VLANs, and extended interface information is gleaned from F<CISCO-SWITCH-MIB>.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $c3550 = new SNMP::Info::Layer3::C3550(...);
=head2 Inherited Classes
=over
@@ -304,7 +298,7 @@ Software version 12.1(22)EA1a or greater returns duplex based upon the
result of $c3550->el_duplex(). Otherwise it uses the result of
the call to CiscoStack::i_duplex().
See L<SNMP::Info::Etherlike> for el_duplex() method and
See L<SNMP::Info::EtherLike> for el_duplex() method and
L<SNMP::Info::CiscoStack> for its i_duplex() method.
=item $c3550->i_duplex_admin()

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::C4000
# $Id$
#
# Copyright (c) 2008 Bill Fenner
# All rights reserved.
@@ -42,9 +41,9 @@ use SNMP::Info::MAU;
Exporter/;
@SNMP::Info::Layer3::C4000::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MAU::MIBS,
@@ -129,11 +128,6 @@ Bill Fenner
Abstraction subclass for Cisco Catalyst 4000 Layer 2/3 Switches.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $c4000 = new SNMP::Info::Layer3::C4000(...);
=head2 Inherited Classes
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::C6500
# $Id$
#
# Copyright (c) 2008-2009 Max Baker
# All rights reserved.
@@ -37,7 +36,7 @@ use SNMP::Info::CiscoStack;
use SNMP::Info::Layer3::CiscoSwitch;
use SNMP::Info::MAU;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
# NOTE : Top-most items gets precedence for @ISA
@SNMP::Info::Layer3::C6500::ISA = qw/
@@ -49,9 +48,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::C6500::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.65';
$VERSION = '3.83';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
@@ -188,7 +185,7 @@ sub set_i_duplex_admin {
# 2. Disable ifMauAutoNegAdminStatus
# If the second set is not done, this is not going to be
# working... Cisco Bug id CSCty97033.
# SXI is not working (up to at least relase SXI9).
# SXI is not working (up to at least release SXI9).
# SXJ is working at SXJ3 (not before).
return $c6500->mau_set_i_duplex_admin( $duplex, $iid );
@@ -226,7 +223,7 @@ sub set_i_speed_admin {
# 2. Disable ifMauAutoNegAdminStatus
# If the second set is not done, this is not going to be working...
# Cisco Bug id CSCty97033.
# SXI is not working (at least up to relase SXI9).
# SXI is not working (at least up to release SXI9).
# SXJ is working at SXJ3 (not before).
return $c6500->mau_set_i_speed_admin( $speed, $iid );
@@ -244,7 +241,8 @@ __END__
=head1 NAME
SNMP::Info::Layer3::C6500 - SNMP Interface to Cisco Catalyst 6500 Layer 2/3
Switches running IOS and/or CatOS
Switches running IOS and/or CatOS. Also Cisco Catalyst 2960, 2970, 3750 and
3850 series and blade switch CBS30x0 and CBS31x0 series running IOS.
=head1 AUTHOR
@@ -274,10 +272,9 @@ These devices run IOS but have some of the same characteristics as the
Catalyst WS-C family (5xxx). For example, forwarding tables are held in
VLANs, and extended interface information is gleaned from F<CISCO-SWITCH-MIB>.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $c6500 = new SNMP::Info::Layer3::C6500(...);
It also supports the following IOS only series switches: Cisco Catalyst 2960,
2970, 3750 and 3850 series. Also blade switches from the CBS30x0 and CBS31x0
series.
=head2 Inherited Classes
@@ -295,6 +292,8 @@ after determining a more specific class using the method above.
=over
=item F<CISCO-VIRTUAL-SWITCH-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::CiscoStack/"Required MIBs"> for its own MIB requirements.
@@ -314,7 +313,7 @@ These are methods that return scalar value from SNMP
=item $c6500->vendor()
Returns 'cisco'
Returns 'cisco'
=item $c6500->cvsSwitchMode()
@@ -359,7 +358,7 @@ Newer software versions return duplex based upon the result of
$c6500->el_duplex(). Otherwise it uses the result of the call to
CiscoStack::i_duplex().
See L<SNMP::Info::Etherlike> for el_duplex() method and
See L<SNMP::Info::EtherLike> for el_duplex() method and
L<SNMP::Info::CiscoStack> for its i_duplex() method.
=item $c6500->i_duplex_admin()
@@ -399,13 +398,11 @@ Crosses $c6500->p_port() with $c6500->p_speed() to utilize port C<ifIndex>.
See documentation in L<SNMP::Info::CiscoStack/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::Layer3::CiscoSwitch
See documentation in L<SNMP::Info::Layer3::CiscoSwitch/"TABLE METHODS"> for
details.
=head2 Table Methods imported from SNMP::Info::MAU
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::CheckPoint
# $Id$
#
# Copyright (c) 2008 Bill Fenner
# All rights reserved.
@@ -31,20 +30,19 @@
package SNMP::Info::Layer3::CheckPoint;
use strict;
use warnings;
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::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::CheckPoint::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
'CHECKPOINT-MIB' => 'fwProduct',
'UCD-SNMP-MIB' => 'versionTag',
'NET-SNMP-TC' => 'netSnmpAliasDomain',
@@ -54,15 +52,16 @@ $VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'netsnmp_vers' => 'versionTag',
'hrSystemUptime' => 'hrSystemUptime',
'serial_number' => 'svnApplianceSerialNumber',
'product_name' => 'svnApplianceProductName',
'manufacturer' => 'svnApplianceManufacturer',
'version' => 'svnVersion',
);
%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',
@@ -70,11 +69,16 @@ $VERSION = '3.65';
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
sub vendor {
return 'checkpoint';
my $ckp = shift;
if (defined $ckp->manufacturer) {
return lc $ckp->manufacturer;
} else {
return 'checkpoint';
}
}
sub model {
@@ -83,7 +87,9 @@ sub model {
my $model = &SNMP::translateObj($id);
if (defined $model) {
if (defined $ckp->product_name) {
return $ckp->product_name;
} elsif (defined $model) {
$model =~ s/^checkPoint//;
return $model;
} else {
@@ -97,41 +103,48 @@ sub os {
sub os_ver {
my $ckp = shift;
my $extend_table = $ckp->extend_output_table() || {};
if (defined $ckp->version) {
return $ckp->version;
} else {
my $extend_table = $ckp->extend_output_table() || {};
my $descr = $ckp->description();
my $vers = $ckp->netsnmp_vers();
my $os_ver = undef;
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;
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;
$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;
}
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;
if (defined $ckp->serial_number) {
return $ckp->serial_number;
} else {
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 '';
}
@@ -199,11 +212,13 @@ Ambroise Rosset
=head1 DESCRIPTION
Subclass for Generic Net-SNMP devices
Subclass for CheckPoint 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:
To correctly and completely work on IPSO based devices, 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
@@ -221,8 +236,12 @@ To correctly and completelly work, you should add the following line in the file
=over
=item F<CHECKPOINT-MIB>
=item F<UCD-SNMP-MIB>
=item F<NET-SNMP-EXTEND-MIB>
=item F<NET-SNMP-TC>
=item F<HOST-RESOURCES-MIB>
@@ -231,8 +250,6 @@ To correctly and completelly work, you should add the following line in the file
See L<SNMP::Info::Layer3> for its own MIB requirements.
See L<SNMP::Info::LLDP> for its own MIB requirements.
=back
=head1 GLOBALS
@@ -243,11 +260,12 @@ These are methods that return scalar value from SNMP
=item $ckp->vendor()
Returns 'checkpoint'.
Returns C<svnApplianceManufacturer> in lowercase, else 'checkpoint'.
=item $ckp->model()
Return the model type of the CheckPoint device (Based on the sysObjectOID translation).
Returns C<svnApplianceProductName>, else the model type based on the
sysObjectOID translation.
=item $ckp->os()
@@ -255,8 +273,8 @@ 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.
Returns C<svnVersion>, else the software version is extracted from
C<sysDescr>, along with the Net-SNMP version.
=item $ckp->uptime()
@@ -266,8 +284,9 @@ 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.
Returns <svnApplianceSerialNumber>, else the serial number of the
device if the SNMP server is configured as indicated previously.
Returns '' in other case.
=item $ckp->layers()
@@ -279,10 +298,6 @@ Return '01001100'.
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
@@ -304,12 +319,12 @@ Ignores loopback
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
If your device is not recognized by SNMP::Info as being in the class
L<SNMP::Info::Layer3::CheckPoint> you might need additional snmp
configuration on the CheckPoint device.
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

View File

@@ -0,0 +1,341 @@
# SNMP::Info::Layer3::Ciena - SNMP Interface to Ciena Devices
#
# Copyright (c) 2019 by The Netdisco Developer Team.
#
# 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::Ciena;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Ciena::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Ciena::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
'WWP-LEOS-SW-XGRADE-MIB' => 'wwpLeosBladeRunPackageVer',
'WWP-LEOS-BLADE-MIB' => 'wwpLeosBladeId',
'WWP-LEOS-CHASSIS-MIB' => 'wwpLeosChassisDeviceId',
'WWP-LEOS-FLOW-MIB' => 'wwpLeosFlowLearnType',
'WWP-LEOS-PORT-MIB' => 'wwpLeosEtherIngressPvid',
'WWP-LEOS-VLAN-TAG-MIB' => 'wwpLeosNumVlans',
'WWP-PRODUCTS-MIB' => 'wwpProductsMIB'
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
'ciena_serial' => 'wwpLeosSystemSerialNumber',
'mac' => 'dot1dBaseBridgeAddress'
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
'v_name' => 'wwpLeosVlanName',
'ps_type' => 'wwpLeosChassisPowerSupplyType',
'ps_status' => 'wwpLeosChassisPowerSupplyState',
'ps_name' => 'wwpLeosChassisPowerSupplyModuleLabel',
'fan_type' => 'wwpLeosChassisFanModuleType',
'fan_status' => 'wwpLeosChassisFanModuleStatus',
'fan_name' => 'wwpLeosChassisFanModuleNum'
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE
);
sub vendor {
return 'ciena';
}
sub os {
return 'saos';
}
sub os_ver {
my $ciena = shift;
my $version = $ciena->wwpLeosBladeRunPackageVer || {};
return values(%$version);
}
sub serial {
my $ciena = shift;
return $ciena->ciena_serial();
}
# Override lldp_if function to translate the port with bp_index
sub lldp_if {
my $ciena = shift;
my $lldp = $ciena->SUPER::lldp_if;
my $bp_index = $ciena->bp_index;
foreach my $iface (keys %$lldp) {
my $orig_iface = $lldp->{$iface};
$lldp->{$iface} = $bp_index->{$orig_iface};
}
return $lldp;
}
sub i_vlan {
my $ciena = shift;
my $i_vlan = {};
my $pvid = $ciena->wwpLeosEtherIngressPvid() || undef;
# bp_index needed to resolve correct port id
my $bp_index = $ciena->bp_index;
if (defined $pvid) {
foreach my $i (keys %$pvid) {
$i_vlan->{$bp_index->{$i}} = $pvid->{$i};
}
}
return $i_vlan;
}
sub i_vlan_membership {
my $ciena = shift;
my $i_vlan_membership = {};
my $vlans = $ciena->wwpLeosVlanMemberPortId();
# bp_index needed to resolve correct port id
my $bp_index = $ciena->bp_index;
foreach my $vlan (keys %$vlans) {
push @{$i_vlan_membership->{$bp_index->{$vlans->{$vlan}}}} , (split(/\./,$vlan))[0];
}
return $i_vlan_membership;
}
sub qb_fw_vlan {
my $ciena = shift;
my $qb_fw_vlan = {};
my $learn_entries = $ciena->wwpLeosFlowLearnType();
foreach my $entry (keys %$learn_entries) {
my @params = (split(/\./, $entry));
$qb_fw_vlan->{join('.', @params[1..6])} = $params[8];
}
return $qb_fw_vlan;
}
sub fan {
my $ciena = shift;
my $fan_status = $ciena->fan_status || {};
my $fan_type = $ciena->fan_type;
my $fan_name = $ciena->fan_name;
my @messages;
foreach my $fan (keys %$fan_status) {
if ($fan_status->{$fan} ne "ok") {
push @messages, sprintf("%s fan %s failed.", $fan_type->{$fan}, $fan_name->{$fan});
}
}
return sprintf("%s fans OK", scalar keys %$fan_status) if scalar @messages == 0;
return join(", ", @messages);
}
sub ps1_type {
my $ciena = shift;
my $ps_type = $ciena->ps_type;
return $ps_type->{'1'} if defined $ps_type->{'1'};
}
sub ps1_status {
my $ciena = shift;
my $ps_status = $ciena->ps_status;
return $ps_status->{'1'} if defined $ps_status->{'1'};
}
sub ps2_type {
my $ciena = shift;
my $ps_type = $ciena->ps_type;
return $ps_type->{'2'} if defined $ps_type->{'2'};
}
sub ps2_status {
my $ciena = shift;
my $ps_status = $ciena->ps_status;
return $ps_status->{'2'} if defined $ps_status->{'2'};
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::Ciena - SNMP Interface to Ciena Devices
=head1 AUTHORS
pyro3d
=head1 DESCRIPTION
Subclass for Ciena Devices running SAOS
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=back
=head2 Required MIBs
=over
=item F<WWP-LEOS-SW-XGRADE-MIB>
=item F<WWP-LEOS-BLADE-MIB>
=item F<WWP-LEOS-CHASSIS-MIB>
=item F<WWP-LEOS-FLOW-MIB>
=item F<WWP-LEOS-PORT-MIB>
=item F<WWP-LEOS-VLAN-TAG-MIB>
=item F<WWP-PRODUCTS-MIB>
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $ciena->vendor()
Returns 'ciena'
=item $ciena->os()
Returns 'saos'
=item $ciena->os_ver()
Returns the running software package extracted with C<wwpLeosBladeRunPackageVer>
=item $ciena->serial()
Returns serial number
(C<wwpLeosSystemSerialNumber>)
=item $ciena->mac()
Returns the MAC address used by this bridge when it must be referred
to in a unique fashion.
(C<dot1dBaseBridgeAddress>)
=item $huawei->fan()
Return the status of all fans. Returns a string indicating the number of fans 'OK' or
identification of any fan without a 'normal' operating status.
=item $ciena->ps1_status()
Return the status of the first power supply
=item $ciena->ps1_type()
Return the type of the first power supply
=item $ciena->ps2_status()
Return the status of the second power supply
=item $ciena->ps2_type()
Return the type of the second power supply
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
to a hash.
=over
=item $ciena->lldp_if()
Returns the mapping to the SNMP Interface Table. Overridden to translate to correct ethernet port with bp_index
=item $ciena->i_vlan()
Returns a mapping between C<ifIndex> and the PVID or default VLAN.
=item $ciena->i_vlan_membership()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
IDs.
=item $ciena->qb_fw_vlan()
Returns reference to hash of forwarding table entries VLAN ID, using C<wwpLeosFlowLearnType>
=item $ciena->ps_name()
Returns reference to hash of the power supplies and their names.
=item $ciena->ps_type()
Returns reference to hash of the power supplies and their type (ex. AC, DC, etc.)
=item $ciena->ps_status()
Returns reference to hash of the power supplies and their status.
=item $ciena->fan_name()
Returns reference to hash of fans and their names. In this case, it is simply a number.
=item $ciena->fan_type()
Returns reference to hash of fans and their types (ex. fixed, modular, etc.)
=item $ciena->fan_status)
Returns reference to hash of fans and their status
=back
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Cisco
# $Id$
#
# Copyright (c) 2008 Max Baker
# All rights reserved.
@@ -33,8 +32,8 @@ package SNMP::Info::Layer3::Cisco;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoBGP;
use SNMP::Info::CiscoVTP;
use SNMP::Info::LLDP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoRTT;
@@ -44,8 +43,10 @@ use SNMP::Info::CiscoPower;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Cisco::ISA = qw/SNMP::Info::CiscoVTP
SNMP::Info::LLDP SNMP::Info::CDP
@SNMP::Info::Layer3::Cisco::ISA = qw/
SNMP::Info::CiscoBGP
SNMP::Info::CiscoVTP
SNMP::Info::CDP
SNMP::Info::CiscoStats SNMP::Info::CiscoRTT
SNMP::Info::CiscoQOS SNMP::Info::CiscoConfig
SNMP::Info::CiscoPower SNMP::Info::CiscoStpExtensions
@@ -53,12 +54,13 @@ use SNMP::Info::Layer3;
Exporter/;
@SNMP::Info::Layer3::Cisco::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::CiscoBGP::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoPower::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
@@ -66,13 +68,13 @@ $VERSION = '3.65';
%SNMP::Info::CiscoRTT::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
'CISCO-EIGRP-MIB' => 'cEigrpAsRouterId',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::CiscoBGP::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
@@ -80,13 +82,13 @@ $VERSION = '3.65';
%SNMP::Info::CiscoRTT::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
'eigrp_id' => 'cEigrpAsRouterId',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoBGP::FUNCS,
%SNMP::Info::CiscoStpExtensions::FUNCS,
%SNMP::Info::CiscoPower::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
@@ -94,21 +96,24 @@ $VERSION = '3.65';
%SNMP::Info::CiscoRTT::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
# CISCO-EIGRP-MIB::cEigrpPeerTable
'c_eigrp_peer_types' => 'cEigrpPeerAddrType',
'c_eigrp_peers' => 'cEigrpPeerAddr',
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoPower::MUNGE, %SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE, %SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoStats::MUNGE, %SNMP::Info::CDP::MUNGE,
%SNMP::Info::LLDP::MUNGE, %SNMP::Info::CiscoVTP::MUNGE,
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::CiscoBGP::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoPower::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE,
%SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
);
sub i_vlan {
@@ -214,8 +219,6 @@ for other device specific L3 Cisco classes.
=item SNMP::Info::CiscoVTP
=item SNMP::Info::LLDP
=item SNMP::Info::CDP
=item SNMP::Info::CiscoStats
@@ -226,7 +229,7 @@ for other device specific L3 Cisco classes.
=item SNMP::Info::CiscoConfig
=item SNMP::Info::Power
=item SNMP::Info::CiscoPower
=item SNMP::Info::CiscoStpExtensions
@@ -244,8 +247,6 @@ for other device specific L3 Cisco classes.
See L<SNMP::Info::CiscoVTP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CDP/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::CiscoStats/"Required MIBs"> for its own MIB requirements.
@@ -285,10 +286,6 @@ Determined by checking C<vtpVersion>.
See documentation in L<SNMP::Info::CiscoVTP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"GLOBALS"> for details.
@@ -344,10 +341,6 @@ Returns a mapping between C<ifIndex> and the PVID or default VLAN.
See documentation in L<SNMP::Info::CiscoVTP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::CDP
See documentation in L<SNMP::Info::CDP/"TABLE METHODS"> for details.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::CiscoASA
# $Id$
#
# Copyright (c) 2013 Moe Kraus
# All rights reserved.
@@ -43,9 +42,9 @@ use SNMP::Info::Layer3;
Exporter/;
@SNMP::Info::Layer3::CiscoASA::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
@@ -113,7 +112,7 @@ Moe Kraus
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $cisco = new SNMP::Info(
my $asa = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly to SNMP::Session

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::CiscoFWSM
# $Id$
#
# Copyright (c) 2010 Brian De Wolf
# All rights reserved.
@@ -41,9 +40,9 @@ use SNMP::Info::Layer3;
Exporter/;
@SNMP::Info::Layer3::CiscoFWSM::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::CiscoSwitch
# $Id$
#
# Copyright (c) 2014 Eric Miller
# All rights reserved.
@@ -37,7 +36,7 @@ use SNMP::Info::CiscoAgg;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::Layer3::Cisco;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
@SNMP::Info::Layer3::CiscoSwitch::ISA = qw/
SNMP::Info::CiscoAgg
@@ -48,9 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::CiscoSwitch::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,
@@ -157,10 +154,6 @@ Returns 1. Use vlan indexing.
=back
=head2 Global Methods imported from SNMP::Info::CiscoAgg
See documentation in L<SNMP::Info::CiscoAgg/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::CiscoPortSecurity
See documentation in L<SNMP::Info::CiscoPortSecurity/"GLOBALS"> for details.

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Contivity
# $Id$
#
# Copyright (c) 2010 Eric Miller
# All rights reserved.
@@ -31,36 +30,32 @@
package SNMP::Info::Layer3::Contivity;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
use SNMP::Info::Layer3;
use SNMP::Info::Entity;
@SNMP::Info::Layer3::Contivity::ISA
= qw/SNMP::Info SNMP::Info::Layer3 SNMP::Info::Entity Exporter/;
= qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Contivity::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
%SNMP::Info::Layer3::MIBS,
);
%GLOBALS = (
%SNMP::Info::GLOBALS, %SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
);
%FUNCS = (
%SNMP::Info::FUNCS, %SNMP::Info::Layer3::FUNCS,
%SNMP::Info::Entity::FUNCS,
%SNMP::Info::Layer3::FUNCS,
);
%MUNGE = (
%SNMP::Info::MUNGE, %SNMP::Info::Layer3::MUNGE,
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::Layer3::MUNGE,
);
sub layers {
@@ -189,21 +184,12 @@ Eric Miller
Abstraction subclass for Avaya/Nortel VPN Routers (formerly Contivity
Extranet Switch).
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
my $contivity = new SNMP::Info::Layer3::Contivity(...);
=head2 Inherited Classes
=over
=item SNMP::Info
=item SNMP::Info::Layer3
=item SNMP::Info::Entity
=back
=head2 Required MIBs
@@ -212,12 +198,8 @@ after determining a more specific class using the method above.
=item Inherited Classes' MIBs
See L<SNMP::Info/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
See L<SNMP::Info::Entity/"Required MIBs"> for its own MIB requirements.
=back
=head1 GLOBALS
@@ -238,7 +220,7 @@ Returns the chassis name.
=item $contivity->os()
Returns C<'CES'>
Returns C<'contivity'>
=item $contivity->os_ver()
@@ -267,18 +249,10 @@ layers.
=back
=head2 Globals imported from SNMP::Info
See documentation in L<SNMP::Info/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::Entity
See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -299,16 +273,8 @@ Interface Name field. Skips loopback and tunnel interfaces.
=back
=head2 Table Methods imported from SNMP::Info
See documentation in L<SNMP::Info/"TABLE METHODS"> for details.
=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::Entity
See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
=cut

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Cumulus
# $Id$
#
# Copyright (c) 2018 Bill Fenner and Oliver Gorwits
# All rights reserved.
@@ -31,26 +30,24 @@
package SNMP::Info::Layer3::Cumulus;
use strict;
use warnings;
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/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::IEEE802dot3ad::MIBS,
'UCD-SNMP-MIB' => 'versionTag',
'NET-SNMP-TC' => 'netSnmpAliasDomain',
@@ -59,7 +56,6 @@ $VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'netsnmp_vers' => 'versionTag',
'hrSystemUptime' => 'hrSystemUptime',
'chassis' => 'entPhysicalDescr.1',
@@ -67,17 +63,15 @@ $VERSION = '3.65';
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::IEEE802dot3ad::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::IEEE802dot3ad::MUNGE,
);
sub vendor { return 'Cumulus Networks' }
sub vendor { return 'cumulus networks' }
sub os { return 'cumulus' }
@@ -86,7 +80,8 @@ sub os_ver {
my $descr = $netsnmp->description();
# STRING: "Cumulus Linux version 3.5.1 running on innotek GmbH VirtualBox"
return $1 if ( $descr =~ /^Cumulus Linux.+(\d+\.\d+\.\d+)\s/ );
# STRING: "Cumulus-Linux 4.1.1 (Linux Kernel 4.19.94-1+cl4u3)"
return $1 if ( defined ($descr) && $descr =~ /^Cumulus(?: |-)Linux.+(\d+\.\d+\.\d+)\s/ );
return;
}
@@ -95,7 +90,9 @@ sub model {
my $chassis = $netsnmp->chassis();
# STRING: "Cumulus Networks VX Chassis"
return $1 if ( $chassis =~ /^Cumulus Networks\s+(.+)/ );
if (defined ($chassis)) {
return $1 if ($chassis =~ /^Cumulus Networks\s+(.+)/);
}
return $netsnmp->SUPER::model();
}
@@ -116,7 +113,7 @@ sub uptime {
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name. If all else fails,
# concatentate ifDesc and ifIndex.
# concatenate ifDesc and ifIndex.
# (code from SNMP/Info/Layer2/Netgear.pm)
sub interfaces {
my $netsnmp = shift;
@@ -218,8 +215,6 @@ Subclass for Cumulus Networks devices
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
@@ -232,7 +227,7 @@ These are methods that return scalar value from SNMP
=item $cumulus->vendor()
Returns 'Cumulus Networks'.
Returns 'cumulus networks'.
=item $cumulus->os()
@@ -258,10 +253,6 @@ Returns the chassis type.
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.
@@ -295,10 +286,6 @@ ifIndex of the corresponding master ports.
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.

View File

@@ -29,20 +29,19 @@
package SNMP::Info::Layer3::DLink;
use strict;
use warnings;
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::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::DLink::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
'DLINK-ID-REC-MIB' => 'dlink',
'SWPRIMGMT-DES3200-MIB' => 'dlink-des3200SeriesProd',
'SWPRIMGMT-DES30XXP-MIB' => 'dlink-des30xxproductProd',
@@ -54,17 +53,14 @@ $VERSION = '3.65';
'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',
# Replaced with OID since these MIBs are no longer in the netdisco-mibs
@@ -76,7 +72,19 @@ $VERSION = '3.65';
# replaced similarly and use the library getter methods
);
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, %SNMP::Info::LLDP::MUNGE, );
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
sub layers {
my $dlink = shift;
my $layers = $dlink->SUPER::layers();
if ($layers) {
substr $layers, 5, 1, "1";
substr $layers, 6, 1, "1";
}
return $layers;
}
sub model {
my $dlink=shift;
@@ -91,6 +99,16 @@ sub model {
}
}
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name.
sub interfaces {
my $dlink = shift;
my $partial = shift;
my $interfaces = $dlink->orig_i_name($partial);
return $interfaces;
}
sub vendor {
return 'dlink';
@@ -187,7 +205,33 @@ Subclass for DLink devices.
=item SNMP::Info::Layer3
=item SNMP::Info::LLDP
=back
=head2 Required MIBs
=over
=item F<DLINK-ID-REC-MIB>
=item F<SWPRIMGMT-DES3200-MIB>
=item F<SWPRIMGMT-DES30XXP-MIB>
=item F<SWPRIMGMT-DES1228ME-MIB>
=item F<SWDES3528-52PRIMGMT-MIB>
=item F<DES-1210-28-AX>
=item F<DES-1210-10MEbx>
=item F<DES-1210-26MEbx>
=item F<DES-1210-52-BX>
=item F<DES-1210-52-CX>
=item F<DGS-1210-24-AX>
=back
@@ -195,14 +239,16 @@ Subclass for DLink devices.
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->layers()
Makes sure to always report layer 2 and 3.
=item $dlink->model()
Returns the ID or else description.
@@ -233,14 +279,21 @@ Returns the STP root port.
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
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 $dlink->interfaces();
Returns the map between SNMP Interface Identifier (iid) and C<ifName>.
=back
=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

@@ -1,5 +1,4 @@
# SNMP::Info::Layer3::Dell - SNMP Interface to Dell devices
# $Id$
#
# Copyright (c) 2008 Eric Miller
# All rights reserved.
@@ -31,20 +30,19 @@
package SNMP::Info::Layer3::Dell;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::LLDP;
@SNMP::Info::Layer3::Dell::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Dell::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Dell::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.65';
$VERSION = '3.83';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
'RADLAN-COPY-MIB' => 'rlCopySourceLocation',
'RADLAN-Physicaldescription-MIB' => 'rlPhdStackReorder',
'RADLAN-rlInterfaces' => 'rlIfNumOfLoopbackPorts',
@@ -55,14 +53,12 @@ $VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'dell_os_ver' => 'productIdentificationVersion',
'dell_id_name' => 'productIdentificationDisplayName',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
# RADLAN-rlInterfaces:swIfTable
'dell_duplex_admin' => 'swIfDuplexAdminMode',
@@ -108,7 +104,7 @@ $VERSION = '3.65';
'dell_fan_desc' => 'rlEnvMonFanStatusDescr',
);
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, %SNMP::Info::LLDP::MUNGE, );
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
# Method OverRides
@@ -336,7 +332,7 @@ Eric Miller
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 1
Version => 2
)
or die "Can't connect to DestHost.\n";
@@ -367,14 +363,18 @@ my $dell = new SNMP::Info::Layer3::Dell(...);
=over
=item F<DELL-REF-MIB>
=item F<Dell-Vendor-MIB>
=item F<RADLAN-COPY-MIB>
=item F<RADLAN-HWENVIROMENT>
=item F<RADLAN-Physicaldescription-MIB>
=item F<RADLAN-rlInterfaces>
=item F<RADLAN-HWENVIROMENT>
=item Inherited Classes' MIBs
See classes listed above for their required MIBs.
@@ -448,10 +448,6 @@ otherwise uses the Layer3 serial method.
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::LLDP
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -524,8 +520,4 @@ Returns nothing to work around incorrect indexing of C<dot1qTpFdbTable>
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

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