Compare commits

...

174 Commits
3.64 ... 135

Author SHA1 Message Date
Andrey Pazychev
db3a764d49 Dlink bugfix with syntax ($$ instead $) 2020-05-22 21:31:51 +03:00
Andrey Pazychev
62c7719186 Dlink RC.
A hard different SNMP behavoiur for Dlink models. Sometimes return HASH, sometimes SCALAR and after that we got 'NOSUCHOBJET' or undef or normal value.
Refactored. need to mass test for all Dlink.
2020-05-22 14:53:04 +03:00
Andrey Pazychev
daee793df6 NSC renamed vendor code 2020-05-21 04:55:38 +03:00
Andrey Pazychev
36e8f9be61 Raisecom bugfix 2020-05-21 04:41:26 +03:00
Andrey Pazychev
91ce23ce4a Fix vendors accoding to http://oidref.com/
- Lucent
- Deliberant
- Raisecom
- Rotek
2020-05-21 03:55:54 +03:00
Andrey Pazychev
535379b3a1 Tomsk. Fix Dlink model.
Something fail -(. Undefined OID for DLink return NOSUCHOBJECT instead undef..
2020-05-21 02:23:58 +03:00
Andrey Pazychev
b9313c2ec0 Add vendor NSC (from China to Siberia)..
Kemerovo RC.
2020-05-21 01:26:11 +03:00
Andrey Pazychev
a46f27792b Paradyne bugfix regexp 2020-05-20 22:59:07 +03:00
Andrey Pazychev
43ca61299e Rotek. serial sub for calling from Raisecom. 2020-05-20 22:48:43 +03:00
Andrey Pazychev
a3f0109f06 Add vendor Paradyne 2020-05-20 22:47:58 +03:00
Andrey Pazychev
159ab659cb Raisecom. cosmetic 2020-05-20 22:47:37 +03:00
Andrey Pazychev
82032a10e1 Raisecom RC. more wide regexp HW 2020-05-20 22:23:27 +03:00
Andrey Pazychev
84c870f911 Raisecom. HW regexp bugfix 2020-05-20 22:18:57 +03:00
Andrey Pazychev
2b1b53e539 Raisecom RC. Next gen perl coding style. 2020-05-20 22:01:40 +03:00
Andrey Pazychev
b019f3fa06 WIP. Raisecom crap splitting 2020-05-20 21:08:14 +03:00
Andrey Pazychev
4cb3083993 Qtech. China could use different OID prefix for same one ObjectID. Fixed. 2020-05-20 17:49:53 +03:00
Andrey Pazychev
bed7dac4ac Eltex added one more model suport 2020-05-20 17:30:13 +03:00
Andrey Pazychev
316a799fdb Dlink. Added HW to model info 2020-05-20 17:12:25 +03:00
Andrey Pazychev
f2cbd163c9 WIP.
Initial added vendor ECI. os version, serial, hw/fw not found.
2020-05-20 17:03:06 +03:00
Andrey Pazychev
e756091565 WIP. Qtech - more wide model mask for group enterprises.27514.1.3* 2020-05-20 16:53:05 +03:00
Andrey Pazychev
02f667a05b Qtech. Added enterprises.27514.1.3.13 2020-05-20 16:46:49 +03:00
Andrey Pazychev
14e9da0fb7 Qtech vendor refactored. 2020-05-20 05:43:58 +03:00
Andrey Pazychev
08a632c053 WIP.
Added Digital China vendor
Added ASAM 73xx model for Lucent
2020-05-19 21:27:08 +03:00
Andrey Pazychev
fbf0bbe880 WIP.
Accton, Proscend and Nag vendors initial suppport
2020-05-19 20:33:28 +03:00
Andrey Pazychev
4ce3fd8fb6 Increase version because Rotek 2020-05-18 02:58:05 +03:00
Andrey Pazychev
cae9878c60 Rotek added.
Rotek and Raisercom used the same vendor id -(
2020-05-18 02:57:20 +03:00
Andrey Pazychev
cda629bf39 Rotek vendor UCN 2020-05-18 02:09:19 +03:00
Andrey Pazychev
396eb87b57 Raisecom. Crap with OS version same. Different style inside one ObjectID. 2020-05-18 01:42:35 +03:00
Andrey Pazychev
db06c8e75b Raisecom. Crap with HW version different style inside one object ID 2020-05-18 00:58:45 +03:00
Andrey Pazychev
3fd9f1deda Raisecom 886 RC1 2020-05-18 00:34:24 +03:00
Andrey Pazychev
b0e9185cca WIP. Raisecom added 886.6.140 and 191 2020-05-18 00:21:57 +03:00
Andrey Pazychev
b73f0d8d57 WIP. Telindus 2020-05-17 23:43:02 +03:00
Andrey Pazychev
5655486b80 WIP. Reaisecom 2020-05-17 23:31:22 +03:00
Andrey Pazychev
cc935a580d WIP.
Added raisecom 41752
2020-05-17 23:12:19 +03:00
Andrey Pazychev
40ff825a3a Eltex done. I hope... 2020-05-17 20:48:30 +03:00
Andrey Pazychev
4bb40483e6 WIP. Eltex crap 2020-05-17 20:38:53 +03:00
Andrey Pazychev
8c98750541 WIP. Eltex hw crap 2020-05-17 20:32:21 +03:00
Andrey Pazychev
57aa73f613 Eltex hw version crap -( 2020-05-17 19:02:34 +03:00
Andrey Pazychev
fe3bc6afe0 Fix Eltex two verdor numer DSLAM MXA64 2020-05-17 17:07:34 +03:00
Andrey Pazychev
10e0a53b3c Added Eltex DSLAM 35265.1.28 2020-05-17 16:53:28 +03:00
Andrey Pazychev
98d2005bae Eltex fix undef model 2020-05-17 16:17:47 +03:00
Andrey Pazychev
272b56d625 Fix Eltex a lot model.
Add Telindus
Add serial to Zixel
2020-05-17 15:18:08 +03:00
Andrey Pazychev
aa44871f83 Zyxel basic support 2020-05-16 23:22:02 +03:00
Andrey Pazychev
27930d5e50 Add support Raisecom 2020-05-09 19:15:00 +03:00
Andrey Pazychev
a0d3cdcf9f Eltex run also Layer 2 2020-05-09 13:13:08 +03:00
Andrey Pazychev
8317923f28 Eltex support.
Added one Lucend OID
2020-05-09 05:04:39 +03:00
Andrey Pazychev
fc71e2d88d Small fixes. OIDs moved to MIBs 2020-05-09 05:03:55 +03:00
Andrey Pazychev
f96d0df182 Qtech and Carelink support 2020-05-08 20:47:41 +03:00
Andrey Pazychev
1dc4baf1d9 version 135 2020-05-08 20:47:13 +03: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
Oliver Gorwits
2e2c6958d6 release 3.65 2019-02-24 15:02:38 +00:00
nick n
4ba91f9df8 update oneaccess (#310)
* update oneaccess, regretfully it seems oneos version6 is a step back when it comes to snmp support.
changes:
 * start using oneaccess mibs, not much useable data there yet however
 * return the device model
 * show os version for version 6 too. not many elegeant ways to handle all the version syntaxes used,
     so just dump what resembles a version string & be done with it
 * updated documentation

tested on:
 one420 - os V5.2R1C12
 one521 - os 6.1.rc1patch06
 one521 - os 6.1.3

some comments in the code as what works & what doesn't.

* typo

* bump required netdisco-mibs version to 4.014 (not released yet) but needed for oneaccess mibs. might as well fail at the start of the build instead of the end

* 2 tests fixed for oneaccess, 1 more to go

* last test fixed

* a few more changes

but mostly need to have a file change so i can trigger a travis build :)
2019-02-24 14:57:21 +00:00
nick n
3b604723bd typo & 2 variables that were not defined with my (#309) 2019-02-23 22:30:04 +01:00
LBegnaud
a2877729ff Update VyOS Official enterprise OID (#308)
VyOS project has their own OID as of the release of 1.2.0: https://wiki.vyos.net/wiki/1.2.0/release_notes#SNMP_sysDescr_and_OID
2019-02-22 09:17:54 +01:00
nick n
605ae68f6b mention info::snmp::cdp req
req mibs would also be nice.
2019-02-10 06:58:36 +01:00
nick n
ef8afd8b65 mau means Medium Attachment Unit
mau means "Medium Attachment Unit"
2019-02-09 21:21:19 +01:00
nick n
9365c67a6b mau means something else
it means "Medium Attachment Unit", not "Media Access Unit" according to rfc 2668
2019-02-09 21:13:02 +01:00
nick n
8e3f10673e fix cisco aggregated port slave interface mapping
netdisco/snmp-info#295 for issue

tested on c3750x (stacked & single) & nexus 9332.

c3750x didn't show any slave interfaces for it's port channels.
nexus reported data all over the place, even making port channels slave interfaces of other port channels.

with these changes both devices report correct and complete slave interfaces:
tested on c3750x with lacp channels
tested on nexus 9332pq with lacp channels (vpc),  static aggregation, vpc peer link, fex uplink.

no regressions detected after a month of testing (we also have a bunch of ciscosb & other ios devices running , but none of those have port channels).

updated documentation, hope it makes sense.

things that didn't work before and still don't:
* mapping vpc portchannels members on both vpc cluster switches (sounds like fun)
* cisco ucs fabric interconnects (nexus 6248 on 3.2.3d) don't show port channel members, but didn't do so before either.

munge_port_ifindex() can most likely be written more elegant, but that's something for a real perl monk.
2019-02-02 00:59:57 +01:00
nick n
cc95604bd9 now lenovo devices
blade networks -> ibm -> lenovo
2019-02-01 18:50:44 +01:00
nick n
6799312ad0 move Kentrox a few lines lower
since it's sorted alphabetically.

since i was here also mention ibmgbtor is now owned by lenovo.

and then made the layout a bit more consistent
2019-02-01 18:46:07 +01:00
nick n
8dee0fcd12 Merge pull request #299 from inphobia/nn_ws_cleanup
massive amount of trailing whitespace cleanup

i ran this for 2 weeks, did not notice any regressions.

during those 2 weeks i went over all the diffs on 3 different occasions to make sure i did not delete a comma, quote or whatever.

ran the complete test set as well, no errors there either.

now it's finally commit time then i guess, so when the next module gets based on an existing one we have a clean layout.
2019-01-31 17:42:25 +01:00
nick n
dca78048c7 clarify what the oid references 2019-01-31 02:20:29 +01:00
nick n
014d32cec1 device info would be handy too
for snmp::info device information always comes in handy. add it to the issue template.

basic info which helps: vendor, model & os plus an snmpwalk of the system leaf of snmpv2-mib.
2019-01-31 02:14:37 +01:00
nick n
477d845c39 guess should add that name here too
or perhaps it will get regenerated with the nxt release process and be added then.
2019-01-31 00:55:31 +01:00
nick n
6e5155ffbf just adding 1 more name in here
that name being mine.
2019-01-31 00:51:12 +01:00
nick n
39679992f0 this ain't vyatta
readme & info.pm refers to this as
"Subclass for DLink devices."

so do the same here.
2019-01-31 00:32:44 +01:00
inphobia
4dee43a863 Merge branch 'master' of https://github.com/netdisco/snmp-info into nn_ws_cleanup 2019-01-19 18:42:12 +01:00
inphobia
5c599bd3d2 mention required mibs 2019-01-19 14:43:25 +01:00
nick n
be0dbf6953 typo
_load_attr, not _load_atrr
2019-01-19 13:41:49 +01:00
inphobia
a59572b392 pod cleanup 2019-01-19 05:55:28 +01:00
inphobia
19cdb388e5 Changes whitespace cleanup 2019-01-19 05:38:14 +01:00
inphobia
e68fa13289 contrib whitespace cleanup 2019-01-19 05:37:23 +01:00
inphobia
d938a2c0d6 almost done whitespace cleanup 2019-01-19 05:33:09 +01:00
inphobia
16285ce2eb almost done whitespace cleanup 2019-01-19 05:30:20 +01:00
inphobia
e356189010 almost done whitespace cleanup 2019-01-19 05:24:32 +01:00
inphobia
4230a07c94 final whitespace cleanup 2019-01-19 05:19:41 +01:00
inphobia
f2b0f67b5f l7 whitespace cleanup 2019-01-19 05:18:41 +01:00
inphobia
a8766a0b0b even more whitespace cleanup 2019-01-19 05:17:04 +01:00
inphobia
b78b1b4860 even more whitespace cleanup 2019-01-19 05:13:01 +01:00
inphobia
6118b0d012 and more whitespace cleanup 2019-01-19 05:07:12 +01:00
inphobia
ca48defd24 and more whitespace cleanup 2019-01-19 05:02:41 +01:00
inphobia
93787c4c45 more whitespace cleanup 2019-01-19 04:55:14 +01:00
inphobia
5562144209 whitespace cleanup 2019-01-19 04:43:18 +01:00
nick n
b28f81adbb Small improvements in consistency for code and manual (#298)
usage of munge_prio_mac/port was mixed up.
make manual a bit more consistent while here.
2019-01-15 10:43:47 +01:00
Jeroen van Ingen
64846ed2de Add model mappings for HP JL557A and JL558A 2019-01-02 15:13:31 +01:00
224 changed files with 7750 additions and 3167 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 -->
@@ -25,6 +40,16 @@
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Your Device
<!--- Some basic info about your device will help out pinpointing the issue more easily -->
<!--- also, snmpwalk output of the following oid helps out a lot: .1.3.6.1.2.1.1 -->
<!--- this is the system leaf of the snmp mib-2 -->
* Vendor:
* Device Model:
* Operating System Version:
* Snmpwalk output of .1.3.6.1.2.1.1:
## Your Environment
<!--- Include as many relevant details about the environment you experienced the bug in -->
* SNMP::Info version used:

1
.gitignore vendored
View File

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

View File

@@ -1,4 +1,9 @@
language: perl
perl:
- "5.30"
- "5.10"
os: linux
dist: trusty
addons:
apt:
packages:
@@ -12,8 +17,8 @@ before_install:
- mkdir ~/netdisco-mibs
- cd ~/netdisco-mibs
install:
- curl -sL https://github.com/netdisco/netdisco-mibs/releases/download/4.010/netdisco-mibs.tar.gz | tar --strip-components=1 -zxf -
- cpanm --quiet --notest PkgConfig Test::CChecker Alien::zlib::Static Alien::OpenSSL::Static Alien::SNMP::MAXTC
- curl -sL https://api.github.com/repos/netdisco/netdisco-mibs/releases/latest | jq -r '.tarball_url' | xargs -n1 curl -sL | tar --strip-components=1 -zxf -
- cpanm --quiet --notest PkgConfig Test::CChecker Alien::zlib::Static Alien::OpenSSL::Static Alien::SNMP
before_script:
- 'cd ${TRAVIS_BUILD_DIR}'
script:
@@ -23,12 +28,12 @@ script:
./Build test --test_files t/ --test_files xt/
notifications:
irc:
on_success: always
on_failure: always
on_success: change
on_failure: change
channels:
- 'chat.freenode.net#netdisco'
email:
on_success: always
on_failure: always
recipients:
- 'snmp-info-cvs@lists.sourceforge.net'
# email:
# on_success: always
# on_failure: always
# recipients:
# - 'snmp-info-cvs@lists.sourceforge.net'

View File

@@ -37,6 +37,7 @@ Module::Build->new(
'Class::Inspector' => '0',
'NetSNMP::default_store' => '0',
'Module::Find' => '0',
'Hook::LexWrap' => '0',
},
# script_files => [
# ],

105
Changes
View File

@@ -1,3 +1,94 @@
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]
* #296 expand CiscoAgg to also include LACP (inphobia)
* #308 update VyOS enterprise OID
* #310 bring layer3::oneaccess up to date for oneos6. (inphobia)
* Add two more HP 2930F models (JeroenvIS)
[BUG FIXES]
* #295 make CiscoAgg return ifindex instead of bp_index (inphobia)
* more documentation fixes + whitespace cleanup in all files
Version 3.64 (2018-12-30)
[NEW FEATURES]
@@ -31,7 +122,7 @@ Version 3.62 (2018-10-29)
* #275 Document peth_port_ifindex for Junipers
* #274 Add peth_port_ifindex override for Junipers
* #270 Add support for additional Mikrotik models
* Add HP 3810M, 2930M, 2930F and 2540 series switches
* Add HP 3810M, 2930M, 2930F and 2540 series switches
[BUG FIXES]
@@ -80,7 +171,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)
@@ -121,7 +212,7 @@ Version 3.56 (2018-04-22)
[BUG FIXES]
* Fix table methods when defined as an OID which will not completely
translate to a fully qualified textual leaf
translate to a fully qualified textual leaf
Version 3.55 (2018-04-19)
@@ -154,7 +245,7 @@ Version 3.55 (2018-04-19)
ports() of L3::C3550
* Correct validation and IID/key used in mau_set_i_speed_admin() and
mau_set_i_duplex_admin() of MAU
* Correct typo in MIB leaf names in L3::Aironet
* Correct typo in MIB leaf names in L3::Aironet
* Don't use MIB leafs that are not-accessible according to MIB
NOTE: Fixing this logic now results in methods on MIB leafs specified as
not-accessible failing validation in _validate_autoload_method()
@@ -217,7 +308,7 @@ version 3.50 (2018-03-14)
* #226 Avaya VSP devices - no ifAlias
* #227 Remove bogus can() check in _set()
* Fix SNMP::Info::IEEE802dot3ad when more than 1 LAG
* Fix SNMP::Info::IEEE802dot3ad when more than 1 LAG
version 3.49 (2018-03-03)
@@ -284,13 +375,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

16
LICENSE
View File

@@ -6,7 +6,7 @@ Original Code
Copyright (c) 2002,2003 Regents of the University of California
All rights reserved.
Redistribution and use in source and binary forms, with or without
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,
@@ -14,17 +14,17 @@ modification, are permitted provided that the following conditions are met:
* 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
* 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
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;
(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
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.

View File

@@ -26,6 +26,8 @@ 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
@@ -82,6 +84,7 @@ 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 +107,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,6 +120,8 @@ 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/Steelhead.pm
lib/SNMP/Info/Layer3/Sun.pm
@@ -199,6 +205,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 +255,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,6 +268,8 @@ 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

View File

@@ -58,7 +58,7 @@
# Avoid Devel::Cover and Devel::CoverX::Covered files.
\bcover_db\b
\bcovered\b
# Avoid MYMETA files
^MYMETA\.
@@ -68,3 +68,6 @@ README.md
# Avoid Komodo project file
\.komodoproject$
# ignore intellij
\B\.idea

285
META.json
View File

@@ -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,543 @@
"provides" : {
"SNMP::Info" : {
"file" : "lib/SNMP/Info.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::AMAP" : {
"file" : "lib/SNMP/Info/AMAP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::AdslLine" : {
"file" : "lib/SNMP/Info/AdslLine.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Aggregate" : {
"file" : "lib/SNMP/Info/Aggregate.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Airespace" : {
"file" : "lib/SNMP/Info/Airespace.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Bridge" : {
"file" : "lib/SNMP/Info/Bridge.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CDP" : {
"file" : "lib/SNMP/Info/CDP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoAgg" : {
"file" : "lib/SNMP/Info/CiscoAgg.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoConfig" : {
"file" : "lib/SNMP/Info/CiscoConfig.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoPortSecurity" : {
"file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoPower" : {
"file" : "lib/SNMP/Info/CiscoPower.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoQOS" : {
"file" : "lib/SNMP/Info/CiscoQOS.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoRTT" : {
"file" : "lib/SNMP/Info/CiscoRTT.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoStack" : {
"file" : "lib/SNMP/Info/CiscoStack.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoStats" : {
"file" : "lib/SNMP/Info/CiscoStats.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoStpExtensions" : {
"file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::CiscoVTP" : {
"file" : "lib/SNMP/Info/CiscoVTP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::DocsisCM" : {
"file" : "lib/SNMP/Info/DocsisCM.pm",
"version" : "3.70"
},
"SNMP::Info::DocsisHE" : {
"file" : "lib/SNMP/Info/DocsisHE.pm",
"version" : "3.70"
},
"SNMP::Info::EDP" : {
"file" : "lib/SNMP/Info/EDP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Entity" : {
"file" : "lib/SNMP/Info/Entity.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::EtherLike" : {
"file" : "lib/SNMP/Info/EtherLike.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::FDP" : {
"file" : "lib/SNMP/Info/FDP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::IEEE802dot11" : {
"file" : "lib/SNMP/Info/IEEE802dot11.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::IEEE802dot3ad" : {
"file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::IPv6" : {
"file" : "lib/SNMP/Info/IPv6.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::LLDP" : {
"file" : "lib/SNMP/Info/LLDP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer1" : {
"file" : "lib/SNMP/Info/Layer1.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer1::Allied" : {
"file" : "lib/SNMP/Info/Layer1/Allied.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer1::Asante" : {
"file" : "lib/SNMP/Info/Layer1/Asante.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer1::Bayhub" : {
"file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer1::Cyclades" : {
"file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer1::S3000" : {
"file" : "lib/SNMP/Info/Layer1/S3000.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2" : {
"file" : "lib/SNMP/Info/Layer2.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::3Com" : {
"file" : "lib/SNMP/Info/Layer2/3Com.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Adtran" : {
"file" : "lib/SNMP/Info/Layer2/Adtran.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Aerohive" : {
"file" : "lib/SNMP/Info/Layer2/Aerohive.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Airespace" : {
"file" : "lib/SNMP/Info/Layer2/Airespace.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Aironet" : {
"file" : "lib/SNMP/Info/Layer2/Aironet.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Allied" : {
"file" : "lib/SNMP/Info/Layer2/Allied.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Atmedia" : {
"file" : "lib/SNMP/Info/Layer2/Atmedia.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Baystack" : {
"file" : "lib/SNMP/Info/Layer2/Baystack.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::C1900" : {
"file" : "lib/SNMP/Info/Layer2/C1900.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::C2900" : {
"file" : "lib/SNMP/Info/Layer2/C2900.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Catalyst" : {
"file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Centillion" : {
"file" : "lib/SNMP/Info/Layer2/Centillion.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Cisco" : {
"file" : "lib/SNMP/Info/Layer2/Cisco.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::CiscoSB" : {
"file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Exinda" : {
"file" : "lib/SNMP/Info/Layer2/Exinda.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::HP" : {
"file" : "lib/SNMP/Info/Layer2/HP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::HP4000" : {
"file" : "lib/SNMP/Info/Layer2/HP4000.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::HPVC" : {
"file" : "lib/SNMP/Info/Layer2/HPVC.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Kentrox" : {
"file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::N2270" : {
"file" : "lib/SNMP/Info/Layer2/N2270.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::NAP222x" : {
"file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::NWSS2300" : {
"file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Netgear" : {
"file" : "lib/SNMP/Info/Layer2/Netgear.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Nexans" : {
"file" : "lib/SNMP/Info/Layer2/Nexans.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Orinoco" : {
"file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Sixnet" : {
"file" : "lib/SNMP/Info/Layer2/Sixnet.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Trapeze" : {
"file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::Ubiquiti" : {
"file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer2::ZyXEL_DSLAM" : {
"file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3" : {
"file" : "lib/SNMP/Info/Layer3.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Aironet" : {
"file" : "lib/SNMP/Info/Layer3/Aironet.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::AlcatelLucent" : {
"file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::AlteonAD" : {
"file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Altiga" : {
"file" : "lib/SNMP/Info/Layer3/Altiga.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Arista" : {
"file" : "lib/SNMP/Info/Layer3/Arista.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Aruba" : {
"file" : "lib/SNMP/Info/Layer3/Aruba.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::BayRS" : {
"file" : "lib/SNMP/Info/Layer3/BayRS.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::BlueCoatSG" : {
"file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::C3550" : {
"file" : "lib/SNMP/Info/Layer3/C3550.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::C4000" : {
"file" : "lib/SNMP/Info/Layer3/C4000.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::C6500" : {
"file" : "lib/SNMP/Info/Layer3/C6500.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::CheckPoint" : {
"file" : "lib/SNMP/Info/Layer3/CheckPoint.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Ciena" : {
"file" : "lib/SNMP/Info/Layer3/Ciena.pm",
"version" : "3.70"
},
"SNMP::Info::Layer3::Cisco" : {
"file" : "lib/SNMP/Info/Layer3/Cisco.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::CiscoASA" : {
"file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::CiscoFWSM" : {
"file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::CiscoSwitch" : {
"file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Contivity" : {
"file" : "lib/SNMP/Info/Layer3/Contivity.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Cumulus" : {
"file" : "lib/SNMP/Info/Layer3/Cumulus.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::DLink" : {
"file" : "lib/SNMP/Info/Layer3/DLink.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Dell" : {
"file" : "lib/SNMP/Info/Layer3/Dell.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::ERX" : {
"file" : "lib/SNMP/Info/Layer3/ERX.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Enterasys" : {
"file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Extreme" : {
"file" : "lib/SNMP/Info/Layer3/Extreme.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::F5" : {
"file" : "lib/SNMP/Info/Layer3/F5.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Force10" : {
"file" : "lib/SNMP/Info/Layer3/Force10.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Fortinet" : {
"file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Foundry" : {
"file" : "lib/SNMP/Info/Layer3/Foundry.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Genua" : {
"file" : "lib/SNMP/Info/Layer3/Genua.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::H3C" : {
"file" : "lib/SNMP/Info/Layer3/H3C.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::HP9300" : {
"file" : "lib/SNMP/Info/Layer3/HP9300.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Huawei" : {
"file" : "lib/SNMP/Info/Layer3/Huawei.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::IBMGbTor" : {
"file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Juniper" : {
"file" : "lib/SNMP/Info/Layer3/Juniper.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Lantronix" : {
"file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Lenovo" : {
"file" : "lib/SNMP/Info/Layer3/Lenovo.pm",
"version" : "3.70"
},
"SNMP::Info::Layer3::Microsoft" : {
"file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Mikrotik" : {
"file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::N1600" : {
"file" : "lib/SNMP/Info/Layer3/N1600.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::NetSNMP" : {
"file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Netscreen" : {
"file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Nexus" : {
"file" : "lib/SNMP/Info/Layer3/Nexus.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::OneAccess" : {
"file" : "lib/SNMP/Info/Layer3/OneAccess.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::PacketFront" : {
"file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::PaloAlto" : {
"file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Passport" : {
"file" : "lib/SNMP/Info/Layer3/Passport.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Pf" : {
"file" : "lib/SNMP/Info/Layer3/Pf.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Pica8" : {
"file" : "lib/SNMP/Info/Layer3/Pica8.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Redlion" : {
"file" : "lib/SNMP/Info/Layer3/Redlion.pm",
"version" : "3.70"
},
"SNMP::Info::Layer3::Scalance" : {
"file" : "lib/SNMP/Info/Layer3/Scalance.pm",
"version" : "3.70"
},
"SNMP::Info::Layer3::SonicWALL" : {
"file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Steelhead" : {
"file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Sun" : {
"file" : "lib/SNMP/Info/Layer3/Sun.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Tasman" : {
"file" : "lib/SNMP/Info/Layer3/Tasman.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::Timetra" : {
"file" : "lib/SNMP/Info/Layer3/Timetra.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::VMware" : {
"file" : "lib/SNMP/Info/Layer3/VMware.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer3::VyOS" : {
"file" : "lib/SNMP/Info/Layer3/VyOS.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7" : {
"file" : "lib/SNMP/Info/Layer7.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7::APC" : {
"file" : "lib/SNMP/Info/Layer7/APC.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7::Arbor" : {
"file" : "lib/SNMP/Info/Layer7/Arbor.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7::CiscoIPS" : {
"file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7::Gigamon" : {
"file" : "lib/SNMP/Info/Layer7/Gigamon.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7::Liebert" : {
"file" : "lib/SNMP/Info/Layer7/Liebert.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7::Neoteris" : {
"file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::Layer7::Netscaler" : {
"file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::MAU" : {
"file" : "lib/SNMP/Info/MAU.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::MRO" : {
"file" : "lib/SNMP/Info/MRO.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::NortelStack" : {
"file" : "lib/SNMP/Info/NortelStack.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::PowerEthernet" : {
"file" : "lib/SNMP/Info/PowerEthernet.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::RapidCity" : {
"file" : "lib/SNMP/Info/RapidCity.pm",
"version" : "3.64"
"version" : "3.70"
},
"SNMP::Info::SONMP" : {
"file" : "lib/SNMP/Info/SONMP.pm",
"version" : "3.64"
"version" : "3.70"
}
},
"release_status" : "stable",
@@ -582,6 +607,6 @@
"x_IRC" : "irc://irc.freenode.org/#netdisco",
"x_MailingList" : "https://lists.sourceforge.net/lists/listinfo/snmp-info-users"
},
"version" : "3.64",
"version" : "3.70",
"x_serialization_backend" : "JSON::PP version 2.97001"
}

279
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'
@@ -26,391 +27,409 @@ name: SNMP-Info
provides:
SNMP::Info:
file: lib/SNMP/Info.pm
version: '3.64'
version: '3.70'
SNMP::Info::AMAP:
file: lib/SNMP/Info/AMAP.pm
version: '3.64'
version: '3.70'
SNMP::Info::AdslLine:
file: lib/SNMP/Info/AdslLine.pm
version: '3.64'
version: '3.70'
SNMP::Info::Aggregate:
file: lib/SNMP/Info/Aggregate.pm
version: '3.64'
version: '3.70'
SNMP::Info::Airespace:
file: lib/SNMP/Info/Airespace.pm
version: '3.64'
version: '3.70'
SNMP::Info::Bridge:
file: lib/SNMP/Info/Bridge.pm
version: '3.64'
version: '3.70'
SNMP::Info::CDP:
file: lib/SNMP/Info/CDP.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoAgg:
file: lib/SNMP/Info/CiscoAgg.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoConfig:
file: lib/SNMP/Info/CiscoConfig.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoPortSecurity:
file: lib/SNMP/Info/CiscoPortSecurity.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoPower:
file: lib/SNMP/Info/CiscoPower.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoQOS:
file: lib/SNMP/Info/CiscoQOS.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoRTT:
file: lib/SNMP/Info/CiscoRTT.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoStack:
file: lib/SNMP/Info/CiscoStack.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoStats:
file: lib/SNMP/Info/CiscoStats.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoStpExtensions:
file: lib/SNMP/Info/CiscoStpExtensions.pm
version: '3.64'
version: '3.70'
SNMP::Info::CiscoVTP:
file: lib/SNMP/Info/CiscoVTP.pm
version: '3.64'
version: '3.70'
SNMP::Info::DocsisCM:
file: lib/SNMP/Info/DocsisCM.pm
version: '3.70'
SNMP::Info::DocsisHE:
file: lib/SNMP/Info/DocsisHE.pm
version: '3.70'
SNMP::Info::EDP:
file: lib/SNMP/Info/EDP.pm
version: '3.64'
version: '3.70'
SNMP::Info::Entity:
file: lib/SNMP/Info/Entity.pm
version: '3.64'
version: '3.70'
SNMP::Info::EtherLike:
file: lib/SNMP/Info/EtherLike.pm
version: '3.64'
version: '3.70'
SNMP::Info::FDP:
file: lib/SNMP/Info/FDP.pm
version: '3.64'
version: '3.70'
SNMP::Info::IEEE802dot11:
file: lib/SNMP/Info/IEEE802dot11.pm
version: '3.64'
version: '3.70'
SNMP::Info::IEEE802dot3ad:
file: lib/SNMP/Info/IEEE802dot3ad.pm
version: '3.64'
version: '3.70'
SNMP::Info::IPv6:
file: lib/SNMP/Info/IPv6.pm
version: '3.64'
version: '3.70'
SNMP::Info::LLDP:
file: lib/SNMP/Info/LLDP.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer1:
file: lib/SNMP/Info/Layer1.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer1::Allied:
file: lib/SNMP/Info/Layer1/Allied.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer1::Asante:
file: lib/SNMP/Info/Layer1/Asante.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer1::Bayhub:
file: lib/SNMP/Info/Layer1/Bayhub.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer1::Cyclades:
file: lib/SNMP/Info/Layer1/Cyclades.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer1::S3000:
file: lib/SNMP/Info/Layer1/S3000.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2:
file: lib/SNMP/Info/Layer2.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::3Com:
file: lib/SNMP/Info/Layer2/3Com.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Adtran:
file: lib/SNMP/Info/Layer2/Adtran.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Aerohive:
file: lib/SNMP/Info/Layer2/Aerohive.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Airespace:
file: lib/SNMP/Info/Layer2/Airespace.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Aironet:
file: lib/SNMP/Info/Layer2/Aironet.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Allied:
file: lib/SNMP/Info/Layer2/Allied.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Atmedia:
file: lib/SNMP/Info/Layer2/Atmedia.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Baystack:
file: lib/SNMP/Info/Layer2/Baystack.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::C1900:
file: lib/SNMP/Info/Layer2/C1900.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::C2900:
file: lib/SNMP/Info/Layer2/C2900.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Catalyst:
file: lib/SNMP/Info/Layer2/Catalyst.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Centillion:
file: lib/SNMP/Info/Layer2/Centillion.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Cisco:
file: lib/SNMP/Info/Layer2/Cisco.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::CiscoSB:
file: lib/SNMP/Info/Layer2/CiscoSB.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Exinda:
file: lib/SNMP/Info/Layer2/Exinda.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::HP:
file: lib/SNMP/Info/Layer2/HP.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::HP4000:
file: lib/SNMP/Info/Layer2/HP4000.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::HPVC:
file: lib/SNMP/Info/Layer2/HPVC.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Kentrox:
file: lib/SNMP/Info/Layer2/Kentrox.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::N2270:
file: lib/SNMP/Info/Layer2/N2270.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::NAP222x:
file: lib/SNMP/Info/Layer2/NAP222x.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::NWSS2300:
file: lib/SNMP/Info/Layer2/NWSS2300.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Netgear:
file: lib/SNMP/Info/Layer2/Netgear.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Nexans:
file: lib/SNMP/Info/Layer2/Nexans.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Orinoco:
file: lib/SNMP/Info/Layer2/Orinoco.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Sixnet:
file: lib/SNMP/Info/Layer2/Sixnet.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Trapeze:
file: lib/SNMP/Info/Layer2/Trapeze.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::Ubiquiti:
file: lib/SNMP/Info/Layer2/Ubiquiti.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer2::ZyXEL_DSLAM:
file: lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3:
file: lib/SNMP/Info/Layer3.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Aironet:
file: lib/SNMP/Info/Layer3/Aironet.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::AlcatelLucent:
file: lib/SNMP/Info/Layer3/AlcatelLucent.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::AlteonAD:
file: lib/SNMP/Info/Layer3/AlteonAD.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Altiga:
file: lib/SNMP/Info/Layer3/Altiga.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Arista:
file: lib/SNMP/Info/Layer3/Arista.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Aruba:
file: lib/SNMP/Info/Layer3/Aruba.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::BayRS:
file: lib/SNMP/Info/Layer3/BayRS.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::BlueCoatSG:
file: lib/SNMP/Info/Layer3/BlueCoatSG.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::C3550:
file: lib/SNMP/Info/Layer3/C3550.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::C4000:
file: lib/SNMP/Info/Layer3/C4000.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::C6500:
file: lib/SNMP/Info/Layer3/C6500.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::CheckPoint:
file: lib/SNMP/Info/Layer3/CheckPoint.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Ciena:
file: lib/SNMP/Info/Layer3/Ciena.pm
version: '3.70'
SNMP::Info::Layer3::Cisco:
file: lib/SNMP/Info/Layer3/Cisco.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::CiscoASA:
file: lib/SNMP/Info/Layer3/CiscoASA.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::CiscoFWSM:
file: lib/SNMP/Info/Layer3/CiscoFWSM.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::CiscoSwitch:
file: lib/SNMP/Info/Layer3/CiscoSwitch.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Contivity:
file: lib/SNMP/Info/Layer3/Contivity.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Cumulus:
file: lib/SNMP/Info/Layer3/Cumulus.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::DLink:
file: lib/SNMP/Info/Layer3/DLink.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Dell:
file: lib/SNMP/Info/Layer3/Dell.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::ERX:
file: lib/SNMP/Info/Layer3/ERX.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Enterasys:
file: lib/SNMP/Info/Layer3/Enterasys.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Extreme:
file: lib/SNMP/Info/Layer3/Extreme.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::F5:
file: lib/SNMP/Info/Layer3/F5.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Force10:
file: lib/SNMP/Info/Layer3/Force10.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Fortinet:
file: lib/SNMP/Info/Layer3/Fortinet.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Foundry:
file: lib/SNMP/Info/Layer3/Foundry.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Genua:
file: lib/SNMP/Info/Layer3/Genua.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::H3C:
file: lib/SNMP/Info/Layer3/H3C.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::HP9300:
file: lib/SNMP/Info/Layer3/HP9300.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Huawei:
file: lib/SNMP/Info/Layer3/Huawei.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::IBMGbTor:
file: lib/SNMP/Info/Layer3/IBMGbTor.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Juniper:
file: lib/SNMP/Info/Layer3/Juniper.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Lantronix:
file: lib/SNMP/Info/Layer3/Lantronix.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Lenovo:
file: lib/SNMP/Info/Layer3/Lenovo.pm
version: '3.70'
SNMP::Info::Layer3::Microsoft:
file: lib/SNMP/Info/Layer3/Microsoft.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Mikrotik:
file: lib/SNMP/Info/Layer3/Mikrotik.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::N1600:
file: lib/SNMP/Info/Layer3/N1600.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::NetSNMP:
file: lib/SNMP/Info/Layer3/NetSNMP.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Netscreen:
file: lib/SNMP/Info/Layer3/Netscreen.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Nexus:
file: lib/SNMP/Info/Layer3/Nexus.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::OneAccess:
file: lib/SNMP/Info/Layer3/OneAccess.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::PacketFront:
file: lib/SNMP/Info/Layer3/PacketFront.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::PaloAlto:
file: lib/SNMP/Info/Layer3/PaloAlto.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Passport:
file: lib/SNMP/Info/Layer3/Passport.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Pf:
file: lib/SNMP/Info/Layer3/Pf.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Pica8:
file: lib/SNMP/Info/Layer3/Pica8.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Redlion:
file: lib/SNMP/Info/Layer3/Redlion.pm
version: '3.70'
SNMP::Info::Layer3::Scalance:
file: lib/SNMP/Info/Layer3/Scalance.pm
version: '3.70'
SNMP::Info::Layer3::SonicWALL:
file: lib/SNMP/Info/Layer3/SonicWALL.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Steelhead:
file: lib/SNMP/Info/Layer3/Steelhead.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Sun:
file: lib/SNMP/Info/Layer3/Sun.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Tasman:
file: lib/SNMP/Info/Layer3/Tasman.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::Timetra:
file: lib/SNMP/Info/Layer3/Timetra.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::VMware:
file: lib/SNMP/Info/Layer3/VMware.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer3::VyOS:
file: lib/SNMP/Info/Layer3/VyOS.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7:
file: lib/SNMP/Info/Layer7.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7::APC:
file: lib/SNMP/Info/Layer7/APC.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7::Arbor:
file: lib/SNMP/Info/Layer7/Arbor.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7::CiscoIPS:
file: lib/SNMP/Info/Layer7/CiscoIPS.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7::Gigamon:
file: lib/SNMP/Info/Layer7/Gigamon.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7::Liebert:
file: lib/SNMP/Info/Layer7/Liebert.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7::Neoteris:
file: lib/SNMP/Info/Layer7/Neoteris.pm
version: '3.64'
version: '3.70'
SNMP::Info::Layer7::Netscaler:
file: lib/SNMP/Info/Layer7/Netscaler.pm
version: '3.64'
version: '3.70'
SNMP::Info::MAU:
file: lib/SNMP/Info/MAU.pm
version: '3.64'
version: '3.70'
SNMP::Info::MRO:
file: lib/SNMP/Info/MRO.pm
version: '3.64'
version: '3.70'
SNMP::Info::NortelStack:
file: lib/SNMP/Info/NortelStack.pm
version: '3.64'
version: '3.70'
SNMP::Info::PowerEthernet:
file: lib/SNMP/Info/PowerEthernet.pm
version: '3.64'
version: '3.70'
SNMP::Info::RapidCity:
file: lib/SNMP/Info/RapidCity.pm
version: '3.64'
version: '3.70'
SNMP::Info::SONMP:
file: lib/SNMP/Info/SONMP.pm
version: '3.64'
version: '3.70'
recommends:
Class::ISA: '0'
File::Slurp: '0'
@@ -428,5 +447,5 @@ resources:
homepage: http://netdisco.org/
license: http://opensource.org/licenses/bsd-license.php
repository: https://github.com/netdisco/snmp-info
version: '3.64'
version: '3.70'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

186
README
View File

@@ -2,7 +2,7 @@ NAME
SNMP::Info - OO Interface to Network devices and MIBs through SNMP
VERSION
SNMP::Info - Version 3.64
SNMP::Info - Version 3.70
AUTHOR
SNMP::Info is maintained by team of Open Source authors headed by Eric
@@ -36,8 +36,8 @@ SYNOPSIS
my $err = $info->error();
die "SNMP Community or Version probably wrong connecting to device. $err\n" if defined $err;
$name = $info->name();
$class = $info->class();
my $name = $info->name();
my $class = $info->class();
print "SNMP::Info is using this device class : $class\n";
# Find out the Duplex status for the ports
@@ -208,7 +208,7 @@ SUBCLASSES
See documentation in SNMP::Info::AMAP for details.
SNMP::Info::Bridge
BRIDGE-MIB (RFC1286). QBRIDGE-MIB. Inherited by devices with Layer2
BRIDGE-MIB (RFC1286). Q-BRIDGE-MIB. Inherited by devices with Layer2
support.
See documentation in SNMP::Info::Bridge for details.
@@ -275,6 +275,16 @@ SUBCLASSES
See documentation in SNMP::Info::CiscoVTP for details.
SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS
See documentation in SNMP::Info::DocsisHE for details.
SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in SNMP::Info::DocsisCM for details.
SNMP::Info::EDP
Extreme Discovery Protocol. EXTREME-EDP-MIB
@@ -296,13 +306,6 @@ 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.
See documentation in SNMP::Info::IPv6 for details.
SNMP::Info::IEEE802dot11
IEEE802dot11-MIB. A collection of OIDs providing information about
standards based 802.11 wireless devices.
@@ -314,6 +317,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.
@@ -322,7 +332,7 @@ SUBCLASSES
SNMP::Info::MAU
MAU-MIB (RFC2668). Some Layer2 devices use this for extended
Ethernet (Media Access Unit) interface information.
Ethernet (Medium Attachment Unit) interface information.
See documentation in SNMP::Info::MAU for details.
@@ -403,7 +413,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2 for details.
SNMP::Info::Layer2::3Com
SNMP::Info::Layer2::3Com - SNMP Interface to L2 3Com Switches
Subclass for L2 3Com Switches.
See documentation in SNMP::Info::Layer2::3Com for details.
@@ -424,7 +434,8 @@ SUBCLASSES
SNMP::Info::Layer2::Aironet
Class for Cisco Aironet wireless devices that run IOS. See also
Layer3::Aironet for Aironet devices that don't run IOS.
SNMP::Info::Layer3::Aironet for Aironet devices that don't run
IOS.
See documentation in SNMP::Info::Layer2::Aironet for details.
@@ -447,10 +458,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Baystack for details.
SNMP::Info::Layer2::Kentrox
Class for Kentrox DataSMART DSU/CSU. See
SNMP::Info::Layer2::Kentrox for details.
SNMP::Info::Layer2::C1900
Subclass for Cisco Catalyst 1900 and 1900c Devices running
CatOS.
@@ -478,7 +485,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.
@@ -514,6 +521,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::HPVC for details.
SNMP::Info::Layer2::Kentrox
Class for Kentrox DataSMART DSU/CSU.
See documentation in SNMP::Info::Layer2::Kentrox for details.
SNMP::Info::Layer2::N2270
Subclass for Nortel 2270 wireless switches.
@@ -532,7 +544,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
@@ -574,10 +586,7 @@ 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 Layer2::Aironet
Note SNMP::Info::Layer2::Aironet
See documentation in SNMP::Info::Layer3::Aironet for details.
@@ -627,16 +636,22 @@ 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.
SNMP::Info::Layer3::CheckPoint
Subclass for CheckPoint devices
Subclass for CheckPoint devices.
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
@@ -739,20 +754,26 @@ SUBCLASSES
SNMP::Info::Layer3::IBMGbTor
SNMP Interface to IBM Rackswitch (formerly Blade Network
Technologies) network devices.
Technologies) network devices. Lenovo acquired these from IBM
and is now selling them under the Lenovo brand.
See documentation in SNMP::Info::Layer3::IBMGbTor for details.
SNMP::Info::Layer3::Juniper
Subclass for Juniper devices
Subclass for Juniper devices.
See documentation in SNMP::Info::Layer3::Juniper for details.
SNMP::Info::Layer3::Lantronix
Subclass for Lantronix devices
Subclass for Lantronix devices.
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.
@@ -780,12 +801,12 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Netscreen for details.
SNMP::Info::Layer3::Nexus
Subclass for Cisco Nexus devices running NX-OS
Subclass for Cisco Nexus devices running NX-OS.
See documentation in SNMP::Info::Layer3::Nexus for details.
SNMP::Info::Layer3::OneAccess
Subclass for OneAccess Quidway switches
Subclass for OneAccess routers.
See documentation in SNMP::Info::Layer3::OneAccess for details.
@@ -816,13 +837,25 @@ 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.
Subclass for generic SonicWALL devices.
See documentation in SNMP::Info::Layer3::SonicWALL for details.
SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances. See
documentation in SNMP::Info::Layer3::Steelhead for details.
Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in SNMP::Info::Layer3::Steelhead for details.
SNMP::Info::Layer3::Sun
Subclass for Generic Sun Routers running SunOS.
@@ -855,40 +888,40 @@ SUBCLASSES
See documentation in SNMP::Info::Layer7 for details.
SNMP::Info::Layer7::APC
Subclass for APC UPS devices
Subclass for APC UPS devices.
See documentation in SNMP::Info::Layer7::APC for details.
SNMP::Info::Layer7::Arbor
Subclass for Arbor appliances
Subclass for Arbor appliances.
See documentation in SNMP::Info::Layer7::Arbor for details.
SNMP::Info::Layer7::CiscoIPS
Subclass for Cisco IPS devices
Subclass for Cisco IPS devices.
See documentation in SNMP::Info::Layer7::CiscoIPS for details.
SNMP::Info::Layer7::Gigamon
Subclass for Gigamon devices
Subclass for Gigamon devices.
See documentation in SNMP::Info::Layer7::Gigamon for details.
SNMP::Info::Layer7::Liebert
Subclass for Liebert devices
Subclass for Liebert devices.
See documentation in SNMP::Info::Layer7::Liebert for details.
SNMP::Info::Layer7::Netscaler
Subclass for Citrix Netscaler appliances
See documentation in SNMP::Info::Layer7::Netscaler 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.
SNMP::Info::Layer7::Netscaler
Subclass for Citrix Netscaler appliances.
See documentation in SNMP::Info::Layer7::Netscaler for details.
Thanks
Thanks for testing and coding help (in no particular order) to :
Alexander Barthel, Andy Ford, Alexander Hartmaier, Andrew Herrick, Alex
@@ -896,8 +929,8 @@ Thanks
Carlos Vicente, Dana Watanabe, David Pinkoski, David Sieborger, Douglas
McKeown, Greg King, Ivan Auger, Jean-Philippe Luiggi, Jeroen van Ingen,
Justin Hunter, Kent Hamilton, Matthew Tuttle, Michael Robbert, Mike
Hunter, Nicolai Petri, Ralf Gross, Robert Kerr and people listed on the
Netdisco README!
Hunter, Nicolai Petri, Ralf Gross, Robert Kerr, Nick Nauwelaerts and
people listed on the Netdisco README!
USAGE
Constructor
@@ -1031,7 +1064,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.
@@ -1131,7 +1164,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)
@@ -1145,7 +1178,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
@@ -1786,6 +1819,7 @@ EXTENDING SNMP::INFO
$VERSION = 0.1;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@@ -1795,18 +1829,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,
@@ -1814,16 +1848,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;
@@ -1890,11 +1924,11 @@ 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()
Makes human friendly speed ratings using %SPEED_MAP
Makes human friendly speed ratings using %SPEED_MAP.
%SPEED_MAP = (
'56000' => '56 kbps',
@@ -1943,45 +1977,45 @@ SNMP::INFO INTERNALS
speeds up to terabit levels this way.
munge_highspeed()
Makes human friendly speed ratings for "ifHighSpeed"
Makes human friendly speed ratings for "ifHighSpeed".
munge_ip()
Takes a binary IP and makes it dotted ASCII
Takes a binary IP and makes it dotted ASCII.
munge_mac()
Takes an octet stream (HEX-STRING) and returns a colon separated
ASCII hex string.
munge_prio_mac()
Takes an 2-byte octet stream (HEX-STRING) and returns a colon
separated ASCII hex string.
munge_prio_port()
Takes an 8-byte octet stream (HEX-STRING) and returns a colon
separated ASCII hex string.
munge_prio_port()
Takes an 2-byte octet stream (HEX-STRING) and returns a colon
separated ASCII hex string.
munge_octet2hex()
Takes a binary octet stream and returns an ASCII hex string
Takes a binary octet stream and returns an ASCII hex string.
munge_dec2bin()
Takes a binary char and returns its ASCII binary representation
Takes a binary char and returns its ASCII binary representation.
munge_bits
Takes a SNMP2 'BITS' field and returns the ASCII bit string
munge_bits()
Takes a SNMP2 'BITS' field and returns the ASCII bit string.
munge_counter64
munge_counter64()
If $BIGINT is set to true, then a Math::BigInt object is returned.
See Math::BigInt for details.
munge_i_up
munge_i_up()
Net-SNMP tends to load "RFC1213-MIB" first, and so ignores the
updated enumeration for "ifOperStatus" in "IF-MIB". This munge
handles the "newer" definitions for the enumeration in IF-MIB.
TODO: Get the precedence of MIBs and overriding of MIB data in
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
munge_port_list()
Takes an octet string representing a set of ports and returns a
reference to an array of binary values each array element
representing a port.
@@ -1990,7 +2024,7 @@ SNMP::INFO INTERNALS
set of ports; the port is not included if it has a value of '0'.
munge_null()
Removes control characters from a string
Removes control characters from a string.
munge_e_type()
Takes an OID and return the object name if the right MIB is loaded.
@@ -1999,7 +2033,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".

View File

@@ -6,7 +6,7 @@ Coding Guidelines:
- always update ChangeLog before committing
- check-in required mibs to netdisco-mibs and release new package if needed
Release and Testing Instructions:
Release and Testing Instructions:
- for netdisco see:
-> https://github.com/netdisco/netdisco/wiki/Developing
-> https://metacpan.org/pod/App::Netdisco
@@ -17,17 +17,17 @@ Release and Testing Instructions:
-> https://github.com/netdisco/netdisco-mibs/wiki
FAQ:
- Do I have to update the version number and timestamp in modified files before committing?
- Do I have to update the version number and timestamp in modified files before committing?
-> No. These are RCS tags that are automatically updated by CVS when you commit
- Should I add changes at the top of the ChangeLog?
-> Yes. The changelog is created one commit at a time. If there isn't a
section for the current version, then add one at the top and put your
changes after. You can leave the date field for the release empty ().
changes after. You can leave the date field for the release empty ().
- What should I change the $VERSION to?
-> If you are the first person to get to a file after a release, update it
to either release++ or "release++ dash cvs".
to either release++ or "release++ dash cvs".
Example: File is marked 2.01, change it to 2.02-cvs with your new changes.
Example: File is marked 2.02-cvs, no change until packaging for release when the -cvs is removed.
TODO: Is there still an odd/even scheme as introduced by Eric?

View File

@@ -28,7 +28,7 @@ if ($@) {
} else {
$graph{$vendor}->{$family}=[];
}
}
}
my $now = scalar localtime;
@@ -83,7 +83,7 @@ foreach my $vendor (sort sort_nocase keys %$matrix){
} elsif (defined $vendor_defaults->{$a}){
$val = $vendor_defaults->{$a};
$class = 'vendor';
}
}
print " <TD CLASS='$class'>",join("<BR>\n",@$val),"</TD>\n";
}
print "</TR></TABLE>\n";
@@ -141,7 +141,7 @@ sub parse_data {
my ($cmd,$value);
if ($line =~ /^([a-z-_]+)\s*:\s*(.*)$/) {
$cmd = $1; $value = $2;
$cmd = $1; $value = $2;
} else {
print "What do i do with this line : $line \n";
next;
@@ -164,18 +164,18 @@ sub parse_data {
$family = $value;
$model = undef;
print "$family has no vendor.\n" unless defined $vendor;
$Matrix->{$vendor}->{families}->{$family} = {}
$Matrix->{$vendor}->{families}->{$family} = {}
unless defined $Matrix->{$vendor}->{families}->{$family};
$class = $Matrix->{$vendor}->{families}->{$family};
$class->{defaults}->{type}='family';
next;
}
}
if ($cmd eq 'device') {
$model = $value;
print "$model has no family.\n" unless defined $family;
print "$model has no vendor.\n" unless defined $vendor;
$Matrix->{$vendor}->{families}->{$family}->{models}->{$model} = {}
$Matrix->{$vendor}->{families}->{$family}->{models}->{$model} = {}
unless defined $Matrix->{$vendor}->{families}->{$family}->{models}->{$model};
$class = $Matrix->{$vendor}->{families}->{$family}->{models}->{$model};
$class->{defaults}->{type}='device';
@@ -233,7 +233,7 @@ sub html_head {
.vendor { font-size:12pt; color:#777777; }
.family { font-size:12pt; color:blue; }
.model { font-size:12pt; color:red; }
.note { color:red; }
.note { color:red; }
//-->
</STYLE>
</HEAD>
@@ -304,7 +304,7 @@ be assumed working.
Discovery Protocol (LLDP), Cisco Discovery Protocol (CDP),
SynOptics/Bay/Nortel/Avaya Network Management Protocol (SONMP),
Foundry/Brocade Discovery Protocol (FDP), Extreme Discovery
Protocol (EDP), and Alcatel Mapping Adjacency Protocol (AMAP).
Protocol (EDP), and Alcatel Mapping Adjacency Protocol (AMAP).
</TD>
</TR>
<TR>
@@ -325,7 +325,7 @@ be assumed working.
</BODY>
</HTML>
end_tail
}
sub print_headers {

View File

@@ -80,7 +80,7 @@ unless ( defined $sysdescr ) {
SNMP::loadModules(@ARGV);
# Create a hash of MIB Modules for which we want results
# Create a hash of MIB Modules for which we want results
my %mib_hash = map {$_ => 1} @ARGV;
# Add the common MIB Modules we always want
my @common_mibs = ('SNMPv2-MIB', 'IF-MIB');

View File

@@ -35,7 +35,7 @@ sub glob_rec {
foreach my $f (@files) {
next if $f eq '\.$';
if (-d $f) {
push @pms, glob_rec($f);
next;

View File

@@ -250,11 +250,11 @@ test_class.pl [options]
Options:
-c|class SNMP::Info class to use, Layer2::Catalyst
-c|class SNMP::Info class to use, Layer2::Catalyst
-d|dev Device
-s|comm SNMP community
-v|ver SNMP version
-p|print Print values
-p|print Print values
-i|ignore Ignore Net-SNMP configuration file
-m|mibdir Directory containing MIB Files
-n|nobulk Disable bulkwalk
@@ -294,7 +294,7 @@ SNMP version. Default 2.
=item B<-print>
Print values of a class method rather than summarizing. May be repeated
multiple times.
multiple times.
-print i_description -print i_type
@@ -308,7 +308,7 @@ provided.
=item B<-mibdir>
Directory containing MIB Files. Multiple directories should be separated by a
colon ':'.
colon ':'.
-mibdir /usr/local/share/snmp/mibs/rfc:/usr/local/share/snmp/mibs/net-snmp

View File

@@ -385,9 +385,9 @@ test_class_mocked.pl [options]
Options:
-class SNMP::Info class to use, Layer2::Catalyst
-class SNMP::Info class to use, Layer2::Catalyst
-file File containing data gathered using make_snmpdata.pl
-print Print values
-print Print values
-debug Debugging flag
-ignore Ignore Net-SNMP configuration file
-mibdir Directory containing MIB Files
@@ -414,7 +414,7 @@ mandatory option.
=item B<-print>
Print values of a class method rather than summarizing. May be repeated
multiple times.
multiple times.
-print i_description -print i_type
@@ -434,7 +434,7 @@ provided.
=item B<-mibdir>
Directory containing MIB Files. Multiple directories should be separated by a
colon ':'.
colon ':'.
-mibdir /usr/local/share/snmp/mibs/rfc:/usr/local/share/snmp/mibs/net-snmp

File diff suppressed because it is too large Load Diff

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.64';
$VERSION = '3.70-135';
%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;
@@ -240,10 +241,10 @@ Eric Miller
=head1 SYNOPSIS
my $amap = new SNMP::Info (
my $amap = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'router',
DestHost => 'router',
Community => 'public',
Version => 2
);
@@ -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();
@@ -269,7 +270,7 @@ Eric Miller
=head1 DESCRIPTION
SNMP::Info::AMAP is a subclass of SNMP::Info that provides an object oriented
SNMP::Info::AMAP is a subclass of SNMP::Info that provides an object oriented
interface to Alcatel Mapping Adjacency Protocol (AMAP) information through
SNMP.
@@ -291,7 +292,7 @@ None.
=back
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP
@@ -299,7 +300,7 @@ These are methods that return scalar values from SNMP
=item $amap->hasAMAP()
Is AMAP is active in this device?
Is AMAP is active in this device?
=back
@@ -322,7 +323,7 @@ Returns the mapping to the SNMP Interface Table.
Returns remote IPv4 addresses. Note: AMAP returns all IP addresses associated
with the remote device. It would be preferable to include only one address
since they should all originate from the same device, but amap_ip() can not
since they should all originate from the same device, but amap_ip() can not
determine if all addresses are reachable from the network management
application therefore all addresses are returned and the calling application
must determine which address to use and if they are in fact from the same

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.64';
$VERSION = '3.70-135';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
@@ -50,7 +51,7 @@ $VERSION = '3.64';
'adsl_atuc_curr_tx_rate' => 'adslAtucChanCurrTxRate',
'adsl_atuc_prev_tx_rate' => 'adslAtucChanPrevTxRate',
'adsl_atuc_crc_block_len' => 'adslAtucChanCrcBlockLength',
# ADSL-LINE-MIB::adslAturChanTable
'adsl_atur_interleave_delay' => 'adslAturChanInterleaveDelay',
'adsl_atur_curr_tx_rate' => 'adslAturChanCurrTxRate',
@@ -73,14 +74,14 @@ Alexander Hartmaier
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $info->class();
@@ -88,7 +89,7 @@ Alexander Hartmaier
=head1 DESCRIPTION
SNMP::Info::AdslLine is a subclass of SNMP::Info that provides
SNMP::Info::AdslLine is a subclass of SNMP::Info that provides
information about the adsl interfaces of a device.
Use or create in a subclass of SNMP::Info. Do not use directly.
@@ -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.64';
$VERSION = '3.70-135';
# Load MIB for leafs referenced within class
%MIBS = ('IF-MIB' => 'ifIndex',);
@@ -84,14 +85,14 @@ SNMP::Info Developers
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $info->class();

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::MIBS,
@@ -84,7 +84,7 @@ $VERSION = '3.64';
'airespace_ess_ifname' => 'bsnDot11EssInterfaceName',
'airespace_ess_aclname' => 'bsnDot11EssAclName',
'airespace_ess_bcast' => 'bsnDot11EssBroadcastSsid',
# AIRESPACE-WIRELESS-MIB::bsnAPTable
'airespace_ap_mac' => 'bsnAPDot3MacAddress',
'airespace_ap_name' => 'bsnAPName',
@@ -764,14 +764,14 @@ sub dot11_cur_tx_pwr_mw {
my $partial = shift;
my $cur = $airespace->airespace_apif_power($partial);
my $pwr_abs = $airespace->airespace_apif_a_pwr($partial);
my $dot11_cur_tx_pwr_mw = {};
foreach my $idx ( keys %$cur ) {
my $pwr = $cur->{$idx};
if ( $pwr >= 1 && $pwr <= 8 ) {
my @pwr_list = split(/,/, $pwr_abs->{$idx} );
$dot11_cur_tx_pwr_mw->{$idx} = $pwr_list[$pwr-1];
my @pwr_list = split(/,/, $pwr_abs->{$idx} );
$dot11_cur_tx_pwr_mw->{$idx} = $pwr_list[$pwr-1];
}
else {
@@ -1087,7 +1087,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -1204,7 +1204,7 @@ valid only when the Transfer Mode is tftp.
=item $airespace->airespace_ul_path()
Transfer upload tftp path configures the directory path where the file is to
be uploaded to. The switch remembers the last file path used.
be uploaded to. The switch remembers the last file path used.
(C<agentTransferUploadPath>)
@@ -1279,7 +1279,7 @@ radio interface.
=item $airespace->i_ssidmac()
With the same keys as i_ssidlist, returns the Basic service set
identification (BSSID), MAC address, the AP is using for the SSID.
identification (BSSID), MAC address, the AP is using for the SSID.
=back
@@ -1346,7 +1346,7 @@ Name of the interface used by this WLAN.
Name of ACL for the WLAN. This is applicable only when Web Authentication is
enabled.
(C<bsnDot11EssAclName>)
(C<bsnDot11EssAclName>)
=item $airespace->airespace_ess_bcast()
@@ -1672,14 +1672,14 @@ to an empty string.
=item $airespace->i_index()
Returns reference to map of IIDs to Interface index.
Returns reference to map of IIDs to Interface index.
Extends C<ifIndex> to support thin APs and WLAN virtual interfaces as device
interfaces.
=item $airespace->interfaces()
Returns reference to map of IIDs to ports. Thin APs are implemented as device
Returns reference to map of IIDs to ports. Thin APs are implemented as device
interfaces. The thin AP MAC address airespace_ap_mac() and Slot ID
airespace_apif_slot() are used as the port identifier. Virtual interfaces
use airespace_if_name() as the port identifier.
@@ -1717,7 +1717,7 @@ for thin AP interfaces.
=item $airespace->i_mac()
Returns reference to map of IIDs to MAC address of the interface. Returns
C<ifPhysAddress> for Ethernet interfaces and airespace_if_mac() for virtual
C<ifPhysAddress> for Ethernet interfaces and airespace_if_mac() for virtual
interfaces.
=item $airespace->i_vlan()
@@ -1751,7 +1751,7 @@ the interface iid.
=item $airespace->fw_port()
Returns reference to a hash, value being airespace_sta_mac() and
airespace_sta_slot() combined to match the interface iid.
airespace_sta_slot() combined to match the interface iid.
=item $airespace->fw_mac()

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.64';
$VERSION = '3.70-135';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
@@ -189,7 +189,7 @@ sub qb_fw_vlan {
foreach my $idx ( keys %$qb_fw_port ) {
my ( $fdb_id, $mac ) = _qb_fdbtable_index($idx);
# Many devices do not populate the dot1qVlanCurrentTable, so default
# to FDB ID = VID, but if we have a mapping use it.
# to FDB ID = VID, but if we have a mapping use it.
my $vlan = $fdb_id;
# defined as test since some devices have a vlan 0
if (defined $qb_fdb_ids->{$fdb_id}) {
@@ -237,13 +237,15 @@ sub qb_fdb_index {
return $vl_fdb_index;
}
# Most devices now support Q-BRIDGE-MIB, fall back to
# Most devices now support Q-BRIDGE-MIB, fall back to
# BRIDGE-MIB for those that don't.
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,9 +264,11 @@ 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;
}
@@ -555,10 +561,10 @@ Max Baker
=head1 SYNOPSIS
my $bridge = new SNMP::Info (
my $bridge = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'switch',
DestHost => 'switch',
Community => 'public',
Version => 2
);
@@ -579,7 +585,7 @@ Max Baker
my $port = $interfaces->{$iid};
print "Port:$port forwarding to $mac\n";
}
}
=head1 DESCRIPTION
@@ -588,12 +594,12 @@ MAC Forwarding Table and Spanning Tree Protocol info.
F<Q-BRIDGE-MIB> holds 802.1q information -- VLANs and Trunking. Cisco tends
not to use this MIB, but some proprietary ones. HP and some nicer vendors use
this. This is from C<RFC2674_q>.
this. This is from C<RFC2674_q>.
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
For debugging you can call new() directly as you would in SNMP::Info
my $bridge = new SNMP::Info::Bridge(...);
@@ -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
@@ -657,19 +662,19 @@ Returns root of STP.
(C<dot1dStpDesignatedRoot>)
=item $bridge->qb_vlans_max()
=item $bridge->qb_vlans_max()
Maximum number of VLANS supported on this device.
(C<dot1qMaxSupportedVlans>)
=item $bridge->qb_vlans()
=item $bridge->qb_vlans()
Current number of VLANs that are configured in this device.
(C<dot1qNumVlans>)
=item $bridge->qb_next_vlan_index()
=item $bridge->qb_next_vlan_index()
The next available value for C<dot1qVlanIndex> of a local VLAN entry in
C<dot1qVlanStaticTable>
@@ -701,7 +706,7 @@ IDs. These are the VLANs which are members of the egress list for the port.
Example:
my $interfaces = $bridge->interfaces();
my $vlans = $bridge->i_vlan_membership();
foreach my $iid (sort keys %$interfaces) {
my $port = $interfaces->{$iid};
my $vlan = join(',', sort(@{$vlans->{$iid}}));
@@ -731,7 +736,7 @@ Returns VLAN IDs
=head2 Forwarding Table (C<dot1dTpFdbEntry>)
=over
=over
=item $bridge->fw_mac()
@@ -949,7 +954,7 @@ The set of ports which are assigned to the egress list for this VLAN.
=item $bridge->qb_cv_untagged()
The set of ports which should transmit egress packets for this VLAN as
untagged.
untagged.
(C<dot1qVlanCurrentUntaggedPorts>)
@@ -987,7 +992,7 @@ for this VLAN.
=item $bridge->qb_v_untagged()
The set of ports which should transmit egress packets for this VLAN as
untagged.
untagged.
(C<dot1qVlanStaticUntaggedPorts>)
@@ -1027,13 +1032,13 @@ Returns reference to hash of forwarding table entries status
(C<dot1qTpFdbStatus>)
=back
=head1 SET METHODS
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.
operations.
=over

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.64';
$VERSION = '3.70-135';
# Five data structures required by SNMP::Info
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
@@ -82,7 +82,6 @@ $VERSION = '3.64';
'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;
@@ -245,10 +250,10 @@ Max Baker
=head1 SYNOPSIS
my $cdp = new SNMP::Info (
my $cdp = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'router',
DestHost => 'router',
Community => 'public',
Version => 2
);
@@ -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();
@@ -274,17 +279,17 @@ Max Baker
=head1 DESCRIPTION
SNMP::Info::CDP is a subclass of SNMP::Info that provides an object oriented
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.
Each device implements a subset of the global and cache entries.
Each device implements a subset of the global and cache entries.
Check the return value to see if that data is held by the device.
=head2 Inherited Classes
@@ -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
@@ -309,7 +312,7 @@ These are methods that return scalar values from SNMP
=item $cdp->hasCDP()
Is CDP is active in this device?
Is CDP is active in this device?
Accounts for SNMP version 1 devices which may have CDP but not cdp_run()
@@ -328,13 +331,13 @@ Interval in seconds at which CDP messages are generated.
=item $cdp->cdp_holdtime()
Time in seconds that CDP messages are kept.
Time in seconds that CDP messages are kept.
(C<cdpGlobalHoldTime>)
=item $cdp->cdp_gid()
=item $cdp->cdp_gid()
Returns CDP device ID.
Returns CDP device ID.
This is the device id broadcast via CDP to other devices, and is what is
retrieved from remote devices with $cdp->id().
@@ -355,9 +358,9 @@ to a hash.
=item $cdp->cdp_capabilities()
Returns Device Functional Capabilities. Results are munged into an ascii
binary string, MSB. Each digit represents a bit from the table below from
binary string, MSB. Each digit represents a bit from the table below from
the CDP Capabilities Mapping to Smartport Type table within the
Cisco Small Business 200 Series Smart Switch Administration Guide,
Cisco Small Business 200 Series Smart Switch Administration Guide,
L<http://www.cisco.com/c/en/us/support/switches/small-business-200-series-smart-switches/products-maintenance-guides-list.html>:
(Bit) - Description
@@ -407,7 +410,7 @@ C<CISCO-VTP-MIB::managementDomainName>
(C<cdpCacheVTPMgmtDomain>)
=item $cdp->cdp_duplex()
=item $cdp->cdp_duplex()
Returns the port duplex status from remote devices.
@@ -424,7 +427,7 @@ Returns remote device id string
Returns the mapping to the SNMP Interface Table.
Note that a lot devices don't implement $cdp->cdp_index(), So if it isn't
around, we fake it.
around, we fake it.
In order to map the cdp table entry back to the interfaces() entry, we
truncate the last number off of it :
@@ -435,7 +438,7 @@ truncate the last number off of it :
# if not, let's fake it
my $cdp_ip = $device->cdp_ip();
my %cdp_if
foreach my $key (keys %$cdp_ip){
$iid = $key;
@@ -443,13 +446,13 @@ truncate the last number off of it :
$iid =~ s/\.\d+$//;
$cdp_if{$key} = $iid;
}
return \%cdp_if;
=item $cdp->cdp_index()
Returns the mapping to the SNMP2 Interface table for CDP Cache Entries.
Returns the mapping to the SNMP2 Interface table for CDP Cache Entries.
Most devices don't implement this, so you probably want to use $cdp->cdp_if()
instead.
@@ -471,17 +474,18 @@ Returns remote address
(C<cdpCacheAddress>)
=item $cdp->cdp_platform()
=item $cdp->cdp_platform()
Returns remote platform id
Returns remote platform id
(C<cdpCachePlatform>)
=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()
@@ -489,7 +493,7 @@ Returns remote address type received. Usually IP.
(C<cdpCacheAddressType>)
=item $cdp->cdp_ver()
=item $cdp->cdp_ver()
Returns remote hardware version
@@ -508,7 +512,7 @@ for decimal placement.
(C<cdpCachePowerConsumption>)
=item $cdp->cdp_cap()
=item $cdp->cdp_cap()
Returns hash of arrays with each array containing the system capabilities
supported by the remote system. Possible elements in the array are

View File

@@ -1,6 +1,6 @@
# SNMP::Info::CiscoAgg
#
# Copyright (c) 2018 SNMP::Info Developers
# Copyright (c) 2019 SNMP::Info Developers
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -30,36 +30,72 @@
package SNMP::Info::CiscoAgg;
use strict;
use warnings;
use Exporter;
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use SNMP::Info::IEEE802dot3ad;
@SNMP::Info::CiscoAgg::ISA = qw/
SNMP::Info::IEEE802dot3ad
Exporter
/;
@SNMP::Info::CiscoAgg::EXPORT_OK = qw/
agg_ports
agg_ports_cisco
agg_ports_lag
agg_ports_pagp
/;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
our ($DEBUG, $VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::IEEE802dot3ad::MIBS,
'CISCO-PAGP-MIB' => 'pagpGroupIfIndex',
'CISCO-PAGP-MIB' => 'pagpGroupIfIndex',
'CISCO-LAG-MIB' => 'clagAggPortListPorts',
'CISCO-IF-EXTENSION-MIB' => 'cieIfLastInTime',
);
%GLOBALS = ();
%FUNCS = (
%SNMP::Info::IEEE802dot3ad::FUNCS,
'lag_ports' => 'clagAggPortListPorts',
'lag_members' => 'clagAggPortListInterfaceIndexList',
);
%MUNGE = (
%SNMP::Info::IEEE802dot3ad::MUNGE,
'lag_ports' => \&SNMP::Info::munge_port_list,
'lag_members' => \&munge_port_ifindex,
);
sub munge_port_ifindex {
my $plist = shift;
return unless defined $plist;
return unless length $plist;
my $list = [ map {sprintf "%d", hex($_)} unpack( "(A8)*", join( '' , map { sprintf "%02x", $_} unpack( "(C4)*", $plist ) )) ];
return $list;
}
sub agg_ports_cisco {
my $dev = shift;
my $group = $dev->lag_members;
my $mapping = {};
for my $master (keys %$group) {
my $slaves = $group->{$master};
for my $slave (@$slaves) {
$mapping->{$slave} = $master;
}
}
return $mapping;
}
sub agg_ports_pagp {
my $dev = shift;
@@ -80,9 +116,28 @@ sub agg_ports_pagp {
return $mapping;
}
# until we have PAgP data and need to combine with LAG data
sub agg_ports_lag {
my $dev = shift;
# same note as for agg_ports_pagp, it will miss mappings if interfaces
# are down or lacp is not synced.
my $mapping = {};
my $group = $dev->dot3adAggPortSelectedAggID;
for my $slave (keys %$group) {
my $master = $group->{$slave};
next if($master == 0 || $slave == $master);
$mapping->{$slave} = $master;
}
return $mapping;
}
# combine PAgP, LAG & Cisco proprietary data
sub agg_ports {
my $ret = {%{agg_ports_pagp(@_)}, %{agg_ports_lag(@_)}};
my $ret = {%{agg_ports_pagp(@_)}, %{agg_ports_lag(@_)}, %{agg_ports_cisco(@_)}};
return $ret;
}
@@ -100,14 +155,14 @@ SNMP::Info Developers
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $info->class();
@@ -116,7 +171,7 @@ SNMP::Info Developers
=head1 DESCRIPTION
This class provides access to Aggregated Links configuration on Cisco devices.
It combines Cisco PAgP and IEEE 802.3ad information.
It combines Cisco PAgP, Cisco proprietary info and IEEE 802.3ad information.
Use or create in a subclass of SNMP::Info. Do not use directly.
@@ -130,11 +185,13 @@ L<SNMP::Info::IEEE802dot3ad>
=item F<CISCO-PAGP-MIB>
=item F<CISCO-LAG-MIB>
=item F<CISCO-IF-EXTENSION-MIB>
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 METHODS
=head1 TABLE METHODS
=over 4
@@ -144,15 +201,52 @@ 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<agg_ports_cisco>
Implements the cisco LAG info retrieval. Merged into C<agg_ports> data
automatically. Will fetch all members of C<clagAggPortListInterfaceIndexList>
even if they are not running an aggregation protocol.
=item C<agg_ports_pagp>
Implements the PAgP LAG info retrieval. Merged into C<agg_ports> data
automatically.
=item C<lag_members>
Mimics C<ad_lag_ports> from L<SNMP::Info::IEEE802dot3ad> but based on ifindex
instead of instead of bp_index.
=back
=head2 OVERRIDES
=over
=item C<agg_ports_lag>
This will retrieve LAG ports based on C<dot3adAggPortSelectedAggID> data.
It will be merged into C<agg_ports> data.
=back
=head2 Table Methods imported from SNMP::Info::IEEE802dot3ad
=over
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=back
=head1 MUNGES
=over
=item C<munge_port_ifindex>
Takes C<clagAggPortListInterfaceIndexList>, uses the index as master port, then
returns all members as ifindex. Works with single or multiple slaves to a master.
=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.64';
$VERSION = '3.70-135';
%MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
@@ -279,7 +279,7 @@ Justin Hunter, Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -336,10 +336,6 @@ These are methods that return scalar value from SNMP
These are methods that return tables of information in the form of a reference
to a hash.
=over
=back
=head2 Config Copy Request Table (C<ccCopyTable>)
=over
@@ -435,7 +431,7 @@ Table of Flash copy operation entries.
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.
operations.
=over
@@ -452,7 +448,7 @@ older procedure has been depreciated by Cisco and is utilized only to support
devices running older code revisions.
Example:
$ciscoconfig->copy_run_tftp('1.2.3.4', 'myconfig')
$ciscoconfig->copy_run_tftp('1.2.3.4', 'myconfig')
or die "Couldn't save config. ",$ciscoconfig->error(1);
=item $ciscoconfig->copy_run_start()

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.64';
$VERSION = '3.70-135';
%MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
@@ -110,7 +110,7 @@ $VERSION = '3.64';
%PAECAPABILITIES = (
0 => 'dot1xPaePortAuthCapable',
1 => 'dot1xPaePortSuppCapable'
1 => 'dot1xPaePortSuppCapable',
);
sub munge_pae_capabilities {
@@ -152,14 +152,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $cps = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $cps->class();
@@ -196,10 +196,6 @@ None.
These are methods that return scalar values from SNMP
=over
=back
=head2 F<CISCO-PORT-SECURITY-MIB> globals
=over

View File

@@ -1,5 +1,4 @@
# SNMP::Info::CiscoPower
# $Id$
#
# Copyright (c) 2008 Bill Fenner
# All rights reserved.
@@ -31,24 +30,26 @@
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.64';
$VERSION = '3.70-135';
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption',
);
%GLOBALS = ();
%FUNCS = (
'cpeth_ent_phy' => 'cpeExtPsePortEntPhyIndex',
'peth_port_power' => 'cpeExtPsePortPwrConsumption',
%FUNCS = (
'cpeth_ent_phy' => 'cpeExtPsePortEntPhyIndex',
'peth_port_power' => 'cpeExtPsePortPwrConsumption',
);
%MUNGE = ();
@@ -113,14 +114,14 @@ Bill Fenner
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $poe = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $poe->class();
@@ -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
@@ -176,7 +179,7 @@ Maps the C<pethPsePortTable> to C<ifIndex> by way of the F<ENTITY-MIB>.
Power supplied by PoE ports, in milliwatts
(C<cpeExtPsePortPwrConsumption>)
=back
=head2 CDP Port table

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.64';
$VERSION = '3.70-135';
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
@@ -86,14 +86,14 @@ Alexander Hartmaier
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $qos = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $qos->class();
@@ -101,7 +101,7 @@ Alexander Hartmaier
=head1 DESCRIPTION
SNMP::Info::CiscoQOS is a subclass of SNMP::Info that provides
SNMP::Info::CiscoQOS is a subclass of SNMP::Info that provides
information about a cisco device's QoS config.
Use or create in a subclass of SNMP::Info. Do not use directly.
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
@@ -67,14 +67,14 @@ Alexander Hartmaier
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $rtt = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $rtt->class();
@@ -82,7 +82,7 @@ Alexander Hartmaier
=head1 DESCRIPTION
SNMP::Info::CiscoRTT is a subclass of SNMP::Info that provides
SNMP::Info::CiscoRTT is a subclass of SNMP::Info that provides
information about a cisco device's RTT values.
Use or create in a subclass of SNMP::Info. Do not use directly.
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
@@ -106,7 +106,7 @@ $VERSION = '3.64';
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
@@ -295,17 +294,17 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $ciscostats = new SNMP::Info(
# Let SNMP::Info determine the correct subclass for you.
my $ciscostack = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
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
@@ -386,7 +385,7 @@ Returns a map to IID for ports that are physical ports, not vlans, etc.
=item $stack->i_type()
Crosses p_port() with p_type() and returns the results.
Crosses p_port() with p_type() and returns the results.
Overrides with C<ifType> if p_type() isn't available.
@@ -425,7 +424,7 @@ C<portAdminSpeed>
Example:
my %if_map = reverse %{$stack->interfaces()};
$stack->set_i_speed_admin('auto', $if_map{'FastEthernet0/1'})
$stack->set_i_speed_admin('auto', $if_map{'FastEthernet0/1'})
or die "Couldn't change port speed. ",$stack->error(1);
=item $stack->set_i_duplex_admin(duplex, ifIndex)
@@ -439,7 +438,7 @@ C<portAdminSpeed>
Example:
my %if_map = reverse %{$stack->interfaces()};
$stack->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
$stack->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
or die "Couldn't change port duplex. ",$stack->error(1);
=back

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.64';
$VERSION = '3.70-135';
%MIBS = (
'SNMPv2-MIB' => 'sysDescr',
@@ -88,7 +88,7 @@ $VERSION = '3.64';
# CISCO-FLASH-MIB::ciscoFlashDeviceTable
'cisco_flash_size' => 'ciscoFlashDeviceSize',
# CISCO-IMAGE-MIB
'ci_images' => 'ciscoImageString',
);
@@ -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/ );
@@ -334,7 +338,7 @@ Eric Miller, Max Baker, Sam Stickland
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $ciscostats = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -342,7 +346,7 @@ Eric Miller, Max Baker, Sam Stickland
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $ciscostats->class();
@@ -351,7 +355,7 @@ Eric Miller, Max Baker, Sam Stickland
=head1 DESCRIPTION
SNMP::Info::CiscoStats is a subclass of SNMP::Info that provides cpu, memory,
os and version information about Cisco Devices.
os and version information about Cisco Devices.
Use or create in a subclass of SNMP::Info. Do not use directly.
@@ -385,8 +389,6 @@ None.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
=over
@@ -447,7 +449,7 @@ Tries to parse C<ROMMON> version from rom_id() string
Current CPU usage in percent.
C<1.3.6.1.4.1.9.2.1.56.0> =
C<1.3.6.1.4.1.9.2.1.56.0> =
C<OLD-CISCO-CPU-MIB:avgBusyPer>
=item $ciscostats->ios_cpu_1min()

View File

@@ -1,42 +1,42 @@
# SNMP::Info::CiscoStpExtensions
#
# Copyright (c)2009 Carlos Vicente
# All rights reserved.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# 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 author nor the
# names of its contributors may be used to endorse or promote products
# * Neither the name of the author 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
# 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;
# (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
# 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::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.64';
$VERSION = '3.70-135';
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
@@ -106,11 +106,11 @@ sub mst_region_rev {
sub mst_vlan2instance {
my $self = shift;
# Get MST vlan-to-instance mapping
my $m1k2k = $self->stpx_smst_vlans_mapped_1k2k;
my $m3k4k = $self->stpx_smst_vlans_mapped_3k4k;
# Get list of VLANs
my $vlan_membership = $self->i_vlan_membership;
my @vlans;
@@ -140,7 +140,7 @@ sub mst_vlan2instance {
$res{$vlan} = $inst;
last;
}
}
}
}
}
return \%res;
@@ -162,7 +162,7 @@ sub i_rootguard_enabled {
$res{$iid} = $enabled;
}
return \%res;
}
}
sub i_loopguard_enabled {
my $self = shift;
@@ -180,7 +180,7 @@ sub i_loopguard_enabled {
$res{$iid} = $enabled;
}
return \%res;
}
}
sub i_bpduguard_enabled {
my $self = shift;
@@ -189,7 +189,7 @@ sub i_bpduguard_enabled {
my $bpdugm_default = $self->stpx_bpduguard_enable();
my $bp_index = $self->bp_index($partial);
my $bpdugm = $self->stpx_port_bpduguard_mode();
my %res;
foreach my $index ( keys %$bpdugm ){
my $mode = $bpdugm->{$index};
@@ -212,7 +212,7 @@ sub i_bpdufilter_enabled {
my $bpdufm_default = $self->stpx_bpdufilter_enable();
my $bp_index = $self->bp_index($partial);
my $bpdufm = $self->stpx_port_bpdufilter_mode();
my %res;
foreach my $index ( keys %$bpdufm ){
my $mode = $bpdufm->{$index};
@@ -277,12 +277,25 @@ Carlos Vicente
=head1 SYNOPSIS
my $stpx = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $stpx->class();
print " Using device sub class : $class\n";
=head1 DESCRIPTION
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
For debugging you can call new() directly as you would in SNMP::Info
my $stpx = new SNMP::Info::CiscoStpExtensions(...);
@@ -290,15 +303,21 @@ For debugging you can call new() directly as you would in SNMP::Info
=over
=item SNMP::Info
=item SNMP::Info
=item SNMP::Info::Bridge
=item SNMP::Info::Bridge
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head2 Required MIBs
=head1 GLOBAL METHODS
=over
=item F<CISCO-STP-EXTENSIONS-MIB>
=back
=head1 GLOBALS
These are methods that return scalar values from SNMP
@@ -306,7 +325,7 @@ These are methods that return scalar values from SNMP
=item $stpx->stp_ver()
Returns the particular STP version running on this device.
Returns the particular STP version running on this device.
Meant to override SNMP::Info::Brigde::stp_ver()
Values: C<pvstPlus>, C<mistp>, C<mistpPvstPlus>, C<mst>, C<rapidPvstPlus>
@@ -324,25 +343,25 @@ to a hash.
=item $stpx->mst_config_digest()
Returns the Multiple Spanning Tree (MST) configuration digest
Returns the Multiple Spanning Tree (MST) configuration digest
(C<stpxSMSTConfigDigest>)
=item $stpx->mst_region_name()
Returns the Multiple Spanning Tree (MST) region name
Returns the Multiple Spanning Tree (MST) region name
(C<stpxMSTRegionName>)
=item $stpx->mst_region_rev()
Returns the Multiple Spanning Tree (MST) region name
Returns the Multiple Spanning Tree (MST) region name
(C<stpxSMSTRegionRevision>)
=item $stpx->mst_vlan2instance()
Returns the mapping of vlan to MST instance in the form of a hash reference
Returns the mapping of vlan to MST instance in the form of a hash reference
with key = VLAN id, value = STP instance
=item $stpx->i_rootguard_enabled()

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.64';
$VERSION = '3.70-135';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -172,7 +172,7 @@ sub i_vlan {
# vtp_trunk_dyn_stat is not useful for down ports
# so we use vtp_trunk_dyn to see if trunking is set
my $dyn = $trunk_dyn->{$port};
if (($stat and $stat =~ /^trunking/ )
or ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))))
{
@@ -303,7 +303,7 @@ sub i_vlan_membership_untagged {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
@@ -529,14 +529,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $vtp = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $vtp->class();
@@ -544,7 +544,7 @@ Max Baker
=head1 DESCRIPTION
SNMP::Info::CiscoVTP is a subclass of SNMP::Info that provides
SNMP::Info::CiscoVTP is a subclass of SNMP::Info that provides
information about a Cisco device's VLAN and VTP Domain membership.
Use or create in a subclass of SNMP::Info. Do not use directly.
@@ -565,8 +565,6 @@ None.
=back
MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
=head1 GLOBALS
=over
@@ -620,7 +618,7 @@ IDs. These are the VLANs which are members of enabled VLAN list for the port.
Example:
my $interfaces = $vtp->interfaces();
my $vlans = $vtp->i_vlan_membership();
foreach my $iid (sort keys %$interfaces) {
my $port = $interfaces->{$iid};
my $vlan = join(',', sort(@{$vlans->{$iid}}));
@@ -722,7 +720,7 @@ for a good treaty of how to connect to the VLANs
=item $vtp->i_vlan_type()
Static, Dynamic, or multiVlan.
Static, Dynamic, or multiVlan.
(C<vmVlanType>)
@@ -769,7 +767,7 @@ Each bit represents a VLAN. This is 3072 through 4095
=over
=item $vtp->i_voice_vlan()
=item $vtp->i_voice_vlan()
(C<vmVoiceVlanId>)
@@ -884,7 +882,7 @@ Each bit represents a VLAN. This is 3072 through 4095
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.
operations.
=over
@@ -896,7 +894,7 @@ VLAN ID and port C<ifIndex>. This method should only be used on end station
Example:
my %if_map = reverse %{$vtp->interfaces()};
$vtp->set_i_vlan('2', $if_map{'FastEthernet0/1'})
$vtp->set_i_vlan('2', $if_map{'FastEthernet0/1'})
or die "Couldn't change port VLAN. ",$vtp->error(1);
=item $vtp->set_i_pvid ( pvid, ifIndex )
@@ -906,7 +904,7 @@ port C<ifIndex>. This method should only be used on trunk ports.
Example:
my %if_map = reverse %{$vtp->interfaces()};
$vtp->set_i_pvid('2', $if_map{'FastEthernet0/1'})
$vtp->set_i_pvid('2', $if_map{'FastEthernet0/1'})
or die "Couldn't change port default VLAN. ",$vtp->error(1);
=item $vtp->set_i_untagged ( vlan, ifIndex )
@@ -922,7 +920,7 @@ numeric VLAN ID and port C<ifIndex>.
Example:
my %if_map = reverse %{$vtp->interfaces()};
$vtp->set_add_i_vlan_tagged('2', $if_map{'FastEthernet0/1'})
$vtp->set_add_i_vlan_tagged('2', $if_map{'FastEthernet0/1'})
or die "Couldn't add port to egress list. ",$vtp->error(1);
=item $vtp->set_remove_i_vlan_tagged ( vlan, ifIndex )
@@ -932,7 +930,7 @@ with the numeric VLAN ID and port C<ifIndex>.
Example:
my %if_map = reverse %{$vtp->interfaces()};
$vtp->set_remove_i_vlan_tagged('2', $if_map{'FastEthernet0/1'})
$vtp->set_remove_i_vlan_tagged('2', $if_map{'FastEthernet0/1'})
or die "Couldn't add port to egress list. ",$vtp->error(1);
=back

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.70-135';
%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.70-135';
%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.64';
$VERSION = '3.70-135';
%MIBS = (
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
@@ -64,7 +65,7 @@ sub hasEDP {
my $edp_ip = $edp->extremeEdpNeighborVlanIpAddress() || {};
return 1 if ( scalar( keys %$edp_ip ) );
return;
}
@@ -75,12 +76,12 @@ 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;
my $edp_ip = $edp->extremeEdpNeighborVlanIpAddress() || {};
my %edp_index;
foreach my $key ( keys %$edp_ip ) {
my $ip = $edp_ip->{$key};
@@ -103,7 +104,7 @@ sub edp_if {
$iid = $1 if $iid =~ /^(\d+)\./;
$edp_if{$key} = $iid;
}
return \%edp_if;
}
@@ -193,10 +194,10 @@ Eric Miller
=head1 SYNOPSIS
my $edp = new SNMP::Info (
my $edp = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'router',
DestHost => 'router',
Community => 'public',
Version => 2
);
@@ -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();
@@ -222,7 +223,7 @@ Eric Miller
=head1 DESCRIPTION
SNMP::Info::EDP is a subclass of SNMP::Info that provides an object oriented
SNMP::Info::EDP is a subclass of SNMP::Info that provides an object oriented
interface to EDP information through SNMP.
EDP is a Layer 2 protocol that allows a network device to advertise its
@@ -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
@@ -285,7 +286,7 @@ Returns remote port ID
Returns the operating system version of the remote system.
Nulls are removed before the value is returned.
Nulls are removed before the value is returned.
(C<extremeEdpNeighborSoftwareVersion>)

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.64';
$VERSION = '3.70-135';
%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);
@@ -174,14 +174,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $entity = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $entity->class();
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
@@ -68,7 +68,7 @@ $VERSION = '3.64';
'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, );
@@ -95,22 +95,22 @@ Max Baker
=head1 SYNOPSIS
my $el = new SNMP::Info (
my $el = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'router',
DestHost => 'router',
Community => 'public',
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
# ETHERLIKE-MIB
my $interfaces = $el->interfaces();
my $el_index = $el->el_index();
my $el_duplex = $el->el_duplex();
my $el_duplex = $el->el_duplex();
foreach my $el_port (keys %$el_duplex){
my $duplex = $el_duplex->{$el_port};
@@ -122,7 +122,7 @@ Max Baker
=head1 DESCRIPTION
SNMP::Info::EtherLike is a subclass of SNMP::Info that supplies
SNMP::Info::EtherLike is a subclass of SNMP::Info that supplies
access to the F<ETHERLIKE-MIB> used by some Layer 3 Devices such as
Cisco routers.
@@ -133,7 +133,7 @@ directly.
=head2 Inherited Classes
None.
None.
=head2 Required MIBs
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
@@ -65,7 +65,7 @@ $VERSION = '3.64';
%MUNGE = (
'fdp_capabilities' => \&SNMP::Info::munge_bits,
'fdp_ip' => \&SNMP::Info::munge_ip
'fdp_ip' => \&SNMP::Info::munge_ip,
);
sub fdp_run {
@@ -132,10 +132,10 @@ Bruce Rodger, Max Baker
=head1 SYNOPSIS
my $fdp = new SNMP::Info (
my $fdp = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'router',
DestHost => 'router',
Community => 'public',
Version => 2
);
@@ -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();
@@ -161,7 +161,7 @@ Bruce Rodger, Max Baker
=head1 DESCRIPTION
SNMP::Info::FDP is a subclass of SNMP::Info that provides an object oriented
SNMP::Info::FDP is a subclass of SNMP::Info that provides an object oriented
interface to FDP information through SNMP.
FDP is a Layer 2 protocol that supplies topology information of
@@ -172,7 +172,7 @@ virtually identical. FDP is implemented in Brocade (Foundry) devices.
Create or use a device subclass that inherits this class. Do not use
directly.
Each device implements a subset of the global and cache entries.
Each device implements a subset of the global and cache entries.
Check the return value to see if that data is held by the device.
=head2 Inherited Classes
@@ -186,11 +186,11 @@ None.
=item F<FOUNDRY-SN-SWITCH-GROUP-MIB>
Needs a reasonably recent MIB. Works OK with B2R07604A.mib, but doesn't
work with B2R07600C.
work with B2R07600C.
=back
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP
@@ -198,13 +198,13 @@ These are methods that return scalar values from SNMP
=item $fdp->hasFDP()
Is FDP is active in this device?
Is FDP is active in this device?
Accounts for SNMP version 1 devices which may have FDP but not fdp_run()
=item $fdp->fdp_run()
Is FDP enabled on this device?
Is FDP enabled on this device?
(C<fdpGlobalRun>)
@@ -216,7 +216,7 @@ Interval in seconds at which FDP messages are generated.
=item $fdp->fdp_holdtime()
Time in seconds that FDP messages are kept.
Time in seconds that FDP messages are kept.
(C<fdpGlobalHoldTime>)
@@ -236,13 +236,13 @@ Interval in seconds at which FDP messages are generated.
=item $fdp->fdp_holdtime()
Time in seconds that FDP messages are kept.
Time in seconds that FDP messages are kept.
(C<fdpGlobalHoldTime>)
=item $fdp->fdp_id()
=item $fdp->fdp_id()
Returns FDP device ID.
Returns FDP device ID.
This is the device id broadcast via FDP to other devices, and is what is
retrieved from remote devices with $fdp->id().
@@ -334,9 +334,9 @@ Returns remote IP address
(C<fdpCacheAddress>)
=item $fdp->fdp_platform()
=item $fdp->fdp_platform()
Returns remote platform id
Returns remote platform id
(C<fdpCachePlatform>)
@@ -352,13 +352,13 @@ Returns remote address type received. Usually IP.
(C<fdpCacheAddressType>)
=item $fdp->fdp_ver()
=item $fdp->fdp_ver()
Returns remote hardware version
(C<fdpCacheVersion>)
=item $fdp->fdp_cache_type()
=item $fdp->fdp_cache_type()
Returns type of entry received, either FDP or CDP.

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.64';
$VERSION = '3.70-135';
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
@@ -203,7 +203,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Aggregate::MIBS,
@@ -82,10 +83,10 @@ sub agg_ports_lag {
for ( my $i = 0; $i <= scalar(@$portlist); $i++ ) {
my $ifindex = $i+1;
if ( exists($index->{$i+1}) and defined($index->{$i+1}) ) {
$ifindex = $index->{$i+1};
$ifindex = $index->{$i+1};
}
$ret->{$ifindex} = $idx if ( @$portlist[$i] );
}
}
}
return $ret;
@@ -105,14 +106,14 @@ SNMP::Info Developers
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $info->class();

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,19 +45,19 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.64';
$VERSION = '3.70-135';
%MIBS = (
%MIBS = (
'IP-MIB' => 'ipv6InterfaceTableLastChange',
'IPV6-MIB' => 'ipv6IfTableLastChange',
'CISCO-IETF-IP-MIB' => 'cInetNetToMediaNetAddress',
'CISCO-IETF-IP-MIB' => 'cInetNetToMediaNetAddress',
);
%GLOBALS = ();
%FUNCS = (
%FUNCS = (
'ip_n2p_phys_addr' => 'ipNetToPhysicalPhysAddress', # IP-MIB
'c_inet_phys_addr' => 'cInetNetToMediaPhysAddress', # CISCO-IETF-IP-MIB
'i6_n2p_phys_addr' => 'ipv6NetToMediaPhysAddress', # IPV6-MIB
@@ -70,10 +71,10 @@ $VERSION = '3.64';
'i6_n2p_phys_state' => 'ipv6IfNetToMediaState', # IPV6-MIB
'ip_pfx_origin' => 'ipAddressPrefixOrigin', # IP-MIB
'c_pfx_origin' => 'cIpAddressPfxOrigin', # CISCO-IETF-IP-MIB
'c_pfx_origin' => 'cIpAddressPfxOrigin', # CISCO-IETF-IP-MIB
'ip_addr6_pfx' => 'ipAddressPrefix', # IP-MIB
'c_addr6_pfx' => 'cIpAddressPrefix', # CISCO-IETF-IP-MIB
'c_addr6_pfx' => 'cIpAddressPrefix', # CISCO-IETF-IP-MIB
# Commented out are not-accessible according to MIB
#'ip_addr6_pfxlen' => 'ipAddressPrefixLength', # IP-MIB
@@ -81,7 +82,7 @@ $VERSION = '3.64';
'i6_addr_pfxlen' => 'ipv6AddrPfxLength', # IPV6-MIB
'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIB
'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB
'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB
'ip_addr6_type' => 'ipAddressType', # IP-MIB
'c_addr6_type' => 'cIpAddressType', # CISCO-IETF-IP-MIB
@@ -106,8 +107,8 @@ sub ipv6_n2p_mac {
foreach my $row (keys %$phys_addr) {
if ($row =~ /^(\d+)\.(\d+)\.(\d+)\.([\d\.]+)$/) {
my $ifindex = $1; my $addrtype = $2; my $addrsize = $3; my $v6addr = $4;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
# also, address syntax is IPv6Address (fixed 16 bytes) and not InetAddress (length field followed by address bytes)
$v6addr = join('.', $addrtype, $addrsize, $v6addr);
$addrtype = 2;
@@ -133,8 +134,8 @@ sub ipv6_n2p_addr {
foreach my $row (keys %$net_addr) {
if ($row =~ /^(\d+)\.(\d+)\.(\d+)\.([\d\.]+)$/) {
my $ifindex = $1; my $addrtype = $2; my $addrsize = $3; my $v6addr = $4;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
# also, address syntax is IPv6Address (fixed 16 bytes) and not InetAddress (length field followed by address bytes)
$v6addr = join('.', $addrtype, $addrsize, $v6addr);
$addrtype = 2;
@@ -142,7 +143,7 @@ sub ipv6_n2p_addr {
if ($addrtype == 2) { # IPv6
my $v6_packed = pack("C*", split(/\./, $v6addr));
if (length($v6_packed) == 15) {
# Workaround for some some IP-MIB implementations, eg on Cisco Nexus: no explicit addrsize,
# Workaround for some some IP-MIB implementations, eg on Cisco Nexus: no explicit addrsize,
# so what we've collected in that variable is actually the first byte of the address.
$v6_packed = pack('C', $addrsize) . $v6_packed;
}
@@ -177,8 +178,8 @@ sub ipv6_n2p_if {
foreach my $row (keys %$phys_addr) {
if ($row =~ /^(\d+)\.(\d+)\.(\d+)\.([\d\.]+)$/) {
my $ifindex = $1; my $addrtype = $2; my $addrsize = $3; my $v6addr = $4;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
# also, address syntax is IPv6Address (fixed 16 bytes) and not InetAddress (length field followed by address bytes)
$v6addr = join('.', $addrtype, $addrsize, $v6addr);
$addrtype = 2;
@@ -204,8 +205,8 @@ sub ipv6_n2p_type {
foreach my $row (keys %$phys_type) {
if ($row =~ /^(\d+)\.(\d+)\.(\d+)\.([\d\.]+)$/) {
my $ifindex = $1; my $addrtype = $2; my $addrsize = $3; my $v6addr = $4;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
# also, address syntax is IPv6Address (fixed 16 bytes) and not InetAddress (length field followed by address bytes)
$v6addr = join('.', $addrtype, $addrsize, $v6addr);
$addrtype = 2;
@@ -231,8 +232,8 @@ sub ipv6_n2p_state {
foreach my $row (keys %$phys_state) {
if ($row =~ /^(\d+)\.(\d+)\.(\d+)\.([\d\.]+)$/) {
my $ifindex = $1; my $addrtype = $2; my $addrsize = $3; my $v6addr = $4;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
if ($info::METHOD == IPV6MIB) {
# IPV6-MIB doesn't include the addrtype in the index;
# also, address syntax is IPv6Address (fixed 16 bytes) and not InetAddress (length field followed by address bytes)
$v6addr = join('.', $addrtype, $addrsize, $v6addr);
$addrtype = 2;
@@ -442,14 +443,14 @@ Jeroen van Ingen and Carlos Vicente
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $info = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $info->class();
@@ -457,12 +458,12 @@ Jeroen van Ingen and Carlos Vicente
=head1 DESCRIPTION
The SNMP::Info::IPv6 class implements functions to for mapping IPv6 addresses
The SNMP::Info::IPv6 class implements functions to for mapping IPv6 addresses
to MAC addresses, interfaces and more. It will use data from the F<IP-MIB>,
F<IPV6-MIB>, or the F<CISCO-IETF-IP-MIB>, whichever is supported by the
device.
This class is inherited by Info::Layer3 to provide IPv6 node tracking across
This class is inherited by Info::Layer3 to provide IPv6 node tracking across
device classes.
For debugging purposes you can call this class directly as you would
@@ -479,7 +480,9 @@ none.
=over
=item F<IP-MIB>
=item F<IPV6-MIB>
=item F<CISCO-IETF-IP-MIB>
=back
@@ -519,7 +522,7 @@ Maps an IPv6 address to its type (unicast, anycast, etc.)
Maps an IPv6 prefix with its origin (manual, well-known, dhcp, etc.)
=item $info->ipv6_addr_prefix()
=item $info->ipv6_addr_prefix()
Maps IPv6 addresses with their prefixes
@@ -545,7 +548,7 @@ Maps an address of type C<cInetNetToMediaNetAddressType> on interface C<ifIndex>
=head1 MUNGES
=over
=over
=item munge_physaddr()

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.64';
$VERSION = '3.70-135';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -141,7 +141,7 @@ sub lldp_if {
next unless $port;
# Local LLDP port may not equate to ifIndex, see LldpPortNumber
# TEXTUAL-CONVENTION in LLDP-MIB. Cross reference lldpLocPortDesc
# TEXTUAL-CONVENTION in LLDP-MIB. Cross reference lldpLocPortDesc
# with ifDescr and ifAlias to get ifIndex, prefer ifDescr over
# ifAlias because using cross ref with description is correct
# behavior according to the LLDP-MIB. Some devices (eg H3C gear)
@@ -455,10 +455,10 @@ Eric Miller
=head1 SYNOPSIS
my $lldp = new SNMP::Info (
my $lldp = new SNMP::Info (
AutoSpecify => 1,
Debug => 1,
DestHost => 'router',
DestHost => 'router',
Community => 'public',
Version => 2
);
@@ -484,7 +484,7 @@ Eric Miller
=head1 DESCRIPTION
SNMP::Info::LLDP is a subclass of SNMP::Info that provides an object oriented
SNMP::Info::LLDP is a subclass of SNMP::Info that provides an object oriented
interface to LLDP information through SNMP.
LLDP is a Layer 2 protocol that allows a network device to advertise its
@@ -512,7 +512,7 @@ None.
=back
=head1 GLOBAL METHODS
=head1 GLOBALS
These are methods that return scalar values from SNMP
@@ -520,7 +520,7 @@ These are methods that return scalar values from SNMP
=item $lldp->hasLLDP()
Is LLDP is active in this device?
Is LLDP is active in this device?
Note: LLDP may be active, but nothing in C<lldpRemoteSystemsData> Tables so
the device would not return any useful topology information.
@@ -531,7 +531,7 @@ The string value used to identify the system name of the local system. If the
local agent supports IETF RFC 3418, C<lldpLocSysName> object should have the
same value of C<sysName> object.
Nulls are removed before the value is returned.
Nulls are removed before the value is returned.
(C<lldpLocSysName>)
@@ -545,7 +545,7 @@ Nulls are removed before the value is returned.
(C<lldpLocSysDesc>)
=item $lldp->lldp_sys_cap()
=item $lldp->lldp_sys_cap()
Returns which system capabilities are enabled on the local system. Results
are munged into an ascii binary string, LSB. Each digit represents a bit
@@ -595,8 +595,8 @@ with the remote system.
=item $lldp->lldp_if()
Returns the mapping to the SNMP Interface Table. Tries to cross reference
(C<lldpLocPortDesc>) with (C<ifDescr>) and (C<ifAlias>) to get (C<ifIndex>),
Returns the mapping to the SNMP Interface Table. Tries to cross reference
(C<lldpLocPortDesc>) with (C<ifDescr>) and (C<ifAlias>) to get (C<ifIndex>),
if unable defaults to (C<lldpRemLocalPortNum>).
=item $lldp->lldp_ip()
@@ -611,7 +611,7 @@ use lldp_addr if you don't care about return address type.
=item $lldp->lldp_mac()
Returns remote (management) MAC address, if known. Returns for all other
Returns remote (management) MAC address, if known. Returns for all other
address types, use lldp_addr if you don't care about return address type.
=item $lldp->lldp_addr()
@@ -632,13 +632,13 @@ Returns remote port ID
Tries to return something useful from C<lldp_rem_sysdesc()> or
C<lldp_rem_sysname()>.
=item $lldp->lldp_cap()
=item $lldp->lldp_cap()
Returns hash of arrays with each array containing the system capabilities
supported by the remote system. Possible elements in the array are
enumerated from C<LldpSystemCapabilitiesMap>.
=item $lldp->lldp_media_cap()
=item $lldp->lldp_media_cap()
Returns hash of arrays with each array containing the media capabilities
supported by the remote system. Possible elements in the array are
@@ -683,7 +683,7 @@ the remote system.
Returns the string value used to identify the description of the given port
associated with the remote system.
Nulls are removed before the value is returned.
Nulls are removed before the value is returned.
(C<lldpRemPortDesc>)
@@ -692,7 +692,7 @@ Nulls are removed before the value is returned.
Returns the string value used to identify the system name of the remote
system.
Nulls are removed before the value is returned.
Nulls are removed before the value is returned.
(C<lldpRemSysName>)
@@ -701,70 +701,70 @@ Nulls are removed before the value is returned.
Returns the string value used to identify the system description of the
remote system.
Nulls are removed before the value is returned.
Nulls are removed before the value is returned.
(C<lldpRemSysDesc>)
=item $lldp->lldp_rem_hw_rev()
Returns the string value used to identify the hardware revision of the
remote system. Nulls are removed before the value is returned.
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemHardwareRev>)
=item $lldp->lldp_rem_fw_rev()
Returns the string value used to identify the firmware revision of the
remote system. Nulls are removed before the value is returned.
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemHardwareRev>)
=item $lldp->lldp_rem_sw_rev()
Returns the string value used to identify the software revision of the
remote system. Nulls are removed before the value is returned.
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemSoftwareRev>)
=item $lldp->lldp_rem_serial()
Returns the string value used to identify the serial number of the
remote system. Nulls are removed before the value is returned.
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemSerialNum>)
=item $lldp->lldp_rem_vendor()
Returns the string value used to identify the manufacturer of the
remote system. Nulls are removed before the value is returned.
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemMfgName>)
=item $lldp->lldp_rem_asset()
Returns the string value used to identify the asset number of the
remote system. Nulls are removed before the value is returned.
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemAssetID>)
=item $lldp->lldp_rem_model()
Returns the string value used to identify the model of the
remote system. Nulls are removed before the value is returned.
remote system. Nulls are removed before the value is returned.
(C<lldpXMedRemModelName>)
=item $lldp->lldp_rem_media_cap_spt()
=item $lldp->lldp_rem_media_cap_spt()
Returns which media capabilities are supported on the remote system. Results
are munged into an ascii binary string, LSB.
=item $lldp->lldp_rem_media_cap()
=item $lldp->lldp_rem_media_cap()
Returns which media capabilities are enabled on the remote system. Results
are munged into an ascii binary string, LSB.
=item $lldp->lldp_rem_sys_cap()
=item $lldp->lldp_rem_sys_cap()
Returns which system capabilities are enabled on the remote system. Results
are munged into an ascii binary string, LSB. Each digit represents a bit

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.64';
$VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
@@ -49,7 +49,7 @@ $VERSION = '3.64';
%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();
@@ -172,14 +172,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $l1 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 1
)
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $l1->class();
@@ -203,15 +203,15 @@ This class is usually used as a superclass for more specific device classes
listed under SNMP::Info::Layer1::* Please read all docs under SNMP::Info
first.
Provides abstraction to the configuration information obtainable from a
Provides abstraction to the configuration information obtainable from a
Layer1 device through SNMP. Information is stored in a number of MIBs.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
after determining a more specific class using the method above.
my $l1 = new SNMP::Info::Layer1(...);
=head2 Inherited Classes
=head2 Inherited Classes
=over
@@ -219,7 +219,7 @@ after determining a more specific class using the method above.
=back
=head2 Required MIBs
=head2 Required MIBs
=over
@@ -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
@@ -242,7 +239,7 @@ These are methods that return scalar value from SNMP
=item $l1->ports_managed()
Gets the number of ports under the interface mib
Gets the number of ports under the interface mib
(C<ifNumber>)
@@ -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.64';
$VERSION = '3.70-135';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
@@ -52,9 +52,14 @@ $VERSION = '3.64';
'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;
@@ -128,14 +133,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $allied = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myhub',
Community => 'public',
Version => 1
)
)
or die "Can't connect to DestHost.\n";
my $class = $allied->class();
@@ -143,8 +148,8 @@ Max Baker
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
Allied device through SNMP. See inherited classes' documentation for
Provides abstraction to the configuration information obtainable from a
Allied device through SNMP. See inherited classes' documentation for
inherited methods.
=head2 Inherited Classes
@@ -181,7 +186,7 @@ Returns 'allied' :)
=item $allied->os()
Returns 'allied'
Returns 'allied'
=item $allied->os_ver()

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.64';
$VERSION = '3.70-135';
# 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;
@@ -173,14 +173,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $asante = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $asante->class();
@@ -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()
@@ -250,7 +250,7 @@ See L<SNMP::Info::Layer1/"GLOBALS"> for details.
Returns reference to the map between IID and physical Port.
=item $asante->i_description()
=item $asante->i_description()
Description of the interface.

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -492,7 +492,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -501,14 +501,9 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
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(...);
the proprietary MIB.
=head2 Inherited Classes
@@ -607,18 +602,18 @@ to a hash.
=item $bayhub->i_index()
Returns reference to map of IIDs to Interface index.
Returns reference to map of IIDs to Interface index.
Since hubs do not support C<ifIndex>, the interface index is created using the
formula (board * 256 + port).
=item $bayhub->interfaces()
Returns reference to map of IIDs to physical ports.
Returns reference to map of IIDs to physical ports.
=item $bayhub->i_duplex()
Returns half, hubs do not support full duplex.
Returns half, hubs do not support full duplex.
=item $bayhub->i_duplex_admin()
@@ -644,7 +639,7 @@ State choices are 'up' or 'down'
Example:
my %if_map = reverse %{$bayhub->interfaces()};
$bayhub->set_i_up_admin('down', $if_map{'1.1'})
$bayhub->set_i_up_admin('down', $if_map{'1.1'})
or die "Couldn't change port state. ",$bayhub->error(1);
=item $bayhub->bp_index()
@@ -671,51 +666,51 @@ L<SNMP::Info::NortelStack/"TABLE METHODS"> for details.
=over
=item $bayhub->e_index()
=item $bayhub->e_index()
Returns ns_e_index().
=item $bayhub->e_class()
=item $bayhub->e_class()
Returns ns_e_class().
=item $bayhub->e_descr()
=item $bayhub->e_descr()
Returns ns_e_descr().
=item $bayhub->e_name()
=item $bayhub->e_name()
Returns ns_e_name().
=item $bayhub->e_fwver()
=item $bayhub->e_fwver()
Returns ns_e_fwver().
=item $bayhub->e_hwver()
=item $bayhub->e_hwver()
Returns ns_e_hwver().
=item $bayhub->e_parent()
=item $bayhub->e_parent()
Returns ns_e_parent().
=item $bayhub->e_pos()
=item $bayhub->e_pos()
Returns ns_e_pos().
=item $bayhub->e_serial()
=item $bayhub->e_serial()
Returns ns_e_serial().
=item $bayhub->e_swver()
=item $bayhub->e_swver()
Returns ns_e_swver().
=item $bayhub->e_type()
=item $bayhub->e_type()
Returns ns_e_type().
=item $bayhub->e_vendor()
=item $bayhub->e_vendor()
Returns ns_e_vendor().

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer1::MIBS,
@@ -486,7 +486,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -495,14 +495,9 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
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
@@ -602,12 +599,12 @@ to a hash.
=item $cyclades->i_index()
Returns reference to map of IIDs to Interface index.
Returns reference to map of IIDs to Interface index.
Extended to include serial ports. Serial ports are indexed with the
alternative labeling system for the serial port, either the listening socket
port C<cySPortSocketPort> or C<acsSerialPortTableDeviceName> name to avoid
conflicts with C<ifIndex>.
conflicts with C<ifIndex>.
=item $cyclades->interfaces()
@@ -617,7 +614,7 @@ serial ports, C<acsSerialPortTableDeviceName> or C<cyISPortTty>.
=item $cyclades->i_speed()
Returns interface speed. Extended to include serial ports,
C<acsSerialPortTableComSpeed> or C<cyISPortSpeed>.
C<acsSerialPortTableComSpeed> or C<cyISPortSpeed>.
=item $cyclades->i_up()

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -373,7 +373,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -382,15 +382,10 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
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
@@ -447,7 +442,7 @@ Returns the firmware version. (C<s3AgentFwVer>)
=item $s3000->mac()
Returns MAC of the advertised IP address of the device.
Returns MAC of the advertised IP address of the device.
=back
@@ -477,7 +472,7 @@ to a hash.
=item $s3000->i_index()
Returns reference to map of IIDs to Interface index.
Returns reference to map of IIDs to Interface index.
Since hubs do not support C<ifIndex>, the interface index is created using the
formula (board * 256 + port). This is required to support devices with more
@@ -485,11 +480,11 @@ than one module.
=item $s3000->interfaces()
Returns reference to map of IIDs to physical ports.
Returns reference to map of IIDs to physical ports.
=item $s3000->i_duplex()
Returns half, hubs do not support full duplex.
Returns half, hubs do not support full duplex.
=item $s3000->i_duplex_admin()
@@ -516,7 +511,7 @@ State choices are 'up' or 'down'
Example:
my %if_map = reverse %{$s3000->interfaces()};
$s3000->set_i_up_admin('down', $if_map{'1.1'})
$s3000->set_i_up_admin('down', $if_map{'1.1'})
or die "Couldn't change port state. ",$s3000->error(1);
=item $s3000->bp_index()

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.64';
$VERSION = '3.70-135';
%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.64';
%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.64';
# 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.64';
# 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();
@@ -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;
@@ -169,14 +182,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $l2 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $l2->class();
@@ -199,11 +212,11 @@ This class is usually used as a superclass for more specific device classes
listed under SNMP::Info::Layer2::* Please read all docs under SNMP::Info
first.
Provides abstraction to the configuration information obtainable from a
Provides abstraction to the configuration information obtainable from a
Layer2 device through SNMP. Information is stored in a number of MIBs.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
after determining a more specific class using the method above.
my $l2 = new SNMP::Info::Layer2(...);
@@ -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
@@ -243,7 +260,7 @@ These are methods that return scalar value from SNMP
=item $l2->model()
Cross references $l2->id() with product IDs in the
Cross references $l2->id() with product IDs in the
Cisco MIBs.
For HP devices, removes C<'hpswitch'> from the name
@@ -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.64';
$VERSION = '3.70-135';
%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,23 +29,23 @@
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.64';
$VERSION = '3.70-135';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
our $index = undef;
%MIBS = (
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::Layer3::MIBS,
# 'ADTRAN-GENEVC-MIB' => 'adGenEVCMIB',
@@ -53,19 +53,17 @@ our $index = undef;
# 'ADTRAN-GENPORT-MIB' => 'adGenPort',
'ADTRAN-MIB' => 'adtran',
'ADTRAN-AOSUNIT' => 'adGenAOSUnitMib',
);
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Layer3::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';
@@ -86,11 +84,11 @@ sub os {
sub layers {
my $adtran = shift;
my $layers = $adtran->SUPER::layers();
# Some netvantas don't report L2 properly
# Some netvantas don't report L2 properly
my $macs = $adtran->fw_mac();
if (keys %$macs) {
my $l = substr $layers, 6, 1, "1";
}
@@ -105,7 +103,7 @@ sub os_ver {
my $aos_ver = $adtran->adAOSDeviceVersion();
return $aos_ver;
}
sub model {
sub model {
my $adtran = shift;
my $id = $adtran->id();
my $mod = $adtran->adProdName() || undef;
@@ -113,7 +111,7 @@ sub model {
my $model = $adtran->adAOSDeviceProductName() || undef;
return $model;
}
sub serial {
sub serial {
my $adtran = shift;
my $e_serial = $adtran->e_serial() || {};
my $serial2 = $e_serial->{1} || undef;
@@ -124,19 +122,19 @@ sub serial {
sub i_name {
my $adtran = shift;
my $partial = shift;
my $i_name = $adtran->SUPER::i_alias() || undef;
my $i_name = $adtran->SUPER::i_alias() || undef;
return $i_name if (defined $i_name);
$i_name = {};
my $adname = $adtran->ad_genportcustuse() || undef;
if (defined $adname) {
foreach my $port (keys %$adname) {
my @split = split(/\./,$port);
$i_name->{@split[1]} = $adname->{$port};
if (defined $adname) {
foreach my $port (keys %$adname) {
my @splitout = split(/\./,$port);
$i_name->{$splitout[1]} = $adname->{$port};
}
}
return $i_name;
}
sub i_vlan {
sub i_vlan {
my $adtran = shift;
my $partial = shift;
my $uniports = $adtran->ad_evcmapuniport() || undef;
@@ -155,14 +153,14 @@ sub i_vlan {
return $i_vlan;
}
return {};
}
sub i_vlan_membership {
sub i_vlan_membership {
my $adtran = shift;
my $partial = shift;
my $i_vlan = $adtran->ad_menport();
if (defined $i_vlan) {
if (defined $i_vlan) {
my $vlans = {};
my $v_name = $adtran->v_name();
foreach my $vid (keys %$v_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();
@@ -202,14 +200,14 @@ SNMP::Info::Layer2::Adtran - SNMP Interface to Adtran Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $adtran = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $adtran->class();
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -83,6 +84,7 @@ $VERSION = '3.64';
%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();
@@ -132,16 +133,15 @@ sub mac {
push( @macs, $macs->{$iid} );
}
@macs = sort(@macs);
}
}
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 ) {
@@ -323,14 +326,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $aerohive = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $aerohive->class();
@@ -339,12 +342,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 wireless Access Point through SNMP.
=head2 Inherited Classes

View File

@@ -29,8 +29,8 @@
package SNMP::Info::Layer2::Airespace;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Bridge;
use SNMP::Info::CDP;
use SNMP::Info::Airespace;
@@ -38,9 +38,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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
@@ -166,11 +166,11 @@ sub cd11_mac {
sub cd11_txrate {
my $airespace = shift;
my $rates = $airespace->client_txrate() || {};
my $protos = $airespace->cd11_proto() || {};
my $bws = $airespace->cd11n_ch_bw() || {};
my $cd11_txrate = {};
foreach my $idx ( keys %$rates ) {
my $rate = $rates->{$idx} || '0.0';
@@ -193,7 +193,7 @@ sub cd11_txrate {
sub munge_cd11n_ch_bw {
my $bw = shift;
if ( $bw =~ /forty/ ) {
return 40;
}
@@ -202,7 +202,7 @@ sub munge_cd11n_ch_bw {
sub munge_cd11_proto {
my $bw = shift;
return 2 if ( $bw eq 'dot11n5' );
return 1;
@@ -260,7 +260,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -269,14 +269,9 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from
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
@@ -346,7 +341,7 @@ See documentation in L<SNMP::Info::Bridge/"GLOBALS"> for details.
These are methods that return tables of information in the form of a reference
to a hash.
=over
=over
=item cd11_mac()
@@ -356,7 +351,7 @@ Returns client radio interface MAC addresses.
Returns client transmission speed in Mbs.
=back
=back
=head2 Overrides

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.64';
$VERSION = '3.70-135';
%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.64';
%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.64';
%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.64';
= \&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;
}
@@ -443,7 +442,7 @@ sub i_ssidmac {
my $partial = shift;
my $mbss_mac_addr = $aironet->mbss_mac_addr();
# Same logic as i_ssidbcast to return same indexes as i_ssidlist
# Same logic as i_ssidbcast to return same indexes as i_ssidlist
my $map = {};
foreach my $key ( keys %$mbss_mac_addr ) {
my ( $interface, @idx ) = split( /\./, $key );
@@ -484,14 +483,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $aironet = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $aironet->class();
@@ -517,7 +516,7 @@ This class is for devices running Cisco IOS software (newer)
=back
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
after determining a more specific class using the method above.
my $aironet = new SNMP::Info::Layer2::Aironet(...);
@@ -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.
@@ -655,11 +658,11 @@ being broadcast.
=item $aironet->i_ssidmac()
With the same keys as i_ssidlist, returns the Basic service set
identification (BSSID), MAC address, the AP is using for the SSID.
identification (BSSID), MAC address, the AP is using for the SSID.
=item $aironet ps1_status()
Returns the PoE injector status based on C<cpoePdSupportedPower> and
Returns the PoE injector status based on C<cpoePdSupportedPower> and
C<cpoePdSupportedPowerMode>.
=back
@@ -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.64';
$VERSION = '3.70-135';
%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;
@@ -138,14 +137,14 @@ Max Baker, Dmitry Sergienko <dmitry@trifle.net>
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $allied = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myhub',
Community => 'public',
Version => 1
)
)
or die "Can't connect to DestHost.\n";
my $class = $allied->class();
@@ -153,8 +152,8 @@ Max Baker, Dmitry Sergienko <dmitry@trifle.net>
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
Allied device through SNMP. See inherited classes' documentation for
Provides abstraction to the configuration information obtainable from a
Allied device through SNMP. See inherited classes' documentation for
inherited methods.
=head2 Inherited Classes
@@ -191,11 +190,11 @@ These are methods that return scalar value from SNMP
=item $allied->vendor()
Returns 'allied' :)
Returns 'allied'
=item $allied->os()
Returns 'allied'
Returns 'allied'
=item $allied->os_ver()
@@ -213,7 +212,7 @@ Tries to cull out C<AT-nnnnX> out of the description field.
=item $allied->mac()
Returns device MAC.
Returns device MAC.
=back

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.64';
$VERSION = '3.70-135';
%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 {
@@ -92,14 +95,14 @@ Netdisco Developers
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $atmedia = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myhub',
Community => 'public',
Version => 1
)
)
or die "Can't connect to DestHost.\n";
my $class = $atmedia->class();

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.64';
$VERSION = '3.70-135';
%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,
);
@@ -136,7 +135,7 @@ sub model {
return '303' if ( defined $descr and $descr =~ /\D303\D/ );
return '304' if ( defined $descr and $descr =~ /\D304\D/ );
return 'BPS' if ( $model =~ /BPS2000/i );
# Pull sreg- from all
$model =~ s/^sreg-//;
# Strip ES/ERS/BayStack etc. from those families
@@ -341,7 +340,7 @@ sub peth_port_ifindex {
return \%peth_port_ifindex;
}
# Currently only ERS 4800 v5.8+ support the rcBridgeSpbmMacTable
# Currently only ERS 4800 v5.8+ support the rcBridgeSpbmMacTable
# which holds the FDB for a SPBM edge deployment.
#
# Q-BRIDGE still holds some entries when the rcBridgeSpbmMacTable is in use
@@ -353,7 +352,7 @@ sub fw_mac {
my $qb = $rapidcity->SUPER::fw_mac() || {};
my $spbm = $rapidcity->rc_spbm_fw_mac() || {};
my $fw_mac = { %$qb, %$spbm };
return $fw_mac;
}
@@ -363,17 +362,17 @@ sub fw_port {
my $qb = $rapidcity->SUPER::fw_port() || {};
my $spbm = $rapidcity->rc_spbm_fw_port() || {};
my $fw_port = { %$qb, %$spbm };
return $fw_port;
}
sub fw_status {
my $rapidcity = shift;
my $qb = $rapidcity->SUPER::fw_status() || {};
my $qb = $rapidcity->SUPER::fw_status() || {};
my $spbm = $rapidcity->rc_spbm_fw_status() || {};
my $fw_status = { %$qb, %$spbm };
return $fw_status;
}
@@ -383,7 +382,7 @@ sub qb_fw_vlan {
my $qb = $rapidcity->SUPER::qb_fw_vlan() || {};
my $spbm = $rapidcity->rc_spbm_fw_vlan() || {};
my $qb_fw_vlan = { %$qb, %$spbm };
return $qb_fw_vlan;
}
@@ -417,7 +416,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $baystack->class();
@@ -427,12 +426,7 @@ Eric Miller
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(...);
through SNMP.
=head2 Inherited Classes
@@ -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
@@ -500,7 +490,7 @@ Returns the firmware version extracted from C<sysDescr>.
=item $baystack->stp_ver()
Returns the particular STP version running on this device.
Returns the particular STP version running on this device.
Values: C<nortelStpg>, C<pvst>, C<rstp>, C<mstp>, C<ieee8021d>
@@ -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.
@@ -560,10 +546,10 @@ Returns reference to the map between IID and physical Port.
Slot and port numbers on the Baystack switches are determined by the
formula:
port = (Interface index % Index factor)
slot = (int(Interface index / Index factor)) + Slot offset
The physical port name is returned as slot.port.
=item $baystack->i_ignore()
@@ -572,9 +558,9 @@ Returns reference to hash of IIDs to ignore.
=item $baystack->i_mac()
Returns the C<ifPhysAddress> table entries.
Returns the C<ifPhysAddress> table entries.
Removes all entries matching '00:00:00:00:00:00' -- Certain
Removes all entries matching '00:00:00:00:00:00' -- Certain
revisions of Baystack firmware report all zeros for each port mac.
=item $baystack->i_name()
@@ -602,60 +588,60 @@ L<SNMP::Info::NortelStack/"TABLE METHODS"> for details on ns_e_* methods.
=over
=item $baystack->e_index()
=item $baystack->e_index()
If the device doesn't support C<entPhysicalDescr>, this will try ns_e_index().
Note that this is based on C<entPhysicalDescr> due to implementation
details of SNMP::Info::Entity::e_index().
=item $baystack->e_class()
=item $baystack->e_class()
If the device doesn't support C<entPhysicalClass>, this will try ns_e_class().
=item $baystack->e_descr()
=item $baystack->e_descr()
If the device doesn't support C<entPhysicalDescr>, this will try ns_e_descr().
=item $baystack->e_name()
=item $baystack->e_name()
If the device doesn't support C<entPhysicalName>, this will try ns_e_name().
=item $baystack->e_fwver()
=item $baystack->e_fwver()
If the device doesn't support C<entPhysicalFirmwareRev>, this will try
ns_e_fwver().
=item $baystack->e_hwver()
=item $baystack->e_hwver()
If the device doesn't support C<entPhysicalHardwareRev>, this will try
ns_e_hwver().
=item $baystack->e_parent()
=item $baystack->e_parent()
If the device doesn't support C<entPhysicalContainedIn>, this will try
ns_e_parent().
=item $baystack->e_pos()
=item $baystack->e_pos()
If the device doesn't support C<entPhysicalParentRelPos>, this will try
ns_e_pos().
=item $baystack->e_serial()
=item $baystack->e_serial()
If the device doesn't support C<entPhysicalSerialNum>, this will try
ns_e_serial().
=item $baystack->e_swver()
=item $baystack->e_swver()
If the device doesn't support C<entPhysicalSoftwareRev>, this will try
ns_e_swver().
=item $baystack->e_type()
=item $baystack->e_type()
If the device doesn't support C<entPhysicalVendorType>, this will try
ns_e_type().
=item $baystack->e_vendor()
=item $baystack->e_vendor()
If the device doesn't support C<entPhysicalMfgName>, this will try
ns_e_vendor().
@@ -700,10 +686,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.64';
$VERSION = '3.70-135';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
@@ -291,14 +291,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $c1900 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 1
)
)
or die "Can't connect to DestHost.\n";
my $class = $c1900->class();
@@ -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
@@ -379,14 +372,14 @@ Returns 'catalyst'
=item $c1900->os_ver()
Returns CatOS version if obtainable. First tries to use
SNMP::Info::CiscoStats->os_ver() . If that fails then it
Returns CatOS version if obtainable. First tries to use
SNMP::Info::CiscoStats->os_ver() . If that fails then it
checks for the presence of $c1900->c1900_flash_status() and culls
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.
@@ -467,7 +456,7 @@ bridge group IDs.
Example:
my $interfaces = $c1900->interfaces();
my $vlans = $c1900->i_vlan_membership();
foreach my $iid (sort keys %$interfaces) {
my $port = $interfaces->{$iid};
my $vlan = join(',', sort(@{$vlans->{$iid}}));
@@ -510,7 +499,7 @@ Gives admin setting for Duplex Info
=item $c1900->c1900_p_name()
Gives human set name for port
Gives human set name for port
(C<swPortName>)
@@ -563,7 +552,7 @@ See L<SNMP::Info::Layer2/"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.
operations.
=over
@@ -574,7 +563,7 @@ choices are 'auto', 'half', 'full'.
Example:
my %if_map = reverse %{$c1900->interfaces()};
$c1900->set_i_duplex_admin('auto', $if_map{'1'})
$c1900->set_i_duplex_admin('auto', $if_map{'1'})
or die "Couldn't change port duplex. ",$c1900->error(1);
=back

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.64';
$VERSION = '3.70-135';
%GLOBALS = (
%SNMP::Info::Layer2::Cisco::GLOBALS,
@@ -225,7 +225,7 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $c2900 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -233,7 +233,7 @@ Max Baker
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $c2900->class();
@@ -241,13 +241,8 @@ Max Baker
=head1 DESCRIPTION
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(...);
Provides abstraction to the configuration information obtainable from a
C2900 device through SNMP.
=head2 Inherited Classes
@@ -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()
@@ -309,8 +304,8 @@ Returns reference to the map between IID and physical Port.
On the 2900 devices i_name isn't reliable, so we override to just the
description.
Next all dots are changed for forward slashes so that the physical port name
is the same as the broad-casted CDP port name.
Next all dots are changed for forward slashes so that the physical port name
is the same as the broad-casted CDP port name.
(Ethernet0.1 -> Ethernet0/1)
Also, any weird characters are removed, as I saw a few pop up.
@@ -333,7 +328,7 @@ Returns reference to hash of IIDs to admin speed setting.
=back
=head2 F<C2900-MIB> Port Entry Table
=head2 F<C2900-MIB> Port Entry Table
=over
@@ -357,7 +352,7 @@ Gives admin setting for Duplex Info
=item $c2900->c2900_p_speed_admin()
Gives Admin speed of port
Gives Admin speed of port
(C<c2900PortAdminSpeed>)
@@ -372,7 +367,7 @@ See L<SNMP::Info::Layer2::Cisco/"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.
operations.
=over
@@ -387,7 +382,7 @@ port C<ifIndex>.
Example:
my %if_map = reverse %{$c2900->interfaces()};
$c2900->set_i_speed_admin('auto', $if_map{'FastEthernet0/1'})
$c2900->set_i_speed_admin('auto', $if_map{'FastEthernet0/1'})
or die "Couldn't change port speed. ",$c2900->error(1);
=item $c2900->set_i_duplex_admin(duplex, ifIndex)
@@ -401,7 +396,7 @@ port C<ifIndex>.
Example:
my %if_map = reverse %{$c2900->interfaces()};
$c2900->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
$c2900->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
or die "Couldn't change port duplex. ",$c2900->error(1);
=back

133
lib/SNMP/Info/Layer2/Carelink.pm Executable file
View File

@@ -0,0 +1,133 @@
# SNMP::Info::Layer2::Carelink - SNMP Interface to Carelink Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer2::Carelink;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::Layer3;
@SNMP::Info::Layer2::Carelink::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Carelink::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
# 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,
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
'serial_oid' => 'mib-2.47.1.1.1.1.11.1',
'os_ver_oid' => 'mib-2.47.1.1.1.1.9.1',
'hw_oid' => 'mib-2.47.1.1.1.1.2.1',
'fw_mac_oid' => 'mib-2.47.1.1.1.1.11.1',
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'carelink';
}
sub os {
return 'caos';
}
sub os_ver {
my $carelink = shift;
my $ver = $carelink->os_ver_oid() || undef;
return $ver if (defined $ver);
return 'Unknown';
}
sub model {
my $carelink = shift;
my $id = $carelink->id();
my $mod = $carelink->hw_oid() || undef;
return $mod if (defined $mod);
return 'Unknown';
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Carelink - SNMP Interface to Carelink Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $carelink = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $carelink->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for carelink Devices running IOS-like software
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=item SNMP::Info::Layer3
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
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 $carelink->vendor()
Returns 'adtran'
=item $carelink->os()
Returns 'caos'
=item $carelink->layers()
Ensures that layer two is reported, at least.
=item $carelink->os_ver()
Returns the software version.
=item $carelink->model()
Returns the model extracted.
=item $carelink->serial()
Returns serial number.
=cut

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::Cisco::MIBS,
@@ -64,7 +64,7 @@ $VERSION = '3.64';
%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 {
@@ -173,14 +173,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $cat = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $cat->class();
@@ -206,7 +206,7 @@ Note: Some older Catalyst switches will only talk SNMP version 1. Some
newer ones will not return all their data if connected via 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.
after determining a more specific class using the method above.
my $cat = new SNMP::Info::Layer2::Catalyst(...);
@@ -246,7 +246,7 @@ Returns 'catalyst'
=item $cat->os_ver()
Tries to use the value from SNMP::Info::CiscoStats->os_ver() and if it fails
Tries to use the value from SNMP::Info::CiscoStats->os_ver() and if it fails
it grabs $cat->m_swver()->{1} and uses that.
=item $cat->vendor()
@@ -279,11 +279,11 @@ to a hash.
=item $cat->interfaces()
Returns the map between SNMP Interface Identifier (iid) and physical port
name.
name.
=item $cat->i_name()
Returns reference to hash of iid to human set name.
Returns reference to hash of iid to human set name.
C<portName>

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::MIBS,
@@ -274,14 +273,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $centillion = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $centillion->class();
@@ -289,14 +288,9 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
Centillion device through SNMP.
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
@@ -430,7 +424,7 @@ to a hash.
formula:
port = index % 256
slot = int(index / 256)
The physical port name is returned as slot.port.
=item $centillion->i_duplex()
@@ -469,13 +463,13 @@ Returns a mapping between C<ifIndex> and the VLAN.
=item $centillion->centillion_p_index()
Returns reference to hash. Maps table IIDs to Interface IIDs
Returns reference to hash. Maps table IIDs to Interface IIDs
(C<cnDot3ExtnIfIndex>)
=item $centillion->centillion_p_duplex()
Returns reference to hash. Maps port operational duplexes to IIDs
Returns reference to hash. Maps port operational duplexes to IIDs
(C<cnDot3ExtnIfOperConnectionType>)
@@ -493,19 +487,19 @@ Returns reference to hash. Maps port admin duplexes to IIDs
=item $centillion->centillion_i_vlan_index()
Returns reference to hash. Key: Table entry, Value: Index
Returns reference to hash. Key: Table entry, Value: Index
(C<cnVlanPortMemberIfIndex>)
=item $centillion->centillion_i_vlan()
Returns reference to hash. Key: Table entry, Value: VLAN ID
Returns reference to hash. Key: Table entry, Value: VLAN ID
(C<cnVlanPortMemberVID>)
=item $centillion->centillion_i_vlan_type()
Returns reference to hash. Key: Table entry, Value: VLAN Type
Returns reference to hash. Key: Table entry, Value: VLAN Type
(C<cnVlanPortMemberIngressType>)
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -117,7 +117,7 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $cisco = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -125,7 +125,7 @@ Max Baker
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $cisco->class();
@@ -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

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::CiscoSB
# $Id$
#
# Copyright (c) 2013 Nic Bernstein
#
@@ -35,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.64';
$VERSION = '3.70-135';
%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';
}
@@ -138,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 {
@@ -149,7 +167,6 @@ sub interfaces {
return $interfaces;
}
1;
__END__
@@ -185,15 +202,15 @@ managed switches. [i.e. those matching enterprises(1).cisco(9).otherEnterprises(
=over
=item SNMP::Info::Layer2
=item SNMP::Info::CDP
=item SNMP::Info::Entity
=item SNMP::Info::EtherLike
=item SNMP::Info::CiscoConfig
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoConfig
=item SNMP::Info::EtherLike
=item SNMP::Info::Layer2
=back
@@ -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.
@@ -209,17 +230,13 @@ MIBs required by the inherited classes listed above.
=head1 GLOBALS
These are methods that return scalar value from SNMP
These are methods that return scalar value from SNMP.
=over
=item $ciscosb->vendor()
=item $ciscosb->mac()
Returns 'cisco'
=item $ciscosb->os()
Returns 'ros'
Returns mac from (C<rndBasePhysicalAddress>)
=item $ciscosb->os_ver()
@@ -236,20 +253,43 @@ Returns model and hardware revision of unit
=back
=head2 Overrides
=over
=item $ciscosb->vendor()
Returns 'cisco'.
=item $ciscosb->os()
Returns 'ros'.
=back
=head2 Globals imported from SNMP::Info::Layer2
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
@@ -264,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.

113
lib/SNMP/Info/Layer2/ECI.pm Executable file
View File

@@ -0,0 +1,113 @@
# SNMP::Info::Layer2::ECI - SNMP Interface to ECI Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer2::ECI;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::ECI::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::ECI::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::Layer2::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'eci';
}
sub os {
return 'eci-os';
}
sub os_ver {
return 'unknown';
}
sub model {
my $obj = shift;
return $obj->description;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::ECI - SNMP Interface to ECI Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $obj = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $obj->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for ECI Devices running IOS-like software
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $obj->vendor()
Returns 'eci'
=item $obj->os()
Returns 'eci-os'
=item $obj->layers()
Ensures that layer two is reported, at least.
=item $obj->os_ver()
Returns the software version.
=item $obj->model
Returns the model extracted.
=item $obj->serial()
Returns serial number.
=cut
=back

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -52,9 +53,10 @@ $VERSION = '3.64';
%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.64';
%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()
@@ -189,7 +186,7 @@ Returns 'exinda'.
=back
=head2 Global Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head1 TABLE ENTRIES
@@ -197,14 +194,8 @@ See L<SNMP::Info::Layer2/"GLOBALS"> for details.
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Overrides
=over
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=cut

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;
@@ -41,16 +41,16 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
@SNMP::Info::Layer2::HP::ISA = qw/
SNMP::Info::Aggregate
SNMP::Info::Layer3
SNMP::Info::MAU
SNMP::Info::CDP
SNMP::Info::Layer3
SNMP::Info::MAU
SNMP::Info::CDP
Exporter
/;
@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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -107,7 +107,7 @@ $VERSION = '3.64';
'hp_s_oid' => 'hpicfSensorObjectId',
'hp_s_name' => 'hpicfSensorDescr',
'hp_s_status' => 'hpicfSensorStatus',
# HP-ICF-POE-MIB
'peth_port_power' => 'hpicfPoePethPsePortPower',
);
@@ -123,7 +123,7 @@ $VERSION = '3.64';
# Model map, reverse sorted by common model name (sort -k2 -r)
# Potential sources for model information: http://www.hp.com/rnd/software/switches.htm or HP-ICF-OID MIB
# Potential sources for model information: http://www.hp.com/rnd/software/switches.htm or HP-ICF-OID MIB
%MODEL_MAP = (
'J8131A' => 'WAP-420-WW',
'J8130A' => 'WAP-420-NA',
@@ -190,6 +190,8 @@ $VERSION = '3.64';
'JL324A' => '2930M-24G-8SR-PoE+',
'JL319A' => '2930M-24G',
'JL258A' => '2930F-8G-PoE+-2SFP+',
'JL558A' => '2930F-48G-PoE+-4SFP+-740W',
'JL557A' => '2930F-48G-PoE+-4SFP-740W',
'JL256A' => '2930F-48G-PoE+-4SFP+',
'JL262A' => '2930F-48G-PoE+-4SFP',
'JL254A' => '2930F-48G-4SFP+',
@@ -313,7 +315,7 @@ sub os_ver {
return;
}
# Regular managed ProCurve switches have the serial num in entity mib,
# Regular managed ProCurve switches have the serial num in entity mib,
# the web-managed models in the semi mib (hphttpmanageable).
sub serial {
my $hp = shift;
@@ -593,14 +595,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $hp = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $hp->class();
@@ -608,15 +610,15 @@ Max Baker
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
HP ProCurve Switch via SNMP.
Provides abstraction to the configuration information obtainable from a
HP ProCurve Switch via SNMP.
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.
after determining a more specific class using the method above.
my $hp = new SNMP::Info::Layer2::HP(...);
@@ -872,7 +874,7 @@ to a hash.
=over 4
=item $hp->interfaces()
=item $hp->interfaces()
Uses $hp->i_description()
@@ -929,7 +931,7 @@ Munge for c_id which handles CDP and LLDP.
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.
operations.
=over

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::CDP::MIBS,
'RFC1271-MIB' => 'logDescription',
'HP-ICF-OID' => 'hpSwitch4000',
@@ -386,7 +386,7 @@ sub i_vlan_membership_untagged {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
@@ -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) {
@@ -482,14 +482,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $hp = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $hp->class();
@@ -497,18 +497,13 @@ Max Baker
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
HP ProCurve Switch via SNMP.
Provides abstraction to the configuration information obtainable from a
HP ProCurve Switch via SNMP.
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
@@ -583,7 +578,7 @@ Returns bytes of used memory
Returns the model number of the HP Switch. Will translate between the HP Part
number and the common model number with this map :
%MODEL_MAP = (
%MODEL_MAP = (
'J4093A' => '2424M',
'J4110A' => '8000M',
'J4120A' => '1600M',
@@ -652,7 +647,7 @@ to a hash.
=over
=item $hp->interfaces()
=item $hp->interfaces()
Uses $hp->i_description()
@@ -687,7 +682,7 @@ It is the union of tagged, untagged, and auto ports.
Example:
my $interfaces = $hp->interfaces();
my $vlans = $hp->i_vlan_membership();
foreach my $iid (sort keys %$interfaces) {
my $port = $interfaces->{$iid};
my $vlan = join(',', sort(@{$vlans->{$iid}}));
@@ -731,7 +726,7 @@ See documentation in L<SNMP::Info::MAU/"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.
operations.
=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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::LLDP::MIBS,
'HPVC-MIB' => 'vcDomainName',
'CPQSINFO-MIB' => 'cpqSiSysSerialNum',
'HPVCMODULE-MIB' => 'vcModuleDomainName',
@@ -53,7 +52,6 @@ $VERSION = '3.64';
%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.64';
%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 {
@@ -102,14 +96,14 @@ Jeroen van Ingen
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $hp = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $hp->class();
@@ -117,13 +111,8 @@ Jeroen van Ingen
=head1 DESCRIPTION
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(...);
Provides abstraction to the configuration information obtainable from a
HP Virtual Connect Switch via SNMP.
=head2 Inherited Classes
@@ -188,27 +177,15 @@ See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Overrides
=over
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head1 MUNGES
=over
=back
=head1 SET METHODS
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.
operations.
=cut

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -57,13 +58,13 @@ $VERSION = '3.64';
%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";
@@ -168,12 +169,6 @@ See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Overrides
=over
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.

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.64';
$VERSION = '3.70-135';
%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 {
@@ -114,7 +117,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -123,21 +126,14 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
@@ -375,14 +375,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $nap222x = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $nap222x->class();
@@ -391,12 +391,7 @@ Eric Miller
=head1 DESCRIPTION
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(...);
2220 series wireless Access Points through SNMP.
=head2 Inherited Classes
@@ -526,7 +521,7 @@ to a hash.
=item $nap222x->interfaces()
Returns reference to map of IIDs to physical ports.
Returns reference to map of IIDs to physical ports.
=item $nap222x->i_duplex()
@@ -548,7 +543,7 @@ Returns a human name based upon port description.
Returns a mapping between C<ifIndex> and the Bridge Table. This does not
exist in the MIB and bridge port index is not the same as C<ifIndex> so it is
created.
created.
=item $nap222x->i_ssidlist()

144
lib/SNMP/Info/Layer2/NSC.pm Executable file
View File

@@ -0,0 +1,144 @@
# SNMP::Info::Layer2::NSC - SNMP Interface to NSC Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer2::NSC;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::NSC::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::NSC::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::Layer2::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
'model_oid' => 'enterprises.42926.2.3.1.3.0',
'serial_oid' => 'enterprises.42926.2.3.1.8.0',
'hw_oid' => 'enterprises.42926.2.3.1.1.0',
'os_ver_oid' => 'enterprises.42926.2.3.1.2.0',
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'nsc';
}
sub os {
return 'nsc-os';
}
sub os_ver {
my $obj = shift;
my $os_ver = $obj->os_ver_oid || undef;
return $os_ver
if defined $os_ver;
return 'unknown';
}
sub model {
my $obj = shift;
my $model = $obj->model_oid || undef;
my $hwver = $obj->hwver || undef;
return $model . ' HW:' . $hwver
if defined $model and defined $hwver;
return $model
if defined $model;
return $obj->SUPER::model();
}
sub hwver {
my $obj = shift;
my $hwver = $obj->hw_oid || undef;
return $hwver
if defined $hwver;
}
sub serial {
my $obj = shift;
my $serial = $obj->serial_oid || undef;
return $serial
if defined $serial;
return $obj->SUPER::serial();
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::NSC - SNMP Interface to NSC Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $obj = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $obj->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for NSC Devices
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $obj->vendor()
Returns 'nsc-oem'
=item $obj->os()
Returns 'nsc-oem'
=item $obj->os_ver()
Returns the software version.
=item $obj->model()
Returns the model extracted.
=item $obj->serial()
Returns serial number.
=cut
=back

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.64';
$VERSION = '3.70-135';
%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.64';
);
%GLOBALS = (
%SNMP::Info::GLOBALS,
%SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
'os_ver' => 'ntwsVersionString',
'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.64';
);
%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,
);
@@ -159,7 +155,7 @@ sub model {
return $id unless defined $model;
$model =~ s/^ntwsSwitch//i;
return $model;
return $model;
}
sub _ap_serial {
@@ -389,7 +385,7 @@ sub bp_index {
sub fw_mac {
my $nwss2300 = shift;
my $partial = shift;
my $serials = $nwss2300->nwss2300_sta_serial($partial) || {};
my %fw_mac;
@@ -401,7 +397,7 @@ sub fw_mac {
$fw_mac{$iid} = $mac;
}
return \%fw_mac;
return \%fw_mac;
}
sub fw_port {
@@ -494,7 +490,7 @@ sub dot11_cur_tx_pwr_mw {
my $partial = shift;
my $cur = $nwss2300->nwss2300_apif_power($partial);
my $dot11_cur_tx_pwr_mw = {};
foreach my $idx ( keys %$cur ) {
my $pwr_dbm = $cur->{$idx};
@@ -502,7 +498,7 @@ sub dot11_cur_tx_pwr_mw {
#Convert to milliWatts = 10(dBm/10)
my $pwr = int (10 ** ($pwr_dbm / 10));
$dot11_cur_tx_pwr_mw->{$idx} = $pwr;
$dot11_cur_tx_pwr_mw->{$idx} = $pwr;
}
return $dot11_cur_tx_pwr_mw;
}
@@ -514,7 +510,7 @@ sub e_index {
# Try new first, fall back to depreciated
my $ap_num = $nwss2300->nwss2300_ap_num() || $nwss2300->nwss2300_ap_dapnum() || {};
my %e_index;
# Chassis
@@ -797,7 +793,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -806,25 +802,18 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from
Provides abstraction to the configuration information obtainable from
Avaya (Trapeze) Wireless Controllers through SNMP.
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 +835,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,20 +882,16 @@ 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
These are methods that return tables of information in the form of a reference
to a hash.
=over
=over
=item $nwss2300->i_ssidlist()
@@ -1139,15 +1122,11 @@ These emulate the F<CISCO-DOT11-MIB>
(C<ntwsClSessClientSessStatsUniPktOut>)
=back
=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
@@ -1155,14 +1134,14 @@ See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
=item $nwss2300->i_index()
Returns reference to map of IIDs to Interface index.
Returns reference to map of IIDs to Interface index.
Extends C<ifIndex> to support thin APs and WLAN virtual interfaces as device
interfaces.
=item $nwss2300->interfaces()
Returns reference to map of IIDs to ports. Thin APs are implemented as device
Returns reference to map of IIDs to ports. Thin APs are implemented as device
interfaces. The thin AP MAC address and Slot ID nwss2300_apif_slot() are
used as the port identifier.
@@ -1207,7 +1186,7 @@ the interface iid.
=item $nwss2300->fw_port()
Returns reference to a hash, value being mac and
nwss2300_sta_slot() combined to match the interface iid.
nwss2300_sta_slot() combined to match the interface iid.
=item $nwss2300->fw_mac()

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.64';
$VERSION = '3.70-135';
# 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';
@@ -74,7 +73,7 @@ sub os {
sub serial {
my $netgear = shift;
my $serial = undef;
my $e_serial = $netgear->e_serial();
if (defined($e_serial)) { # This unit sports the Entity-MIB
# Find entity table entry for this unit
@@ -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';
@@ -108,8 +107,8 @@ 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.
# unique, so let's use that for port name. If all else fails,
# concatenate ifDesc and ifIndex.
sub interfaces {
my $netgear = shift;
my $partial = shift;
@@ -162,20 +161,20 @@ SNMP::Info::Layer2::Netgear - SNMP Interface to Netgear switches
=head1 AUTHOR
Bill Fenner and Zoltan Erszenyi,
Hacked in LLDP support from Baystack.pm by
Bill Fenner and Zoltan Erszenyi,
Hacked in LLDP support from Baystack.pm by
Nic Bernstein <nic@onlight.com>
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $netgear = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $netgear->class();
@@ -183,8 +182,8 @@ SNMP::Info::Layer2::Netgear - SNMP Interface to Netgear switches
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
Netgear device through SNMP. See inherited classes' documentation for
Provides abstraction to the configuration information obtainable from a
Netgear device through SNMP. See inherited classes' documentation for
inherited methods.
=head2 Inherited Classes
@@ -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
@@ -226,11 +219,11 @@ Returns 'netgear'
=item $netgear->os()
Returns 'netgear'
Returns 'netgear'
=item $netgear->model()
Returns concatenation of $e_model and $e_hwver if Entity MIB present,
Returns concatenation of $e_model and $e_hwver if Entity MIB present,
otherwise returns description()
=item $netgear->os_ver()
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -114,7 +115,7 @@ sub i_name {
# replace i_name where possible
foreach my $iid ( keys %$return ) {
next unless $return->{$iid} eq "";
$return->{$iid} = $iid;
$return->{$iid} = $iid;
}
return \%$return;
}
@@ -133,7 +134,7 @@ Christoph Neuhaus
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $nexans = new SNMP::Info(
AutoSpecify => 1,
@@ -141,7 +142,7 @@ Christoph Neuhaus
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $nexans->class();
@@ -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
@@ -223,7 +219,7 @@ See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
These are methods that return tables of information in the form of a reference
to a hash.
=over
=over
=item $nexans->i_name()

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -170,14 +170,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $orinoco = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $orinoco->class();
@@ -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()
@@ -269,7 +264,7 @@ to a hash.
=item $orinoco->interfaces()
Returns reference to map of IIDs to physical ports.
Returns reference to map of IIDs to physical ports.
=item $orinoco->i_ignore()

116
lib/SNMP/Info/Layer2/Paradyne.pm Executable file
View File

@@ -0,0 +1,116 @@
# SNMP::Info::Layer2::Paradyne - SNMP Interface to Paradyne Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer2::Paradyne;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Paradyne::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Paradyne::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::Layer2::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'paradyne';
}
sub os {
return 'prdn-os';
}
sub os_ver {
my $obj = shift;
$obj->description =~ /S\/W\sRelease\:\s+(.*)\;/;
return $1 if defined($1);
return 'unknown';
}
sub model {
my $obj = shift;
$obj->description =~ /PARADYNE\s+(.*)\;.*\;/;
return $1 if defined($1);
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Paradyne - SNMP Interface to Paradyne Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $obj = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $obj->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Paradyne Devices running IOS-like software
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $obj->vendor()
Returns 'rapadyne'
=item $obj->os()
Returns 'prdn-os'
=item $obj->layers()
Ensures that layer two is reported, at least.
=item $obj->os_ver()
Returns the software version.
=item $obj->model
Returns the model extracted.
=item $obj->serial()
Returns serial number.
=cut
=back

108
lib/SNMP/Info/Layer2/Proscend.pm Executable file
View File

@@ -0,0 +1,108 @@
# SNMP::Info::Layer2::Proscend - SNMP Interface to Proscend Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer2::Proscend;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Proscend::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Proscend::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::Layer2::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'proscend';
}
sub os {
return 'proscend';
}
sub model {
my $obj = shift;
return $obj->SUPER::model();
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Proscend - SNMP Interface to Proscend Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $obj = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $obj->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Proscend Devices
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head2 Inherited Classes' MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $obj->vendor()
Returns 'proscend'
=item $obj->os()
Returns 'proscend'
=item $obj->os_ver()
Returns the software version.
=item $obj->model()
Returns the model extracted.
=item $obj->serial()
Returns serial number.
=cut
=back

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.64';
$VERSION = '3.70-135';
%MIBS = (%SNMP::Info::Layer2::MIBS, 'SIXNET-MIB' => 'sxid',);
@@ -96,7 +97,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -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

124
lib/SNMP/Info/Layer2/Telindus.pm Executable file
View File

@@ -0,0 +1,124 @@
# SNMP::Info::Layer2::Telindus - SNMP Interface to Telindus Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer2::Telindus;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Telindus::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Telindus::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
# 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, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'telindus';
}
sub os {
return 'telind-os';
}
sub os_ver {
my $obj = shift;
$obj->description =~ /\$Telindus\s(\d+)(\$\s(.*)|\s(.*)\$)\s(T\d+\/\d+)/;
return $5
if defined $5;
return $obj->SUPER::os_ver();
}
sub model {
my $obj = shift;
$obj->description =~ /\$Telindus\s(\d+)(\$\s(.*)|\s(.*)\$)\s(T\d+\/\d+)/;
if (defined $1 and defined $3) {
return $1 . ' ' . $3;
}
elsif (defined $1 and defined $4) {
return $1 . ' ' . $4;
}
return $obj->SUPER::model();
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Telindus - SNMP Interface to Telindus Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $obj = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $obj->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Telindus Devices
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $obj->vendor()
Returns 'zyxel'
=item $obj->os()
Returns 'zynos'
=item $obj->layers()
Ensures that layer two is reported, at least.
=item $obj->os_ver()
Returns the software version.
=item $obj->model
Returns the model extracted.
=cut
=back

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.64';
$VERSION = '3.70-135';
%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.64';
);
%GLOBALS = (
%SNMP::Info::GLOBALS,
%SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
'os_ver' => 'trpzVersionString',
'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.64';
);
%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,
);
@@ -163,7 +154,7 @@ sub model {
return $id unless defined $model;
$model =~ s/^wirelessLANController//i;
return $model;
return $model;
}
sub _ap_serial {
@@ -393,7 +384,7 @@ sub bp_index {
sub fw_mac {
my $trapeze = shift;
my $partial = shift;
my $serials = $trapeze->trapeze_sta_serial($partial) || {};
my %fw_mac;
@@ -405,7 +396,7 @@ sub fw_mac {
$fw_mac{$iid} = $mac;
}
return \%fw_mac;
return \%fw_mac;
}
sub fw_port {
@@ -498,7 +489,7 @@ sub dot11_cur_tx_pwr_mw {
my $partial = shift;
my $cur = $trapeze->trapeze_apif_power($partial);
my $dot11_cur_tx_pwr_mw = {};
foreach my $idx ( keys %$cur ) {
my $pwr_dbm = $cur->{$idx};
@@ -506,7 +497,7 @@ sub dot11_cur_tx_pwr_mw {
#Convert to milliWatts = 10(dBm/10)
my $pwr = int (10 ** ($pwr_dbm / 10));
$dot11_cur_tx_pwr_mw->{$idx} = $pwr;
$dot11_cur_tx_pwr_mw->{$idx} = $pwr;
}
return $dot11_cur_tx_pwr_mw;
}
@@ -518,7 +509,7 @@ sub e_index {
# Try new first, fall back to depreciated
my $ap_num = $trapeze->trapeze_ap_num() || $trapeze->trapeze_ap_dapnum() || {};
my %e_index;
# Chassis
@@ -801,7 +792,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -810,25 +801,18 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from
Provides abstraction to the configuration information obtainable from
Juniper (Trapeze) Wireless Controllers through SNMP.
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 +834,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,20 +881,16 @@ 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
These are methods that return tables of information in the form of a reference
to a hash.
=over
=over
=item $trapeze->i_ssidlist()
@@ -1143,15 +1121,11 @@ These emulate the F<CISCO-DOT11-MIB>
(C<trpzClSessClientSessStatsUniPktOut>)
=back
=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.
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=head2 Overrides
@@ -1159,14 +1133,14 @@ See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
=item $trapeze->i_index()
Returns reference to map of IIDs to Interface index.
Returns reference to map of IIDs to Interface index.
Extends C<ifIndex> to support thin APs and WLAN virtual interfaces as device
interfaces.
=item $trapeze->interfaces()
Returns reference to map of IIDs to ports. Thin APs are implemented as device
Returns reference to map of IIDs to ports. Thin APs are implemented as device
interfaces. The thin AP MAC address and Slot ID trapeze_apif_slot() are
used as the port identifier.
@@ -1211,7 +1185,7 @@ the interface iid.
=item $trapeze->fw_port()
Returns reference to a hash, value being mac and
trapeze_sta_slot() combined to match the interface iid.
trapeze_sta_slot() combined to match the interface iid.
=item $trapeze->fw_mac()

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.64';
$VERSION = '3.70-135';
%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 {
@@ -130,11 +150,11 @@ sub model {
next unless defined $prod;
return $prod;
}
my $desc = $ubnt->description() || '';
## Pull Model from beginning of description, separated by comma (EdgeSwitch)
if((lc $desc) =~ /^edgeswitch/){
if((lc $desc) =~ /^edgeswitch/){
my @mydesc = split(/, /, $desc);
return $mydesc[0];
}
@@ -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:
@@ -151,15 +171,15 @@ sub model {
my $ethCount = 0;
my $switchCount = 0;
#my $sfpCount = 0;
#my $poeCount = 0;
my $memTotalReal = $ubnt->memTotalReal;
#my $poeCount = 0;
my $memTotalReal = $ubnt->memTotalReal;
my $cpuLoad = $ubnt->hrProcessorLoad;
my $cpuCount = 0;
## My perl is lacking. Not sure if there's a more efficient way to find the cpu count
foreach my $iid ( keys %$cpuLoad ) {
$cpuCount++;
}
my $ifDescs = $ubnt->ifDescr;
foreach my $iid ( keys %$ifDescs ) {
my $ifDesc = $ifDescs->{$iid};
@@ -172,7 +192,7 @@ sub model {
}
}
## If people have other models to further fine-tune this logic that would be great.
## If people have other models to further fine-tune this logic that would be great.
if($ethCount eq 9){
## Should be ER Infinity
return "EdgeRouter Infinity"
@@ -190,7 +210,7 @@ sub model {
## failback string
return "EdgeRouter eth-$ethCount switch-$switchCount mem-$memTotalReal cpuNum-$cpuCount";
}
}
}
@@ -221,14 +241,12 @@ sub mac {
# syntax stolen from sub munge_mac in SNMP::Info
$mac = lc join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){5}[0-9A-F][0-9A-F]$/i;
return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){5}[0-9A-F][0-9A-F]$/i;
}
}
# MAC malformed or missing
return;
}
sub interfaces {
@@ -288,14 +306,14 @@ Max Kosmach
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $ubnt = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $ubnt->class();
@@ -306,11 +324,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
@@ -339,11 +352,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()

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.64';
$VERSION = '3.70-135';
# 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;
}
@@ -103,7 +105,7 @@ sub ip {
my $found_ip;
# Since hashes are random add sort so we get the same address each time
# if there happens to be more than one. Will return highest numbered address
# if there happens to be more than one. Will return highest numbered address
foreach my $ip ( sort keys %{$ip_hash} ) {
$found_ip = $ip
if ( defined $ip
@@ -124,23 +126,23 @@ Dmitry Sergienko (C<dmitry@trifle.net>)
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $zyxel = new SNMP::Info(
AutoSpecify => 1,
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
Provides abstraction to the configuration information obtainable from a
ZyXEL device through SNMP. See inherited classes' documentation for
Provides abstraction to the configuration information obtainable from a
ZyXEL device through SNMP. See inherited classes' documentation for
inherited methods.
=head2 Inherited Classes
@@ -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()

126
lib/SNMP/Info/Layer2/Zyxel.pm Executable file
View File

@@ -0,0 +1,126 @@
# SNMP::Info::Layer2::Zyxel - SNMP Interface to Zyxel Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer2::Zyxel;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Zyxel::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Zyxel::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
# 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, );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
'serial_oid' => 'transmission.94.1.1.2.1.1.1',
);
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
sub vendor {
return 'zyxel';
}
sub os {
return 'zynos';
}
sub os_ver {
my $obj = shift;
return 'unknown';
}
sub model {
my $obj = shift;
my $id = $obj->id;
if ($id =~ /890\.1\.5\.11\.11$/) {
return 'IES-1000 AAM1212-51';
}
return 'unknown';
}
sub serial {
my $obj = shift;
return $obj->serial_oid;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Zyxel - SNMP Interface to Zyxel Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $obj = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $obj->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Zyxel Devices running IOS-like software
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $obj->vendor()
Returns 'zyxel'
=item $obj->os()
Returns 'zynos'
=item $obj->layers()
Ensures that layer two is reported, at least.
=item $obj->os_ver()
Returns the software version.
=item $obj->model
Returns the model extracted.
=item $obj->serial()
Returns serial number.
=cut
=back

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.64';
$VERSION = '3.70-135';
%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.64';
%SNMP::Info::LLDP::MIBS,
'IP-MIB' => 'ipNetToMediaIfIndex',
'OSPF-MIB' => 'ospfRouterId',
'ISIS-MIB' => 'isisSysID',
'BGP4-MIB' => 'bgpIdentifier',
);
@@ -75,6 +78,7 @@ $VERSION = '3.64';
%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.64';
%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.64';
'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.64';
%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.64';
'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;
@@ -351,14 +407,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $l3 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $l3->class();
@@ -381,11 +437,11 @@ This class is usually used as a superclass for more specific device classes
listed under SNMP::Info::Layer3::* Please read all docs under SNMP::Info
first.
Provides generic methods for accessing SNMP data for Layer 3 network devices.
Includes support for Layer2+3 devices.
Provides generic methods for accessing SNMP data for Layer 3 network devices.
Includes support for Layer2+3 devices.
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
after determining a more specific class using the method above.
my $l3 = new SNMP::Info::Layer3(...);
@@ -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
@@ -461,7 +527,7 @@ Returns the BGP identifier of the local system
=item $l3->bgp_local_as()
Returns the local autonomous system number
Returns the local autonomous system number
(C<bgpLocalAs.0>)
@@ -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
@@ -533,13 +607,13 @@ to a hash.
=item $l3->interfaces()
Returns the map between SNMP Interface Identifier (iid) and physical port
name.
name.
Only returns those iids that have a description listed in $l3->i_description()
=item $l3->i_name()
Returns reference to hash of iid to human set name.
Returns reference to hash of iid to human set name.
Defaults to C<ifName>, but checks for an C<ifAlias>
@@ -547,10 +621,10 @@ Defaults to C<ifName>, but checks for an C<ifAlias>
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.
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
@@ -560,7 +634,7 @@ See L<SNMP::Info::Etherlike> for the el_index() and el_duplex() methods.
=item $l3->at_index()
Returns reference to hash. Maps ARP table entries to Interface IIDs
Returns reference to hash. Maps ARP table entries to Interface IIDs
(C<ipNetToMediaIfIndex>)
@@ -569,7 +643,7 @@ the deprecated C<atIfIndex>.
=item $l3->at_paddr()
Returns reference to hash. Maps ARP table entries to MAC addresses.
Returns reference to hash. Maps ARP table entries to MAC addresses.
(C<ipNetToMediaPhysAddress>)
@@ -578,7 +652,7 @@ the deprecated C<atPhysAddress>.
=item $l3->at_netaddr()
Returns reference to hash. Maps ARP table entries to IP addresses.
Returns reference to hash. Maps ARP table entries to IP addresses.
(C<ipNetToMediaNetAddress>)
@@ -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

155
lib/SNMP/Info/Layer3/Accton.pm Executable file
View File

@@ -0,0 +1,155 @@
# SNMP::Info::Layer3::Accton - SNMP Interface to Accton Devices
#
# Copyright (c) 2020 by 135.
package SNMP::Info::Layer3::Accton;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Accton::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Accton::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
'os_ver_oid_259_6_10_94' => 'enterprises.259.6.10.94.1.1.5.4.0',
'os_ver_oid_259_8_1_5' => 'enterprises.259.8.1.5.1.1.5.4.0',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
);
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
sub vendor {
return 'accton';
}
sub os {
return 'accton-os';
}
sub model {
my $obj = shift;
my $hw = $obj->c_hw_ver() || undef;
return $obj->SUPER::description() . ' HW:' . $hw if (defined $hw);
return $obj->SUPER::description()
#return $obj->SUPER::model();
}
sub serial {
my $obj = shift;
my $sess = $obj->session();
my $serial = $sess->get($obj->id() . '.1.1.3.1.10.1') || undef;
return $serial;
}
sub hwver {
my $obj = shift;
my $sess = $obj->session();
my $hw = $sess->get($obj->id() . '.1.1.3.1.2.1') || undef;
return $hw;
}
sub os_ver {
my $obj = shift;
my $sess = $obj->session();
my $os_ver = $sess->get($obj->id() . '.1.1.5.4.0') || undef;
my $brom = $sess->get($obj->id() . '.1.1.3.1.5.1') || undef;
my $loader = $sess->get($obj->id() . '.1.1.3.1.4.1') || undef;
my $full_os_ver = $os_ver if defined($os_ver) || return;
$full_os_ver .= ' bootrom:' . $brom if defined($brom);
$full_os_ver .= ' loader:' . $loader if defined($loader);
return $full_os_ver;
}
sub description {
my $obj = shift;
my $descr = undef;
my $sess = $obj->session();
$descr .= $obj->SUPER::description() . "\n";
$descr .= "Serial Number: " . $sess->get($obj->id() . '.1.1.3.1.10.1') . "\n";
$descr .= "Hardware Version: " . $sess->get($obj->id() . '.1.1.3.1.2.1') . "\n";
$descr .= "EPLD Version: " . $sess->get($obj->id() . '.1.1.3.1.15.1') . "\n";
$descr .= "Loader Version: " . $sess->get($obj->id() . '.1.1.3.1.4.1') . "\n";
$descr .= "Boot ROM Version: " . $sess->get($obj->id() . '.1.1.3.1.5.1') . "\n";
$descr .= "Operation Code Version: " . $sess->get($obj->id() . '.1.1.5.4.0') . "\n";
return $descr;
#$sess->get($obj->id() . '.1.1.5.4.0')
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::Accton - SNMP Interface to Accton Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $obj = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $obj->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Accton Devices
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=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 $obj->vendor()
Returns 'accton'
=item $obj->os()
Returns 'accton-os'
=item $obj->os_ver()
Returns the software version.
=item $obj->model()
Returns the model extracted.
=item $obj->serial()
Returns serial number.
=cut
=back

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -224,14 +224,14 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $aironet = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $aironet->class();
@@ -257,7 +257,7 @@ This class is for devices running Cisco IOS software (newer)
=back
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
after determining a more specific class using the method above.
my $aironet = new SNMP::Info::Layer3::Aironet(...);
@@ -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
@@ -296,7 +293,7 @@ C<awcEtherDuplex.0>
=item $aironet->mac()
Gives the MAC Address of the wireless side
Gives the MAC Address of the wireless side
C<dot11StationID.2>

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -96,6 +96,8 @@ sub model {
my $id = $alu->id();
my $model = &SNMP::translateObj($id);
return 'ASAM 73xx' if $id =~ /637\.61\.1$/;
return $id unless defined $model;
$model =~ s/^device//;
@@ -108,14 +110,16 @@ sub os {
}
sub vendor {
return 'alcatel-lucent';
return 'alcatel';
}
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();
@@ -306,7 +310,7 @@ Bill Fenner
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $alu = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -314,7 +318,7 @@ Bill Fenner
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $alu->class();
@@ -370,7 +374,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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -163,14 +163,14 @@ sub ps1_status {
my $alteon = shift;
my $old_ps = $alteon->old_ps1_stat();
my $new_ps = $alteon->new_ps_stat();
return $old_ps if $old_ps;
if ($new_ps) {
return 'ok' if ($new_ps eq 'singlePowerSupplyOk');
return 'failed' if ($new_ps eq 'firstPowerSupplyFailed');
}
return;
}
@@ -178,9 +178,9 @@ sub ps2_status {
my $alteon = shift;
my $old_ps = $alteon->old_ps2_stat();
my $new_ps = $alteon->new_ps_stat();
return $old_ps if $old_ps;
if ($new_ps) {
return 'ok' if ($new_ps eq 'doublePowerSupplyOk');
return 'failed' if ($new_ps eq 'secondPowerSupplyFailed');
@@ -242,19 +242,19 @@ sub i_duplex {
sub i_duplex_admin {
my $alteon = shift;
my $ag_pref
my $ag_pref
= $alteon->new_ag_p_cfg_pref()
|| $alteon->old_ag_p_cfg_pref()
|| {};
my $ag_fe_auto
my $ag_fe_auto
= $alteon->new_ag_p_cfg_fe_auto()
|| $alteon->old_ag_p_cfg_fe_auto()
|| {};
my $ag_fe_mode
my $ag_fe_mode
= $alteon->new_ag_p_cfg_fe_mode()
|| $alteon->old_ag_p_cfg_fe_mode()
|| {};
my $ag_ge_auto
my $ag_ge_auto
= $alteon->new_ag_p_cfg_ge_auto()
|| $alteon->old_ag_p_cfg_ge_auto()
|| {};
@@ -395,7 +395,7 @@ sub i_vlan_membership_untagged {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
@@ -432,14 +432,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $alteon = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $alteon->class();
@@ -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
@@ -581,7 +576,7 @@ IDs. These are the VLANs which are members of the egress list for the port.
Example:
my $interfaces = $alteon->interfaces();
my $vlans = $alteon->i_vlan_membership();
foreach my $iid (sort keys %$interfaces) {
my $port = $interfaces->{$iid};
my $vlan = join(',', sort(@{$vlans->{$iid}}));

View File

@@ -1,23 +1,22 @@
# SNMP::Info::Layer3::Altiga
# $Id$
#
# Copyright (c) 2008 Jeroen van Ingen Schenau
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# 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
# * 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
#
# 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
@@ -31,22 +30,23 @@
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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
'ALTIGA-VERSION-STATS-MIB' => 'alVersionString',
'ALTIGA-SESSION-STATS-MIB' => 'alActiveSessionCount',
'ALTIGA-HARDWARE-STATS-MIB' => 'alHardwarePs1Type',
'ALTIGA-HARDWARE-STATS-MIB' => 'alHardwarePs1Type',
);
%GLOBALS = (
@@ -70,7 +70,7 @@ $VERSION = '3.64';
'fan1_alarm' => 'alHardwareFan1RpmAlarm',
'fan2_alarm' => 'alHardwareFan2RpmAlarm',
'fan3_alarm' => 'alHardwareFan3RpmAlarm',
);
%FUNCS = (
@@ -189,7 +189,7 @@ sub interfaces {
if ($int_include_vpn) {
my $tun_type = $altiga->vpn_sess_protocol();
my $peer = $altiga->vpn_sess_peer_ip();
my $remote = $altiga->vpn_sess_rem_ip();
my $remote = $altiga->vpn_sess_rem_ip();
my $group = $altiga->vpn_sess_gid();
foreach my $tunnel (keys %$tun_type) {
if ($type_class->{$tun_type->{$tunnel}} eq 1) {
@@ -197,7 +197,7 @@ sub interfaces {
}
}
}
return \%interfaces;
}
@@ -275,14 +275,14 @@ Jeroen van Ingen Schenau
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $altiga = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'my_vpn_host',
Community => 'public',
Version => 1
)
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $altiga->class();
@@ -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.
@@ -366,7 +372,7 @@ to a hash.
=item $altiga->interfaces()
This method overrides the interfaces() method inherited from SNMP::Info.
It provides a mapping between the Interface Table Index (iid) and the physical
It provides a mapping between the Interface Table Index (iid) and the physical
port name, adding a port number to the port name to prevent duplicate names.
=item $altiga->i_lastchange()

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.64';
$VERSION = '3.70-135';
%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.64';
%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 {
@@ -146,7 +143,7 @@ Bill Fenner
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $arista = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -154,7 +151,7 @@ Bill Fenner
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $arista->class();
@@ -174,8 +171,6 @@ Subclass for Arista Networks EOS-based devices
=item SNMP::Info::MAU
=item SNMP::Info::LLDP
=back
=head2 Required MIBs
@@ -192,8 +187,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 +197,7 @@ These are methods that return scalar values from SNMP
=item $arista->vendor()
Returns 'Arista Networks, Inc.'
Returns 'arista'
=item $arista->model()
@@ -230,10 +223,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 +258,4 @@ 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
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=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.64';
$VERSION = '3.70-135';
%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.64';
%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.64';
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
# WLSR-AP-MIB::wlsrConfigTable
'aruba_ap_ssidbcast' => 'wlsrHideSSID',
@@ -143,7 +139,6 @@ $VERSION = '3.64';
%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;
@@ -1403,7 +1397,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -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
@@ -1466,7 +1455,7 @@ These are methods that return scalar value from SNMP
=item $aruba->model()
Returns model type. Cross references $aruba->id() with product IDs in the
Returns model type. Cross references $aruba->id() with product IDs in the
Aruba MIB.
=item $aruba->vendor()
@@ -1540,7 +1529,7 @@ false.
=item $aruba->i_ssidmac()
With the same keys as i_ssidlist, returns the Basic service set
identification (BSSID), MAC address, the AP is using for the SSID.
identification (BSSID), MAC address, the AP is using for the SSID.
=item $aruba->cd11_mac()
@@ -1578,7 +1567,7 @@ Total packets transmitted by the wireless client.
=item $aruba->i_index()
Returns reference to map of IIDs to Interface index.
Returns reference to map of IIDs to Interface index.
Extends C<ifIndex> to support APs as device interfaces.
@@ -1614,7 +1603,7 @@ interfaces.
=item $aruba->i_up_admin()
Returns reference to map of IIDs to administrative status of the interface.
Returns C<ifAdminStatus> for Ethernet interfaces and C<wlanAPStatus>
Returns C<ifAdminStatus> for Ethernet interfaces and C<wlanAPStatus>
for AP interfaces.
=item $aruba->i_mac()

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.64';
$VERSION = '3.70-135';
%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.64';
);
%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.64';
);
%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
@@ -1389,14 +1382,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $bayrs = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $bayrs->class();
@@ -1404,21 +1397,12 @@ Eric Miller
=head1 DESCRIPTION
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(...);
Abstraction subclass for routers running Avaya/Nortel 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
@@ -1458,7 +1438,7 @@ These are methods that return scalar value from SNMP
Returns the model of the BayRS router. Will translate between the MIB model
and the common model with this map :
C<%MODEL_MAP = (
C<%MODEL_MAP = (
'acefn' => 'FN',
'aceln' => 'LN',
'acecn' => 'CN',
@@ -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.
@@ -1529,8 +1501,8 @@ passed but the entire table will be returned.
Returns reference to the map between IID and physical Port.
The physical port name is stripped to letter and numbers to signify
port type and slot port (S11) if the default platform naming was
maintained. Otherwise the port is the interface description.
port type and slot port (S11) if the default platform naming was
maintained. Otherwise the port is the interface description.
=item $bayrs->i_name()
@@ -1540,7 +1512,7 @@ interfaces.
=item $bayrs->i_duplex()
Returns reference to hash. Maps port operational duplexes to IIDs for
Ethernet interfaces.
Ethernet interfaces.
=item $bayrs->i_duplex_admin()
@@ -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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -55,7 +56,7 @@ $VERSION = '3.64';
%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()
@@ -154,12 +155,6 @@ See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Overrides
=over
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.

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.64';
$VERSION = '3.70-135';
# 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
@@ -206,7 +205,7 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $c3550 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -214,7 +213,7 @@ Max Baker
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $c3550->class();
@@ -222,17 +221,12 @@ Max Baker
=head1 DESCRIPTION
Abstraction subclass for Cisco Catalyst 3550 Layer 2/3 Switches.
Abstraction subclass for Cisco Catalyst 3550 Layer 2/3 Switches.
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()
@@ -327,7 +321,7 @@ Crosses $c3550->p_port() with $c3550->p_duplex() to utilize port C<ifIndex>.
Example:
my %if_map = reverse %{$c3550->interfaces()};
$c3550->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
$c3550->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
or die "Couldn't change port duplex. ",$c3550->error(1);
=back

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.64';
$VERSION = '3.70-135';
%MIBS = (
%SNMP::Info::MAU::MIBS,
@@ -111,7 +110,7 @@ Bill Fenner
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $c4000 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -119,7 +118,7 @@ Bill Fenner
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $c4000->class();
@@ -127,12 +126,7 @@ Bill Fenner
=head1 DESCRIPTION
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(...);
Abstraction subclass for Cisco Catalyst 4000 Layer 2/3 Switches.
=head2 Inherited Classes

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.64';
$VERSION = '3.70-135';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
@@ -179,7 +176,7 @@ sub set_i_duplex_admin {
my $c6500 = shift;
my ( $duplex, $iid ) = @_;
if ( $c6500->is_virtual_switch() ) {
# VSS -> MAU
@@ -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
@@ -252,7 +250,7 @@ Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $c6500 = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -260,7 +258,7 @@ Max Baker
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $c6500->class();
@@ -268,16 +266,15 @@ Max Baker
=head1 DESCRIPTION
Abstraction subclass for Cisco Catalyst 6500 Layer 2/3 Switches.
Abstraction subclass for Cisco Catalyst 6500 Layer 2/3 Switches.
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()
@@ -382,7 +381,7 @@ Crosses $c6500->p_port() with $c6500->p_duplex() to utilize port C<ifIndex>.
Example:
my %if_map = reverse %{$c6500->interfaces()};
$c6500->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
$c6500->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'})
or die "Couldn't change port duplex. ",$c6500->error(1);
=item $c6500->set_i_speed_admin(speed, ifIndex)
@@ -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.

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