Compare commits

...

95 Commits
3.57 ... 3.65

Author SHA1 Message Date
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
Oliver Gorwits
d7d747af67 release 3.64 2018-12-30 10:24:59 +00:00
Oliver Gorwits
41e9332420 update MANIFEST 2018-12-30 09:56:30 +00:00
Oliver Gorwits
23613800b2 add Module::Find to test_requires 2018-12-30 09:55:32 +00:00
Oliver Gorwits
8100461520 #289 add BSD licence to files where missing 2018-12-30 09:46:50 +00:00
Oliver Gorwits
07afff6ef0 new Class test wrapper 2018-12-29 20:41:10 +00:00
Oliver Gorwits
400c26a1d7 add NetSNMP::default_store test req 2018-12-29 14:46:04 +00:00
nick n
b6f7df332b no space in manpage link to ciscoips (#290) 2018-12-29 11:03:14 +00:00
nick n
e5eee009b3 and even more sourceforge -> github references (#288) 2018-12-29 11:02:58 +00:00
nick n
bb731c6368 sourceforge links replacing (#287)
more sourceforge -> github changes
2018-12-29 11:02:41 +00:00
nick n
a418ba0a1e replace sourceforge references with working links (#286)
the FAQ: section discusses cvs, i guess that is no longer relevant either.
2018-12-29 11:02:23 +00:00
nick n
cea462662d mib link change + spelling (#285)
redirect to github for netdisco-mibs instead of sourceforge.

rest are some spelling fixes & setting things alphabetically.
2018-12-29 11:01:47 +00:00
nick n
f3a8b1171b aerohive test module, missing part for #282 (#284)
* aerohive test module

add mac() test
set serial inline with real serial
add mgt0,wifi0 & wifi1 interfaces
set mac address correctly as compared to real aerohive devices

* typo
2018-12-29 11:01:16 +00:00
nick n
bb773ccc0a add preliminary support for exinda / gfi traffic shapers (#283)
* exinda support

* exinda support

* add exinda hint

needed to identify exinda devices.

* mentin exinda in overview and link docs

* overwrite layers to l2/3/4/7

* get uptime from exinda mib

now matches uptime reported by cli & web interface.

* single quotes preferred

* to much copy/paste

* merge 3.63

* some more functions added. also general cleanup

* Update .travis.yml

* a few fixes

* Update .travis.yml

* Update .travis.yml

* revert

* revert
2018-12-29 11:00:08 +00:00
nick n
61dc499369 attribute change (#281)
pretty please?
alias or real name, both work for me. thx
2018-12-29 10:58:48 +00:00
Oliver Gorwits
d806795a86 Always notify from Travis to IRC and email on any code commit 2018-12-28 18:34:57 +00:00
nick n
91f92f0fb9 aerohive base mac lookup and some minor doc nitpicking (#282) 2018-12-17 09:24:30 +01:00
Oliver Gorwits
bde8da5e6b release 3.63 2018-11-25 23:27:42 +00:00
Oliver Gorwits
f134368e6d try different testing 2018-11-25 23:16:10 +00:00
Oliver Gorwits
a6ff166e4e attempt to fix test? 2018-11-21 11:37:44 +00:00
Oliver Gorwits
3ea6bd6217 fix docs 2018-11-21 10:52:45 +00:00
Oliver Gorwits
6405ebfc3e #271 update os_ver for Alcatel-Lucent (stromsoe) 2018-11-21 10:48:05 +00:00
Oliver Gorwits
94ab114cd3 #273 remove old ADTRAN modules not in netdisco-mibs 2018-11-21 10:45:46 +00:00
nick n
954f58fdbc return aerohive serial (#280)
no idea why this is needed, but without this change no serial is returned:

netdisco-do show -d hiveap207 -e serial
[25474] 2018-11-09 19:45:09  info App::Netdisco version 2.039031 loaded.
[25474] 2018-11-09 19:45:10  info show: [10.40.252.14]/serial started at Fri Nov  9 20:45:10 2018
undef
[25474] 2018-11-09 19:45:10  info show: finished at Fri Nov  9 20:45:10 2018
[25474] 2018-11-09 19:45:10  info show: status done: Showed serial response from 10.40.252.14

netdisco-do show -d hiveap207 -e Layer2::Aerohive::serial
[25491] 2018-11-09 19:45:15  info App::Netdisco version 2.039031 loaded.
[25491] 2018-11-09 19:45:15  info show: [10.40.252.14]/Layer2::Aerohive::serial started at Fri Nov  9 20:45:15 2018
undef
[25491] 2018-11-09 19:45:16  info show: finished at Fri Nov  9 20:45:16 2018
[25491] 2018-11-09 19:45:16  info show: status done: Showed serial response from 10.40.252.14



with the change:
netdisco-do show -d hiveap207 -e Layer2::Aerohive::serial
[23072] 2018-11-09 19:44:06  info App::Netdisco version 2.039031 loaded.
[23072] 2018-11-09 19:44:07  info show: [10.40.252.14]/Layer2::Aerohive::serial started at Fri Nov  9 20:44:07 2018
02501610110274
[23072] 2018-11-09 19:44:07  info show: finished at Fri Nov  9 20:44:07 2018
[23072] 2018-11-09 19:44:07  info show: status done: Showed serial response from 10.40.252.14

netdisco-do show -d hiveap207 -e serial
[23075] 2018-11-09 19:44:13  info App::Netdisco version 2.039031 loaded.
[23075] 2018-11-09 19:44:13  info show: [10.40.252.14]/serial started at Fri Nov  9 20:44:13 2018
02501610110274
[23075] 2018-11-09 19:44:14  info show: finished at Fri Nov  9 20:44:14 2018
[23075] 2018-11-09 19:44:14  info show: status done: Showed serial response from 10.40.252.14
2018-11-21 10:37:19 +00:00
nick n
8232e783fa use correct module (#279)
The test code for Layer2::Aerohive should reference the Layer2::Aerohive class, not Layer1::Allied.
2018-11-13 08:57:02 +01:00
Eric A. Miller
5aa21deb07 release 3.62 2018-10-29 19:09:26 -04:00
Alexander Hartmaier
b7ac11222a Support for Cisco Firepower Threat Defense (#278)
When sending SNMP requests to one of the data interfaces of an FTD you're
talking to a Cisco ASA running as a process called 'lina'.
2018-10-25 10:30:43 +02:00
Jeroen van Ingen
b24da8c380 Add tests for peth_port_ifindex in Juniper.pm 2018-10-08 12:37:23 +02:00
pyro3d
ab2be759af Document peth_port_ifindex for Junipers (#275)
Document peth_port_ifindex in Juniper.pm
2018-10-08 10:56:38 +02:00
Jeroen van Ingen Schenau
78e5528c0d Merge pull request #270 from avantops/mikrotik-model-fix
Add support for additional Mikrotik models
2018-10-08 09:45:27 +02:00
Jeroen van Ingen Schenau
01ce4238dd Merge pull request #274 from pyro3d/master
Add peth_port_ifindex override for Junipers.
2018-10-08 09:44:00 +02:00
Ryan Gasik
a82e8e32a0 Add peth_port_ifindex override for Junipers. 2018-10-06 20:53:06 -07:00
Jeroen van Ingen
770ab9c8ec Add 3810M, 2930M, 2930F and 2540 series switches 2018-09-10 10:28:42 +02:00
avantops
f63a71910c Add support for additional Mikrotik models
Add additional regex to catch additional valid Mikrotik hardware models.
2018-06-27 00:05:42 -07:00
Jeroen van Ingen Schenau
8fa27f8844 Merge pull request #265 from fschlich/patch-1
fix typos in Huawei.pm
2018-05-14 17:59:09 +02:00
Florian Schlichting
ea59fa2c2d fix typos in Huawei.pm
as found by Debian's lintian QA checker
2018-05-14 17:47:34 +02:00
Eric A. Miller
a1769aa905 release 3.61 2018-05-09 23:17:09 -04:00
Eric A. Miller
78119d6547 #252 Unpack binary MAC if present in cdp_port
Fix SNMPv1 cdp_run check
2018-05-09 22:49:53 -04:00
Eric A. Miller
f27d76fa9d Use munge_mac() to unpack MACs 2018-05-09 22:44:24 -04:00
Eric A. Miller
4f8534169a Use NetAddr::IP::Lite to determine if EIGRP peer is a valid IP 2018-05-09 22:42:59 -04:00
Eric A. Miller
f531c9d9a7 #261 EIGRP Peer Neighbor Formatting / Munge 2018-05-07 23:08:19 -04:00
Eric A. Miller
1a80138026 #195 IP address table - IPv4 Address Table will use the IP-MIB::ipAddressTable if the deprecated IP-MIB::ipAddrTable doesn't return results 2018-05-07 21:09:16 -04:00
Eric A. Miller
4ff904f3cd If we were given an IPv6 transport-specifier strip it before trying to resolve it
Since DestHost defaults to 'localhost' die instead of returning undef from resolve_desthost()
2018-05-06 20:26:51 -04:00
Eric A. Miller
721193ccb8 #255 IPv6 support 2018-05-06 14:02:35 -04:00
Eric A. Miller
b263fa4375 release 3.60 2018-05-06 11:01:00 -04:00
Eric A. Miller
4681004b52 Fix potential issue in enumeration of LLDP reported system capabilities supported by the remote system due to the 'lldpRemSysCapSupported' leaf name being defined in multiple MIBs 2018-05-06 10:51:19 -04:00
Eric A. Miller
0ab688964f Don't capture 'Hive' if it exists in aerohive AP model name 2018-05-06 09:32:35 -04:00
Oliver Gorwits
7e0ef60e24 update changelog 2018-05-05 16:27:09 +01:00
inphobia
41339c8df4 detect ap250 & ap230 models (#263)
it seems aerohive changed the their model names in snmp, so they no langer always begin with "hive". i have access to models 120, 121, 230 & 250. this is their sysdescr:

SNMPv2-MIB::sysDescr.0 = STRING: AP250, HiveOS 8.3r2 build-191018
SNMPv2-MIB::sysDescr.0 = STRING: AP230, HiveOS 6.5r8b build-179369
SNMPv2-MIB::sysDescr.0 = STRING: HiveAP121, HiveOS 6.5r8b build-179369
SNMPv2-MIB::sysDescr.0 = STRING: HiveAP120, HiveOS 6.5r3 Honolulu build2530

this fixes empty model names for the 230 & 250 ones while still supporting 120 & 121

Class SNMP::Info::Layer2::Aerohive (3.59) loaded from SNMP::Info 3.59.
Connected to hiveap211.
Detected Class: SNMP::Info::Layer2::Aerohive
Using    Class: SNMP::Info::Layer2::Aerohive (-c to change)

Fetching base info...

vendor               aerohive
model                AP250
os                   hiveos
os_ver               8.3r2
description          AP250, HiveOS 8.3r2 build-191018
contact              admin@aerohive.com



Class SNMP::Info::Layer2::Aerohive (3.59) loaded from SNMP::Info 3.59.
Connected to hiveap113.
Detected Class: SNMP::Info::Layer2::Aerohive
Using    Class: SNMP::Info::Layer2::Aerohive (-c to change)

Fetching base info...

vendor               aerohive
model                HiveAP121
os                   hiveos
os_ver               6.5r8b
description          HiveAP121, HiveOS 6.5r8b build-179369
contact              admin@aerohive.com
2018-05-05 16:19:39 +01:00
Eric A. Miller
119c077d25 Some devices use ifIndex when LLDP remote type is 'local', don't lldpRemPortId in these cases when it contains all digits
Cover LLDP class with tests
2018-05-04 17:23:44 -04:00
Eric A. Miller
9af3f7c579 #140 LLDP fixes - treat remote port type of 'local' as an interface name 2018-05-02 22:47:46 -04:00
Eric A. Miller
e7c93b7abd release 3.59 2018-05-01 23:18:16 -04:00
Eric A. Miller
20b655c7a2 POD 2018-05-01 23:13:00 -04:00
Eric A. Miller
9fca5b1e42 Change _lldp_addr_index to a method so it can be properly overridden in subclasses 2018-05-01 23:01:56 -04:00
Eric A. Miller
1c581f8e8f Capture base MAC in L3::Huawei
Capture fan and power supply status in L3::Huawei when description is not available
2018-05-01 22:19:39 -04:00
Eric A. Miller
8d35e15624 #214 SNMP::Info Device models Genua, ATMedia, Liebert 2018-04-30 23:36:47 -04:00
Eric A. Miller
cf42fe1496 release 3.58 2018-04-29 23:47:25 -04:00
Eric A. Miller
1af11bd088 #220 Alcatel-Lucent / Nokia SR 7750 missing port information. Add duplex, fan, and power supply status, as well as, module inventory to L3::Timetra 2018-04-29 23:35:09 -04:00
Eric A. Miller
073ec319e7 perltidy updates 2018-04-29 13:01:32 -04:00
Eric A. Miller
5852c3548b #202 Support for Aerohive access points 2018-04-29 12:20:43 -04:00
Eric A. Miller
2344a1eacf Add fan and power supply status to L3::Huawei
Override ifMTU with max frame size when applicable in L3::Huawei
Correct POE power module to port mapping in L3::Huawei
2018-04-29 12:03:05 -04:00
172 changed files with 6028 additions and 1879 deletions

View File

@@ -25,6 +25,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:

18
.perltidyrc Normal file
View File

@@ -0,0 +1,18 @@
# .perltidyrc - PBP perltidy configuration file for SNMP::Info
# $Id$
-l=78 # Max line width is 78 cols
-i=4 # Indent level is 4 cols
-ci=4 # Continuation indent is 4 cols
-nst # Output to STDOUT
-se # Errors to STDERR
-vt=2 # Maximal vertical tightness
-cti=0 # No extra indentation for closing brackets
-pt=1 # Medium parenthesis tightness
-bt=1 # Medium brace tightness
-sbt=1 # Medium square bracket tightness
-bbt=1 # Medium block brace tightness
-nsfs # No space before semicolons
-nolq # Don't outdent long quoted strings
-wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= && += -= /= |= >>= ||= .= %= ^= x=" # Break before all operators

View File

@@ -12,7 +12,7 @@ before_install:
- mkdir ~/netdisco-mibs
- cd ~/netdisco-mibs
install:
- curl -sL https://github.com/netdisco/netdisco-mibs/releases/download/4.009/netdisco-mibs.tar.gz | tar --strip-components=1 -zxf -
- curl -sL https://github.com/netdisco/netdisco-mibs/releases/download/4.014/netdisco-mibs.tar.gz | tar --strip-components=1 -zxf -
- cpanm --quiet --notest PkgConfig Test::CChecker Alien::zlib::Static Alien::OpenSSL::Static Alien::SNMP::MAXTC
before_script:
- 'cd ${TRAVIS_BUILD_DIR}'
@@ -23,7 +23,12 @@ script:
./Build test --test_files t/ --test_files xt/
notifications:
irc:
on_success: change
on_success: always
on_failure: always
channels:
- 'chat.freenode.net#netdisco'
email:
on_success: always
on_failure: always
recipients:
- 'snmp-info-cvs@lists.sourceforge.net'

View File

@@ -16,6 +16,7 @@ Module::Build->new(
requires => {
'SNMP' => '0',
'Math::BigInt' => '0',
'NetAddr::IP' => '4.068',
},
recommends => {
'PPI' => '0',
@@ -34,6 +35,8 @@ Module::Build->new(
'File::Slurper' => '0',
'Test::Exception' => '0.43',
'Class::Inspector' => '0',
'NetSNMP::default_store' => '0',
'Module::Find' => '0',
},
# script_files => [
# ],

122
Changes
View File

@@ -1,3 +1,119 @@
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]
* #283 support for Exinda/GFI traffic shapers (inphobia)
[ENHANCEMENTS]
* #282 Aerohive base MAC lookup (inphobia)
[BUG FIXES]
* many documentation fixes (inphobia)
Version 3.63 (2018-11-25)
[ENHANCEMENTS]
* #280 update to retrieve Aerohive serial (inphobia / nick n.)
* #271 update os_ver for Alcatel-Lucent (stromsoe)
[BUG FIXES]
* #273 remove old ADTRAN modules not in netdisco-mibs
Version 3.62 (2018-10-29)
[ENHANCEMENTS]
* #278 Support for Cisco Firepower Threat Defense
* #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
[BUG FIXES]
* #265 Fix typos in L3::Huawei
Version 3.61 (2018-05-09)
[ENHANCEMENTS]
* #255 IPv6 support - Set the transport-specifier if given an IPv6 address
* #195 IP address table - IPv4 Address Table will use the
IP-MIB::ipAddressTable if the deprecated IP-MIB::ipAddrTable doesn't
return results
[BUG FIXES]
* #261 EIGRP Peer Neighbor Formatting / Munge
* #252 Unpack binary MAC if present in cdp_port
* Fix SNMPv1 cdp_run check
Version 3.60 (2018-05-06)
[ENHANCEMENTS]
* #263 detect Aerohive ap250 & ap230 models (inphobia)
[BUG FIXES]
* #140 LLDP fixes - treat remote port type of 'local' as an interface name if
the remote port id doesn't look like an index
* Fix potential issue in enumeration of LLDP reported system capabilities
supported by the remote system due to the 'lldpRemSysCapSupported' leaf
name being defined in multiple MIBs
Version 3.59 (2018-05-01)
[NEW FEATURES]
* #214 SNMP::Info Device models Genua, ATMedia, Liebert
[ENHANCEMENTS]
* Capture base MAC in L3::Huawei
* Change _lldp_addr_index to a method so it can be properly overridden in
subclasses
[BUG FIXES]
* Capture fan ans power supply status in L3::Huawei when description is
not available
Version 3.58 (2018-04-29)
[NEW FEATURES]
* #202 Support for Aerohive access points
[ENHANCEMENTS]
* #220 Alcatel-Lucent / Nokia SR 7750 missing port information. Add duplex,
fan, and power supply status, as well as, module inventory to L3::Timetra
* Add fan and power supply status to L3::Huawei
* Override ifMTU with max frame size when applicable in L3::Huawei
[BUG FIXES]
* Correct POE power module to port mapping in L3::Huawei
Version 3.57 (2018-04-26)
[ENHANCEMENTS]
@@ -19,7 +135,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)
@@ -52,7 +168,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()
@@ -115,7 +231,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)

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

@@ -1,3 +1,4 @@
.perltidyrc
Build.PL
Changes
contrib/DEVELOP
@@ -41,9 +42,11 @@ lib/SNMP/Info/Layer1/S3000.pm
lib/SNMP/Info/Layer2.pm
lib/SNMP/Info/Layer2/3Com.pm
lib/SNMP/Info/Layer2/Adtran.pm
lib/SNMP/Info/Layer2/Aerohive.pm
lib/SNMP/Info/Layer2/Airespace.pm
lib/SNMP/Info/Layer2/Aironet.pm
lib/SNMP/Info/Layer2/Allied.pm
lib/SNMP/Info/Layer2/Atmedia.pm
lib/SNMP/Info/Layer2/Baystack.pm
lib/SNMP/Info/Layer2/C1900.pm
lib/SNMP/Info/Layer2/C2900.pm
@@ -51,6 +54,7 @@ lib/SNMP/Info/Layer2/Catalyst.pm
lib/SNMP/Info/Layer2/Centillion.pm
lib/SNMP/Info/Layer2/Cisco.pm
lib/SNMP/Info/Layer2/CiscoSB.pm
lib/SNMP/Info/Layer2/Exinda.pm
lib/SNMP/Info/Layer2/HP.pm
lib/SNMP/Info/Layer2/HP4000.pm
lib/SNMP/Info/Layer2/HPVC.pm
@@ -93,6 +97,7 @@ lib/SNMP/Info/Layer3/F5.pm
lib/SNMP/Info/Layer3/Force10.pm
lib/SNMP/Info/Layer3/Fortinet.pm
lib/SNMP/Info/Layer3/Foundry.pm
lib/SNMP/Info/Layer3/Genua.pm
lib/SNMP/Info/Layer3/H3C.pm
lib/SNMP/Info/Layer3/HP9300.pm
lib/SNMP/Info/Layer3/Huawei.pm
@@ -123,6 +128,7 @@ lib/SNMP/Info/Layer7/APC.pm
lib/SNMP/Info/Layer7/Arbor.pm
lib/SNMP/Info/Layer7/CiscoIPS.pm
lib/SNMP/Info/Layer7/Gigamon.pm
lib/SNMP/Info/Layer7/Liebert.pm
lib/SNMP/Info/Layer7/Neoteris.pm
lib/SNMP/Info/Layer7/Netscaler.pm
lib/SNMP/Info/LLDP.pm
@@ -148,7 +154,7 @@ xt/00_local_prereq.t
xt/00_local_spelling.t
xt/00_local_versionsync.t
xt/10_remote_snmplabs.t
xt/20_run.t
xt/21_run.t
xt/lib/My/Test/Class.pm
xt/lib/Test/SNMP/Info.pm
xt/lib/Test/SNMP/Info/AdslLine.pm
@@ -181,9 +187,11 @@ xt/lib/Test/SNMP/Info/Layer1/Cyclades.pm
xt/lib/Test/SNMP/Info/Layer1/S3000.pm
xt/lib/Test/SNMP/Info/Layer2.pm
xt/lib/Test/SNMP/Info/Layer2/3Com.pm
xt/lib/Test/SNMP/Info/Layer2/Aerohive.pm
xt/lib/Test/SNMP/Info/Layer2/Airespace.pm
xt/lib/Test/SNMP/Info/Layer2/Aironet.pm
xt/lib/Test/SNMP/Info/Layer2/Allied.pm
xt/lib/Test/SNMP/Info/Layer2/Atmedia.pm
xt/lib/Test/SNMP/Info/Layer2/Baystack.pm
xt/lib/Test/SNMP/Info/Layer2/C1900.pm
xt/lib/Test/SNMP/Info/Layer2/C2900.pm
@@ -233,6 +241,7 @@ xt/lib/Test/SNMP/Info/Layer3/F5.pm
xt/lib/Test/SNMP/Info/Layer3/Force10.pm
xt/lib/Test/SNMP/Info/Layer3/Fortinet.pm
xt/lib/Test/SNMP/Info/Layer3/Foundry.pm
xt/lib/Test/SNMP/Info/Layer3/Genua.pm
xt/lib/Test/SNMP/Info/Layer3/H3C.pm
xt/lib/Test/SNMP/Info/Layer3/HP9300.pm
xt/lib/Test/SNMP/Info/Layer3/Huawei.pm
@@ -263,6 +272,7 @@ xt/lib/Test/SNMP/Info/Layer7/APC.pm
xt/lib/Test/SNMP/Info/Layer7/Arbor.pm
xt/lib/Test/SNMP/Info/Layer7/CiscoIPS.pm
xt/lib/Test/SNMP/Info/Layer7/Gigamon.pm
xt/lib/Test/SNMP/Info/Layer7/Liebert.pm
xt/lib/Test/SNMP/Info/Layer7/Neoteris.pm
xt/lib/Test/SNMP/Info/Layer7/Netscaler.pm
xt/lib/Test/SNMP/Info/LLDP.pm

View File

@@ -58,7 +58,7 @@
# Avoid Devel::Cover and Devel::CoverX::Covered files.
\bcover_db\b
\bcovered\b
# Avoid MYMETA files
^MYMETA\.

275
META.json
View File

@@ -29,6 +29,7 @@
},
"requires" : {
"Math::BigInt" : "0",
"NetAddr::IP" : "4.068",
"SNMP" : "0"
}
},
@@ -37,6 +38,8 @@
"Class::Inspector" : "0",
"File::Find" : "0",
"File::Slurper" : "0",
"Module::Find" : "0",
"NetSNMP::default_store" : "0",
"Path::Class" : "0",
"Test::Class::Most" : "0",
"Test::Distribution" : "0",
@@ -49,499 +52,519 @@
"provides" : {
"SNMP::Info" : {
"file" : "lib/SNMP/Info.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::AMAP" : {
"file" : "lib/SNMP/Info/AMAP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::AdslLine" : {
"file" : "lib/SNMP/Info/AdslLine.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Aggregate" : {
"file" : "lib/SNMP/Info/Aggregate.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Airespace" : {
"file" : "lib/SNMP/Info/Airespace.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Bridge" : {
"file" : "lib/SNMP/Info/Bridge.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CDP" : {
"file" : "lib/SNMP/Info/CDP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoAgg" : {
"file" : "lib/SNMP/Info/CiscoAgg.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoConfig" : {
"file" : "lib/SNMP/Info/CiscoConfig.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoPortSecurity" : {
"file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoPower" : {
"file" : "lib/SNMP/Info/CiscoPower.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoQOS" : {
"file" : "lib/SNMP/Info/CiscoQOS.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoRTT" : {
"file" : "lib/SNMP/Info/CiscoRTT.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoStack" : {
"file" : "lib/SNMP/Info/CiscoStack.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoStats" : {
"file" : "lib/SNMP/Info/CiscoStats.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoStpExtensions" : {
"file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::CiscoVTP" : {
"file" : "lib/SNMP/Info/CiscoVTP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::EDP" : {
"file" : "lib/SNMP/Info/EDP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Entity" : {
"file" : "lib/SNMP/Info/Entity.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::EtherLike" : {
"file" : "lib/SNMP/Info/EtherLike.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::FDP" : {
"file" : "lib/SNMP/Info/FDP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::IEEE802dot11" : {
"file" : "lib/SNMP/Info/IEEE802dot11.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::IEEE802dot3ad" : {
"file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::IPv6" : {
"file" : "lib/SNMP/Info/IPv6.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::LLDP" : {
"file" : "lib/SNMP/Info/LLDP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer1" : {
"file" : "lib/SNMP/Info/Layer1.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer1::Allied" : {
"file" : "lib/SNMP/Info/Layer1/Allied.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer1::Asante" : {
"file" : "lib/SNMP/Info/Layer1/Asante.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer1::Bayhub" : {
"file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer1::Cyclades" : {
"file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer1::S3000" : {
"file" : "lib/SNMP/Info/Layer1/S3000.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2" : {
"file" : "lib/SNMP/Info/Layer2.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::3Com" : {
"file" : "lib/SNMP/Info/Layer2/3Com.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Adtran" : {
"file" : "lib/SNMP/Info/Layer2/Adtran.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Aerohive" : {
"file" : "lib/SNMP/Info/Layer2/Aerohive.pm",
"version" : "3.65"
},
"SNMP::Info::Layer2::Airespace" : {
"file" : "lib/SNMP/Info/Layer2/Airespace.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Aironet" : {
"file" : "lib/SNMP/Info/Layer2/Aironet.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Allied" : {
"file" : "lib/SNMP/Info/Layer2/Allied.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Atmedia" : {
"file" : "lib/SNMP/Info/Layer2/Atmedia.pm",
"version" : "3.65"
},
"SNMP::Info::Layer2::Baystack" : {
"file" : "lib/SNMP/Info/Layer2/Baystack.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::C1900" : {
"file" : "lib/SNMP/Info/Layer2/C1900.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::C2900" : {
"file" : "lib/SNMP/Info/Layer2/C2900.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Catalyst" : {
"file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Centillion" : {
"file" : "lib/SNMP/Info/Layer2/Centillion.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Cisco" : {
"file" : "lib/SNMP/Info/Layer2/Cisco.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::CiscoSB" : {
"file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Exinda" : {
"file" : "lib/SNMP/Info/Layer2/Exinda.pm",
"version" : "3.65"
},
"SNMP::Info::Layer2::HP" : {
"file" : "lib/SNMP/Info/Layer2/HP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::HP4000" : {
"file" : "lib/SNMP/Info/Layer2/HP4000.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::HPVC" : {
"file" : "lib/SNMP/Info/Layer2/HPVC.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Kentrox" : {
"file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::N2270" : {
"file" : "lib/SNMP/Info/Layer2/N2270.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::NAP222x" : {
"file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::NWSS2300" : {
"file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Netgear" : {
"file" : "lib/SNMP/Info/Layer2/Netgear.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Nexans" : {
"file" : "lib/SNMP/Info/Layer2/Nexans.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Orinoco" : {
"file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Sixnet" : {
"file" : "lib/SNMP/Info/Layer2/Sixnet.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Trapeze" : {
"file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::Ubiquiti" : {
"file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer2::ZyXEL_DSLAM" : {
"file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3" : {
"file" : "lib/SNMP/Info/Layer3.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Aironet" : {
"file" : "lib/SNMP/Info/Layer3/Aironet.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::AlcatelLucent" : {
"file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::AlteonAD" : {
"file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Altiga" : {
"file" : "lib/SNMP/Info/Layer3/Altiga.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Arista" : {
"file" : "lib/SNMP/Info/Layer3/Arista.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Aruba" : {
"file" : "lib/SNMP/Info/Layer3/Aruba.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::BayRS" : {
"file" : "lib/SNMP/Info/Layer3/BayRS.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::BlueCoatSG" : {
"file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::C3550" : {
"file" : "lib/SNMP/Info/Layer3/C3550.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::C4000" : {
"file" : "lib/SNMP/Info/Layer3/C4000.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::C6500" : {
"file" : "lib/SNMP/Info/Layer3/C6500.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::CheckPoint" : {
"file" : "lib/SNMP/Info/Layer3/CheckPoint.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Cisco" : {
"file" : "lib/SNMP/Info/Layer3/Cisco.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::CiscoASA" : {
"file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::CiscoFWSM" : {
"file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::CiscoSwitch" : {
"file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Contivity" : {
"file" : "lib/SNMP/Info/Layer3/Contivity.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Cumulus" : {
"file" : "lib/SNMP/Info/Layer3/Cumulus.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::DLink" : {
"file" : "lib/SNMP/Info/Layer3/DLink.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Dell" : {
"file" : "lib/SNMP/Info/Layer3/Dell.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::ERX" : {
"file" : "lib/SNMP/Info/Layer3/ERX.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Enterasys" : {
"file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Extreme" : {
"file" : "lib/SNMP/Info/Layer3/Extreme.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::F5" : {
"file" : "lib/SNMP/Info/Layer3/F5.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Force10" : {
"file" : "lib/SNMP/Info/Layer3/Force10.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Fortinet" : {
"file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Foundry" : {
"file" : "lib/SNMP/Info/Layer3/Foundry.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Genua" : {
"file" : "lib/SNMP/Info/Layer3/Genua.pm",
"version" : "3.65"
},
"SNMP::Info::Layer3::H3C" : {
"file" : "lib/SNMP/Info/Layer3/H3C.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::HP9300" : {
"file" : "lib/SNMP/Info/Layer3/HP9300.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Huawei" : {
"file" : "lib/SNMP/Info/Layer3/Huawei.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::IBMGbTor" : {
"file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Juniper" : {
"file" : "lib/SNMP/Info/Layer3/Juniper.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Lantronix" : {
"file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Microsoft" : {
"file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Mikrotik" : {
"file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::N1600" : {
"file" : "lib/SNMP/Info/Layer3/N1600.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::NetSNMP" : {
"file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Netscreen" : {
"file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Nexus" : {
"file" : "lib/SNMP/Info/Layer3/Nexus.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::OneAccess" : {
"file" : "lib/SNMP/Info/Layer3/OneAccess.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::PacketFront" : {
"file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::PaloAlto" : {
"file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Passport" : {
"file" : "lib/SNMP/Info/Layer3/Passport.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Pf" : {
"file" : "lib/SNMP/Info/Layer3/Pf.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Pica8" : {
"file" : "lib/SNMP/Info/Layer3/Pica8.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::SonicWALL" : {
"file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Steelhead" : {
"file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Sun" : {
"file" : "lib/SNMP/Info/Layer3/Sun.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Tasman" : {
"file" : "lib/SNMP/Info/Layer3/Tasman.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::Timetra" : {
"file" : "lib/SNMP/Info/Layer3/Timetra.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::VMware" : {
"file" : "lib/SNMP/Info/Layer3/VMware.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer3::VyOS" : {
"file" : "lib/SNMP/Info/Layer3/VyOS.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer7" : {
"file" : "lib/SNMP/Info/Layer7.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer7::APC" : {
"file" : "lib/SNMP/Info/Layer7/APC.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer7::Arbor" : {
"file" : "lib/SNMP/Info/Layer7/Arbor.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer7::CiscoIPS" : {
"file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer7::Gigamon" : {
"file" : "lib/SNMP/Info/Layer7/Gigamon.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer7::Liebert" : {
"file" : "lib/SNMP/Info/Layer7/Liebert.pm",
"version" : "3.65"
},
"SNMP::Info::Layer7::Neoteris" : {
"file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::Layer7::Netscaler" : {
"file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::MAU" : {
"file" : "lib/SNMP/Info/MAU.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::MRO" : {
"file" : "lib/SNMP/Info/MRO.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::NortelStack" : {
"file" : "lib/SNMP/Info/NortelStack.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::PowerEthernet" : {
"file" : "lib/SNMP/Info/PowerEthernet.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::RapidCity" : {
"file" : "lib/SNMP/Info/RapidCity.pm",
"version" : "3.57"
"version" : "3.65"
},
"SNMP::Info::SONMP" : {
"file" : "lib/SNMP/Info/SONMP.pm",
"version" : "3.57"
"version" : "3.65"
}
},
"release_status" : "stable",
@@ -551,7 +574,7 @@
},
"homepage" : "http://netdisco.org/",
"license" : [
"http://opensource.org/licenses/bsd-license.php"
"http://opensource.org/licenses/BSD-3-Clause"
],
"repository" : {
"url" : "https://github.com/netdisco/snmp-info"
@@ -559,6 +582,6 @@
"x_IRC" : "irc://irc.freenode.org/#netdisco",
"x_MailingList" : "https://lists.sourceforge.net/lists/listinfo/snmp-info-users"
},
"version" : "3.57",
"version" : "3.65",
"x_serialization_backend" : "JSON::PP version 2.97001"
}

270
META.yml
View File

@@ -6,6 +6,8 @@ build_requires:
Class::Inspector: '0'
File::Find: '0'
File::Slurper: '0'
Module::Find: '0'
NetSNMP::default_store: '0'
Path::Class: '0'
Test::Class::Most: '0'
Test::Distribution: '0'
@@ -24,376 +26,391 @@ name: SNMP-Info
provides:
SNMP::Info:
file: lib/SNMP/Info.pm
version: '3.57'
version: '3.65'
SNMP::Info::AMAP:
file: lib/SNMP/Info/AMAP.pm
version: '3.57'
version: '3.65'
SNMP::Info::AdslLine:
file: lib/SNMP/Info/AdslLine.pm
version: '3.57'
version: '3.65'
SNMP::Info::Aggregate:
file: lib/SNMP/Info/Aggregate.pm
version: '3.57'
version: '3.65'
SNMP::Info::Airespace:
file: lib/SNMP/Info/Airespace.pm
version: '3.57'
version: '3.65'
SNMP::Info::Bridge:
file: lib/SNMP/Info/Bridge.pm
version: '3.57'
version: '3.65'
SNMP::Info::CDP:
file: lib/SNMP/Info/CDP.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoAgg:
file: lib/SNMP/Info/CiscoAgg.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoConfig:
file: lib/SNMP/Info/CiscoConfig.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoPortSecurity:
file: lib/SNMP/Info/CiscoPortSecurity.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoPower:
file: lib/SNMP/Info/CiscoPower.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoQOS:
file: lib/SNMP/Info/CiscoQOS.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoRTT:
file: lib/SNMP/Info/CiscoRTT.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoStack:
file: lib/SNMP/Info/CiscoStack.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoStats:
file: lib/SNMP/Info/CiscoStats.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoStpExtensions:
file: lib/SNMP/Info/CiscoStpExtensions.pm
version: '3.57'
version: '3.65'
SNMP::Info::CiscoVTP:
file: lib/SNMP/Info/CiscoVTP.pm
version: '3.57'
version: '3.65'
SNMP::Info::EDP:
file: lib/SNMP/Info/EDP.pm
version: '3.57'
version: '3.65'
SNMP::Info::Entity:
file: lib/SNMP/Info/Entity.pm
version: '3.57'
version: '3.65'
SNMP::Info::EtherLike:
file: lib/SNMP/Info/EtherLike.pm
version: '3.57'
version: '3.65'
SNMP::Info::FDP:
file: lib/SNMP/Info/FDP.pm
version: '3.57'
version: '3.65'
SNMP::Info::IEEE802dot11:
file: lib/SNMP/Info/IEEE802dot11.pm
version: '3.57'
version: '3.65'
SNMP::Info::IEEE802dot3ad:
file: lib/SNMP/Info/IEEE802dot3ad.pm
version: '3.57'
version: '3.65'
SNMP::Info::IPv6:
file: lib/SNMP/Info/IPv6.pm
version: '3.57'
version: '3.65'
SNMP::Info::LLDP:
file: lib/SNMP/Info/LLDP.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer1:
file: lib/SNMP/Info/Layer1.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer1::Allied:
file: lib/SNMP/Info/Layer1/Allied.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer1::Asante:
file: lib/SNMP/Info/Layer1/Asante.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer1::Bayhub:
file: lib/SNMP/Info/Layer1/Bayhub.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer1::Cyclades:
file: lib/SNMP/Info/Layer1/Cyclades.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer1::S3000:
file: lib/SNMP/Info/Layer1/S3000.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2:
file: lib/SNMP/Info/Layer2.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::3Com:
file: lib/SNMP/Info/Layer2/3Com.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Adtran:
file: lib/SNMP/Info/Layer2/Adtran.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Aerohive:
file: lib/SNMP/Info/Layer2/Aerohive.pm
version: '3.65'
SNMP::Info::Layer2::Airespace:
file: lib/SNMP/Info/Layer2/Airespace.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Aironet:
file: lib/SNMP/Info/Layer2/Aironet.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Allied:
file: lib/SNMP/Info/Layer2/Allied.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Atmedia:
file: lib/SNMP/Info/Layer2/Atmedia.pm
version: '3.65'
SNMP::Info::Layer2::Baystack:
file: lib/SNMP/Info/Layer2/Baystack.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::C1900:
file: lib/SNMP/Info/Layer2/C1900.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::C2900:
file: lib/SNMP/Info/Layer2/C2900.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Catalyst:
file: lib/SNMP/Info/Layer2/Catalyst.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Centillion:
file: lib/SNMP/Info/Layer2/Centillion.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Cisco:
file: lib/SNMP/Info/Layer2/Cisco.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::CiscoSB:
file: lib/SNMP/Info/Layer2/CiscoSB.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Exinda:
file: lib/SNMP/Info/Layer2/Exinda.pm
version: '3.65'
SNMP::Info::Layer2::HP:
file: lib/SNMP/Info/Layer2/HP.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::HP4000:
file: lib/SNMP/Info/Layer2/HP4000.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::HPVC:
file: lib/SNMP/Info/Layer2/HPVC.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Kentrox:
file: lib/SNMP/Info/Layer2/Kentrox.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::N2270:
file: lib/SNMP/Info/Layer2/N2270.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::NAP222x:
file: lib/SNMP/Info/Layer2/NAP222x.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::NWSS2300:
file: lib/SNMP/Info/Layer2/NWSS2300.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Netgear:
file: lib/SNMP/Info/Layer2/Netgear.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Nexans:
file: lib/SNMP/Info/Layer2/Nexans.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Orinoco:
file: lib/SNMP/Info/Layer2/Orinoco.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Sixnet:
file: lib/SNMP/Info/Layer2/Sixnet.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Trapeze:
file: lib/SNMP/Info/Layer2/Trapeze.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::Ubiquiti:
file: lib/SNMP/Info/Layer2/Ubiquiti.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer2::ZyXEL_DSLAM:
file: lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3:
file: lib/SNMP/Info/Layer3.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Aironet:
file: lib/SNMP/Info/Layer3/Aironet.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::AlcatelLucent:
file: lib/SNMP/Info/Layer3/AlcatelLucent.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::AlteonAD:
file: lib/SNMP/Info/Layer3/AlteonAD.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Altiga:
file: lib/SNMP/Info/Layer3/Altiga.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Arista:
file: lib/SNMP/Info/Layer3/Arista.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Aruba:
file: lib/SNMP/Info/Layer3/Aruba.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::BayRS:
file: lib/SNMP/Info/Layer3/BayRS.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::BlueCoatSG:
file: lib/SNMP/Info/Layer3/BlueCoatSG.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::C3550:
file: lib/SNMP/Info/Layer3/C3550.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::C4000:
file: lib/SNMP/Info/Layer3/C4000.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::C6500:
file: lib/SNMP/Info/Layer3/C6500.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::CheckPoint:
file: lib/SNMP/Info/Layer3/CheckPoint.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Cisco:
file: lib/SNMP/Info/Layer3/Cisco.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::CiscoASA:
file: lib/SNMP/Info/Layer3/CiscoASA.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::CiscoFWSM:
file: lib/SNMP/Info/Layer3/CiscoFWSM.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::CiscoSwitch:
file: lib/SNMP/Info/Layer3/CiscoSwitch.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Contivity:
file: lib/SNMP/Info/Layer3/Contivity.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Cumulus:
file: lib/SNMP/Info/Layer3/Cumulus.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::DLink:
file: lib/SNMP/Info/Layer3/DLink.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Dell:
file: lib/SNMP/Info/Layer3/Dell.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::ERX:
file: lib/SNMP/Info/Layer3/ERX.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Enterasys:
file: lib/SNMP/Info/Layer3/Enterasys.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Extreme:
file: lib/SNMP/Info/Layer3/Extreme.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::F5:
file: lib/SNMP/Info/Layer3/F5.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Force10:
file: lib/SNMP/Info/Layer3/Force10.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Fortinet:
file: lib/SNMP/Info/Layer3/Fortinet.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Foundry:
file: lib/SNMP/Info/Layer3/Foundry.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Genua:
file: lib/SNMP/Info/Layer3/Genua.pm
version: '3.65'
SNMP::Info::Layer3::H3C:
file: lib/SNMP/Info/Layer3/H3C.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::HP9300:
file: lib/SNMP/Info/Layer3/HP9300.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Huawei:
file: lib/SNMP/Info/Layer3/Huawei.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::IBMGbTor:
file: lib/SNMP/Info/Layer3/IBMGbTor.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Juniper:
file: lib/SNMP/Info/Layer3/Juniper.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Lantronix:
file: lib/SNMP/Info/Layer3/Lantronix.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Microsoft:
file: lib/SNMP/Info/Layer3/Microsoft.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Mikrotik:
file: lib/SNMP/Info/Layer3/Mikrotik.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::N1600:
file: lib/SNMP/Info/Layer3/N1600.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::NetSNMP:
file: lib/SNMP/Info/Layer3/NetSNMP.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Netscreen:
file: lib/SNMP/Info/Layer3/Netscreen.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Nexus:
file: lib/SNMP/Info/Layer3/Nexus.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::OneAccess:
file: lib/SNMP/Info/Layer3/OneAccess.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::PacketFront:
file: lib/SNMP/Info/Layer3/PacketFront.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::PaloAlto:
file: lib/SNMP/Info/Layer3/PaloAlto.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Passport:
file: lib/SNMP/Info/Layer3/Passport.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Pf:
file: lib/SNMP/Info/Layer3/Pf.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Pica8:
file: lib/SNMP/Info/Layer3/Pica8.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::SonicWALL:
file: lib/SNMP/Info/Layer3/SonicWALL.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Steelhead:
file: lib/SNMP/Info/Layer3/Steelhead.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Sun:
file: lib/SNMP/Info/Layer3/Sun.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Tasman:
file: lib/SNMP/Info/Layer3/Tasman.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::Timetra:
file: lib/SNMP/Info/Layer3/Timetra.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::VMware:
file: lib/SNMP/Info/Layer3/VMware.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer3::VyOS:
file: lib/SNMP/Info/Layer3/VyOS.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer7:
file: lib/SNMP/Info/Layer7.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer7::APC:
file: lib/SNMP/Info/Layer7/APC.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer7::Arbor:
file: lib/SNMP/Info/Layer7/Arbor.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer7::CiscoIPS:
file: lib/SNMP/Info/Layer7/CiscoIPS.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer7::Gigamon:
file: lib/SNMP/Info/Layer7/Gigamon.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer7::Liebert:
file: lib/SNMP/Info/Layer7/Liebert.pm
version: '3.65'
SNMP::Info::Layer7::Neoteris:
file: lib/SNMP/Info/Layer7/Neoteris.pm
version: '3.57'
version: '3.65'
SNMP::Info::Layer7::Netscaler:
file: lib/SNMP/Info/Layer7/Netscaler.pm
version: '3.57'
version: '3.65'
SNMP::Info::MAU:
file: lib/SNMP/Info/MAU.pm
version: '3.57'
version: '3.65'
SNMP::Info::MRO:
file: lib/SNMP/Info/MRO.pm
version: '3.57'
version: '3.65'
SNMP::Info::NortelStack:
file: lib/SNMP/Info/NortelStack.pm
version: '3.57'
version: '3.65'
SNMP::Info::PowerEthernet:
file: lib/SNMP/Info/PowerEthernet.pm
version: '3.57'
version: '3.65'
SNMP::Info::RapidCity:
file: lib/SNMP/Info/RapidCity.pm
version: '3.57'
version: '3.65'
SNMP::Info::SONMP:
file: lib/SNMP/Info/SONMP.pm
version: '3.57'
version: '3.65'
recommends:
Class::ISA: '0'
File::Slurp: '0'
@@ -402,13 +419,14 @@ recommends:
PPI: '0'
requires:
Math::BigInt: '0'
NetAddr::IP: '4.068'
SNMP: '0'
resources:
IRC: irc://irc.freenode.org/#netdisco
MailingList: https://lists.sourceforge.net/lists/listinfo/snmp-info-users
bugtracker: https://github.com/netdisco/snmp-info/issues
homepage: http://netdisco.org/
license: http://opensource.org/licenses/bsd-license.php
license: http://opensource.org/licenses/BSD-3-Clause
repository: https://github.com/netdisco/snmp-info
version: '3.57'
version: '3.65'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

192
README
View File

@@ -2,13 +2,13 @@ NAME
SNMP::Info - OO Interface to Network devices and MIBs through SNMP
VERSION
SNMP::Info - Version 3.57
SNMP::Info - Version 3.65
AUTHOR
SNMP::Info is maintained by team of Open Source authors headed by Eric
Miller, Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
Please visit <http://sourceforge.net/projects/snmp-info/> for most
Please visit <https://github.com/netdisco/snmp-info/> for the most
up-to-date list of developers.
SNMP::Info was originally created at UCSC for the Netdisco project
@@ -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
@@ -137,8 +137,7 @@ REQUIREMENTS
If you are using SNMP::Info separate from Netdisco, download the
Netdisco MIB package at
<http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest
-snapshot/>
<https://github.com/netdisco/netdisco-mibs/releases/latest/>
Make sure that your snmp.conf is updated to point to your MIB
directory and that the MIBs are world-readable.
@@ -169,8 +168,8 @@ DESIGN GOALS
See the section EXTENDING SNMP::INFO for more details.
When you make a new subclass for a device, please be sure to send it
back to the developers (via Source Forge or the mailing list) for
inclusion in the next version.
back to the developers (via a github pull request or the mailing
list) for inclusion in the next version.
SUBCLASSES
These are the subclasses that implement MIBs and support devices:
@@ -209,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.
@@ -323,7 +322,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.
@@ -404,7 +403,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.
@@ -413,6 +412,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Adtran for details.
SNMP::Info::Layer2::Aerohive
Subclass for Aerohive Access Points.
See documentation in SNMP::Info::Layer2::Aerohive for details.
SNMP::Info::Layer2::Airespace
Subclass for Cisco (Airespace) wireless controllers.
@@ -420,7 +424,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.
@@ -429,6 +434,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Allied for details.
SNMP::Info::Layer2::Atmedia
Subclass for atmedia encryptors.
See documentation in SNMP::Info::Layer2::Atmedia for details.
SNMP::Info::Layer2::Baystack
Subclass for Avaya/Nortel/Bay Ethernet Switch/Baystack switches.
This includes 303, 304, 350, 380, 410, 420, 425, 450, 460, 470
@@ -438,10 +448,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.
@@ -481,8 +487,13 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::CiscoSB for details.
SNMP::Info::Layer2::Exinda
Subclass for Exinda / GFI Network Orchestrator traffic shapers.
See documentation in SNMP::Info::Layer2::Exinda for details.
SNMP::Info::Layer2::HP
Subclass for more recent HP Procurve Switches
Subclass for more recent HP Procurve Switches.
Requires HP-ICF-OID and ENTITY-MIB downloaded from HP.
@@ -500,6 +511,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.
@@ -563,7 +579,7 @@ SUBCLASSES
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.
@@ -619,7 +635,7 @@ SUBCLASSES
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.
@@ -701,6 +717,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Foundry for details.
SNMP::Info::Layer3::Genua
Subclass for Genua security devices.
See documentation in SNMP::Info::Layer3::Genua for details.
SNMP::Info::Layer3::H3C
SNMP Interface to Layer 3 Devices, H3C & HP A-series.
@@ -720,17 +741,18 @@ 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.
@@ -761,12 +783,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.
@@ -798,12 +820,14 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Pica8 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.
@@ -836,36 +860,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::Cisco IPS" for
details.
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::Netscaler
Subclass for Citrix Netscaler appliances
SNMP::Info::Layer7::Liebert
Subclass for Liebert devices.
See documentation in SNMP::Info::Layer7::Netscaler for details.
See documentation in SNMP::Info::Layer7::Liebert for details.
SNMP::Info::Layer7::Neoteris
Subclass for Juniper SSL VPN appliances
Subclass for 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
@@ -873,8 +901,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
@@ -1382,29 +1410,39 @@ USAGE
("ifSpecific")
IP Address Table
Each entry in this table is an IP address in use on this device. Usually
this is implemented in Layer3 Devices.
IPv4 Address Table
Each entry in this table is an IPv4 address in use on this device.
Usually this is implemented in Layer3 Devices. These methods try the
deprecated IPv4 address table "IP-MIB::ipAddrTable" first due to its
prevalence and will try the current "IP-MIB::ipAddressTable" if it
doesn't return any results. "IP-MIB::ipAddressTable" results are
filtered to only return IPv4 unicast addresses and modified to match the
return format of the older table for backwards compatibility.
See documentation in SNMP::Info::IPv6 for IPv6 Address Table.
$info->ip_index()
Maps the IP Table to the IID
Maps the IPv4 addresses to the interface index
("ipAdEntIfIndex")
("ipAdEntIfIndex") or filtered and index modified
("ipAddressIfIndex")
$info->ip_table()
Maps the Table to the IP address
Maps the Table to the IPv4 address
("ipAdEntAddr")
("ipAdEntAddr") or address extracted from ("ipAddressIfIndex")
$info->ip_netmask()
Gives netmask setting for IP table entry.
Gives netmask setting for IPv4 table entry.
("ipAdEntNetMask")
("ipAdEntNetMask") or netmask calculated from ("ipAddressPrefix")
$info->ip_broadcast()
Gives broadcast address for IP table entry.
Gives the value of the least-significant bit in the IPv4 broadcast
address either 1 or 0.
("ipAdEntBcastAddr")
("ipAdEntBcastAddr"), there is no equivalent from the
"IP-MIB::ipAddressTable"
IP Routing Table
$info->ipr_route()
@@ -1661,8 +1699,8 @@ EXTENDING SNMP::INFO
to verify the implementation.
Gathering MIB data for SNMP::Info Developers
The preference is to open a feature request in the SourceForge project.
This allows all developers to have visibility into the request. Please
The preference is to open a pull request in the github project. This
allows all developers to have visibility into the request. Please
include pointers to the applicable platform MIBs. For development we
will need an "snmpwalk" of the device. There is a tool now included in
the SNMP::Info distribution to help with this task, although you'll most
@@ -1680,10 +1718,9 @@ EXTENDING SNMP::INFO
This will print to the file every MIB entry with data in a format that
the developers can use to emulate read operations without needing access
to the device. Preference would be to mask any sensitive data in the
output, zip the file, and upload as an attachment to the Sourceforge
tracker. However, if you do not feel comfortable uploading the output to
the tracker you could e-mail it to the developer that has claimed the
ticket.
output, zip the file, and attach it to the github pull request. However,
if you do not feel comfortable uploading the output to the tracker you
could e-mail it to the developer that has claimed the ticket.
Data Structures required in new Subclass
A class inheriting this class must implement these data structures :
@@ -1829,10 +1866,6 @@ EXTENDING SNMP::INFO
1; # don't forget this line
----------------------- snip --------------------------------
Be sure and send the debugged version to
snmp-info-users@lists.sourceforge.net to be included in the next version
of SNMP::Info.
SNMP::INFO INTERNALS
Object Namespace
Internal data is stored with bareword keys. For example $info->{debug}
@@ -1866,7 +1899,7 @@ SNMP::INFO INTERNALS
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',
@@ -1915,37 +1948,37 @@ 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.
@@ -1953,7 +1986,7 @@ SNMP::INFO INTERNALS
TODO: Get the precedence of MIBs and overriding of MIB data in
Net-SNMP figured out. Heirarchy/precendence 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.
@@ -1962,12 +1995,19 @@ 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.
Internally Used Functions
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"
library. If unable to determine the type of address or resolve a DNS
name, dies with "croak".
$info->init()
Used internally. Loads all entries in %MIBS.

View File

@@ -6,23 +6,28 @@ Coding Guidelines:
- always update ChangeLog before committing
- check-in required mibs to netdisco-mibs and release new package if needed
Release and Testing Instructions:
- Please see misc/RELEASE in Netdisco
( http://netdisco.cvs.sourceforge.net/viewvc/netdisco/misc/RELEASE?view=markup )
and follow all testing and release guidelines
Release and Testing Instructions:
- for netdisco see:
-> https://github.com/netdisco/netdisco/wiki/Developing
-> https://metacpan.org/pod/App::Netdisco
- for snmp::info see:
-> https://github.com/netdisco/snmp-info/wiki/Release-Process
-> https://metacpan.org/pod/SNMP::Info#EXTENDING-SNMP::INFO
- for netdisco-mibs see:
-> 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

View File

@@ -16,6 +16,7 @@ use Exporter;
use SNMP;
use Carp;
use Math::BigInt;
use NetAddr::IP::Lite ':lower';
@SNMP::Info::ISA = qw/Exporter/;
@SNMP::Info::EXPORT_OK = qw//;
@@ -24,7 +25,7 @@ use vars
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
$NOSUCH $BIGINT $REPEATERS/;
$VERSION = '3.57';
$VERSION = '3.65';
=head1 NAME
@@ -32,14 +33,14 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.57
SNMP::Info - Version 3.65
=head1 AUTHOR
SNMP::Info is maintained by team of Open Source authors headed by Eric Miller,
Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
Please visit L<http://sourceforge.net/projects/snmp-info/> for most up-to-date
Please visit L<https://github.com/netdisco/snmp-info/> for the most up-to-date
list of developers.
SNMP::Info was originally created at UCSC for the Netdisco project L<http://netdisco.org>
@@ -68,8 +69,8 @@ list any missing functionality (such as neighbor discovery tables).
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
@@ -170,7 +171,7 @@ install by hand.
SNMP::Info operates on textual descriptors found in MIBs.
If you are using SNMP::Info separate from Netdisco,
download the Netdisco MIB package at L<http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest-snapshot/>
download the Netdisco MIB package at L<https://github.com/netdisco/netdisco-mibs/releases/latest/>
Make sure that your snmp.conf is updated to point to your MIB directory
and that the MIBs are world-readable.
@@ -208,9 +209,9 @@ subroutine.
See the section EXTENDING SNMP::INFO for more details.
When you make a new subclass for a device, please be sure to send it back to
the developers (via Source Forge or the mailing list) for inclusion in the
next version.
When you make a new subclass for a device, please be sure to send it back
to the developers (via a github pull request or the mailing list) for inclusion
in the next version.
=back
@@ -259,7 +260,7 @@ See documentation in L<SNMP::Info::AMAP> for details.
=item SNMP::Info::Bridge
F<BRIDGE-MIB> (RFC1286). F<QBRIDGE-MIB>. Inherited by devices with Layer2
F<BRIDGE-MIB> (RFC1286). F<Q-BRIDGE-MIB>. Inherited by devices with Layer2
support.
See documentation in L<SNMP::Info::Bridge> for details.
@@ -393,7 +394,7 @@ See documentation in L<SNMP::Info::LLDP> for details.
=item SNMP::Info::MAU
F<MAU-MIB> (RFC2668). Some Layer2 devices use this for extended Ethernet
(Media Access Unit) interface information.
(Medium Attachment Unit) interface information.
See documentation in L<SNMP::Info::MAU> for details.
@@ -497,7 +498,7 @@ See documentation in L<SNMP::Info::Layer2> for details.
=item SNMP::Info::Layer2::3Com
SNMP::Info::Layer2::3Com - SNMP Interface to L2 3Com Switches
Subclass for L2 3Com Switches.
See documentation in L<SNMP::Info::Layer2::3Com> for details.
@@ -507,6 +508,12 @@ Subclass for Adtran devices.
See documentation in L<SNMP::Info::Layer2::Adtran> for details.
=item SNMP::Info::Layer2::Aerohive
Subclass for Aerohive Access Points.
See documentation in L<SNMP::Info::Layer2::Aerohive> for details.
=item SNMP::Info::Layer2::Airespace
Subclass for Cisco (Airespace) wireless controllers.
@@ -516,7 +523,7 @@ See documentation in L<SNMP::Info::Layer2::Airespace> for details.
=item 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.
L<SNMP::Info::Layer3::Aironet> for Aironet devices that don't run IOS.
See documentation in L<SNMP::Info::Layer2::Aironet> for details.
@@ -526,6 +533,12 @@ Allied Telesis switches.
See documentation in L<SNMP::Info::Layer2::Allied> for details.
=item SNMP::Info::Layer2::Atmedia
Subclass for atmedia encryptors.
See documentation in L<SNMP::Info::Layer2::Atmedia> for details.
=item SNMP::Info::Layer2::Baystack
Subclass for Avaya/Nortel/Bay Ethernet Switch/Baystack switches. This
@@ -535,10 +548,6 @@ Business Policy Switch (BPS), VSP 7000 series, and probably others.
See documentation in L<SNMP::Info::Layer2::Baystack> for details.
=item SNMP::Info::Layer2::Kentrox
Class for Kentrox DataSMART DSU/CSU. See L<SNMP::Info::Layer2::Kentrox> for details.
=item SNMP::Info::Layer2::C1900
Subclass for Cisco Catalyst 1900 and 1900c Devices running CatOS.
@@ -580,9 +589,15 @@ Linksys. This currently comprises the Sx300/500 line of switches.
See documentation in L<SNMP::Info::Layer2::CiscoSB> for details.
=item SNMP::Info::Layer2::Exinda
Subclass for Exinda / GFI Network Orchestrator traffic shapers.
See documentation in L<SNMP::Info::Layer2::Exinda> for details.
=item SNMP::Info::Layer2::HP
Subclass for more recent HP Procurve Switches
Subclass for more recent HP Procurve Switches.
Requires F<HP-ICF-OID> and F<ENTITY-MIB> downloaded from HP.
@@ -602,6 +617,12 @@ Subclass for HP Virtual Connect Switches
See documentation in L<SNMP::Info::Layer2::HPVC> for details.
=item SNMP::Info::Layer2::Kentrox
Class for Kentrox DataSMART DSU/CSU.
See documentation in L<SNMP::Info::Layer2::Kentrox> for details.
=item SNMP::Info::Layer2::N2270
Subclass for Nortel 2270 wireless switches.
@@ -679,7 +700,7 @@ are usually older devices.
MIBs for these devices now included in v2.tar.gz available from ftp.cisco.com.
Note Layer2::Aironet
Note L<SNMP::Info::Layer2::Aironet>
See documentation in L<SNMP::Info::Layer3::Aironet> for details.
@@ -744,7 +765,7 @@ See documentation in L<SNMP::Info::Layer3::C6500> for details.
=item SNMP::Info::Layer3::CheckPoint
Subclass for CheckPoint devices
Subclass for CheckPoint devices.
See documentation in L<SNMP::Info::Layer3::CheckPoint> for details.
@@ -840,6 +861,12 @@ Subclass for Brocade (Foundry) Network devices.
See documentation in L<SNMP::Info::Layer3::Foundry> for details.
=item SNMP::Info::Layer3::Genua
Subclass for Genua security devices.
See documentation in L<SNMP::Info::Layer3::Genua> for details.
=item SNMP::Info::Layer3::H3C
SNMP Interface to Layer 3 Devices, H3C & HP A-series.
@@ -862,19 +889,20 @@ See documentation in L<SNMP::Info::Layer3::Huawei> for details.
=item SNMP::Info::Layer3::IBMGbTor
SNMP Interface to IBM Rackswitch (formerly Blade Network Technologies)
network devices.
network devices. Lenovo acquired these from IBM and is now selling
them under the Lenovo brand.
See documentation in L<SNMP::Info::Layer3::IBMGbTor> for details.
=item SNMP::Info::Layer3::Juniper
Subclass for Juniper devices
Subclass for Juniper devices.
See documentation in L<SNMP::Info::Layer3::Juniper> for details.
=item SNMP::Info::Layer3::Lantronix
Subclass for Lantronix devices
Subclass for Lantronix devices.
See documentation in L<SNMP::Info::Layer3::Lantronix> for details.
@@ -910,13 +938,13 @@ See documentation in L<SNMP::Info::Layer3::Netscreen> for details.
=item SNMP::Info::Layer3::Nexus
Subclass for Cisco Nexus devices running NX-OS
Subclass for Cisco Nexus devices running NX-OS.
See documentation in L<SNMP::Info::Layer3::Nexus> for details.
=item SNMP::Info::Layer3::OneAccess
Subclass for OneAccess Quidway switches
Subclass for OneAccess routers.
See documentation in L<SNMP::Info::Layer3::OneAccess> for details.
@@ -953,13 +981,15 @@ See documentation in L<SNMP::Info::Layer3::Pica8> for details.
=item SNMP::Info::Layer3::SonicWALL
Subclass for generic SonicWALL devices. See documentation in
L<SNMP::Info::Layer3::SonicWALL> for details.
Subclass for generic SonicWALL devices.
See documentation in L<SNMP::Info::Layer3::SonicWALL> for details.
=item SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances. See
documentation in L<SNMP::Info::Layer3::Steelhead> for details.
Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::Steelhead> for details.
=item SNMP::Info::Layer3::Sun
@@ -1007,40 +1037,47 @@ See documentation in L<SNMP::Info::Layer7> for details.
=item SNMP::Info::Layer7::APC
Subclass for APC UPS devices
Subclass for APC UPS devices.
See documentation in L<SNMP::Info::Layer7::APC> for details.
=item SNMP::Info::Layer7::Arbor
Subclass for Arbor appliances
Subclass for Arbor appliances.
See documentation in L<SNMP::Info::Layer7::Arbor> for details.
=item SNMP::Info::Layer7::CiscoIPS
Subclass for Cisco IPS devices
Subclass for Cisco IPS devices.
See documentation in L<SNMP::Info::Layer7::Cisco IPS> for details.
See documentation in L<SNMP::Info::Layer7::CiscoIPS> for details.
=item SNMP::Info::Layer7::Gigamon
Subclass for Gigamon devices
Subclass for Gigamon devices.
See documentation in L<SNMP::Info::Layer7::Gigamon> for details.
=item SNMP::Info::Layer7::Netscaler
=item SNMP::Info::Layer7::Liebert
Subclass for Citrix Netscaler appliances
Subclass for Liebert devices.
See documentation in L<SNMP::Info::Layer7::Netscaler> for details.
See documentation in L<SNMP::Info::Layer7::Liebert> for details.
=item SNMP::Info::Layer7::Neoteris
Subclass for Juniper SSL VPN appliances
Subclass for Juniper SSL VPN appliances.
See documentation in L<SNMP::Info::Layer7::Neoteris> for details.
=item SNMP::Info::Layer7::Netscaler
Subclass for Citrix Netscaler appliances.
See documentation in L<SNMP::Info::Layer7::Netscaler> for details.
=back
=back
@@ -1053,8 +1090,8 @@ Kramarov, Bernhard Augenstein, Bradley Baetz, Brian Chow, Brian Wilson,
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!
Nicolai Petri, Ralf Gross, Robert Kerr, Nick Nauwelaerts and people listed
on the Netdisco README!
=head1 USAGE
@@ -1297,6 +1334,11 @@ sub new {
delete $sess_args{MibDirs};
}
# For IPv6 hosts set transport
if ( defined $sess_args{DestHost} ) {
$sess_args{DestHost} = resolve_desthost($sess_args{DestHost});
}
$new_obj->{nosuch} = $args{RetryNoSuch} || $NOSUCH;
# Initialize mibs if not done
@@ -1603,6 +1645,7 @@ sub device_type {
3224 => 'SNMP::Info::Layer3::Netscreen',
3375 => 'SNMP::Info::Layer3::F5',
3417 => 'SNMP::Info::Layer3::BlueCoatSG',
3717 => 'SNMP::Info::Layer3::Genua',
4526 => 'SNMP::Info::Layer2::Netgear',
4874 => 'SNMP::Info::Layer3::ERX',
5624 => 'SNMP::Info::Layer3::Enterasys',
@@ -1622,6 +1665,7 @@ sub device_type {
14823 => 'SNMP::Info::Layer3::Aruba',
14988 => 'SNMP::Info::Layer3::Mikrotik',
17163 => 'SNMP::Info::Layer3::Steelhead',
21091 => 'SNMP::Info::Layer2::Exinda',
25506 => 'SNMP::Info::Layer3::H3C',
25461 => 'SNMP::Info::Layer3::PaloAlto',
26543 => 'SNMP::Info::Layer3::IBMGbTor',
@@ -1629,7 +1673,9 @@ sub device_type {
35098 => 'SNMP::Info::Layer3::Pica8',
41112 => 'SNMP::Info::Layer2::Ubiquiti',
4413 => 'SNMP::Info::Layer2::Ubiquiti',
26928 => 'SNMP::Info::Layer2::Aerohive',
30803 => 'SNMP::Info::Layer3::VyOS',
44641 => 'SNMP::Info::Layer3::VyOS',
40310 => 'SNMP::Info::Layer3::Cumulus',
);
@@ -1657,12 +1703,15 @@ sub device_type {
9303 => 'SNMP::Info::Layer3::PacketFront',
10418 => 'SNMP::Info::Layer1::Cyclades',
11898 => 'SNMP::Info::Layer2::Orinoco',
13458 => 'SNMP::Info::Layer2::Atmedia',
14179 => 'SNMP::Info::Layer2::Airespace',
14525 => 'SNMP::Info::Layer2::Trapeze',
14823 => 'SNMP::Info::Layer3::Aruba',
17163 => 'SNMP::Info::Layer3::Steelhead',
20540 => 'SNMP::Info::Layer2::Sixnet',
21091 => 'SNMP::Info::Layer2::Exinda',
26543 => 'SNMP::Info::Layer3::IBMGbTor',
26928 => 'SNMP::Info::Layer2::Aerohive',
);
my %l1sysoidmap = (
@@ -1672,6 +1721,7 @@ sub device_type {
my %l7sysoidmap = (
318 => 'SNMP::Info::Layer7::APC',
476 => 'SNMP::Info::Layer7::Liebert',
5951 => 'SNMP::Info::Layer7::Netscaler',
9694 => 'SNMP::Info::Layer7::Arbor',
14525 => 'SNMP::Info::Layer2::Trapeze',
@@ -1776,6 +1826,10 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::CiscoASA'
if ( $desc =~ /Cisco Adaptive Security Appliance/i );
# Cisco FTD includes an ASA running as lina process
$objtype = 'SNMP::Info::Layer3::CiscoASA'
if ( $desc =~ /Cisco Firepower Threat Defense/i );
# Cisco FWSM
$objtype = 'SNMP::Info::Layer3::CiscoFWSM'
if ( $desc =~ /Cisco Firewall Services Module/i );
@@ -2525,36 +2579,45 @@ See C<IF-MIB> for full description
=back
=head2 IP Address Table
=head2 IPv4 Address Table
Each entry in this table is an IP address in use on this device. Usually
this is implemented in Layer3 Devices.
Each entry in this table is an IPv4 address in use on this device. Usually
this is implemented in Layer3 Devices. These methods try the deprecated IPv4
address table C<IP-MIB::ipAddrTable> first due to its prevalence and will try
the current C<IP-MIB::ipAddressTable> if it doesn't return any results.
C<IP-MIB::ipAddressTable> results are filtered to only return IPv4 unicast
addresses and modified to match the return format of the older table for
backwards compatibility.
See documentation in L<SNMP::Info::IPv6> for IPv6 Address Table.
=over
=item $info->ip_index()
Maps the IP Table to the IID
Maps the IPv4 addresses to the interface index
(C<ipAdEntIfIndex>)
(C<ipAdEntIfIndex>) or filtered and index modified (C<ipAddressIfIndex>)
=item $info->ip_table()
Maps the Table to the IP address
Maps the Table to the IPv4 address
(C<ipAdEntAddr>)
(C<ipAdEntAddr>) or address extracted from (C<ipAddressIfIndex>)
=item $info->ip_netmask()
Gives netmask setting for IP table entry.
Gives netmask setting for IPv4 table entry.
(C<ipAdEntNetMask>)
(C<ipAdEntNetMask>) or netmask calculated from (C<ipAddressPrefix>)
=item $info->ip_broadcast()
Gives broadcast address for IP table entry.
Gives the value of the least-significant bit in the IPv4 broadcast address
either 1 or 0.
(C<ipAdEntBcastAddr>)
(C<ipAdEntBcastAddr>), there is no equivalent from the
C<IP-MIB::ipAddressTable>
=back
@@ -2735,6 +2798,88 @@ no protocols are supported or running.
=cut
sub ip_index {
my $self = shift;
my $o_ip_idx = $self->old_ip_index();
return $o_ip_idx
if ( ref {} eq ref $o_ip_idx and scalar keys %$o_ip_idx );
# Since callers may be using the old iid to get the IP, strip protocol
# and length from the index
my $n_ip_idx = $self->new_ip_index() || {};
my $n_ip_type = $self->new_ip_type() || {};
my %ip_index;
foreach my $iid ( keys %$n_ip_idx ) {
next unless $n_ip_type->{$iid} and $n_ip_type->{$iid} eq 'unicast';
my @parts = split( /\./, $iid );
my $type = shift(@parts);
my $len = shift(@parts);
next unless ( ( $type == 1 ) and ( $len == 4 ) );
my $new_iid = join( ".", @parts );
$ip_index{$new_iid} = $n_ip_idx->{$iid};
}
return \%ip_index;
}
sub ip_table {
my $self = shift;
my $o_ip_table = $self->old_ip_table();
return $o_ip_table
if ( ref {} eq ref $o_ip_table and scalar keys %$o_ip_table );
my $n_ip_idx = $self->new_ip_index() || {};
my $n_ip_type = $self->new_ip_type() || {};
my %ip_table;
foreach my $iid ( keys %$n_ip_idx ) {
next unless $n_ip_type->{$iid} and $n_ip_type->{$iid} eq 'unicast';
my @parts = split( /\./, $iid );
my $type = shift(@parts);
my $len = shift(@parts);
next unless ( ( $type == 1 ) and ( $len == 4 ) );
my $new_iid = join( ".", @parts );
$ip_table{$new_iid} = $new_iid;
}
return \%ip_table;
}
sub ip_netmask {
my $self = shift;
my $o_ip_mask = $self->old_ip_netmask();
return $o_ip_mask
if ( ref {} eq ref $o_ip_mask and scalar keys %$o_ip_mask );
my $n_ip_pfx = $self->new_ip_prefix() || {};
my $n_ip_type = $self->new_ip_type() || {};
my %ip_netmask;
foreach my $iid ( keys %$n_ip_pfx ) {
next unless $n_ip_type->{$iid} and $n_ip_type->{$iid} eq 'unicast';
my @parts = split( /\./, $iid );
my $type = shift(@parts);
my $len = shift(@parts);
next unless ( ( $type == 1 ) and ( $len == 4 ) );
my $prefix = $n_ip_pfx->{$iid};
next if ( !$prefix || $prefix =~ /0\.0$/ );
if ( $prefix =~ /\.(\d+)$/ ) {
$prefix = $1;
}
my $new_iid = join( ".", @parts );
my $mask = NetAddr::IP::Lite->new( $new_iid . '/' . $prefix )->mask()
|| undef;
$ip_netmask{$new_iid} = $mask;
}
return \%ip_netmask;
}
sub has_topo {
my $self = shift;
@@ -3031,7 +3176,7 @@ implementation.
=head2 Gathering MIB data for SNMP::Info Developers
The preference is to open a feature request in the SourceForge project. This
The preference is to open a pull request in the github project. This
allows all developers to have visibility into the request. Please include
pointers to the applicable platform MIBs. For development we will need an
C<snmpwalk> of the device. There is a tool now included in the SNMP::Info
@@ -3048,10 +3193,10 @@ The utility is named C<make_snmpdata.pl>. Run it with a command line like:
This will print to the file every MIB entry with data in a format that the
developers can use to emulate read operations without needing access to the
device. Preference would be to mask any sensitive data in the output, zip the
file, and upload as an attachment to the Sourceforge tracker. However, if you
do not feel comfortable uploading the output to the tracker you could e-mail
it to the developer that has claimed the ticket.
device. Preference would be to mask any sensitive data in the output, zip
the file, and attach it to the github pull request. However, if you do not
feel comfortable uploading the output to the tracker you could e-mail it
to the developer that has claimed the ticket.
=head2 Data Structures required in new Subclass
@@ -3147,11 +3292,16 @@ ALTEON-TS-PHYSICAL-MIB::agPortCurCfgPortName.
# IF-MIB::IfStackTable
'i_stack_status' => 'ifStackStatus',
# IP::MIB::ipAddrTable (deprecated IPv4 address table)
'ip_index' => 'ipAdEntIfIndex',
'ip_table' => 'ipAdEntAddr',
'ip_netmask' => 'ipAdEntNetMask',
'ip_broadcast' => 'ipAdEntBcastAddr',
# IP-MIB::ipAddrTable (deprecated IPv4 address table)
'old_ip_index' => 'ipAdEntIfIndex',
'old_ip_table' => 'ipAdEntAddr',
'old_ip_netmask' => 'ipAdEntNetMask',
'ip_broadcast' => 'ipAdEntBcastAddr',
# IP-MIB::ipAddressTable
'new_ip_index' => 'ipAddressIfIndex',
'new_ip_prefix' => 'ipAddressPrefix',
'new_ip_type' => 'ipAddressType',
# IF-MIB::ifXTable - Extension Table
'i_speed_high' => 'ifHighSpeed',
@@ -3333,8 +3483,6 @@ will inherit the Cisco Vlan module as an example.
1; # don't forget this line
----------------------- snip --------------------------------
Be sure and send the debugged version to snmp-info-users@lists.sourceforge.net to be
included in the next version of SNMP::Info.
=head1 SNMP::INFO INTERNALS
@@ -3399,7 +3547,7 @@ $REPEATERS = 20;
=item munge_speed()
Makes human friendly speed ratings using %SPEED_MAP
Makes human friendly speed ratings using C<%SPEED_MAP>.
%SPEED_MAP = (
'56000' => '56 kbps',
@@ -3498,7 +3646,7 @@ sub munge_speed {
=item munge_highspeed()
Makes human friendly speed ratings for C<ifHighSpeed>
Makes human friendly speed ratings for C<ifHighSpeed>.
=cut
@@ -3527,7 +3675,7 @@ sub munge_highspeed {
=item munge_ip()
Takes a binary IP and makes it dotted ASCII
Takes a binary IP and makes it dotted ASCII.
=cut
@@ -3554,7 +3702,7 @@ sub munge_mac {
=item munge_prio_mac()
Takes an 2-byte octet stream (HEX-STRING) and returns a colon separated ASCII
Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
hex string.
=cut
@@ -3570,23 +3718,23 @@ sub munge_prio_mac {
=item munge_prio_port()
Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
Takes an 2-byte octet stream (HEX-STRING) and returns a colon separated ASCII
hex string.
=cut
sub munge_prio_port {
my $mac = shift;
return unless defined $mac;
return unless length $mac;
$mac = join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){1}[0-9A-F][0-9A-F]$/i;
my $priop = shift;
return unless defined $priop;
return unless length $priop;
$priop = join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $priop ) );
return $priop if $priop =~ /^([0-9A-F][0-9A-F]:){1}[0-9A-F][0-9A-F]$/i;
return;
}
=item munge_octet2hex()
Takes a binary octet stream and returns an ASCII hex string
Takes a binary octet stream and returns an ASCII hex string.
=cut
@@ -3597,7 +3745,7 @@ sub munge_octet2hex {
=item munge_dec2bin()
Takes a binary char and returns its ASCII binary representation
Takes a binary char and returns its ASCII binary representation.
=cut
@@ -3613,9 +3761,9 @@ sub munge_dec2bin {
return $num;
}
=item munge_bits
=item munge_bits()
Takes a SNMP2 'BITS' field and returns the ASCII bit string
Takes a SNMP2 'BITS' field and returns the ASCII bit string.
=cut
@@ -3626,7 +3774,7 @@ sub munge_bits {
return unpack( "B*", $bits );
}
=item munge_counter64
=item munge_counter64()
If $BIGINT is set to true, then a Math::BigInt object is returned.
See Math::BigInt for details.
@@ -3641,7 +3789,7 @@ sub munge_counter64 {
return $bigint;
}
=item munge_i_up
=item munge_i_up()
Net-SNMP tends to load C<RFC1213-MIB> first, and so ignores the
updated enumeration for C<ifOperStatus> in C<IF-MIB>. This munge
@@ -3663,7 +3811,7 @@ sub munge_i_up {
return $ifOperStatusMap{$i_up} || $i_up;
}
=item munge_port_list
=item 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.
@@ -3684,7 +3832,7 @@ sub munge_port_list {
=item munge_null()
Removes control characters from a string
Removes control characters from a string.
=cut
@@ -3716,6 +3864,35 @@ sub munge_e_type {
=over
=item resolve_desthost()
Takes the SNMP::Session C<DestHost> argument and determines if it is an
'IPv4' or 'IPv6' host. 'IPv6' hosts are prefixed with the C<udp6:>
C<transport-specifier> as required by the undelying C<Net-SNMP> library.
If unable to determine the type of address or resolve a DNS name, dies with
C<croak>.
=cut
sub resolve_desthost {
my $desthost = shift;
# If we have an IPv6 transport-specifier strip it
$desthost =~ s/^(?:udp6:|udpv6:|udpipv6:)//x;
my $ip = NetAddr::IP::Lite->new($desthost);
if ($ip and $ip->bits == 32) {
return $ip->addr;
}
elsif ($ip and $ip->bits == 128) {
return 'udp6:' . $ip->addr;
}
else {
croak "Unable to resolve DestHost: $desthost to an IP\n";
}
}
=item $info->init()
Used internally. Loads all entries in %MIBS.
@@ -4268,7 +4445,7 @@ sub _load_attr {
if ( $self->{Offline} ) {
$self->error_throw(
"SNMP::Info::_load_atrr: Offline but $attr is not in cache\n" );
"SNMP::Info::_load_attr: Offline but $attr is not in cache\n" );
return;
}
@@ -4286,7 +4463,7 @@ sub _load_attr {
# requests
my ($leaf) = $qual_leaf =~ /::(.+)$/;
# If we weren't able to translate, we'll only have an OID
$leaf = $oid unless defined $leaf;
@@ -4346,7 +4523,7 @@ sub _load_attr {
($vars) = $sess->bulkwalk( 0, $repeaters, $var );
if ( $sess->{ErrorNum} ) {
$self->error_throw(
"SNMP::Info::_load_atrr: BULKWALK " . $sess->{ErrorStr},
"SNMP::Info::_load_attr: BULKWALK " . $sess->{ErrorStr},
"\n" );
return;
}
@@ -4485,6 +4662,8 @@ sub snmp_connect_ip {
my $comm = $self->snmp_comm();
return if $self->{Offline};
$ip = resolve_desthost($ip);
return if ( $ip eq '0.0.0.0' ) or ( $ip =~ /^127\./ );
# Create session object
@@ -4514,7 +4693,6 @@ sub snmp_connect_ip {
}
return 1;
}
=item modify_port_list(portlist,offset,replacement)
@@ -4660,7 +4838,7 @@ sub _validate_autoload_method {
# Validate that we have proper access for the operation
my $access = '';
# Prevent autovivification by checking that MIB leaf exists
if (exists $SNMP::MIB{$oid}) {
$access = $SNMP::MIB{$oid}{'access'} || '';
@@ -4680,23 +4858,23 @@ sub _validate_autoload_method {
}
my $table_leaf = 0;
# This is an expensive check so we assume anything in the funcs and globals
# hashes are known. Only for actual MIB leafs should we have to check the
# MIB. If the parent of the leaf has indexes it is contained within a table.
# MIB. If the parent of the leaf has indexes it is contained within a table.
if ($funcs->{$attr}) {
$table_leaf = 1;
}
elsif (!$globals->{$attr}) {
# Prevent autovivification
# Prevent autovivification
if (exists $SNMP::MIB{$oid} &&
exists $SNMP::MIB{$oid}{'parent'} &&
exists $SNMP::MIB{$oid}{'parent'}{'indexes'} &&
defined $SNMP::MIB{$oid}{'parent'}{'indexes'} &&
scalar( @{$SNMP::MIB{$oid}{'parent'}{'indexes'}} ) > 0)
{
$table_leaf = 1;
$table_leaf = 1;
}
}

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
@@ -240,10 +240,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
);
@@ -269,7 +269,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.
@@ -299,7 +299,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 +322,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

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
@@ -50,7 +50,7 @@ $VERSION = '3.57';
'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 +73,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 +88,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.

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
# Load MIB for leafs referenced within class
%MIBS = ('IF-MIB' => 'ifIndex',);
@@ -84,14 +84,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

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS,
@@ -84,7 +84,7 @@ $VERSION = '3.57';
'airespace_ess_ifname' => 'bsnDot11EssInterfaceName',
'airespace_ess_aclname' => 'bsnDot11EssAclName',
'airespace_ess_bcast' => 'bsnDot11EssBroadcastSsid',
# AIRESPACE-WIRELESS-MIB::bsnAPTable
'airespace_ap_mac' => 'bsnAPDot3MacAddress',
'airespace_ap_name' => 'bsnAPName',
@@ -508,8 +508,8 @@ sub ip_index {
my $airespace = shift;
my $partial = shift;
my $ip_index = $airespace->orig_ip_index($partial) || {};
my $if_ip = $airespace->airespace_if_ip() || {};
my $ip_index = $airespace->SUPER::ip_index($partial) || {};
my $if_ip = $airespace->airespace_if_ip() || {};
my %ip_index;
foreach my $ip ( keys %$ip_index ) {
@@ -534,9 +534,9 @@ sub ip_netmask {
my $airespace = shift;
my $partial = shift;
my $ip_mask = $airespace->orig_ip_netmask($partial) || {};
my $if_ip = $airespace->airespace_if_ip() || {};
my $if_mask = $airespace->airespace_if_mask() || {};
my $ip_mask = $airespace->SUPER::ip_netmask($partial) || {};
my $if_ip = $airespace->airespace_if_ip() || {};
my $if_mask = $airespace->airespace_if_mask() || {};
my %ip_netmask;
foreach my $ip ( keys %$ip_mask ) {
@@ -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

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,7 +237,7 @@ 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;
@@ -262,7 +262,7 @@ sub fw_status {
my $qb = $bridge->qb_fw_status();
return $qb if (ref {} eq ref $qb and scalar keys %$qb);
return $bridge->SUPER::fw_status();
}
@@ -555,10 +555,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 +579,7 @@ Max Baker
my $port = $interfaces->{$iid};
print "Port:$port forwarding to $mac\n";
}
}
=head1 DESCRIPTION
@@ -588,12 +588,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(...);
@@ -657,19 +657,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 +701,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 +731,7 @@ Returns VLAN IDs
=head2 Forwarding Table (C<dot1dTpFdbEntry>)
=over
=over
=item $bridge->fw_mac()
@@ -949,7 +949,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 +987,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 +1027,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

@@ -43,7 +43,7 @@ use SNMP::Info;
use vars
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
$VERSION = '3.57';
$VERSION = '3.65';
# Five data structures required by SNMP::Info
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
@@ -54,7 +54,7 @@ $VERSION = '3.57';
'cdp_run' => 'cdpGlobalRun',
'cdp_interval' => 'cdpGlobalMessageInterval',
'cdp_holdtime' => 'cdpGlobalHoldTime',
'cdp_gid' => 'cdpGlobalDeviceId',
'cdp_gid' => 'cdpGlobalDeviceId',
);
%FUNCS = (
@@ -62,7 +62,7 @@ $VERSION = '3.57';
'cdp_addr' => 'cdpCacheAddress',
'cdp_ver' => 'cdpCacheVersion',
'cdp_dev_id' => 'cdpCacheDeviceId',
'cdp_port' => 'cdpCacheDevicePort',
'cdp_dev_port' => 'cdpCacheDevicePort',
'cdp_platform' => 'cdpCachePlatform',
'cdp_capabilities' => 'cdpCacheCapabilities',
'cdp_domain' => 'cdpCacheVTPMgmtDomain',
@@ -79,7 +79,6 @@ $VERSION = '3.57';
'cdp_capabilities' => \&SNMP::Info::munge_bits,
'cdp_platform' => \&SNMP::Info::munge_null,
'cdp_domain' => \&SNMP::Info::munge_null,
'cdp_port' => \&SNMP::Info::munge_null,
'cdp_ver' => \&SNMP::Info::munge_null,
'cdp_ip' => \&SNMP::Info::munge_ip,
'cdp_power' => \&munge_power,
@@ -110,18 +109,16 @@ sub munge_power {
sub hasCDP {
my $cdp = shift;
my $ver = $cdp->{_version};
# Check the global that is supposed to indicate CDP is running
my $cdp_run = $cdp->cdp_run();
return 1 if $cdp_run;
# SNMP v1 clients dont have the globals
if ( defined $ver and $ver == 1 ) {
my $cdp_ip = $cdp->cdp_ip();
# SNMP v1 clients don't have the globals, fallback
# by checking if it would report neighbors
my $cdp_ip = $cdp->cdp_ip() || {};
return 1 if scalar keys %$cdp_ip;
# See if anything in cdp cache, if so we have cdp
return 1 if ( defined $cdp_ip and scalar( keys %$cdp_ip ) );
return;
}
return $cdp->cdp_run();
return;
}
sub cdp_if {
@@ -219,6 +216,22 @@ sub cdp_id {
return \%cdp_id;
}
sub cdp_port {
my $cdp = shift;
my $partial = shift;
my $ch = $cdp->cdp_dev_port($partial) || {};
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);
$cdp_port{$key} = $port;
}
return \%cdp_port;
}
1;
__END__
@@ -232,10 +245,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
);
@@ -261,7 +274,7 @@ 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
@@ -271,7 +284,7 @@ some HP 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
@@ -296,7 +309,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()
@@ -315,13 +328,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().
@@ -342,9 +355,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
@@ -394,7 +407,7 @@ C<CISCO-VTP-MIB::managementDomainName>
(C<cdpCacheVTPMgmtDomain>)
=item $cdp->cdp_duplex()
=item $cdp->cdp_duplex()
Returns the port duplex status from remote devices.
@@ -411,7 +424,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 :
@@ -422,7 +435,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;
@@ -430,13 +443,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.
@@ -458,9 +471,9 @@ Returns remote address
(C<cdpCacheAddress>)
=item $cdp->cdp_platform()
=item $cdp->cdp_platform()
Returns remote platform id
Returns remote platform id
(C<cdpCachePlatform>)
@@ -476,7 +489,7 @@ Returns remote address type received. Usually IP.
(C<cdpCacheAddressType>)
=item $cdp->cdp_ver()
=item $cdp->cdp_ver()
Returns remote hardware version
@@ -495,7 +508,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/;
use vars qw/$DEBUG $VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,6 +185,10 @@ 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
@@ -144,15 +203,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

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
@@ -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

@@ -39,16 +39,16 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
'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 +113,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();
@@ -176,7 +176,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

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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.

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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.

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
@@ -295,14 +295,14 @@ Max Baker
=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,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $ciscostats->class();
@@ -386,7 +386,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 +425,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 +439,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

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
'SNMPv2-MIB' => 'sysDescr',
@@ -88,7 +88,7 @@ $VERSION = '3.57';
# CISCO-FLASH-MIB::ciscoFlashDeviceTable
'cisco_flash_size' => 'ciscoFlashDeviceSize',
# CISCO-IMAGE-MIB
'ci_images' => 'ciscoImageString',
);
@@ -334,7 +334,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 +342,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 +351,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.
@@ -447,7 +447,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,29 +1,29 @@
# 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;
@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
$VERSION = '3.57';
$VERSION = '3.65';
@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,9 +303,17 @@ 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
=head2 Required MIBs
=over
=item F<CISCO-STP-EXTENSIONS-MIB>
=back
@@ -306,7 +327,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 +345,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

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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.
@@ -620,7 +620,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 +722,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 +769,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 +884,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 +896,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 +906,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 +922,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 +932,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

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
@@ -64,7 +64,7 @@ sub hasEDP {
my $edp_ip = $edp->extremeEdpNeighborVlanIpAddress() || {};
return 1 if ( scalar( keys %$edp_ip ) );
return;
}
@@ -80,7 +80,7 @@ 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 +103,7 @@ sub edp_if {
$iid = $1 if $iid =~ /^(\d+)\./;
$edp_if{$key} = $iid;
}
return \%edp_if;
}
@@ -193,10 +193,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
);
@@ -222,7 +222,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
@@ -251,7 +251,7 @@ These are methods that return scalar values from SNMP
=item $edp->hasEDP()
Is EDP is active in this device?
Is EDP is active in this device?
=back
@@ -285,7 +285,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

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
@@ -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();

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
@@ -95,14 +95,14 @@ 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();
print " Using device sub class : $class\n";
@@ -110,7 +110,7 @@ Max Baker
# 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

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
@@ -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
);
@@ -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,7 +186,7 @@ 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
@@ -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

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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

@@ -43,7 +43,7 @@ use SNMP::Info::Aggregate;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Aggregate::MIBS,
@@ -82,10 +82,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 +105,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

@@ -44,19 +44,19 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.57';
$VERSION = '3.65';
%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 +70,10 @@ $VERSION = '3.57';
'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 +81,7 @@ $VERSION = '3.57';
'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 +106,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 +133,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 +142,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 +177,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 +204,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 +231,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 +442,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 +457,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
@@ -519,7 +519,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 +545,7 @@ Maps an address of type C<cInetNetToMediaNetAddressType> on interface C<ifIndex>
=head1 MUNGES
=over
=over
=item munge_physaddr()

View File

@@ -1,7 +1,7 @@
# SNMP::Info::LLDP
# $Id$
#
# Copyright (c) 2008 Eric Miller
# Copyright (c) 2018 Eric Miller
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -116,7 +116,8 @@ sub hasLLDP {
my $lldp_cap = $lldp->lldp_sys_cap();
return 1 if defined $lldp_cap;
# If the device doesn't return local system capabilities, fallback by checking if it would report neighbors
# If the device doesn't return local system capabilities, fallback
# by checking if it would report neighbors
my $lldp_rem = $lldp->lldp_rem_id() || {};
return 1 if scalar keys %$lldp_rem;
@@ -138,13 +139,18 @@ sub lldp_if {
my @aOID = split( '\.', $key );
my $port = $aOID[1];
next unless $port;
# Local LLDP port may not equate to ifIndex, see LldpPortNumber 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) seem to use ifAlias though.
# Local LLDP port may not equate to ifIndex, see LldpPortNumber
# 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)
# seem to use ifAlias though.
my $lldp_desc = $lldp->lldpLocPortDesc($port);
my $desc = $lldp_desc->{$port};
# If cross reference is successful use it, otherwise stick with lldpRemLocalPortNum
# If cross reference is successful use it, otherwise stick with
# lldpRemLocalPortNum
if ( $desc && exists $r_i_descr{$desc} ) {
$port = $r_i_descr{$desc};
}
@@ -165,7 +171,7 @@ sub lldp_ip {
my %lldp_ip;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
my ( $index, $proto, $addr ) = $lldp->_lldp_addr_index($key);
next unless defined $index;
next unless $proto == 1;
$lldp_ip{$index} = $addr;
@@ -181,7 +187,7 @@ sub lldp_ipv6 {
my %lldp_ipv6;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
my ( $index, $proto, $addr ) = $lldp->_lldp_addr_index($key);
next unless defined $index;
next unless $proto == 2;
$lldp_ipv6{$index} = $addr;
@@ -197,7 +203,7 @@ sub lldp_mac {
my %lldp_ipv6;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
my ( $index, $proto, $addr ) = $lldp->_lldp_addr_index($key);
next unless defined $index;
next unless $proto == 6;
$lldp_ipv6{$index} = $addr;
@@ -213,7 +219,7 @@ sub lldp_addr {
my %lldp_ip;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
my ( $index, $proto, $addr ) = $lldp->_lldp_addr_index($key);
next unless defined $index;
$lldp_ip{$index} = $addr;
}
@@ -233,7 +239,10 @@ sub lldp_port {
foreach my $key ( sort keys %$pid ) {
my $port = $pdesc->{$key};
my $type = $ptype->{$key};
if ( $type and $type eq 'interfaceName' ) {
if ( $type
and ( $type eq 'interfaceName' or $type eq 'local' )
and ( defined $pid->{$key} and $pid->{$key} !~ /^\d+$/ ) )
{
# If the pid claims to be an interface name,
# believe it.
@@ -246,8 +255,7 @@ sub lldp_port {
# May need to format other types in the future, i.e. Network address
if ( $type =~ /mac/ ) {
$port = join( ':',
map { sprintf "%02x", $_ } unpack( 'C*', $port ) );
$port = SNMP::Info::munge_mac($port)
}
}
@@ -282,12 +290,13 @@ sub lldp_id {
# May need to format other types in the future
if ( $type =~ /mac/ ) {
$id = join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $id ) );
$id = SNMP::Info::munge_mac($id)
}
elsif ( $type eq 'networkAddress' ) {
if ( length( unpack( 'H*', $id ) ) == 10 ) {
# IP address (first octet is sign, I guess)
# IP address - first octet is IANA Address Family Number, need
# walk with IPv6
my @octets
= ( map { sprintf "%02x", $_ } unpack( 'C*', $id ) )
[ 1 .. 4 ];
@@ -323,7 +332,8 @@ sub lldp_cap {
# Encoded as BITS which Perl Net-SNMP implementation doesn't seem to
# be able to enumerate for us, so we have to get it from the MIB
# and enumerate ourselves
my $oid = SNMP::translateObj( 'lldpRemSysCapEnabled', 0, 1 ) || '';
my $oid
= SNMP::translateObj( 'LLDP-MIB::lldpRemSysCapEnabled', 0, 1 ) || '';
my $enums = (
( ref {} eq ref $SNMP::MIB{$oid}{'enums'} )
? $SNMP::MIB{$oid}{'enums'}
@@ -401,11 +411,13 @@ sub lldp_media_cap {
# Break up the lldpRemManAddrTable INDEX into common index, protocol,
# and address.
sub _lldp_addr_index {
my $idx = shift;
my @oids = split( /\./, $idx );
my $index = join( '.', splice( @oids, 0, 3 ) );
my $proto = shift(@oids);
shift(@oids) if scalar @oids > 4; # $length
my $lldp = shift;
my $idx = shift;
my @oids = split( /\./, $idx );
my $index = join( '.', splice( @oids, 0, 3 ) );
my $proto = shift(@oids);
shift(@oids) if scalar @oids > 4; # $length
# IPv4
if ( $proto == 1 ) {
@@ -415,7 +427,7 @@ sub _lldp_addr_index {
# IPv6
elsif ( $proto == 2 ) {
return ( $index, $proto,
join(':', unpack('(H4)*', pack('C*', @oids)) ) );
join( ':', unpack( '(H4)*', pack( 'C*', @oids ) ) ) );
}
# MAC
@@ -443,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
);
@@ -472,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
@@ -508,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.
@@ -519,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>)
@@ -533,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
@@ -583,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()
@@ -599,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()
@@ -620,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
@@ -671,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>)
@@ -680,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>)
@@ -689,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

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
@@ -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
)
)
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
@@ -242,7 +242,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>)

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
@@ -128,14 +128,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 +143,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 +181,7 @@ Returns 'allied' :)
=item $allied->os()
Returns 'allied'
Returns 'allied'
=item $allied->os_ver()

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
@@ -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 a
Asante device through SNMP.
=head2 Inherited Classes
@@ -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

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,12 +501,12 @@ 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.
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.
after determining a more specific class using the method above.
my $bayhub = new SNMP::Info::Layer1::Bayhub(...);
@@ -607,18 +607,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 +644,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 +671,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

@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,11 +495,11 @@ 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.
after determining a more specific class using the method above.
my $cyclades = new SNMP::Info::Layer1::Cyclades(...);
@@ -602,12 +602,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 +617,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

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,12 +382,12 @@ 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.
after determining a more specific class using the method above.
my $s3000 = new SNMP::Info::Layer1::S3000(...);
@@ -447,7 +447,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 +477,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 +485,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 +516,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

@@ -46,7 +46,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
@@ -169,14 +169,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 +199,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(...);
@@ -243,7 +243,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

View File

@@ -1,3 +1,31 @@
# SNMP::Info::Layer2::3Com - SNMP Interface to 3Com Devices
#
# Copyright (c) 2019 by The Netdisco Developer Team.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::3Com;
use strict;
@@ -11,7 +39,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::LLDP::MIBS,

View File

@@ -1,3 +1,31 @@
# SNMP::Info::Layer2::Adtran - SNMP Interface to Adtran Devices
#
# Copyright (c) 2019 by The Netdisco Developer Team.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Adtran;
use strict;
@@ -11,25 +39,25 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
# 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',
'ADTRAN-GENMEF-MIB' => 'adGenMEFMIB',
'ADTRAN-GENPORT-MIB' => 'adGenPort',
# 'ADTRAN-GENEVC-MIB' => 'adGenEVCMIB',
# 'ADTRAN-GENMEF-MIB' => 'adGenMEFMIB',
# 'ADTRAN-GENPORT-MIB' => 'adGenPort',
'ADTRAN-MIB' => 'adtran',
'ADTRAN-AOSUNIT' => 'adGenAOSUnitMib',
);
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
'serial' => 'adProdSerialNumber',
'ad_mgmtevcvid' => 'adGenEVCSysMgmtEVCSTagVID',
@@ -37,7 +65,7 @@ our $index = undef;
%FUNCS = ( %SNMP::Info::Layer2::FUNCS,
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::LLDP::FUNCS,
'ad_evcstag' => 'adGenEVCLookupName',
'ad_menport' => 'adGenMenPortRowStatus',
'ad_evcnamevid' => 'adGenEVCSTagVID',
@@ -58,11 +86,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";
}
@@ -77,7 +105,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;
@@ -85,7 +113,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;
@@ -96,19 +124,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) {
if (defined $adname) {
foreach my $port (keys %$adname) {
my @split = split(/\./,$port);
$i_name->{@split[1]} = $adname->{$port};
}
}
return $i_name;
}
sub i_vlan {
sub i_vlan {
my $adtran = shift;
my $partial = shift;
my $uniports = $adtran->ad_evcmapuniport() || undef;
@@ -127,14 +155,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) {
@@ -174,14 +202,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();

View File

@@ -0,0 +1,513 @@
# SNMP::Info::Layer2::Aerohive
#
# Copyright (c) 2018 Eric Miller
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Aerohive;
use strict;
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/;
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
'AH-SYSTEM-MIB' => 'ahSystemSerial',
'AH-INTERFACE-MIB' => 'ahSSIDName',
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
# AH-SYSTEM-MIB
'serial' => 'ahSystemSerial',
'os_bin' => 'ahFirmwareVersion',
# not documented in the most recent mib,
# but this is the base mac for the device
'ah_mac' => '.1.3.6.1.4.1.26928.1.3.2.0',
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
# AH-INTERFACE-MIB::ahRadioAttributeTable
'i_80211channel' => 'ahRadioChannel',
'dot11_cur_tx_pwr_mw' => 'ahRadioTxPower',
# AH-INTERFACE-MIB::ahXIfTable
'ah_i_ssidlist' => 'ahSSIDName',
# AH-INTERFACE-MIB::ahAssociationTable
'cd11_txrate' => 'ahClientLastTxRate',
'cd11_uptime' => 'ahClientLinkUptime',
'cd11_sigstrength' => 'ahClientRSSI',
'cd11_rxpkt' => 'ahClientRxDataFrames',
'cd11_txpkt' => 'ahClientTxDataFrames',
'cd11_rxbyte' => 'ahClientRxDataOctets',
'cd11_txbyte' => 'ahClientTxDataOctets',
'cd11_ssid' => 'ahClientSSID',
'ah_c_vlan' => 'ahClientVLAN',
'ah_c_ip' => 'ahClientIP',
);
%MUNGE
= ( %SNMP::Info::Layer2::MUNGE, 'at_paddr' => \&SNMP::Info::munge_mac, );
sub layers {
return '00000111';
}
sub vendor {
return 'aerohive';
}
sub os {
return 'hiveos';
}
sub serial {
my $aerohive = shift;
return $aerohive->ahSystemSerial()
|| $aerohive->SUPER::serial();
}
sub os_ver {
my $aerohive = shift;
my $descr = $aerohive->description();
if ( $descr =~ m/\bHiveOS\s(\d\.\w+)\b/ix ) {
return $1;
}
return;
}
sub mac {
my $aerohive = shift;
my $ahmac = $aerohive->ah_mac();
# newer hiveos version just return the mac address
if (defined $ahmac) {
# aerohive has a 0000:0000:0000 mac format by default,
# change to 00:00:00:00:00:00
$ahmac =~ s/(..)(..:?)/$1:$2/g;
return $ahmac;
}
my @macs;
my $macs = $aerohive->i_mac();
foreach my $iid (keys %$macs) {
if (defined $macs->{$iid}) {
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 ) {
return $1;
}
return;
}
sub i_ssidlist {
my $aerohive = shift;
my $partial = shift;
my $ssids = $aerohive->ah_i_ssidlist($partial) || {};
my %i_ssidlist;
foreach my $iid ( keys %$ssids ) {
my $ssid = $ssids->{$iid};
next if $ssid =~ /N\/A/i;
$i_ssidlist{$iid} = $ssid;
}
return \%i_ssidlist;
}
sub i_ssidmac {
my $aerohive = shift;
my $partial = shift;
my $ssids = $aerohive->i_ssidlist($partial) || {};
my $macs = $aerohive->i_mac($partial) || {};
my %i_ssidmac;
foreach my $iid ( keys %$ssids ) {
my $mac = $macs->{$iid};
next unless $mac;
$i_ssidmac{$iid} = $mac;
}
return \%i_ssidmac;
}
# Break up the ahAssociationEntry INDEX into ifIndex and MAC Address.
sub _ah_association_index {
my $idx = shift;
my @values = split( /\./, $idx );
my $ifindex = shift(@values);
my $length = shift(@values);
return ( $ifindex, join( ':', map { sprintf "%02x", $_ } @values ) );
}
sub cd11_port {
my $aerohive = shift;
my $cd11_txrate = $aerohive->cd11_txrate();
my $interfaces = $aerohive->interfaces();
my %ret;
foreach ( keys %$cd11_txrate ) {
my ( $ifindex, $mac ) = _ah_association_index($_);
$ret{$_} = $interfaces->{$ifindex};
}
return \%ret;
}
sub cd11_mac {
my $aerohive = shift;
my $cd11_txrate = $aerohive->cd11_txrate();
my %ret;
foreach ( keys %$cd11_txrate ) {
my ( $ifindex, $mac ) = _ah_association_index($_);
$ret{$_} = $mac;
}
return \%ret;
}
# Does not support the standard Bridge MIB
sub bp_index {
my $aerohive = shift;
my $partial = shift;
my $i_index = $aerohive->i_index($partial) || {};
my %bp_index;
foreach my $iid ( keys %$i_index ) {
my $index = $i_index->{$iid};
next unless defined $index;
$bp_index{$index} = $iid;
}
return \%bp_index;
}
sub qb_fw_port {
my $aerohive = shift;
my $partial = shift;
my $txrate = $aerohive->cd11_txrate($partial) || {};
my $qb_fw_port = {};
foreach my $idx ( keys %$txrate ) {
my ( $fdb_id, $mac ) = _ah_association_index($idx);
$qb_fw_port->{$idx} = $fdb_id;
}
return $qb_fw_port;
}
sub qb_fw_mac {
my $aerohive = shift;
my $partial = shift;
my $txrate = $aerohive->cd11_txrate($partial) || {};
my $qb_fw_mac = {};
foreach my $idx ( keys %$txrate ) {
my ( $fdb_id, $mac ) = _ah_association_index($idx);
$qb_fw_mac->{$idx} = $mac;
}
return $qb_fw_mac;
}
sub qb_fw_vlan {
my $aerohive = shift;
my $partial = shift;
my $vlans = $aerohive->ah_c_vlan($partial) || {};
my $qb_fw_vlan = {};
foreach my $idx ( keys %$vlans ) {
my $vlan = $vlans->{$idx};
next unless defined $vlan;
$qb_fw_vlan->{$idx} = $vlan;
}
return $qb_fw_vlan;
}
# arpnip:
#
# This is the AP snooping on the MAC->IP mappings.
# Pretending this is arpnip data allows us to get MAC->IP
# mappings even for stations that only communicate locally.
sub at_paddr {
my $aerohive = shift;
my $txrate = $aerohive->cd11_txrate() || {};
my $at_paddr = {};
foreach my $idx ( keys %$txrate ) {
my ( $fdb_id, $mac ) = _ah_association_index($idx);
$at_paddr->{$idx} = $mac;
}
return $at_paddr;
}
sub at_netaddr {
my $aerohive = shift;
my $ips = $aerohive->ah_c_ip() || {};
my $ret = {};
foreach my $idx ( keys %$ips ) {
next if ( $ips->{$idx} eq '0.0.0.0' );
$ret->{$idx} = $ips->{$idx};
}
return $ret;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Aerohive - SNMP Interface to Aerohive Access Points
=head1 AUTHOR
Eric Miller
=head1 SYNOPSIS
# 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();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=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(...);
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head2 Required MIBs
=over
=item F<AH-SYSTEM-MIB>
=item F<AH-INTERFACE-MIB>
=back
=head2 Inherited MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP.
=over
=item $aerohive->vendor()
Returns 'aerohive'.
=item $aerohive->os()
Returns 'hiveos'.
=item $aerohive->serial()
Returns the serial number extracted from C<ahSystemSerial>.
=item $aerohive->os_ver()
Returns the OS version extracted from C<sysDescr>.
=item $aerohive->os_bin()
Returns the firmware version extracted from C<ahFirmwareVersion>.
=item $aerohive->mac()
Returns the base mac address of the aerohive unit from an undocumented
snmp oid. if this oid is not available it will walk all interfaces and
return the lowest numbered mac address.
=item $aerohive->model()
Returns the model extracted from C<sysDescr>.
=back
=head2 Overrides
=over
=item $aerohive->layers()
Returns 00000111. Layer 2 and Layer 3 functionality through proprietary MIBs.
=back
=head2 Global Methods imported from SNMP::Info::Layer2
See 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
=item $aerohive->i_ssidlist()
Returns reference to hash. SSID's recognized by the radio interface.
=item $aerohive->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.
=item $aerohive->i_80211channel()
Returns reference to hash. Current operating frequency channel of the radio
interface.
C<ahRadioChannel>
=item $aerohive->dot11_cur_tx_pwr_mw()
Returns reference to hash. Current transmit power, in milliwatts, of the
radio interface.
C<ahRadioTxPower>
=item $aironet->cd11_port()
Returns radio interfaces.
=item $aironet->cd11_mac()
Returns client radio interface MAC addresses.
=back
=head2 Overrides
=over
=item $aerohive->bp_index()
Simulates bridge MIB by returning reference to a hash mapping i_index() to
the interface iid.
=item $aerohive->qb_fw_port()
Returns reference to hash of forwarding table entries port interface
identifier (iid).
=item $aerohive->qb_fw_mac()
Returns reference to hash of forwarding table MAC Addresses.
C<ahClientMac>
=item $aerohive->qb_fw_vlan()
Returns reference to hash of forwarding table entries VLAN ID.
C<ahClientVLAN>
=back
=head2 Arp Cache Table Augmentation
The AP has knowledge of MAC->IP mappings for wireless clients.
Augmenting the arp cache data with these MAC->IP mappings enables visibility
for stations that only communicate locally.
=over
=item $aerohive->at_paddr()
C<ahClientMac>
=item $aerohive->at_netaddr()
C<ahClientIP>
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=cut

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,11 +269,11 @@ 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.
after determining a more specific class using the method above.
my $airespace = new SNMP::Info::Layer2::Airespace(...);
@@ -346,7 +346,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 +356,7 @@ Returns client radio interface MAC addresses.
Returns client transmission speed in Mbs.
=back
=back
=head2 Overrides

View File

@@ -49,7 +49,7 @@ use SNMP::Info::IEEE802dot11;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::IEEE802dot11::GLOBALS,
@@ -443,7 +443,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 +484,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 +517,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(...);
@@ -655,11 +655,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

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
@@ -138,14 +138,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 +153,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
@@ -195,7 +195,7 @@ Returns 'allied' :)
=item $allied->os()
Returns 'allied'
Returns 'allied'
=item $allied->os_ver()
@@ -213,7 +213,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

@@ -0,0 +1,165 @@
# SNMP::Info::Layer2::Atmedia
#
# Copyright (c) 2018 Netdisco Developers
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Atmedia;
use strict;
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/;
$VERSION = '3.65';
%MIBS = ( %SNMP::Info::Layer2::MIBS );
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
'os_ver' => '.1.3.6.1.4.1.13458.1.2.1.0',
'atm_serial' => '.1.3.6.1.4.1.13458.1.1.2.0',
'atm_hardversion' => '.1.3.6.1.4.1.13458.1.3.1.0',
'atm_model' => '.1.3.6.1.4.1.13458.1.1.6.0',
);
%FUNCS = (%SNMP::Info::Layer2::FUNCS);
%MUNGE = (%SNMP::Info::Layer2::MUNGE);
sub serial {
my $atmedia = shift;
return $atmedia->atm_serial();
}
sub os {
return 'Atmedia-OS';
}
sub model {
my $atmedia = shift;
my $atmedia_model = $atmedia->atm_model();
$atmedia_model =~ s/\<|\>//g;
$atmedia_model =~ s/\//_/g;
return $atmedia_model;
}
sub vendor {
return 'atmedia';
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Atmedia - SNMP Interface to atmedia encryptors
=head1 AUTHOR
Netdisco Developers
=head1 SYNOPSIS
# 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();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Provides abstraction to information obtainable from a atmedia encryptor
through SNMP. See inherited classes' documentation for inherited methods.
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head2 Inherited MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP
=head2 Overrides
=over
=item $atmedia->vendor()
Returns 'atmedia'
=item $atmedia->os()
Returns 'Atmedia-OS'
=item $atmedia->os_ver()
(C<acSoftVersion>)
=item $atmedia->model()
(C<acDescr>)
=item $atmedia->serial()
(C<acSerialNumber>)
=back
=head2 Globals imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head1 TABLE METHODS
=head2 Table Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=cut

View File

@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
@@ -136,7 +136,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 +341,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 +353,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 +363,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 +383,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 +417,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $baystack->class();
@@ -427,10 +427,10 @@ Eric Miller
Provides abstraction to the configuration information obtainable from an
Avaya Ethernet Switch (formerly Nortel/Bay Baystack) and VSP 7000 series
through SNMP.
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.
after determining a more specific class using the method above.
my $baystack = new SNMP::Info::Layer2::Baystack(...);
@@ -500,7 +500,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>
@@ -560,10 +560,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 +572,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 +602,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().

View File

@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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();
@@ -312,7 +312,7 @@ 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.
after determining a more specific class using the method above.
my $c1900 = new SNMP::Info::Layer2::C1900(...);
@@ -379,8 +379,8 @@ 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.
@@ -467,7 +467,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 +510,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 +563,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 +574,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

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2::Cisco;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,11 +241,11 @@ Max Baker
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
C2900 device through SNMP.
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.
after determining a more specific class using the method above.
my $c2900 = new SNMP::Info::Layer2::C2900(...);
@@ -309,8 +309,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 +333,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 +357,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 +372,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 +387,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 +401,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

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2::Cisco;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::Cisco::MIBS,
@@ -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

@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS,
@@ -274,14 +274,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 +289,14 @@ 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.
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.
@@ -430,7 +430,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 +469,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 +493,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>)

View File

@@ -52,7 +52,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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();

View File

@@ -1,5 +1,4 @@
# SNMP::Info::Layer2::CiscoSB
# $Id$
#
# Copyright (c) 2013 Nic Bernstein
#
@@ -50,7 +49,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
@@ -149,7 +148,6 @@ sub interfaces {
return $interfaces;
}
1;
__END__
@@ -185,15 +183,17 @@ managed switches. [i.e. those matching enterprises(1).cisco(9).otherEnterprises(
=over
=item SNMP::Info::Layer2
=item SNMP::Info::CDP
=item SNMP::Info::CiscoConfig
=item SNMP::Info::CiscoStats
=item SNMP::Info::Entity
=item SNMP::Info::EtherLike
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoConfig
=item SNMP::Info::Layer2
=back
@@ -209,18 +209,10 @@ 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()
Returns 'cisco'
=item $ciscosb->os()
Returns 'ros'
=item $ciscosb->os_ver()
Returns software version (C<entPhysicalSoftwareRev>)
@@ -236,6 +228,20 @@ 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.

View File

@@ -0,0 +1,204 @@
# SNMP::Info::Layer2::Exinda
#
# Copyright (c) 2018 nick nauwelaerts
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Exinda;
use strict;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::Exinda::ISA = qw/
SNMP::Info::Layer2
Exporter
/;
@SNMP::Info::Layer2::Exinda::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
'EXINDA-MIB' => 'systemVersion',
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
# EXINDA-MIB
'uptime' => 'systemUptime',
'os_ver' => 'systemVersion',
'serial1' => 'systemHostId',
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE,
);
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';
}
sub vendor {
return 'exinda';
}
sub model {
my $exinda = shift;
return $exinda->hardwareSeries();
}
sub mac {
# systemHostId is actually also a mac address
my $exinda = shift;
my $exinda_mac = $exinda->systemHostId();
$exinda_mac =~ s/(..)/$1:/g;
chop $exinda_mac;
return $exinda_mac;
}
sub os {
return 'exos';
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Exinda - SNMP Interface to exinda / gfi traffic shapers.
=head1 AUTHORS
nick nauwelaerts
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $exinda = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $exinda->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for exinda / gfi network orchestrator traffic shapers.
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head2 Required MIBs
=over
=item F<EXINDA-MIB>
=back
=head2 Inherited MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
=head1 GLOBALS
These are methods that return scalar value from SNMP.
=over
=item $exinda->layers()
Returns '01001110'.
=item $exinda->mac()
Returns a mac address extracted from C<systemHostId>.
=item $exinda->model()
Returns the model extracted from C<hardwareSeries>.
=item $exinda->os()
Returns 'exos'.
=item $exinda->os_ver()
Returns the os version extracted from C<systemVersion>.
=item $exinda->serial1()
Returns the serial extracted from C<systemHostId>.
=item $exinda->uptime()
Returns the uptime extracted from C<systemUptime>.
=item $exinda->vendor()
Returns 'exinda'.
=back
=head2 Global Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head1 TABLE ENTRIES
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Table Methods imported from SNMP::Info::Layer2
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=cut

View File

@@ -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/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -107,7 +107,7 @@ $VERSION = '3.57';
'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.57';
# 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',
@@ -158,6 +158,12 @@ $VERSION = '3.57';
'J8771A' => '4202vl-48G',
'J4865A' => '4108GL',
'J4887A' => '4104GL',
'JL074A' => '3810M-48G-PoE+',
'JL072A' => '3810M-48G',
'JL076A' => '3810M-40G-8SR-PoE+',
'JL073A' => '3810M-24G-PoE+',
'JL071A' => '3810M-24G',
'JL075A' => '3810M-16SFP+',
'J9588A' => '3800-48G-PoE+-4XG',
'J9574A' => '3800-48G-PoE+-4SFP+',
'J9586A' => '3800-48G-4XG',
@@ -177,6 +183,23 @@ $VERSION = '3.57';
'J4905A' => '3400cl-24G',
'J4815A' => '3324XL',
'J4851A' => '3124',
'JL322A' => '2930M-48G-PoE+',
'JL321A' => '2930M-48G',
'JL323A' => '2930M-40G-8SR-PoE+',
'JL320A' => '2930M-24G-PoE+',
'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+',
'JL260A' => '2930F-48G-4SFP',
'JL255A' => '2930F-24G-PoE+-4SFP+',
'JL261A' => '2930F-24G-PoE+-4SFP',
'JL253A' => '2930F-24G-4SFP+',
'JL259A' => '2930F-24G-4SFP',
'J9729A' => '2920-48G-PoE+',
'J9729A' => '2920-48G-PoE+',
'J9728A' => '2920-48G',
@@ -216,6 +239,11 @@ $VERSION = '3.57';
'J9086A' => '2610-24/12PWR',
'J9085A' => '2610-24',
'J8762A' => '2600-8-PWR',
'JL357A' => '2540-48G-PoE+-4SFP+',
'JL355A' => '2540-48G-4SFP+',
'JL356A' => '2540-24G-PoE+-4SFP+',
'JL354A' => '2540-24G-4SFP+',
'JL070A' => '2530-8-PoE+ Internal PS',
'J9780A' => '2530-8-PoE+',
'J9774A' => '2530-8G-PoEP',
'J9777A' => '2530-8G',
@@ -287,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;
@@ -305,7 +333,7 @@ sub model {
my $model = &SNMP::translateObj($id);
return $id unless defined $model;
$model =~ s/^hpswitch//i;
$model =~ s/^(hp|aruba)switch//i;
return defined $MODEL_MAP{$model} ? $MODEL_MAP{$model} : $model;
}
@@ -567,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();
@@ -582,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(...);
@@ -846,7 +874,7 @@ to a hash.
=over 4
=item $hp->interfaces()
=item $hp->interfaces()
Uses $hp->i_description()
@@ -903,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

@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -386,7 +386,7 @@ sub i_vlan_membership_untagged {
my $vlan = $vlans->{$port};
push( @{ $i_vlan_membership->{$port} }, $vlan );
}
return $i_vlan_membership;
}
@@ -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,15 +497,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::HP4000(...);
@@ -583,7 +583,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 +652,7 @@ to a hash.
=over
=item $hp->interfaces()
=item $hp->interfaces()
Uses $hp->i_description()
@@ -687,7 +687,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 +731,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

@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -63,7 +63,7 @@ $VERSION = '3.57';
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
@@ -102,14 +102,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,11 +117,11 @@ Jeroen van Ingen
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
HP Virtual Connect Switch via SNMP.
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.
after determining a more specific class using the method above.
my $hp = new SNMP::Info::Layer2::HPVC(...);
@@ -188,27 +188,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

@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -168,12 +168,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

@@ -43,7 +43,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
@@ -114,7 +114,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -123,11 +123,11 @@ 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.
after determining a more specific class using the method above.
my $n2270 = new SNMP::Info::Layer2::N2270(...);

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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,10 +391,10 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a Nortel
2220 series wireless Access Points through SNMP.
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.
after determining a more specific class using the method above.
my $nap222x = new SNMP::Info::Layer2::NAP222x(...);
@@ -526,7 +526,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 +548,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()

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS,
@@ -159,7 +159,7 @@ sub model {
return $id unless defined $model;
$model =~ s/^ntwsSwitch//i;
return $model;
return $model;
}
sub _ap_serial {
@@ -389,7 +389,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 +401,7 @@ sub fw_mac {
$fw_mac{$iid} = $mac;
}
return \%fw_mac;
return \%fw_mac;
}
sub fw_port {
@@ -494,7 +494,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 +502,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 +514,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 +797,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -806,7 +806,7 @@ 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
@@ -814,7 +814,7 @@ 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.
after determining a more specific class using the method above.
my $nwss2300 = new SNMP::Info::Layer2::NWSS2300(...);
@@ -908,7 +908,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 $nwss2300->i_ssidlist()
@@ -1139,7 +1139,7 @@ These emulate the F<CISCO-DOT11-MIB>
(C<ntwsClSessClientSessStatsUniPktOut>)
=back
=back
=head2 Table Methods imported from SNMP::Info
@@ -1155,14 +1155,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 +1207,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

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
@@ -74,7 +74,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
@@ -108,7 +108,7 @@ sub model {
}
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name. If all else fails,
# unique, so let's use that for port name. If all else fails,
# concatentate ifDesc and ifIndex.
sub interfaces {
my $netgear = shift;
@@ -162,20 +162,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 +183,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
@@ -226,11 +226,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()

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -114,7 +114,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 +133,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 +141,7 @@ Christoph Neuhaus
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $nexans->class();
@@ -158,7 +158,7 @@ tested devices:
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.
after determining a more specific class using the method above.
my $nexans = new SNMP::Info::Layer2::Nexans(...);
@@ -223,7 +223,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

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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();
@@ -190,7 +190,7 @@ 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.
after determining a more specific class using the method above.
my $orinoco = new SNMP::Info::Layer2::Orinoco(...);
@@ -269,7 +269,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()

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (%SNMP::Info::Layer2::MIBS, 'SIXNET-MIB' => 'sxid',);
@@ -96,7 +96,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -109,7 +109,7 @@ 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.
after determining a more specific class using the method above.
my $sixnet = new SNMP::Info::Layer2::Sixnet(...);

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS,
@@ -163,7 +163,7 @@ sub model {
return $id unless defined $model;
$model =~ s/^wirelessLANController//i;
return $model;
return $model;
}
sub _ap_serial {
@@ -393,7 +393,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 +405,7 @@ sub fw_mac {
$fw_mac{$iid} = $mac;
}
return \%fw_mac;
return \%fw_mac;
}
sub fw_port {
@@ -498,7 +498,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 +506,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 +518,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 +801,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -810,7 +810,7 @@ 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
@@ -818,7 +818,7 @@ 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.
after determining a more specific class using the method above.
my $trapeze = new SNMP::Info::Layer2::Trapeze(...);
@@ -912,7 +912,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 $trapeze->i_ssidlist()
@@ -1143,7 +1143,7 @@ These emulate the F<CISCO-DOT11-MIB>
(C<trpzClSessClientSessStatsUniPktOut>)
=back
=back
=head2 Table Methods imported from SNMP::Info
@@ -1159,14 +1159,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 +1211,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

@@ -1,6 +1,30 @@
# SNMP::Info::Layer2::Ubiquiti
# $Id$
# SNMP::Info::Layer2::Ubiquiti - SNMP Interface to Ubiquiti Devices
#
# Copyright (c) 2019 by The Netdisco Developer Team.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Ubiquiti;
@@ -18,7 +42,7 @@ use SNMP::Info::Layer3; # only used in sub mac()
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -106,11 +130,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];
}
@@ -127,15 +151,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};
@@ -148,7 +172,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"
@@ -166,7 +190,7 @@ sub model {
## failback string
return "EdgeRouter eth-$ethCount switch-$switchCount mem-$memTotalReal cpuNum-$cpuCount";
}
}
}
@@ -197,14 +221,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 {
@@ -264,14 +286,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();
@@ -283,7 +305,7 @@ 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.
after determining a more specific class using the method above.
my $ubnt = new SNMP::Info::Layer2::Ubiquiti(...);

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
@@ -103,7 +103,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,14 +124,14 @@ 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
)
)
or die "Can't connect to DestHost.\n";
my $class = $l2->class();
@@ -139,8 +139,8 @@ Dmitry Sergienko (C<dmitry@trifle.net>)
=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
@@ -178,7 +178,7 @@ Returns 'ZyXEL' :)
=item $zyxel->os()
Returns 'ZyXEL'
Returns 'ZyXEL'
=item $zyxel->os_ver()

View File

@@ -53,7 +53,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS,
@@ -351,14 +351,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 +381,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(...);
@@ -461,7 +461,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>)
@@ -533,13 +533,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,8 +547,8 @@ 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.
@@ -560,7 +560,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 +569,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 +578,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>)

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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(...);
@@ -280,7 +280,7 @@ 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.
ftp.cisco.com. Make sure you have a current version.
=head1 GLOBALS
@@ -296,7 +296,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

@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -112,15 +112,13 @@ sub vendor {
}
sub os_ver {
my $alu = shift;
my $alu = shift;
my $descr = $alu->description();
if ( $descr =~ m/^(\S+)/ ) {
return $1;
}
my $descr = $alu->description();
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();
# No clue what this will try but hey
return $alu->SUPER::os_ver();
}
# ps1_type, ps1_status, ps2_type, ps2_status:
@@ -308,7 +306,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,
@@ -316,7 +314,7 @@ Bill Fenner
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $alu->class();

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%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();
@@ -451,7 +451,7 @@ 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.
after determining a more specific class using the method above.
my $alteon = new SNMP::Info::Layer3::AlteonAD(...);
@@ -581,7 +581,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

@@ -4,20 +4,20 @@
# 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
@@ -37,16 +37,16 @@ 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
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
$int_include_vpn $fake_idx $type_class/;
$VERSION = '3.57';
$VERSION = '3.65';
%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.57';
'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
)
)
or die "Can't connect to DestHost.\n";
my $class = $altiga->class();
@@ -366,7 +366,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

@@ -48,7 +48,7 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -146,7 +146,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 +154,7 @@ Bill Fenner
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $arista->class();

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -1403,7 +1403,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
@@ -1422,7 +1422,7 @@ 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.
after determining a more specific class using the method above.
my $aruba = new SNMP::Info::Layer3::Aruba(...);
@@ -1466,7 +1466,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 +1540,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 +1578,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 +1614,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

@@ -43,7 +43,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
%MODID_MAP %PROCID_MAP/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS,
@@ -1389,14 +1389,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,10 +1404,10 @@ Eric Miller
=head1 DESCRIPTION
Abstraction subclass for routers running Avaya/Nortel BayRS.
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.
after determining a more specific class using the method above.
my $bayrs = new SNMP::Info::Layer3::BayRS(...);
@@ -1458,7 +1458,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',
@@ -1529,8 +1529,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 +1540,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()

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -154,12 +154,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

@@ -47,7 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.57';
$VERSION = '3.65';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
@@ -206,7 +206,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 +214,7 @@ Max Baker
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $c3550->class();
@@ -222,14 +222,14 @@ 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.
after determining a more specific class using the method above.
my $c3550 = new SNMP::Info::Layer3::C3550(...);
@@ -327,7 +327,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

@@ -44,7 +44,7 @@ use SNMP::Info::MAU;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MAU::MIBS,
@@ -111,7 +111,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 +119,7 @@ Bill Fenner
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $c4000->class();
@@ -127,10 +127,10 @@ Bill Fenner
=head1 DESCRIPTION
Abstraction subclass for Cisco Catalyst 4000 Layer 2/3 Switches.
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.
after determining a more specific class using the method above.
my $c4000 = new SNMP::Info::Layer3::C4000(...);

View File

@@ -51,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
@@ -179,7 +179,7 @@ sub set_i_duplex_admin {
my $c6500 = shift;
my ( $duplex, $iid ) = @_;
if ( $c6500->is_virtual_switch() ) {
# VSS -> MAU
@@ -252,7 +252,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 +260,7 @@ Max Baker
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $c6500->class();
@@ -268,14 +268,14 @@ 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.
after determining a more specific class using the method above.
my $c6500 = new SNMP::Info::Layer3::C6500(...);
@@ -382,7 +382,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)

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -57,7 +57,7 @@ $VERSION = '3.57';
%SNMP::Info::LLDP::GLOBALS,
'netsnmp_vers' => 'versionTag',
'hrSystemUptime' => 'hrSystemUptime',
);
%FUNCS = (
@@ -109,7 +109,7 @@ sub os_ver {
return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/);
last;
}
}
}
$os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ );
if ($vers) {
@@ -184,14 +184,14 @@ Ambroise Rosset
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $ckp = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $ckp->class();

View File

@@ -55,7 +55,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -97,22 +97,18 @@ $VERSION = '3.57';
%SNMP::Info::LLDP::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
# EIGRP
'eigrp_peers' => 'cEigrpPeerAddr',
# CISCO-EIGRP-MIB::cEigrpPeerTable
'c_eigrp_peer_types' => 'cEigrpPeerAddrType',
'c_eigrp_peers' => 'cEigrpPeerAddr',
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoPower::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE,
%SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
'eigrp_peers' => \&SNMP::Info::munge_ip,
%SNMP::Info::Layer3::MUNGE, %SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoPower::MUNGE, %SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE, %SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoStats::MUNGE, %SNMP::Info::CDP::MUNGE,
%SNMP::Info::LLDP::MUNGE, %SNMP::Info::CiscoVTP::MUNGE,
);
sub i_vlan {
@@ -132,6 +128,7 @@ sub i_vlan {
if ( $i_descr->{$idx} =~ /\.(\d+)$/ ) {
$i_vlan->{$idx} = $1;
}
# This matches 101 in 'Ethernet0.101-802.1Q vLAN subif'
elsif ( $i_descr->{$idx} =~ /\.(\d+)-/ ) {
$i_vlan->{$idx} = $1;
@@ -141,14 +138,41 @@ sub i_vlan {
return $i_vlan;
}
sub cisco_comm_indexing {
sub cisco_comm_indexing {
my $cisco = shift;
# If we get a VTP version, it's *extremely* likely that the device needs
# community based indexing
my $vtp = $cisco->vtp_version() || '0';
return $vtp ? 1 : 0;
}
sub eigrp_peers {
my $cisco = shift;
my $peers = $cisco->c_eigrp_peers() || {};
my $types = $cisco->c_eigrp_peer_types() || {};
my %eigrp_peers;
foreach my $idx ( keys %$peers ) {
my $type = $types->{$idx};
next unless $type;
my $peer = $peers->{$idx};
next unless $peer;
my $ip = NetAddr::IP::Lite->new($peer);
if ($ip) {
$eigrp_peers{$idx} = $ip->addr;
}
elsif ( $type eq 'ipv4' ) {
$eigrp_peers{$idx} = SNMP::Info::munge_ip($peer);
}
next;
}
return \%eigrp_peers;
}
1;
__END__
@@ -165,7 +189,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,
@@ -173,7 +197,7 @@ Max Baker
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $cisco->class();

View File

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

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
@@ -141,7 +141,7 @@ Brian De Wolf
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $fwsm = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -149,7 +149,7 @@ Brian De Wolf
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $fwsm->class();
@@ -196,10 +196,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.
=over
=back
=head2 Overrides
=over

View File

@@ -50,7 +50,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,
@@ -91,7 +91,7 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $switch = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
@@ -99,7 +99,7 @@ Eric Miller
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $switch->class();
@@ -107,14 +107,14 @@ Eric Miller
=head1 DESCRIPTION
Base subclass for Cisco Layer 2/3 Switches.
Base subclass for Cisco Layer 2/3 Switches.
These devices have switch specific characteristics beyond those in
traditional routers covered by L<SNMP::Info::Layer3::Cisco>. For example,
port security interface information from L<SNMP::Info::CiscoPortSecurity>.
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 $swich = new SNMP::Info::Layer3::CiscoSwitch(...);

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
@@ -171,14 +171,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $contivity = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $contivity->class();
@@ -187,10 +187,10 @@ Eric Miller
=head1 DESCRIPTION
Abstraction subclass for Avaya/Nortel VPN Routers (formerly Contivity
Extranet Switch).
Extranet Switch).
For speed or debugging purposes you can call the subclass directly, but not
after determining a more specific class using the method above.
after determining a more specific class using the method above.
my $contivity = new SNMP::Info::Layer3::Contivity(...);

View File

@@ -46,7 +46,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -115,7 +115,7 @@ sub uptime {
}
# ifDescr is the same for all interfaces in a class, but the ifName is
# unique, so let's use that for port name. If all else fails,
# unique, so let's use that for port name. If all else fails,
# concatentate ifDesc and ifIndex.
# (code from SNMP/Info/Layer2/Netgear.pm)
sub interfaces {
@@ -179,14 +179,14 @@ Oliver Gorwits - based on Layer3::NetSNMP implementation
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $cumulus = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $cumulus->class();

View File

@@ -1,3 +1,31 @@
# SNMP::Info::Layer3::DLink - SNMP Interface to DLink Devices
#
# Copyright (c) 2019 by The Netdisco Developer Team.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::DLink;
use strict;
@@ -10,7 +38,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -19,7 +47,7 @@ $VERSION = '3.57';
'SWPRIMGMT-DES3200-MIB' => 'dlink-des3200SeriesProd',
'SWPRIMGMT-DES30XXP-MIB' => 'dlink-des30xxproductProd',
'SWPRIMGMT-DES1228ME-MIB' => 'dlink-des1228MEproductProd',
'SWDES3528-52PRIMGMT-MIB' => 'dlink-Des3500Series',
'SWDES3528-52PRIMGMT-MIB' => 'dlink-Des3500Series',
'DES-1210-28-AX' => 'des-1210-28ax',
'DES-1210-10MEbx' => 'des-1210-10mebx',
'DES-1210-26MEbx' => 'des-1210-26mebx',
@@ -136,14 +164,14 @@ SNMP::Info::Layer3::DLink - SNMP Interface to DLink Devices
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $dlink = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
)
or die "Can't connect to DestHost.\n";
my $class = $dlink->class();
@@ -151,7 +179,7 @@ SNMP::Info::Layer3::DLink - SNMP Interface to DLink Devices
=head1 DESCRIPTION
Subclass for Vyatta Devices running dlink.
Subclass for DLink devices.
=head2 Inherited Classes

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.57';
$VERSION = '3.65';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -167,7 +167,7 @@ sub fan {
my $fan = $dell->dell_fan_desc() || {};
my $state = $dell->dell_fan_state() || {};
if (scalar keys %$fan) {
my @messages = ();
@@ -200,8 +200,8 @@ sub ps2_type {
my $dell = shift;
my $src = $dell->dell_pwr_src() || {};
my $i = 0;
my $i = 0;
foreach my $k (sort keys %$src) {
$i++;
next unless $src->{$k} and $i == 2;
@@ -226,8 +226,8 @@ sub ps2_status {
my $dell = shift;
my $status = $dell->dell_pwr_state() || {};
my $i = 0;
my $i = 0;
foreach my $k (sort keys %$status) {
$i++;
next unless $status->{$k} and $i == 2;
@@ -330,14 +330,14 @@ Eric Miller
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
# Let SNMP::Info determine the correct subclass for you.
my $dell = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 1
)
)
or die "Can't connect to DestHost.\n";
my $class = $dell->class();
@@ -346,12 +346,12 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from an
Provides abstraction to the configuration information obtainable from an
Dell Power Connect device through SNMP. D-Link and the IBM BladeCenter
Gigabit Ethernet Switch Module also use this module based upon MIB support.
Gigabit Ethernet Switch Module also use this module based upon MIB support.
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 $dell = new SNMP::Info::Layer3::Dell(...);
@@ -502,7 +502,7 @@ to a hash.
=item $dell->interfaces()
Returns the map between SNMP Interface Identifier (iid) and physical port
name. Uses name if available instead of description since descriptions are
name. Uses name if available instead of description since descriptions are
sometimes not unique.
=item $dell->i_duplex()

View File

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

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