Compare commits

..

123 Commits
3.71 ... 3.93

Author SHA1 Message Date
Oliver Gorwits
f101cb0a23 release 3.93 2023-07-14 19:41:39 +01:00
Oliver Gorwits
a71be6e4c2 #484 add Aggregate::agg_ports_ifstack to CiscoAgg::agg_ports 2023-07-14 17:57:37 +01:00
Oliver Gorwits
ba721cf9fb release 3.92 2023-02-20 22:31:06 +00:00
Oliver Gorwits
736005b4f6 Update test_and_publish.yml 2023-02-20 17:14:26 +00:00
Oliver Gorwits
70f19bf988 Update test_and_publish.yml 2023-02-20 17:10:50 +00:00
Oliver Gorwits
d32b7e42c9 release 3.91 2023-02-20 17:00:24 +00:00
Oliver Gorwits
b3f96de3e0 release 3.90 2023-02-20 16:55:03 +00:00
Oliver Gorwits
6ecfb2245f accept hashref or bare list to new() 2023-02-20 16:37:16 +00:00
Infopromt
1d4cd2d075 Add support of Hirschmann switch (#450)
* Update Info.pm

* Create Hirschmann.pm

* Update Hirschmann.pm

* Use name instead of OID in serial number

* RS40 Comment

* MAC address of the switch (on the CPU pseudo interface)

* Update README

Add SNMP::Info::Layer2::Hirschmann

* Update Hirschmann.pm

release 3.84
2023-02-20 16:23:16 +00:00
Avant Wireless
52f16e0673 Add Netonix support (#463)
* Initial support for Netonix

* Bring Netonix up to 3.84; add blob to Info.pm
2023-02-20 16:21:06 +00:00
Oliver Gorwits
9042ad7573 #460 always return $info instance to allow error() inspection 2023-02-20 16:19:39 +00:00
Oliver Gorwits
f9f3dc6490 #464 check in case non numeric key in cache befor inc 2023-02-20 15:41:32 +00:00
Oliver Gorwits
cdafa791d0 #464 check in case non numeric key in cache befor inc 2023-02-20 15:32:37 +00:00
Christoph Handel
ef4dfbe870 CH: workaround for aruba-cx link aggregation (#474) 2023-02-20 15:21:46 +00:00
nick n
1a42221e58 fix for netdisco855 snmp-info459 perhaps (#475) 2023-02-20 15:19:13 +00:00
Christoph Neuhaus
ca1d2104dc Update for Cisco 9xxx Serie (#477)
New codenames for version 17.x: https://www.cisco.com/c/en/us/support/ios-nx-os-software/ios-xe-17/series.html

also added IOSXE for Cisco Catalyst 9200 & 9300 Series:

netdisco-do show -e description -d C93XX.switch
Cisco IOS Software [Bengaluru], Catalyst L3 Switch Software (CAT9K_IOSXE), Version 17.5.1, RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2021 by Cisco Systems, Inc.
Compiled Wed 31-Mar-21 01:46 by mcpre

netdisco-do show -e description -d C92XX.switch
Cisco IOS Software [Amsterdam], Catalyst L3 Switch Software (CAT9K_LITE_IOSXE), Version 17.3.5, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2022 by Cisco Systems, Inc.
Compiled Wed 09-Feb-22 09:28 by mc
2023-02-20 15:16:34 +00:00
Oliver Gorwits
c6c168733e release 3.89 2022-08-18 08:32:44 +01:00
Oliver Gorwits
c6a5c68657 add Regexp::Common to dependencies, fix tests for i_vlan_membership_untagged 2022-08-18 08:31:33 +01:00
Oliver Gorwits
f7d4a78f41 release 3.88 2022-08-17 22:51:16 +01:00
Oliver Gorwits
4b15add4ff add vlans to Juniper based on ifChassisLogicalUnit 2022-08-17 22:48:55 +01:00
Oliver Gorwits
9842bb2dc2 add i_subinterfaces to Layer3 2022-08-17 22:06:17 +01:00
Oliver Gorwits
a59af743a9 avoid exception when trying translateObj on .0.0 2022-08-17 15:38:55 +01:00
Oliver Gorwits
f65301f233 release 3.87 2022-08-12 17:29:37 +01:00
Oliver Gorwits
7fd2e31913 #462 SNMP::Info::Layer3::PaloAlto to include layer 2 2022-08-12 17:25:13 +01:00
Oliver Gorwits
c514baa9b2 don't think _lldp_loc_id_os needs underscore 2022-08-12 17:20:42 +01:00
Oliver Gorwits
ac18ab7b10 update changes 2022-08-12 17:19:08 +01:00
Christian Ramseyer
3acf12ada3 Fix merge of outdated $VERSION 2022-08-12 07:52:55 +02:00
Christian Ramseyer
ce60c79008 Make pae_control a GLOBAL instead of a FUNC 2022-08-12 07:48:16 +02:00
Christian Ramseyer
a665fe335b Add PortAccessEntity to Layer2.pm 2022-08-12 07:48:16 +02:00
Christian Ramseyer
ffb28b7e34 List PortAccessEntity in Info.pm 2022-08-12 07:48:16 +02:00
Christian Ramseyer
f09c705e71 Add POD for pae_authsess_mab() 2022-08-12 07:48:16 +02:00
Christian Ramseyer
3de22ad136 Initial commit of PortAccessEntity/IEEE8021-PAE-MIB module 2022-08-12 07:48:16 +02:00
Christian Ramseyer
d36ef515a6 Add SNMPv3 parameters to example code 2022-08-12 07:47:44 +02:00
Christian Ramseyer
75db1771b7 Add test for lldp_loc_id 2022-08-12 07:47:10 +02:00
Christian Ramseyer
4020a430f5 Expose lldLocChassisId as $lldp->lldp_loc_id #461
* also adds lldp_loc_id_type, mostly for decoding reasons
 * moved decode logic so it can be used for remote or local id
2022-08-12 07:47:10 +02:00
Christoph Neuhaus
d404cbd154 Update CiscoStats.pm
Cisco IOS-XE Version 17.3: Amsterdam
2022-08-11 21:04:41 +02:00
Oliver Gorwits
d5f68ca4e7 avoid error if juniper vlan not in bp_index 2022-08-11 04:57:42 +01:00
Oliver Gorwits
dc3d1e0b46 avoid error if juniper vlan not in bp_index 2022-08-10 17:32:16 -04:00
Oliver Gorwits
e885efa921 release 3.86 2022-08-10 09:18:39 +01:00
Oliver Gorwits
dcf2c0ee54 #468 Cisco dotted subinterfaces had incorrect vlan assigned 2022-08-10 09:17:31 +01:00
Oliver Gorwits
feaeba8be4 release 3.85 2022-08-02 17:28:10 +01:00
Oliver Gorwits
b4d19c937c Add i_subinterfaces for VLAN subinterfaces in CiscoVTP 2022-08-02 17:26:33 +01:00
Oliver Gorwits
7846cbce1a release 3.84 2022-07-04 16:46:54 +01:00
Oliver Gorwits
74b25e4c88 remove os() func not needed 2022-07-04 16:45:08 +01:00
Oliver Gorwits
ef2500dcc7 release 3.83 2022-07-04 16:33:01 +01:00
Oliver Gorwits
70379aaf6e add HW Group STE temp monitor class 2022-07-04 16:29:39 +01:00
Oliver Gorwits
4d471b38fb release 3.82 2022-03-16 17:32:41 +00:00
Alexander Hartmaier
895b8ed373 rename parse_cisco_bgp_peer2_peer2entry_index to parse_cisco_bgp_peer2_entry_index 2022-03-16 09:29:10 +01:00
Alexander Hartmaier
efb32ac10d add Cisco BGP MIB support to all Cisco Layer 3 devices (#451)
This also adds a munge_inetaddress function which can be used to parse a 
binary IP address as defined by the SNMP InetAddress type.
2022-03-14 21:37:27 +00:00
Oliver Gorwits
7f3028cbdb more tolerant of weird subname calls in autoload 2022-03-02 22:11:56 +00:00
Oliver Gorwits
1c1dbe6464 remove custom CPAN::Uploader 2021-11-14 19:37:12 +00:00
Oliver Gorwits
b98b68c718 avoid error on macOS(?) with netmask of 64 or 128 on v4 addr 2021-10-23 22:38:33 +01:00
Oliver Gorwits
f55edced32 release 3.81 2021-10-07 17:16:42 +01:00
Oliver Gorwits
0d7b482edd only substr if layers returns 2021-10-07 17:09:50 +01:00
Oliver Gorwits
933766120f fix sprintf to printf 2021-10-07 16:52:33 +01:00
nick n
fbfa2ec154 i/if_ignore cleanup (#377)
* does not have an i_ignore function, don't mention it in the docs

* these interfaces don't even exist on oneaccess

remove i_ignore, mark tests as complete now

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

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

* NWSS2300 has the same problem

* same workaround as trapeze

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

* Add support for SteelheadEx and Steelfusion

* Update Info.pm

* fix tests

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

* a few more tests

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

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

--+ qb_fw_vlan

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

fetch qb_fw_port. This is a hash

  fdb_id.mac => fdb_port

for each key split of fdb_id

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

--+ qb_fw_port

qb_fw_port fetchs snmp dot1qTpFdbPort, oid 1.3.6.1.2.1.17.7.1.2.2.1.2

This snmp table returns

  fdb_id.mac => fdb_port

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

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

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

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

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

snmp looks got. Verified with netdisco

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

result looks good.

--+ qb_fdb_index

qb_fdb_index fetches snmp dot1qVlanFdbId which is oid 1.3.6.1.2.1.17.7.1.4.2.1.3

This snmp table returns

  timestamp.vlan => fdb_id

netdisco will strip the timestamp and build a hash

  fdb_id => vlan

for a HP switch i get snmp data

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

vlan: 64
fdb_id: 6
for a H3C i get

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

vlan: 64
fdb_id: 1

and there are the issues.

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

* CH: H3C fix pod caverage test

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

* CH: .

* CH: better version field

* CH: whiterabbit fix version and pod documentation

* fix mib links

and a few wihtespace cleanups

* map enterprises.96

map enterprises.96 to whiterabbit.

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

* removed inherited modules

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

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

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

* fix pod

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

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

* aerohive comes before airespace
2021-06-17 02:56:29 +02:00
nick n
aefd0364fb move to libera chat 2021-06-15 07:57:19 +02:00
Jeroen van Ingen
3ae7073198 Small Bridge.pm fix
This change will make sure that the internal _vlan_hoa() function will strip
any additional index levels that may be present in input data. Not only applies
to Q-BRIDGE-MIB tables with a TimeFilter index, but also to tables where part
of the data comes from IEEE8021-Q-BRIDGE-MIB with both TimeFilter and PBB ID.
2021-06-11 15:15:01 +02:00
Jeroen van Ingen
9c306812f9 Add support for Aruba CX switches 2021-06-11 15:15:01 +02:00
Jeroen van Ingen
3790a2fcb2 Add IEEE802_Bridge module
Initial version of module to fetch data from IEEE8021-Q-BRIDGE-MIB
2021-06-11 13:21:39 +02:00
nick n
0b86645a63 aerohive version support higher as 9 (#421)
* allow aerohive hiveos version numbers above 9
* aerohive is now owned by extreme
2021-06-04 18:38:13 +02:00
nick n
fa206be639 libera irc 2021-05-28 02:21:31 +02:00
nick n
350ee49293 libera irc 2021-05-28 02:21:05 +02:00
nick n
210d4d48a7 libera irc 2021-05-28 02:16:08 +02:00
nick n
ad8224bcec aerohive, not aironet
typos
2021-05-12 05:51:02 +02:00
nick n
9943dff277 mention #403 2021-04-29 09:20:51 +02:00
nick n
bf0b7d989f dont flip between dell and aruba
should fix #403
2021-04-29 09:18:27 +02:00
nick n
6ec90b3b9b sort a few things 2021-04-29 07:57:20 +02:00
nick n
2a2214a0ac ignore .vscode directory (#418) 2021-03-13 17:36:12 +01:00
168 changed files with 4023 additions and 714 deletions

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

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

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

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

1
.gitignore vendored
View File

@@ -11,3 +11,4 @@ _build
blib
cover_db
.idea
.vscode

View File

@@ -1,39 +0,0 @@
language: perl
perl:
- "5.30"
- "5.10"
os: linux
dist: trusty
addons:
apt:
packages:
- jq
- libsnmp-dev
branches:
only:
- /^3\.\d{2}$/
- 'master'
before_install:
- mkdir ~/netdisco-mibs
- cd ~/netdisco-mibs
install:
- curl -sL https://api.github.com/repos/netdisco/netdisco-mibs/releases/latest | jq -r '.tarball_url' | xargs -n1 curl -sL | tar --strip-components=1 -zxf -
- cpanm --quiet --notest PkgConfig Test::CChecker Alien::zlib::Static Alien::OpenSSL::Static Alien::SNMP
before_script:
- 'cd ${TRAVIS_BUILD_DIR}'
script:
- >
perl Build.PL &&
PERL_MM_USE_DEFAULT=1 ./Build installdeps --cpan_client 'cpanm --quiet --notest' &&
./Build test --test_files t/ --test_files xt/
notifications:
irc:
on_success: change
on_failure: change
channels:
- 'chat.freenode.net#netdisco'
# email:
# on_success: always
# on_failure: always
# recipients:
# - 'snmp-info-cvs@lists.sourceforge.net'

View File

@@ -6,17 +6,19 @@ Module::Build->new(
module_name => 'SNMP::Info',
license => 'bsd',
dist_author => 'Eric A. Miller <emiller@cpan.org>',
# dynamic_config => 1,
# dynamic_config => 1,
create_readme => 1,
configure_requires => {
'Module::Build' => '0.42',
},
# build_requires => {
# },
# build_requires => {
# },
requires => {
'SNMP' => '0',
'Math::BigInt' => '0',
'NetAddr::IP' => '4.068',
'Regexp::Common' => '0',
'Scalar::Util' => '0',
},
recommends => {
'PPI' => '0',
@@ -39,16 +41,16 @@ Module::Build->new(
'Module::Find' => '0',
'Hook::LexWrap' => '0',
},
# script_files => [
# ],
# share_dir => 'share',
# script_files => [
# ],
# share_dir => 'share',
meta_merge => {
resources => {
homepage => 'http://netdisco.org/',
bugtracker => 'https://github.com/netdisco/snmp-info/issues',
repository => 'https://github.com/netdisco/snmp-info',
MailingList => 'https://lists.sourceforge.net/lists/listinfo/snmp-info-users',
IRC => 'irc://irc.freenode.org/#netdisco',
IRC => 'irc://irc.libera.chat/#netdisco',
},
},
)->create_build_script;

150
Changes
View File

@@ -1,3 +1,153 @@
Version 3.93 (2023-07-14)
[ENHANCEMENTS]
* #484 add Aggregate::agg_ports_ifstack to CiscoAgg::agg_ports
Version 3.92 (2023-02-20)
[NEW FEATURES]
* #450 Hirschmann switch support
* #463 Netonix switch support
[ENHANCEMENTS]
* new() accepts hashref as well as bare list of arguments
# #475 additional recognition of Allied switches
* #477 additional recognition of Cisco 9xxx switches
[BUG FIXES]
* #460 always return $info instance to allow error() inspection
* #464 check in case non numeric key in cache befor inc
* #474 workaround for aruba-cx link aggregation
Version 3.89 (2022-08-18)
[BUG FIXES]
* add Regexp::Common to dependencies
* fix tests for i_vlan_membership_untagged
Version 3.88 (2022-08-17)
[NEW FEATURES]
* Add i_subinterfaces for VLAN subinterfaces in Layer3::Juniper
* Add i_vlan and i_vlan_membership_untagged to Layer3::Juniper based on ifChassisLogicalUnit
Version 3.87 (2022-08-12)
[NEW FEATURES]
* PortAccessEntity/IEEE8021-PAE-MIB module support
[ENHANCEMENTS]
* #462 SNMP::Info::Layer3::PaloAlto to include layer 2
* #461 Expose lldLocChassisId as $lldp->lldp_loc_id
* Update CiscoStats.pm for Amsterdam IOS-XE release
[BUG FIXES]
* #470 avoid error if Juniper VLAN not in bp_index
Version 3.86 (2022-08-10)
[BUG FIXES]
* #468 Cisco dotted subinterfaces had incorrect vlan assigned
Version 3.85 (2022-08-02)
[NEW FEATURES]
* Add i_subinterfaces for VLAN subinterfaces in CiscoVTP
Version 3.84 (2022-07-04)
[NEW FEATURES]
* Add support for HW Group STE whitespace monitoring devices
Version 3.82 (2022-03-16)
[NEW FEATURES]
* add Cisco BGP MIB support to all Cisco Layer 3 devices
Version 3.81 (2021-10-07)
[ENHANCEMENTS]
* #400 change IPv6 decode warning to be debug-only
* #394 Recognise hyphenated cumulus version strings
* #401 add DLink layers always 2+3
* #377 i/if_ignore cleanup
[BUG FIXES]
* #443 trapeze and nws deep recursion fix
* #378 fix several uninitialized vars
* #374 undefined error from H3C class
Version 3.80 (2021-09-22)
[NEW FEATURES]
* layer3::fortinet now supports link aggregation mapping
* Add support for Riverbed SteelheadEx and Steelfusion (#438)
[ENHANCEMENTS]
* change default class for Cisco from Layer3::Cisco to Layer3::CiscoSwitch
[BUG FIXES]
* Fix typo in Whiterabbit.pm (#439)
Version 3.78 (2021-09-08)
[BUG FIXES]
* Fix undefined value error in Bridge.pm i_vlan
Version 3.77 (2021-09-04)
[ENHANCEMENTS]
* set_i_vlan support for Ruckus/Brocade/Foundry
Version 3.74 (2021-08-24)
[NEW FEATURES]
* Support changing PVID on Arista switches (#429)
* Support for Whiterabbit devices
[ENHANCEMENTS]
* Patch H3C broken node-vlan mapping
Version 3.73 (2021-06-28)
[BUG FIXES]
* fix packaging error
Version 3.72 (2021-06-28)
[NEW FEATURES]
* Support for Aruba CX switches
* IEEE802_Bridge module
[BUG FIXES]
* #403 don't use layer3::dell for layer3::aruba devices
* layer2::aerohive supports version numbers above 9
Version 3.71 (2020-11-27)
[NEW FEATURES]

View File

@@ -17,6 +17,7 @@ lib/SNMP/Info/AMAP.pm
lib/SNMP/Info/Bridge.pm
lib/SNMP/Info/CDP.pm
lib/SNMP/Info/CiscoAgg.pm
lib/SNMP/Info/CiscoBGP.pm
lib/SNMP/Info/CiscoConfig.pm
lib/SNMP/Info/CiscoPortSecurity.pm
lib/SNMP/Info/CiscoPower.pm
@@ -32,6 +33,7 @@ lib/SNMP/Info/EDP.pm
lib/SNMP/Info/Entity.pm
lib/SNMP/Info/EtherLike.pm
lib/SNMP/Info/FDP.pm
lib/SNMP/Info/IEEE802_Bridge.pm
lib/SNMP/Info/IEEE802dot11.pm
lib/SNMP/Info/IEEE802dot3ad.pm
lib/SNMP/Info/IPv6.pm
@@ -57,6 +59,7 @@ 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/Hirschmann.pm
lib/SNMP/Info/Layer2/HP.pm
lib/SNMP/Info/Layer2/HP4000.pm
lib/SNMP/Info/Layer2/HPVC.pm
@@ -78,6 +81,7 @@ lib/SNMP/Info/Layer3/AlteonAD.pm
lib/SNMP/Info/Layer3/Altiga.pm
lib/SNMP/Info/Layer3/Arista.pm
lib/SNMP/Info/Layer3/Aruba.pm
lib/SNMP/Info/Layer3/ArubaCX.pm
lib/SNMP/Info/Layer3/BayRS.pm
lib/SNMP/Info/Layer3/BlueCoatSG.pm
lib/SNMP/Info/Layer3/C3550.pm
@@ -111,6 +115,7 @@ lib/SNMP/Info/Layer3/Lenovo.pm
lib/SNMP/Info/Layer3/Microsoft.pm
lib/SNMP/Info/Layer3/Mikrotik.pm
lib/SNMP/Info/Layer3/N1600.pm
lib/SNMP/Info/Layer3/Netonix.pm
lib/SNMP/Info/Layer3/Netscreen.pm
lib/SNMP/Info/Layer3/NetSNMP.pm
lib/SNMP/Info/Layer3/Nexus.pm
@@ -123,18 +128,22 @@ lib/SNMP/Info/Layer3/Pica8.pm
lib/SNMP/Info/Layer3/Redlion.pm
lib/SNMP/Info/Layer3/Scalance.pm
lib/SNMP/Info/Layer3/SonicWALL.pm
lib/SNMP/Info/Layer3/Steelfusion.pm
lib/SNMP/Info/Layer3/Steelhead.pm
lib/SNMP/Info/Layer3/SteelheadEx.pm
lib/SNMP/Info/Layer3/Sun.pm
lib/SNMP/Info/Layer3/Tasman.pm
lib/SNMP/Info/Layer3/Teltonika.pm
lib/SNMP/Info/Layer3/Timetra.pm
lib/SNMP/Info/Layer3/VMware.pm
lib/SNMP/Info/Layer3/VyOS.pm
lib/SNMP/Info/Layer3/Whiterabbit.pm
lib/SNMP/Info/Layer7.pm
lib/SNMP/Info/Layer7/APC.pm
lib/SNMP/Info/Layer7/Arbor.pm
lib/SNMP/Info/Layer7/CiscoIPS.pm
lib/SNMP/Info/Layer7/Gigamon.pm
lib/SNMP/Info/Layer7/HWGroup.pm
lib/SNMP/Info/Layer7/Liebert.pm
lib/SNMP/Info/Layer7/Neoteris.pm
lib/SNMP/Info/Layer7/Netscaler.pm
@@ -142,6 +151,7 @@ lib/SNMP/Info/LLDP.pm
lib/SNMP/Info/MAU.pm
lib/SNMP/Info/MRO.pm
lib/SNMP/Info/NortelStack.pm
lib/SNMP/Info/PortAccessEntity.pm
lib/SNMP/Info/PowerEthernet.pm
lib/SNMP/Info/RapidCity.pm
lib/SNMP/Info/SONMP.pm

326
META.json
View File

@@ -4,7 +4,7 @@
"Eric A. Miller <emiller@cpan.org>"
],
"dynamic_config" : 1,
"generated_by" : "Module::Build version 0.4231",
"generated_by" : "Module::Build version 0.4232",
"license" : [
"bsd"
],
@@ -30,7 +30,9 @@
"requires" : {
"Math::BigInt" : "0",
"NetAddr::IP" : "4.068",
"SNMP" : "0"
"Regexp::Common" : "0",
"SNMP" : "0",
"Scalar::Util" : "0"
}
},
"test" : {
@@ -53,547 +55,587 @@
"provides" : {
"SNMP::Info" : {
"file" : "lib/SNMP/Info.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::AMAP" : {
"file" : "lib/SNMP/Info/AMAP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::AdslLine" : {
"file" : "lib/SNMP/Info/AdslLine.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Aggregate" : {
"file" : "lib/SNMP/Info/Aggregate.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Airespace" : {
"file" : "lib/SNMP/Info/Airespace.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Bridge" : {
"file" : "lib/SNMP/Info/Bridge.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CDP" : {
"file" : "lib/SNMP/Info/CDP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoAgg" : {
"file" : "lib/SNMP/Info/CiscoAgg.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoBGP" : {
"file" : "lib/SNMP/Info/CiscoBGP.pm",
"version" : "3.93"
},
"SNMP::Info::CiscoConfig" : {
"file" : "lib/SNMP/Info/CiscoConfig.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoPortSecurity" : {
"file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoPower" : {
"file" : "lib/SNMP/Info/CiscoPower.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoQOS" : {
"file" : "lib/SNMP/Info/CiscoQOS.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoRTT" : {
"file" : "lib/SNMP/Info/CiscoRTT.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoStack" : {
"file" : "lib/SNMP/Info/CiscoStack.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoStats" : {
"file" : "lib/SNMP/Info/CiscoStats.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoStpExtensions" : {
"file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::CiscoVTP" : {
"file" : "lib/SNMP/Info/CiscoVTP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::DocsisCM" : {
"file" : "lib/SNMP/Info/DocsisCM.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::DocsisHE" : {
"file" : "lib/SNMP/Info/DocsisHE.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::EDP" : {
"file" : "lib/SNMP/Info/EDP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Entity" : {
"file" : "lib/SNMP/Info/Entity.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::EtherLike" : {
"file" : "lib/SNMP/Info/EtherLike.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::FDP" : {
"file" : "lib/SNMP/Info/FDP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::IEEE802_Bridge" : {
"file" : "lib/SNMP/Info/IEEE802_Bridge.pm",
"version" : "3.93"
},
"SNMP::Info::IEEE802dot11" : {
"file" : "lib/SNMP/Info/IEEE802dot11.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::IEEE802dot3ad" : {
"file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::IPv6" : {
"file" : "lib/SNMP/Info/IPv6.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::LLDP" : {
"file" : "lib/SNMP/Info/LLDP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer1" : {
"file" : "lib/SNMP/Info/Layer1.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer1::Allied" : {
"file" : "lib/SNMP/Info/Layer1/Allied.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer1::Asante" : {
"file" : "lib/SNMP/Info/Layer1/Asante.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer1::Bayhub" : {
"file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer1::Cyclades" : {
"file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer1::S3000" : {
"file" : "lib/SNMP/Info/Layer1/S3000.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2" : {
"file" : "lib/SNMP/Info/Layer2.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::3Com" : {
"file" : "lib/SNMP/Info/Layer2/3Com.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Adtran" : {
"file" : "lib/SNMP/Info/Layer2/Adtran.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Aerohive" : {
"file" : "lib/SNMP/Info/Layer2/Aerohive.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Airespace" : {
"file" : "lib/SNMP/Info/Layer2/Airespace.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Aironet" : {
"file" : "lib/SNMP/Info/Layer2/Aironet.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Allied" : {
"file" : "lib/SNMP/Info/Layer2/Allied.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Atmedia" : {
"file" : "lib/SNMP/Info/Layer2/Atmedia.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Baystack" : {
"file" : "lib/SNMP/Info/Layer2/Baystack.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::C1900" : {
"file" : "lib/SNMP/Info/Layer2/C1900.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::C2900" : {
"file" : "lib/SNMP/Info/Layer2/C2900.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Catalyst" : {
"file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Centillion" : {
"file" : "lib/SNMP/Info/Layer2/Centillion.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Cisco" : {
"file" : "lib/SNMP/Info/Layer2/Cisco.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::CiscoSB" : {
"file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Exinda" : {
"file" : "lib/SNMP/Info/Layer2/Exinda.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::HP" : {
"file" : "lib/SNMP/Info/Layer2/HP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::HP4000" : {
"file" : "lib/SNMP/Info/Layer2/HP4000.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::HPVC" : {
"file" : "lib/SNMP/Info/Layer2/HPVC.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Hirschmann" : {
"file" : "lib/SNMP/Info/Layer2/Hirschmann.pm",
"version" : "3.93"
},
"SNMP::Info::Layer2::Kentrox" : {
"file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::N2270" : {
"file" : "lib/SNMP/Info/Layer2/N2270.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::NAP222x" : {
"file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::NWSS2300" : {
"file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Netgear" : {
"file" : "lib/SNMP/Info/Layer2/Netgear.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Nexans" : {
"file" : "lib/SNMP/Info/Layer2/Nexans.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Orinoco" : {
"file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Sixnet" : {
"file" : "lib/SNMP/Info/Layer2/Sixnet.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Trapeze" : {
"file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::Ubiquiti" : {
"file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer2::ZyXEL_DSLAM" : {
"file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3" : {
"file" : "lib/SNMP/Info/Layer3.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Aironet" : {
"file" : "lib/SNMP/Info/Layer3/Aironet.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::AlcatelLucent" : {
"file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::AlteonAD" : {
"file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Altiga" : {
"file" : "lib/SNMP/Info/Layer3/Altiga.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Arista" : {
"file" : "lib/SNMP/Info/Layer3/Arista.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Aruba" : {
"file" : "lib/SNMP/Info/Layer3/Aruba.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::ArubaCX" : {
"file" : "lib/SNMP/Info/Layer3/ArubaCX.pm",
"version" : "3.93"
},
"SNMP::Info::Layer3::BayRS" : {
"file" : "lib/SNMP/Info/Layer3/BayRS.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::BlueCoatSG" : {
"file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::C3550" : {
"file" : "lib/SNMP/Info/Layer3/C3550.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::C4000" : {
"file" : "lib/SNMP/Info/Layer3/C4000.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::C6500" : {
"file" : "lib/SNMP/Info/Layer3/C6500.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::CheckPoint" : {
"file" : "lib/SNMP/Info/Layer3/CheckPoint.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Ciena" : {
"file" : "lib/SNMP/Info/Layer3/Ciena.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Cisco" : {
"file" : "lib/SNMP/Info/Layer3/Cisco.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::CiscoASA" : {
"file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::CiscoFWSM" : {
"file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::CiscoSwitch" : {
"file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Contivity" : {
"file" : "lib/SNMP/Info/Layer3/Contivity.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Cumulus" : {
"file" : "lib/SNMP/Info/Layer3/Cumulus.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::DLink" : {
"file" : "lib/SNMP/Info/Layer3/DLink.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Dell" : {
"file" : "lib/SNMP/Info/Layer3/Dell.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::ERX" : {
"file" : "lib/SNMP/Info/Layer3/ERX.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Enterasys" : {
"file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Extreme" : {
"file" : "lib/SNMP/Info/Layer3/Extreme.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::F5" : {
"file" : "lib/SNMP/Info/Layer3/F5.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Force10" : {
"file" : "lib/SNMP/Info/Layer3/Force10.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Fortinet" : {
"file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Foundry" : {
"file" : "lib/SNMP/Info/Layer3/Foundry.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Genua" : {
"file" : "lib/SNMP/Info/Layer3/Genua.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::H3C" : {
"file" : "lib/SNMP/Info/Layer3/H3C.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::HP9300" : {
"file" : "lib/SNMP/Info/Layer3/HP9300.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Huawei" : {
"file" : "lib/SNMP/Info/Layer3/Huawei.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::IBMGbTor" : {
"file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Juniper" : {
"file" : "lib/SNMP/Info/Layer3/Juniper.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Lantronix" : {
"file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Lenovo" : {
"file" : "lib/SNMP/Info/Layer3/Lenovo.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Microsoft" : {
"file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Mikrotik" : {
"file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::N1600" : {
"file" : "lib/SNMP/Info/Layer3/N1600.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::NetSNMP" : {
"file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Netonix" : {
"file" : "lib/SNMP/Info/Layer3/Netonix.pm",
"version" : "3.93"
},
"SNMP::Info::Layer3::Netscreen" : {
"file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Nexus" : {
"file" : "lib/SNMP/Info/Layer3/Nexus.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::OneAccess" : {
"file" : "lib/SNMP/Info/Layer3/OneAccess.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::PacketFront" : {
"file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::PaloAlto" : {
"file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Passport" : {
"file" : "lib/SNMP/Info/Layer3/Passport.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Pf" : {
"file" : "lib/SNMP/Info/Layer3/Pf.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Pica8" : {
"file" : "lib/SNMP/Info/Layer3/Pica8.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Redlion" : {
"file" : "lib/SNMP/Info/Layer3/Redlion.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Scalance" : {
"file" : "lib/SNMP/Info/Layer3/Scalance.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::SonicWALL" : {
"file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Steelfusion" : {
"file" : "lib/SNMP/Info/Layer3/Steelfusion.pm",
"version" : "3.93"
},
"SNMP::Info::Layer3::Steelhead" : {
"file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::SteelheadEx" : {
"file" : "lib/SNMP/Info/Layer3/SteelheadEx.pm",
"version" : "3.93"
},
"SNMP::Info::Layer3::Sun" : {
"file" : "lib/SNMP/Info/Layer3/Sun.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Tasman" : {
"file" : "lib/SNMP/Info/Layer3/Tasman.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Teltonika" : {
"file" : "lib/SNMP/Info/Layer3/Teltonika.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Timetra" : {
"file" : "lib/SNMP/Info/Layer3/Timetra.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::VMware" : {
"file" : "lib/SNMP/Info/Layer3/VMware.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::VyOS" : {
"file" : "lib/SNMP/Info/Layer3/VyOS.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer3::Whiterabbit" : {
"file" : "lib/SNMP/Info/Layer3/Whiterabbit.pm",
"version" : "3.93"
},
"SNMP::Info::Layer7" : {
"file" : "lib/SNMP/Info/Layer7.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer7::APC" : {
"file" : "lib/SNMP/Info/Layer7/APC.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer7::Arbor" : {
"file" : "lib/SNMP/Info/Layer7/Arbor.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer7::CiscoIPS" : {
"file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer7::Gigamon" : {
"file" : "lib/SNMP/Info/Layer7/Gigamon.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer7::HWGroup" : {
"file" : "lib/SNMP/Info/Layer7/HWGroup.pm",
"version" : "3.93"
},
"SNMP::Info::Layer7::Liebert" : {
"file" : "lib/SNMP/Info/Layer7/Liebert.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer7::Neoteris" : {
"file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::Layer7::Netscaler" : {
"file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::MAU" : {
"file" : "lib/SNMP/Info/MAU.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::MRO" : {
"file" : "lib/SNMP/Info/MRO.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::NortelStack" : {
"file" : "lib/SNMP/Info/NortelStack.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::PortAccessEntity" : {
"file" : "lib/SNMP/Info/PortAccessEntity.pm",
"version" : "3.93"
},
"SNMP::Info::PowerEthernet" : {
"file" : "lib/SNMP/Info/PowerEthernet.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::RapidCity" : {
"file" : "lib/SNMP/Info/RapidCity.pm",
"version" : "3.71"
"version" : "3.93"
},
"SNMP::Info::SONMP" : {
"file" : "lib/SNMP/Info/SONMP.pm",
"version" : "3.71"
"version" : "3.93"
}
},
"release_status" : "stable",
@@ -603,14 +645,14 @@
},
"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"
},
"x_IRC" : "irc://irc.freenode.org/#netdisco",
"x_IRC" : "irc://irc.libera.chat/#netdisco",
"x_MailingList" : "https://lists.sourceforge.net/lists/listinfo/snmp-info-users"
},
"version" : "3.71",
"x_serialization_backend" : "JSON::PP version 4.02"
"version" : "3.93",
"x_serialization_backend" : "JSON::PP version 4.07"
}

312
META.yml
View File

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

169
README
View File

@@ -2,7 +2,7 @@ NAME
SNMP::Info - OO Interface to Network devices and MIBs through SNMP
VERSION
SNMP::Info - Version 3.71
SNMP::Info - Version 3.93
AUTHOR
SNMP::Info is maintained by team of Open Source authors headed by Eric
@@ -23,18 +23,29 @@ DEVICES SUPPORTED
SYNOPSIS
use SNMP::Info;
my $info = new SNMP::Info(
# Auto Discover more specific Device Class
my $info = SNMP::Info->new({
# Auto Discover your Device Class (Cisco, Juniper, etc ...)
AutoSpecify => 1,
Debug => 1,
# The rest is passed to SNMP::Session
DestHost => 'router',
Community => 'public',
Version => 2
) or die "Can't connect to device.\n";
# Parameter reference for SNMPv3
# Version => 3
# SecLevel => 'authPriv', # authPriv|authNoPriv|noAuthNoPriv
# SecName => 'myuser',
# AuthProto => 'MD5', # MD5|SHA
# AuthPass => 'authp4ss',
# PrivProto => 'DES', # DES|AES
# PrivPass => 'pr1vp4ss',
});
my $err = $info->error();
die "SNMP Community or Version probably wrong connecting to device. $err\n" if defined $err;
die $err if defined $err;
# usually a wrong DestHost or Community or Version if you have trouble here
my $name = $info->name();
my $class = $info->class();
@@ -213,17 +224,23 @@ SUBCLASSES
See documentation in SNMP::Info::Bridge for details.
SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in SNMP::Info::CiscoAgg for details.
SNMP::Info::CDP
CISCO-CDP-MIB. Cisco Discovery Protocol (CDP) Support. Inherited by
Cisco, Enterasys, and HP devices.
See documentation in SNMP::Info::CDP for details.
SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in SNMP::Info::CiscoAgg for details.
SNMP::Info::CiscoBGP
CISCO-BGP4-MIB. Cisco BGPv4 support. Inherited by Cisco devices with
Layer3 support.
See documentation in SNMP::Info::CiscoBGP for details.
SNMP::Info::CiscoConfig
CISCO-CONFIG-COPY-MIB, CISCO-FLASH-MIB, and OLD-CISCO-SYS-MIB. These
OIDs facilitate the writing of configuration files.
@@ -257,11 +274,6 @@ SUBCLASSES
See documentation in SNMP::Info::CiscoStack for details.
SNMP::Info::CiscoStpExtensions
CISCO-STP-EXTENSIONS-MIB
See documentation in SNMP::Info::CiscoStpExtensions for details.
SNMP::Info::CiscoStats
OLD-CISCO-CPU-MIB, CISCO-PROCESS-MIB, and CISCO-MEMORY-POOL-MIB.
Provides common interfaces for memory, cpu, and os statistics for
@@ -269,22 +281,27 @@ SUBCLASSES
See documentation in SNMP::Info::CiscoStats for details.
SNMP::Info::CiscoStpExtensions
CISCO-STP-EXTENSIONS-MIB
See documentation in SNMP::Info::CiscoStpExtensions for details.
SNMP::Info::CiscoVTP
CISCO-VTP-MIB, CISCO-VLAN-MEMBERSHIP-MIB,
CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB
See documentation in SNMP::Info::CiscoVTP for details.
SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS
See documentation in SNMP::Info::DocsisHE for details.
SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in SNMP::Info::DocsisCM for details.
SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS
See documentation in SNMP::Info::DocsisHE for details.
SNMP::Info::EDP
Extreme Discovery Protocol. EXTREME-EDP-MIB
@@ -306,6 +323,11 @@ SUBCLASSES
See documentation in SNMP::Info::FDP for details.
SNMP::Info::IEEE802_Bridge
SNMP Interface to data available through the IEEE8021-Q-BRIDGE-MIB
See documentation in SNMP::Info::IEEE802_Bridge for details.
SNMP::Info::IEEE802dot11
IEEE802dot11-MIB. A collection of OIDs providing information about
standards based 802.11 wireless devices.
@@ -346,6 +368,11 @@ SUBCLASSES
See documentation in SNMP::Info::NortelStack for details.
SNMP::Info::PortAccessEntity
IEEE8021-PAE-MIB
See documentation in SNMP::Info::PortAccessEntity for details.
SNMP::Info::PowerEthernet
POWER-ETHERNET-MIB
@@ -423,7 +450,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Adtran for details.
SNMP::Info::Layer2::Aerohive
Subclass for Aerohive Access Points.
Subclass for Aerohive / Extreme access points.
See documentation in SNMP::Info::Layer2::Aerohive for details.
@@ -502,6 +529,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Exinda for details.
SNMP::Info::Layer2::Hirschmann
Subclass for Hirschmann switches
See documentation in SNMP::Info::Layer2::Hirschmann for details.
SNMP::Info::Layer2::HP
Subclass for more recent HP Procurve Switches.
@@ -613,6 +645,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Aruba for details.
SNMP::Info::Layer3::ArubaCX
SNMP Interface to L3 Devices running ArubaOS-CX
See documentation in SNMP::Info::Layer3::ArubaCX for details.
SNMP::Info::Layer3::BayRS
Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This
includes BCN, BLN, ASN, ARN, AN, 2430, and 5430 routers.
@@ -620,7 +657,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::BayRS for details.
SNMP::Info::Layer3::BlueCoatSG
Subclass for Blue Coat SG series proxy devices.
Subclass for BlueCoat SG series proxy devices.
See documentation in SNMP::Info::Layer3::BlueCoatSG for details.
@@ -683,11 +720,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Cumulus for details.
SNMP::Info::Layer3::DLink
Subclass for DLink devices.
See documentation in SNMP::Info::Layer3::DLink for details.
SNMP::Info::Layer3::Dell
Subclass for Dell PowerConnect switches. The IBM BladeCenter
Gigabit Ethernet Switch Module and some Linksys switches also
@@ -695,6 +727,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Dell for details.
SNMP::Info::Layer3::DLink
Subclass for DLink devices.
See documentation in SNMP::Info::Layer3::DLink for details.
SNMP::Info::Layer3::Enterasys
Subclass for Enterasys devices.
@@ -790,6 +827,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::N1600 for details.
SNMP::Info::Layer3::Netonix
Subclass for Netonix switches.
See documentation in SNMP::Info::Layer3::Netonix for details.
SNMP::Info::Layer3::NetSNMP
Subclass for host systems running Net-SNMP.
@@ -852,11 +894,23 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::SonicWALL for details.
SNMP::Info::Layer3::Steelfusion
Subclass for Riverbed Steelfusion WAN optimization appliances.
See documentation in SNMP::Info::Layer3::Steelfusion for
details.
SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in SNMP::Info::Layer3::Steelhead for details.
SNMP::Info::Layer3::SteelheadEx
Subclass for Riverbed SteelheadEx WAN optimization appliances.
See documentation in SNMP::Info::Layer3::SteelheadEx for
details.
SNMP::Info::Layer3::Sun
Subclass for Generic Sun Routers running SunOS.
@@ -887,6 +941,12 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::VMware for details.
SNMP::Info::Layer3::Whiterabbit
Subclass for whiterabbit devices.
See documentation in SNMP::Info::Layer3::Whiterabbit for
details.
SNMP::Info::Layer7
Generic Layer7 Devices.
@@ -912,6 +972,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer7::Gigamon for details.
SNMP::Info::Layer7::HWGroup
Subclass for HW Group devices.
See documentation in SNMP::Info::Layer7::HWGroup for details.
SNMP::Info::Layer7::Liebert
Subclass for Liebert devices.
@@ -942,18 +1007,24 @@ USAGE
new()
Creates a new object and connects via SNMP::Session.
my $info = new SNMP::Info( 'Debug' => 1,
'AutoSpecify' => 1,
'BigInt' => 1,
'BulkWalk' => 1,
'BulkRepeaters' => 20,
'IgnoreNetSNMPConf' => 1,
'LoopDetect' => 1,
'DestHost' => 'myrouter',
'Community' => 'public',
'Version' => 2,
'MibDirs' => ['dir1','dir2','dir3'],
) or die;
Always returns an SNMP::Info instance, and you should always check
for error() as in SYNOPSIS above to be sure of success.
Will take a bare list of key/value options but we recommend a HASH
ref as in the example below and SYNOPSIS, to catch syntax errors.
my $info = SNMP::Info->({ 'Debug' => 1,
'AutoSpecify' => 1,
'BigInt' => 1,
'BulkWalk' => 1,
'BulkRepeaters' => 20,
'LoopDetect' => 1,
'IgnoreNetSNMPConf' => 1,
'DestHost' => 'myrouter',
'Community' => 'public',
'Version' => 2,
'MibDirs' => ['dir1','dir2','dir3'],
});
SNMP::Info Specific Arguments :
@@ -1603,12 +1674,12 @@ USAGE
For protocol specific information and implementation:
LLDP: See SNMP::Info::LLDP for details.
CDP: See SNMP::Info::CDP for details.
SONMP: See SNMP::Info::SONMP for details.
FDP: See SNMP::Info::FDP for details.
EDP: See SNMP::Info::EDP for details.
AMAP: See SNMP::Info::AMAP for details.
CDP: See SNMP::Info::CDP for details.
EDP: See SNMP::Info::EDP for details.
FDP: See SNMP::Info::FDP for details.
LLDP: See SNMP::Info::LLDP for details.
SONMP: See SNMP::Info::SONMP for details.
Topology Capabilities
$info->has_topo()
@@ -1938,7 +2009,7 @@ SNMP::INFO INTERNALS
%SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps',
'115000' => '115 kpbs',
'115000' => '115 kbps',
'1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1',
@@ -1949,9 +2020,9 @@ SNMP::INFO INTERNALS
'4000000' => '4.0 Mbps',
'10000000' => '10 Mbps',
'11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps',
'16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3',
'44736000' => 'T3',
'45000000' => '45 Mbps',
@@ -1961,11 +2032,11 @@ SNMP::INFO INTERNALS
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
'155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12',
'622000000' => 'OC-12',
@@ -1987,6 +2058,10 @@ SNMP::INFO INTERNALS
munge_ip()
Takes a binary IP and makes it dotted ASCII.
munge_inetaddress
Takes a binary IP address as defined by the SNMP InetAddress type
and returns it as human readable string;
munge_mac()
Takes an octet stream (HEX-STRING) and returns a colon separated
ASCII hex string.

View File

@@ -15,6 +15,7 @@ use strict;
use Exporter;
use SNMP;
use Carp;
use Scalar::Util ();
use Math::BigInt;
use NetAddr::IP::Lite ':lower';
@@ -25,7 +26,7 @@ our
($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG, %SPEED_MAP,
$NOSUCH, $BIGINT, $REPEATERS);
$VERSION = '3.71';
$VERSION = '3.93';
=head1 NAME
@@ -33,7 +34,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.71
SNMP::Info - Version 3.93
=head1 AUTHOR
@@ -56,18 +57,29 @@ list any missing functionality (such as neighbor discovery tables).
use SNMP::Info;
my $info = new SNMP::Info(
# Auto Discover more specific Device Class
my $info = SNMP::Info->new({
# Auto Discover your Device Class (Cisco, Juniper, etc ...)
AutoSpecify => 1,
Debug => 1,
# The rest is passed to SNMP::Session
DestHost => 'router',
Community => 'public',
Version => 2
) or die "Can't connect to device.\n";
# Parameter reference for SNMPv3
# Version => 3
# SecLevel => 'authPriv', # authPriv|authNoPriv|noAuthNoPriv
# SecName => 'myuser',
# AuthProto => 'MD5', # MD5|SHA
# AuthPass => 'authp4ss',
# PrivProto => 'DES', # DES|AES
# PrivPass => 'pr1vp4ss',
});
my $err = $info->error();
die "SNMP Community or Version probably wrong connecting to device. $err\n" if defined $err;
die $err if defined $err;
# usually a wrong DestHost or Community or Version if you have trouble here
my $name = $info->name();
my $class = $info->class();
@@ -265,12 +277,6 @@ support.
See documentation in L<SNMP::Info::Bridge> for details.
=item SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in L<SNMP::Info::CiscoAgg> for details.
=item SNMP::Info::CDP
F<CISCO-CDP-MIB>. Cisco Discovery Protocol (CDP) Support. Inherited by
@@ -278,6 +284,19 @@ Cisco, Enterasys, and HP devices.
See documentation in L<SNMP::Info::CDP> for details.
=item SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links
See documentation in L<SNMP::Info::CiscoAgg> for details.
=item SNMP::Info::CiscoBGP
F<CISCO-BGP4-MIB>. Cisco BGPv4 support. Inherited by Cisco devices with
Layer3 support.
See documentation in L<SNMP::Info::CiscoBGP> for details.
=item SNMP::Info::CiscoConfig
F<CISCO-CONFIG-COPY-MIB>, F<CISCO-FLASH-MIB>, and F<OLD-CISCO-SYS-MIB>.
@@ -317,12 +336,6 @@ F<CISCO-STACK-MIB>.
See documentation in L<SNMP::Info::CiscoStack> for details.
=item SNMP::Info::CiscoStpExtensions
F<CISCO-STP-EXTENSIONS-MIB>
See documentation in L<SNMP::Info::CiscoStpExtensions> for details.
=item SNMP::Info::CiscoStats
F<OLD-CISCO-CPU-MIB>, F<CISCO-PROCESS-MIB>, and F<CISCO-MEMORY-POOL-MIB>.
@@ -331,6 +344,12 @@ devices.
See documentation in L<SNMP::Info::CiscoStats> for details.
=item SNMP::Info::CiscoStpExtensions
F<CISCO-STP-EXTENSIONS-MIB>
See documentation in L<SNMP::Info::CiscoStpExtensions> for details.
=item SNMP::Info::CiscoVTP
F<CISCO-VTP-MIB>, F<CISCO-VLAN-MEMBERSHIP-MIB>,
@@ -338,18 +357,18 @@ F<CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB>
See documentation in L<SNMP::Info::CiscoVTP> for details.
=item SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS
See documentation in L<SNMP::Info::DocsisHE> for details.
=item SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in L<SNMP::Info::DocsisCM> for details.
=item SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS
See documentation in L<SNMP::Info::DocsisHE> for details.
=item SNMP::Info::EDP
Extreme Discovery Protocol. F<EXTREME-EDP-MIB>
@@ -375,6 +394,12 @@ Foundry (Brocade) Discovery Protocol. F<FOUNDRY-SN-SWITCH-GROUP-MIB>
See documentation in L<SNMP::Info::FDP> for details.
=item SNMP::Info::IEEE802_Bridge
SNMP Interface to data available through the F<IEEE8021-Q-BRIDGE-MIB>
See documentation in L<SNMP::Info::IEEE802_Bridge> for details.
=item SNMP::Info::IEEE802dot11
F<IEEE802dot11-MIB>. A collection of OIDs providing information about
@@ -422,6 +447,12 @@ F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
See documentation in L<SNMP::Info::NortelStack> for details.
=item SNMP::Info::PortAccessEntity
F<IEEE8021-PAE-MIB>
See documentation in L<SNMP::Info::PortAccessEntity> for details.
=item SNMP::Info::PowerEthernet
F<POWER-ETHERNET-MIB>
@@ -522,7 +553,7 @@ See documentation in L<SNMP::Info::Layer2::Adtran> for details.
=item SNMP::Info::Layer2::Aerohive
Subclass for Aerohive Access Points.
Subclass for Aerohive / Extreme access points.
See documentation in L<SNMP::Info::Layer2::Aerohive> for details.
@@ -607,6 +638,12 @@ Subclass for Exinda / GFI Network Orchestrator traffic shapers.
See documentation in L<SNMP::Info::Layer2::Exinda> for details.
=item SNMP::Info::Layer2::Hirschmann
Subclass for Hirschmann switches
See documentation in L<SNMP::Info::Layer2::Hirschmann> for details.
=item SNMP::Info::Layer2::HP
Subclass for more recent HP Procurve Switches.
@@ -741,6 +778,12 @@ Subclass for Aruba wireless switches.
See documentation in L<SNMP::Info::Layer3::Aruba> for details.
=item SNMP::Info::Layer3::ArubaCX
SNMP Interface to L3 Devices running ArubaOS-CX
See documentation in L<SNMP::Info::Layer3::ArubaCX> for details.
=item SNMP::Info::Layer3::BayRS
Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This includes
@@ -750,7 +793,7 @@ See documentation in L<SNMP::Info::Layer3::BayRS> for details.
=item SNMP::Info::Layer3::BlueCoatSG
Subclass for Blue Coat SG series proxy devices.
Subclass for BlueCoat SG series proxy devices.
See documentation in L<SNMP::Info::Layer3::BlueCoatSG> for details.
@@ -822,12 +865,6 @@ Subclass for Cumulus Networks Routers.
See documentation in L<SNMP::Info::Layer3::Cumulus> for details.
=item SNMP::Info::Layer3::DLink
Subclass for DLink devices.
See documentation in L<SNMP::Info::Layer3::DLink> for details.
=item SNMP::Info::Layer3::Dell
Subclass for Dell PowerConnect switches. The IBM BladeCenter
@@ -836,6 +873,12 @@ also use this module based upon MIB support.
See documentation in L<SNMP::Info::Layer3::Dell> for details.
=item SNMP::Info::Layer3::DLink
Subclass for DLink devices.
See documentation in L<SNMP::Info::Layer3::DLink> for details.
=item SNMP::Info::Layer3::Enterasys
Subclass for Enterasys devices.
@@ -947,6 +990,12 @@ Subclass for Avaya/Nortel Ethernet Routing Switch 1600 series.
See documentation in L<SNMP::Info::Layer3::N1600> for details.
=item SNMP::Info::Layer3::Netonix
Subclass for Netonix switches.
See documentation in L<SNMP::Info::Layer3::Netonix> for details.
=item SNMP::Info::Layer3::NetSNMP
Subclass for host systems running Net-SNMP.
@@ -1020,12 +1069,24 @@ Subclass for generic SonicWALL devices.
See documentation in L<SNMP::Info::Layer3::SonicWALL> for details.
=item SNMP::Info::Layer3::Steelfusion
Subclass for Riverbed Steelfusion WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::Steelfusion> for details.
=item SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::Steelhead> for details.
=item SNMP::Info::Layer3::SteelheadEx
Subclass for Riverbed SteelheadEx WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::SteelheadEx> for details.
=item SNMP::Info::Layer3::Sun
Subclass for Generic Sun Routers running SunOS.
@@ -1062,6 +1123,12 @@ Subclass for VMware ESXi hosts.
See documentation in L<SNMP::Info::Layer3::VMware> for details.
=item SNMP::Info::Layer3::Whiterabbit
Subclass for whiterabbit devices.
See documentation in L<SNMP::Info::Layer3::Whiterabbit> for details.
=back
=back
@@ -1100,6 +1167,12 @@ Subclass for Gigamon devices.
See documentation in L<SNMP::Info::Layer7::Gigamon> for details.
=item SNMP::Info::Layer7::HWGroup
Subclass for HW Group devices.
See documentation in L<SNMP::Info::Layer7::HWGroup> for details.
=item SNMP::Info::Layer7::Liebert
Subclass for Liebert devices.
@@ -1144,18 +1217,24 @@ on the Netdisco README!
Creates a new object and connects via SNMP::Session.
my $info = new SNMP::Info( 'Debug' => 1,
'AutoSpecify' => 1,
'BigInt' => 1,
'BulkWalk' => 1,
'BulkRepeaters' => 20,
'IgnoreNetSNMPConf' => 1,
'LoopDetect' => 1,
'DestHost' => 'myrouter',
'Community' => 'public',
'Version' => 2,
'MibDirs' => ['dir1','dir2','dir3'],
) or die;
Always returns an SNMP::Info instance, and you should always check for
error() as in SYNOPSIS above to be sure of success.
Will take a bare list of key/value options but we recommend a HASH ref
as in the example below and SYNOPSIS, to catch syntax errors.
my $info = SNMP::Info->({ 'Debug' => 1,
'AutoSpecify' => 1,
'BigInt' => 1,
'BulkWalk' => 1,
'BulkRepeaters' => 20,
'LoopDetect' => 1,
'IgnoreNetSNMPConf' => 1,
'DestHost' => 'myrouter',
'Community' => 'public',
'Version' => 2,
'MibDirs' => ['dir1','dir2','dir3'],
});
SNMP::Info Specific Arguments :
@@ -1294,7 +1373,7 @@ then fallback to version 1.
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my %args = @_;
my %args = (ref $_[0] ? %{ $_[0] } : @_);
my %sess_args = %args;
my $new_obj = {};
bless $new_obj, $class;
@@ -1397,16 +1476,16 @@ sub new {
# No session object created
unless ( defined $sess ) {
$new_obj->error_throw("SNMP::Info::new() Failed to Create Session. ");
return;
$new_obj->error_throw("SNMP::Info::new() Net-SNMP session creation failed completely.");
return $new_obj;
}
# Session object created but SNMP connection failed.
my $sess_err = $sess->{ErrorStr} || '';
if ($sess_err) {
if ($sess->{ErrorStr}) {
my $sess_err = $sess->{ErrorStr} || 'no specific error';
$new_obj->error_throw(
"SNMP::Info::new() Net-SNMP session creation failed. $sess_err");
return;
"SNMP::Info::new() Net-SNMP session creation failed: $sess_err");
return $new_obj;
}
# Save Args for later
@@ -1669,13 +1748,15 @@ sub device_type {
# Hash for generic fallback to a device class if unable to determine using
# the sysDescr regex.
my %l3sysoidmap = (
9 => 'SNMP::Info::Layer3::Cisco',
9 => 'SNMP::Info::Layer3::CiscoSwitch',
11 => 'SNMP::Info::Layer2::HP',
18 => 'SNMP::Info::Layer3::BayRS',
42 => 'SNMP::Info::Layer3::Sun',
43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack',
96 => 'SNMP::Info::Layer3::Whiterabbit',
171 => 'SNMP::Info::Layer3::DLink',
207 => 'SNMP::Info::Layer2::Allied',
244 => 'SNMP::Info::Layer3::Lantronix',
311 => 'SNMP::Info::Layer3::Microsoft',
664 => 'SNMP::Info::Layer2::Adtran',
@@ -1729,6 +1810,8 @@ sub device_type {
40310 => 'SNMP::Info::Layer3::Cumulus',
41112 => 'SNMP::Info::Layer2::Ubiquiti',
44641 => 'SNMP::Info::Layer3::VyOS',
46242 => 'SNMP::Info::Layer3::Netonix',
47196 => 'SNMP::Info::Layer3::ArubaCX',
48690 => 'SNMP::Info::Layer3::Teltonika',
);
@@ -1737,8 +1820,10 @@ sub device_type {
11 => 'SNMP::Info::Layer2::HP',
43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack',
96 => 'SNMP::Info::Layer3::Whiterabbit',
171 => 'SNMP::Info::Layer3::DLink',
207 => 'SNMP::Info::Layer2::Allied',
248 => 'SNMP::Info::Layer2::Hirschmann',
266 => 'SNMP::Info::Layer2::Nexans',
664 => 'SNMP::Info::Layer2::Adtran',
674 => 'SNMP::Info::Layer3::Dell',
@@ -1767,6 +1852,8 @@ sub device_type {
21091 => 'SNMP::Info::Layer2::Exinda',
26543 => 'SNMP::Info::Layer3::IBMGbTor',
26928 => 'SNMP::Info::Layer2::Aerohive',
46242 => 'SNMP::Info::Layer3::Netonix',
47196 => 'SNMP::Info::Layer3::ArubaCX',
48690 => 'SNMP::Info::Layer3::Teltonika',
);
@@ -1782,6 +1869,7 @@ sub device_type {
9694 => 'SNMP::Info::Layer7::Arbor',
12532 => 'SNMP::Info::Layer7::Neoteris',
14525 => 'SNMP::Info::Layer2::Trapeze',
21796 => 'SNMP::Info::Layer7::HWGroup',
26866 => 'SNMP::Info::Layer7::Gigamon',
);
@@ -1931,11 +2019,25 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Scalance'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.4329\.6\.1\.2/i );
# Aruba wireless switches (issue #403)
$objtype = 'SNMP::Info::Layer3::Aruba'
if ( $desc =~ /ArubaOS/ );
# Teltonika RUT9xx Series
$objtype = 'SNMP::Info::Layer3::Teltonika'
if (
$desc =~ /\bTeltonika.*RUT9\d{2}\b/);
# Riverbed Steelfusion
$objtype = 'SNMP::Info::Layer3::SteelheadEx'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.17163\.1\.51/i );
$objtype = 'SNMP::Info::Layer3::Steelfusion'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.17163\.1\.52/i );
# Whiterabbit Timing
$objtype = 'SNMP::Info::Layer3::Whiterabbit'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.96\.100\.1000/i );
# Generic device classification based upon sysObjectID
if ( ( $objtype eq 'SNMP::Info::Layer3' )
and ( defined($id) )
@@ -2145,6 +2247,10 @@ sub device_type {
# it would flip/flop between those
$objtype = 'SNMP::Info::Layer3::Scalance'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.4329\.6\.1\.2/i );
# Whiterabbit Timing
$objtype = 'SNMP::Info::Layer3::Whiterabbit'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.96\.100\.1000/i );
# Teltonika RUT9xx Series
$objtype = 'SNMP::Info::Layer3::Teltonika'
@@ -2250,8 +2356,8 @@ sub specify {
my $device_type = $self->device_type();
unless ( defined $device_type ) {
$self->error_throw(
"SNMP::Info::specify() - Could not get info from device");
return;
"SNMP::Info::specify() - fatal error: connect failed or missing sysServices and/or sysDescr");
return $self;
}
return $self if $device_type eq 'SNMP::Info';
@@ -2852,17 +2958,17 @@ For protocol specific information and implementation:
=over
=item LLDP: See L<SNMP::Info::LLDP> for details.
=item AMAP: See L<SNMP::Info::AMAP> for details.
=item CDP: See L<SNMP::Info::CDP> for details.
=item SONMP: See L<SNMP::Info::SONMP> for details.
=item EDP: See L<SNMP::Info::EDP> for details.
=item FDP: See L<SNMP::Info::FDP> for details.
=item EDP: See L<SNMP::Info::EDP> for details.
=item LLDP: See L<SNMP::Info::LLDP> for details.
=item AMAP: See L<SNMP::Info::AMAP> for details.
=item SONMP: See L<SNMP::Info::SONMP> for details.
=back
@@ -2957,7 +3063,7 @@ sub ip_netmask {
$prefix = $1;
}
my $new_iid = join( ".", @parts );
my $mask = NetAddr::IP::Lite->new( $new_iid . '/' . $prefix )->mask()
my $mask = eval { NetAddr::IP::Lite->new( $new_iid . '/' . $prefix )->mask() }
|| undef;
$ip_netmask{$new_iid} = $mask;
@@ -3638,7 +3744,7 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
%SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps',
'115000' => '115 kpbs',
'115000' => '115 kbps',
'1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1',
@@ -3649,9 +3755,9 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
'4000000' => '4.0 Mbps',
'10000000' => '10 Mbps',
'11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps',
'16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3',
'44736000' => 'T3',
'45000000' => '45 Mbps',
@@ -3661,11 +3767,11 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
'155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12',
'622000000' => 'OC-12',
@@ -3685,7 +3791,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
%SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps',
'115000' => '115 kpbs',
'115000' => '115 kbps',
'1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1',
@@ -3696,9 +3802,9 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'4000000' => '4.0 Mbps',
'10000000' => '10 Mbps',
'11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps',
'16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3',
'44736000' => 'T3',
'45000000' => '45 Mbps',
@@ -3708,11 +3814,11 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
'155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12',
'622000000' => 'OC-12',
@@ -3770,6 +3876,27 @@ sub munge_ip {
return join( '.', unpack( 'C4', $ip ) );
}
=item munge_inetaddress
Takes a binary IP address as defined by the SNMP InetAddress type and returns
it as human readable string;
=cut
sub munge_inetaddress {
my $ip = shift;
# 4 bytes = IPv4
if (length($ip) == 4) {
return SNMP::Info::munge_ip($ip);
}
# 16 bytes = IPv6
elsif (length($ip) == 16) {
return sprintf( "%x:%x:%x:%x:%x:%x:%x:%x",
unpack( 'n8', $ip ));
}
return '';
}
=item munge_mac()
Takes an octet stream (HEX-STRING) and returns a colon separated ASCII hex
@@ -3938,6 +4065,8 @@ Takes an OID and return the object name if the right MIB is loaded.
sub munge_e_type {
my $oid = shift;
return unless $oid;
return $oid if $oid =~ m/^\.0/;
my $name = &SNMP::translateObj($oid);
return $name if defined($name);
@@ -4820,6 +4949,11 @@ sub _cache {
my $store = $self->store();
if (ref {} eq ref $data) {
if (! Scalar::Util::looks_like_number($self->{"_${attr}"})) {
# https://github.com/netdisco/snmp-info/issues/464
# perhaps this is being set twice and first time gets $data ??
$self->{"_${attr}"} = 0;
}
$self->{"_${attr}"}++;
$store->{$attr} = $data;
}
@@ -5023,7 +5157,7 @@ sub can {
# We could add load_/orig_/_raw alternatives to symbol table here on
# first call of any type for a global or func since they all use the same
# destination code, but they aren't used heavily in main code base so
# well just create if/when they are called rather than pollute the
# we'll just create if/when they are called rather than pollute the
# symbol table with entries that never get called.
# Between 2012-2020 we actually added the methods generated below to the
@@ -5080,9 +5214,9 @@ subclass.
sub AUTOLOAD {
my $self = shift;
my ($sub_name) = $AUTOLOAD =~ /::(\w+)$/;
my ($sub_name) = $AUTOLOAD =~ /::([a-zA-Z0-9_-]+)$/;
return if $sub_name eq 'CARP_TRACE';
return if $sub_name eq 'CARP_TRACE';
# Typos in function calls in SNMP::Info subclasses turn into
# AUTOLOAD requests for non-methods. While this is deprecated,

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType',

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
# Load MIB for leafs referenced within class
%MIBS = ('IF-MIB' => 'ifIndex',);
@@ -63,7 +63,9 @@ sub agg_ports_ifstack {
foreach my $idx ( keys %$ifStack ) {
my ( $higher, $lower ) = split /\./, $idx;
next if ( $higher == 0 or $lower == 0 );
if ( $ifType->{ $higher } eq 'ieee8023adLag' or $ifType->{ $higher } eq 'propMultiplexor') {
if ( $ifType->{ $higher } eq 'ieee8023adLag'
or $ifType->{ $higher } eq 'propMultiplexor'
or $ifType->{ $higher } eq 'propVirtual' ) {
$ret->{ $lower } = $higher;
}
}

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
our ($VERSION, $DEBUG, %MIBS, %FUNCS, %GLOBALS, %MUNGE, $INIT);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
@@ -105,7 +105,7 @@ $VERSION = '3.71';
'stp_p_bridge' => 'dot1dStpPortDesignatedBridge',
'stp_p_port' => 'dot1dStpPortDesignatedPort',
# Rapid Spanning Tree Protocol Table : dot1dStpExtPortEntry
# Rapid Spanning Tree Protocol Table : dot1dStpExtPortEntry
'is_edgeport_admin' => 'dot1dStpPortAdminEdgePort',
'is_edgeport_oper' => 'dot1dStpPortOperEdgePort',
@@ -366,7 +366,7 @@ sub i_vlan {
my $bridge = shift;
my $partial = shift;
my $index = $bridge->bp_index();
my $index = $bridge->bp_index() or return {};
# If given a partial it will be an ifIndex, we need to use dot1dBasePort
if ($partial) {
@@ -429,7 +429,7 @@ sub _vlan_hoa {
my $vlan;
# Strip TimeFilter if we're using VlanCurrentTable
( $vlan = $idx ) =~ s/^\d+\.//;
($vlan = $idx) =~ s/^(\d+\.)*//g;
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$portlist; $i++ ) {

View File

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

View File

@@ -33,6 +33,7 @@ use strict;
use warnings;
use Exporter;
use SNMP::Info::IEEE802dot3ad;
use SNMP::Info::Aggregate 'agg_ports_ifstack';
@SNMP::Info::CiscoAgg::ISA = qw/
SNMP::Info::IEEE802dot3ad
@@ -48,7 +49,7 @@ use SNMP::Info::IEEE802dot3ad;
our ($DEBUG, $VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::IEEE802dot3ad::MIBS,
@@ -137,7 +138,12 @@ sub agg_ports_lag {
# combine PAgP, LAG & Cisco proprietary data
sub agg_ports {
my $ret = {%{agg_ports_pagp(@_)}, %{agg_ports_lag(@_)}, %{agg_ports_cisco(@_)}};
my $ret = {
%{agg_ports_ifstack(@_)},
%{agg_ports_pagp(@_)},
%{agg_ports_lag(@_)},
%{agg_ports_cisco(@_)},
};
return $ret;
}

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

@@ -0,0 +1,267 @@
# SNMP::Info::CiscoBGP
#
# Copyright (c) 2022 Alexander Hartmaier
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoBGP;
use strict;
use warnings;
use Exporter;
use SNMP::Info;
@SNMP::Info::CiscoBGP::ISA = qw( SNMP::Info Exporter );
@SNMP::Info::CiscoBGP::EXPORT_OK = qw(
parse_cisco_bgp_peer2_entry_index
);
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.93';
%MIBS = ( 'CISCO-BGP4-MIB' => 'cbgpPeer2State', );
%GLOBALS = ();
%FUNCS = (
# cbgpPeer2Table
'cisco_bgp_peer2_state' => 'cbgpPeer2State',
'cisco_bgp_peer2_adminstatus' => 'cbgpPeer2AdminStatus',
'cisco_bgp_peer2_localaddr' => 'cbgpPeer2LocalAddr',
'cisco_bgp_peer2_localport' => 'cbgpPeer2LocalPort',
'cisco_bgp_peer2_localas' => 'cbgpPeer2LocalAs',
'cisco_bgp_peer2_localidentifier' => 'cbgpPeer2LocalIdentifier',
'cisco_bgp_peer2_remoteport' => 'cbgpPeer2RemotePort',
'cisco_bgp_peer2_remoteas' => 'cbgpPeer2RemoteAs',
'cisco_bgp_peer2_remoteidentifier' => 'cbgpPeer2RemoteIdentifier',
'cisco_bgp_peer2_inupdates' => 'cbgpPeer2InUpdates',
'cisco_bgp_peer2_outupdates' => 'cbgpPeer2OutUpdates',
'cisco_bgp_peer2_intotalmessages' => 'cbgpPeer2InTotalMessages',
'cisco_bgp_peer2_outtotalmessages' => 'cbgpPeer2OutTotalMessages',
'cisco_bgp_peer2_lasterror' => 'cbgpPeer2LastError',
'cisco_bgp_peer2_fsmestablishedtransitions'
=> 'cbgpPeer2FsmEstablishedTransitions',
'cisco_bgp_peer2_fsmestablishedtime' => 'cbgpPeer2FsmEstablishedTime',
'cisco_bgp_peer2_connectretryinterval'=> 'cbgpPeer2ConnectRetryInterval',
'cisco_bgp_peer2_holdtime' => 'cbgpPeer2HoldTime',
'cisco_bgp_peer2_keepalive' => 'cbgpPeer2KeepAlive',
'cisco_bgp_peer2_holdtimeconfigured' => 'cbgpPeer2HoldTimeConfigured',
'cisco_bgp_peer2_keepaliveconfigured' => 'cbgpPeer2KeepAliveConfigured',
'cisco_bgp_peer2_minasoriginationinterval'
=> 'cbgpPeer2MinASOriginationInterval',
'cisco_bgp_peer2_inupdatelapsedtime' => 'cbgpPeer2InUpdateElapsedTime',
'cisco_bgp_peer2_lasterrortxt' => 'cbgpPeer2LastErrorTxt',
'cisco_bgp_peer2_prevstate' => 'cbgpPeer2PrevState',
# cbgpPeer2AddrFamilyPrefixTable
'cisco_bgp_peer2_acceptedprefixes' => 'cbgpPeer2AcceptedPrefixes',
'cisco_bgp_peer2_deniedprefixes' => 'cbgpPeer2DeniedPrefixes',
'cisco_bgp_peer2_prefixadminlimit' => 'cbgpPeer2PrefixAdminLimit',
'cisco_bgp_peer2_prefixthreshold' => 'cbgpPeer2PrefixThreshold',
'cisco_bgp_peer2_prefixclearthreshold'=> 'cbgpPeer2PrefixClearThreshold',
'cisco_bgp_peer2_advertisedprefixes' => 'cbgpPeer2AdvertisedPrefixes',
'cisco_bgp_peer2_suppressedprefixes' => 'cbgpPeer2SuppressedPrefixes',
'cisco_bgp_peer2_withdrawnprefixes' => 'cbgpPeer2WithdrawnPrefixes',
);
%MUNGE = (
'cisco_bgp_peer2_localaddr' => \&SNMP::Info::munge_inetaddress,
'cisco_bgp_peer2_lasterror' => \&SNMP::Info::munge_octet2hex,
);
sub parse_cisco_bgp_peer2_entry_index {
my ($self, $index) = @_;
my ($type, $addrlength, $ip) = split(/\./, $index, 3);
# decode IPv6 remote address
if ($addrlength == 16) {
# copied from SNMP::Info::IPv6/ipv6_addr
my @parts = split(/\./, $ip);
$ip = sprintf("%x:%x:%x:%x:%x:%x:%x:%x",
unpack('n8', pack('C*', @parts)));
}
return $type, $addrlength, $ip;
}
1;
__END__
=head1 NAME
SNMP::Info::CiscoBGP - SNMP Interface to Cisco's BGP MIBs
=head1 AUTHOR
Alexander Hartmaier
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $device = SNMP::Info->(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
) or die "Can't connect to DestHost.\n";
my $remoteas_for_index = $device->cisco_bgp_peer2_remoteas;
for my $index (keys $remoteas_for_index->%*) {
my ($type, $addrlength, $ip) =
$device->parse_cisco_bgp_peer2_entry_index($index);
printf('remote: %-39s type: %-4s remote AS: %5d',
$ip, $type, $remoteas_for_index->{$index});
}
=head1 DESCRIPTION
SNMP::Info::CiscoBGP is a subclass of SNMP::Info that provides
information about a cisco device's BGP configuration and state.
Use or create in a subclass of SNMP::Info. Do not use directly.
=head2 Inherited Classes
none.
=head2 Required MIBs
=over
=item F<CISCO-BGP4-MIB>
=back
=head1 GLOBALS
=over
None
=back
=head1 TABLE METHODS
=head2 Cisco BGP Peer 2 Table (cbgpPeer2Table)
This table contains, one entry per BGP peer, information about the connections
with BGP peers.
=over
=item cisco_bgp_peer2_state (cbgpPeer2State)
=item cisco_bgp_peer2_adminstatus (cbgpPeer2AdminStatus)
=item cisco_bgp_peer2_localaddr (cbgpPeer2LocalAddr)
=item cisco_bgp_peer2_localport (cbgpPeer2LocalPort)
=item cisco_bgp_peer2_localas (cbgpPeer2LocalAs)
=item cisco_bgp_peer2_localidentifier (cbgpPeer2LocalIdentifier)
=item cisco_bgp_peer2_remoteport (cbgpPeer2RemotePort)
=item cisco_bgp_peer2_remoteas (cbgpPeer2RemoteAs)
=item cisco_bgp_peer2_remoteidentifier (cbgpPeer2RemoteIdentifier)
=item cisco_bgp_peer2_inupdates (cbgpPeer2InUpdates)
=item cisco_bgp_peer2_outupdates (cbgpPeer2OutUpdates)
=item cisco_bgp_peer2_intotalmessages (cbgpPeer2InTotalMessages)
=item cisco_bgp_peer2_outtotalmessages (cbgpPeer2OutTotalMessages)
=item cisco_bgp_peer2_lasterror (cbgpPeer2LastError)
=item cisco_bgp_peer2_fsmestablishedtransitions (cbgpPeer2FsmEstablishedTransitions)
=item cisco_bgp_peer2_fsmestablishedtime (cbgpPeer2FsmEstablishedTime)
=item cisco_bgp_peer2_connectretryinterval (cbgpPeer2ConnectRetryInterval)
=item cisco_bgp_peer2_holdtime (cbgpPeer2HoldTime)
=item cisco_bgp_peer2_keepalive (cbgpPeer2KeepAlive)
=item cisco_bgp_peer2_holdtimeconfigured (cbgpPeer2HoldTimeConfigured)
=item cisco_bgp_peer2_keepaliveconfigured (cbgpPeer2KeepAliveConfigured)
=item cisco_bgp_peer2_minasoriginationinterval (cbgpPeer2MinASOriginationInterval)
=item cisco_bgp_peer2_inupdatelapsedtime (cbgpPeer2InUpdateElapsedTime)
=item cisco_bgp_peer2_lasterrortxt (cbgpPeer2LastErrorTxt)
=item cisco_bgp_peer2_prevstate (cbgpPeer2PrevState)
=back
=head2 Cisco BGP Peer 2 Address Family Prefix Table (cbgpPeer2AddrFamilyPrefixTable)
This table contains prefix related information related to address families
supported by a peer.
=over
=item cisco_bgp_peer2_acceptedprefixes (cbgpPeer2AcceptedPrefixes)
=item cisco_bgp_peer2_deniedprefixes (cbgpPeer2DeniedPrefixes)
=item cisco_bgp_peer2_prefixadminlimit (cbgpPeer2PrefixAdminLimit)
=item cisco_bgp_peer2_prefixthreshold (cbgpPeer2PrefixThreshold)
=item cisco_bgp_peer2_prefixclearthreshold (cbgpPeer2PrefixClearThreshold)
=item cisco_bgp_peer2_advertisedprefixes (cbgpPeer2AdvertisedPrefixes)
=item cisco_bgp_peer2_suppressedprefixes (cbgpPeer2SuppressedPrefixes)
=item cisco_bgp_peer2_withdrawnprefixes (cbgpPeer2WithdrawnPrefixes)
=back
=head2 METHODS
=over
=item parse_cisco_bgp_peer2_entry_index
Takes a cbgpPeer2Entry index as returned by all methods of the Cisco BGP Peer
2 Table methods.
Returns a list of type (numeric, cbgpPeer2Type), address length (in bytes:
4 for IPv4, 16 for IPv6) and the remote IP address as string.
=back
=cut

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE, %PAECAPABILITIES);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption',

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );

View File

@@ -38,7 +38,7 @@ use Exporter;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE, %PORTSTAT);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'SNMPv2-MIB' => 'sysDescr',
@@ -109,6 +109,11 @@ sub os {
return 'ios-xe' if ( $descr =~ /Fuji/ );
return 'ios-xe' if ( $descr =~ /Everest/ );
return 'ios-xe' if ( $descr =~ /Gibraltar/ );
return 'ios-xe' if ( $descr =~ /Amsterdam/ );
return 'ios-xe' if ( $descr =~ /Bengaluru/ );
return 'ios-xe' if ( $descr =~ /Cupertino/ );
return 'ios-xe' if ( $descr =~ /Dublin/ );
return 'ios-xe' if ( $descr =~ /IOSXE/ );
return 'ios-xe' if ( $descr =~ /IOS-XE/ );
return 'ios-xr' if ( $descr =~ /IOS XR/ );
return 'ios' if ( $descr =~ /IOS/ );

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
our ($VERSION, $DEBUG, %MIBS, %FUNCS, %GLOBALS, %MUNGE, %PORTSTAT, $INIT);
$VERSION = '3.71';
$VERSION = '3.93';
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -199,6 +199,32 @@ sub i_vlan {
return \%i_vlans;
}
sub i_subinterfaces {
my $vtp = shift;
my %i_subs = %{ $vtp->SUPER::i_subinterfaces() || {} };
# CISCO-VLAN-IFTABLE-RELATION-MIB
# Used for traditional Cisco Routers and Aironet
my $v_cvi_if = $vtp->v_cvi_if();
if ( defined $v_cvi_if ) {
# Translate vlan.parent_physical_interface_iid -> iid
# to iid -> [iid, iid, ...]
foreach my $i ( keys %$v_cvi_if ) {
my ( $vlan, $phys ) = split( /\./, $i );
my $iid = $v_cvi_if->{$i};
next unless $phys and $iid;
next if $phys == $iid;
push @{ $i_subs{$phys} }, $iid;
}
}
return \%i_subs;
}
sub i_untagged {
my $vtp = shift;
my ( $ifindex ) = @_;
@@ -625,6 +651,22 @@ IDs. These are the VLANs which are members of enabled VLAN list for the port.
print "Port: $port VLAN: $vlan\n";
}
=item $vtp->i_subinterfaces()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of
C<ifIndex>. These are the VLAN subinterfaces (C<l2vlan> type) for the parent
(C<ethernetCsmacd> type) interface.
Example:
my $interfaces = $vtp->interfaces();
my $i_subs = $vtp->i_subinterfaces();
foreach my $iid (sort keys %$interfaces) {
my $port = $interfaces->{$iid};
my $subs = join(',', sort(map {$interfaces->{$_}} @{$i_subs->{$iid}}));
print "Port: $port has subinterfaces: $subs\n";
}
=item $vtp->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS

View File

@@ -11,7 +11,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'DOCS-IF3-MIB' => 'docsIf3Mib',

View File

@@ -40,7 +40,7 @@ use SNMP::Info;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );

View File

@@ -44,7 +44,7 @@ use SNMP::Info::Aggregate;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Aggregate::MIBS,

View File

@@ -45,7 +45,7 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.71';
$VERSION = '3.93';
@@ -349,7 +349,7 @@ sub ipv6_addr_prefixlength {
# Remove interface specific part from vrf interfaces
if ($row =~ /^((\d+\.){17}\d+)/) { $row = $1 }
# Remove the OID part from the value
my $val = $ipv6_addr_prefix->{$row};
my $val = $ipv6_addr_prefix->{$row} || '';
if ( $val =~ /^.+?((?:\d+\.){19}(\d+))$/ ) {
$val = $2;
$return->{$row} = $val;
@@ -363,7 +363,7 @@ sub ipv6_addr_prefixlength {
sub ipv6_addr {
my $info = shift;
my $return;
my $return = {};
my $indexes = $info->ipv6_index();
foreach my $row (keys %$indexes) {
my @parts = split(/\./, $row);
@@ -377,8 +377,8 @@ sub ipv6_addr {
my $addrsize = shift @parts; # First element now is addrsize, should be 16
if ($is_valid && $addrsize == 16) {
$return->{$row} = join(':', unpack('(H4)*', pack('C*', @parts)));
} else {
warn sprintf("%s: unable to decode table index to IPv6 address. Raw data is [%s].\n", &_my_sub_name, $row);
} elsif ($info->debug()) {
printf("%s: unable to decode table index to IPv6 address. Raw data is [%s].\n", &_my_sub_name, $row);
}
}
return $return;

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -52,6 +52,8 @@ $VERSION = '3.71';
'lldp_sysname' => 'lldpLocSysName',
'lldp_sysdesc' => 'lldpLocSysDesc',
'lldp_sys_cap' => 'lldpLocSysCapEnabled',
'lldp_loc_id_type' => 'lldpLocChassisIdSubtype',
'lldp_loc_id_os' => 'lldpLocChassisId',
);
%FUNCS = (
@@ -283,6 +285,29 @@ sub lldp_port {
return \%lldp_port;
}
sub _lldp_id_string {
my $lldp = shift;
my $id = shift;
my $type = shift;
# May need to format other types in the future
if ( $type =~ /mac/ ) {
$id = SNMP::Info::munge_mac($id)
} elsif ( $type eq 'networkAddress' ) {
if ( length( unpack( 'H*', $id ) ) == 10 ) {
# IP address - first octet is IANA Address Family Number, need
# walk with IPv6
my @octets
= ( map { sprintf "%02x", $_ } unpack( 'C*', $id ) )
[ 1 .. 4 ];
$id = join '.', map { hex($_) } @octets;
}
}
return $id;
}
sub lldp_id {
my $lldp = shift;
my $partial = shift;
@@ -297,26 +322,19 @@ sub lldp_id {
my $type = $ch_type->{$key};
next unless $type;
# May need to format other types in the future
if ( $type =~ /mac/ ) {
$id = SNMP::Info::munge_mac($id)
}
elsif ( $type eq 'networkAddress' ) {
if ( length( unpack( 'H*', $id ) ) == 10 ) {
# IP address - first octet is IANA Address Family Number, need
# walk with IPv6
my @octets
= ( map { sprintf "%02x", $_ } unpack( 'C*', $id ) )
[ 1 .. 4 ];
$id = join '.', map { hex($_) } @octets;
}
}
$id = $lldp->_lldp_id_string($id, $type);
$lldp_id{$key} = $id;
}
return \%lldp_id;
}
sub lldp_loc_id {
my $lldp = shift;
my $ch_type = $lldp->lldp_loc_id_type();
my $ch = $lldp->lldp_loc_id_os();
return $lldp->_lldp_id_string($ch, $ch_type);
}
sub lldp_platform {
my $lldp = shift;
my $partial = shift;
@@ -586,6 +604,22 @@ capability and nothing else."
(C<lldpLocSysCapEnabled>)
=item $lldp->lldp_loc_id()
The string value used to identify the chassis component associated with
the local system.
(C<lldpLocChassisId>)
=item $lldp->lldp_loc_id_type()
The type of encoding used to identify the chassis associated with the
local system.
This is used by the above method to decode the octet string in C<lldpLocChassisId>
(C<lldpLocChassisIdSubtype>)
=back
=head1 TABLE METHODS

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer1::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -37,22 +37,32 @@ use Exporter;
use SNMP::Info;
use SNMP::Info::Bridge;
use SNMP::Info::Entity;
use SNMP::Info::PortAccessEntity;
use SNMP::Info::PowerEthernet;
use SNMP::Info::LLDP;
use SNMP::Info::DocsisHE;
@SNMP::Info::Layer2::ISA
= qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::Entity SNMP::Info::PowerEthernet SNMP::Info::LLDP SNMP::Info::DocsisHE Exporter/;
@SNMP::Info::Layer2::ISA = qw/
SNMP::Info SNMP::Info::Bridge
SNMP::Info::Entity
SNMP::Info::PowerEthernet
SNMP::Info::LLDP
SNMP::Info::DocsisHE
SNMP::Info::PortAccessEntity
Exporter
/;
@SNMP::Info::Layer2::EXPORT_OK = qw//;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
%SNMP::Info::Entity::MIBS, %SNMP::Info::PowerEthernet::MIBS,
%SNMP::Info::LLDP::MIBS, %SNMP::Info::DocsisHE::MIBS,
%SNMP::Info::PortAccessEntity::MIBS
);
%GLOBALS = (
@@ -62,6 +72,7 @@ $VERSION = '3.71';
%SNMP::Info::Entity::GLOBALS,
%SNMP::Info::PowerEthernet::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
%SNMP::Info::PortAccessEntity::GLOBALS,
'serial1' =>
'.1.3.6.1.4.1.9.3.6.3.0', # OLD-CISCO-CHASSIS-MIB::chassisId.0
);
@@ -70,6 +81,7 @@ $VERSION = '3.71';
%SNMP::Info::FUNCS, %SNMP::Info::Bridge::FUNCS,
%SNMP::Info::Entity::FUNCS, %SNMP::Info::PowerEthernet::FUNCS,
%SNMP::Info::LLDP::FUNCS, %SNMP::Info::DocsisHE::FUNCS,
%SNMP::Info::PortAccessEntity::FUNCS
);
%MUNGE = (
@@ -81,6 +93,7 @@ $VERSION = '3.71';
%SNMP::Info::Entity::MUNGE,
%SNMP::Info::PowerEthernet::MUNGE,
%SNMP::Info::LLDP::MUNGE,
%SNMP::Info::PortAccessEntity::MUNGE,
);
# Method OverRides
@@ -105,8 +118,8 @@ sub model {
sub vendor {
my $l2 = shift;
my $model = $l2->model();
my $descr = $l2->description();
my $model = $l2->model() || '';
my $descr = $l2->description() || '';
if ( $model =~ /hp/i or $descr =~ /\bhp\b/i ) {
return 'hp';
@@ -236,6 +249,8 @@ after determining a more specific class using the method above.
=item SNMP::Info::PowerEthernet
=item SNMP::Info::PortAccessEntity
=back
=head2 Required MIBs
@@ -293,6 +308,10 @@ See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
=head2 Globals imported from SNMP::Info::PortAccessEntity
See documentation in L<SNMP::Info::PortAccessEntity/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
@@ -327,4 +346,8 @@ See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
=head2 Table Methods imported from SNMP::Info::PortAccessEntity
See documentation in L<SNMP::Info::PortAccessEntity/"TABLE METHODS"> for details.
=cut

View File

@@ -39,7 +39,7 @@ use SNMP::Info::CDP;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -108,7 +108,7 @@ sub os_ver {
my $aerohive = shift;
my $descr = $aerohive->description();
if ( defined ($descr) && $descr =~ m/\bHiveOS\s(\d\.\w+)\b/ix ) {
if ( defined ($descr) && $descr =~ m/\bHiveOS\s(\d+\.\w+)\b/ix ) {
return $1;
}
return;
@@ -318,7 +318,8 @@ __END__
=head1 NAME
SNMP::Info::Layer2::Aerohive - SNMP Interface to Aerohive Access Points
SNMP::Info::Layer2::Aerohive - SNMP Interface to Aerohive / Extreme
access points
=head1 AUTHOR
@@ -342,7 +343,7 @@ Eric Miller
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from an
Aerohive wireless Access Point through SNMP.
Aerohive / Extreme wireless access point through SNMP.
=head2 Inherited Classes
@@ -448,11 +449,11 @@ radio interface.
C<ahRadioTxPower>
=item $aironet->cd11_port()
=item $aerohive->cd11_port()
Returns radio interfaces.
=item $aironet->cd11_mac()
=item $aerohive->cd11_mac()
Returns client radio interface MAC addresses.

View File

@@ -31,6 +31,7 @@ package SNMP::Info::Layer2::Airespace;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Bridge;
use SNMP::Info::CDP;
use SNMP::Info::Airespace;
@@ -40,7 +41,7 @@ use SNMP::Info::Airespace;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -48,7 +48,7 @@ use SNMP::Info::IEEE802dot11;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%GLOBALS = (
%SNMP::Info::IEEE802dot11::GLOBALS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( %SNMP::Info::Layer2::MIBS );

View File

@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -552,10 +552,6 @@ Returns reference to the map between IID and physical Port.
The physical port name is returned as slot.port.
=item $baystack->i_ignore()
Returns reference to hash of IIDs to ignore.
=item $baystack->i_mac()
Returns the C<ifPhysAddress> table entries.

View File

@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2::Cisco;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%GLOBALS = (
%SNMP::Info::Layer2::Cisco::GLOBALS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2::Cisco;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::Cisco::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::SONMP;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -52,7 +52,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -49,7 +49,7 @@ use SNMP::Info::CDP;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -50,7 +50,7 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MODEL_MAP, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -45,7 +45,7 @@ use SNMP::Info::CDP;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MODEL_MAP, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -0,0 +1,227 @@
# SNMP::Info::Layer2::Hirschmann - SNMP Interface to Hirschmann 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::Hirschmann;
use strict;
use warnings;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::CDP;
@SNMP::Info::Layer2::Hirschmann::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Hirschmann::EXPORT_OK = qw//;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
'HMPRIV-MGMT-SNMP-MIB' => 'hirschmann',
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
'h_serial_number' => 'hmSysGroupTable.hmSysGroupEntry.hmSysGroupSerialNum.1',
'os_version' => 'hmSysVersion.0'
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE,
);
sub os {
return 'Hirschmann';
}
sub serial {
my $hirschmann = shift;
my $model = $hirschmann->model();
my $id = $hirschmann->id();
my $serial;
return $hirschmann->h_serial_number() if ( $hirschmann->h_serial_number() );
}
sub os_ver {
my $hirschmann = shift;
my $model = $hirschmann->model();
my $id = $hirschmann->id();
my $os_version = $hirschmann->os_version();
if ( $os_version =~ m/(SW:\sL2.-\d{1,2}\.\d\.\d{2})/ ) {
return $1;
}
return $id unless defined $os_version;
return $os_version;
}
sub vendor {
return 'Hirschmann';
}
sub model {
my $hmodel = shift;
my $id = $hmodel->id();
my $model = &SNMP::translateObj($id) || $id;
# model return by snmp is rs30 also if its a rs40
if (defined $model && $model !~ /rs30/) {
return uc $model;
} else {
return 'RS40-30';
}
return;
}
sub mac {
my $hirschmann = shift;
my $i_descr = $hirschmann->i_description();
my $i_mac = $hirschmann->i_mac();
# Return Interface MAC addresse of the switch (on the CPU pseudo interface)
foreach my $entry ( sort keys %$i_descr ) {
my $descr = $i_descr->{$entry};
if ($descr =~ m/(^CPU.)/) {
my $sn = $i_mac->{$entry};
# next unless $sn;
return $sn;
}
}
return;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Hirschamnn - SNMP Interface to L2 Hirschmann Switches
=head1 AUTHOR
Christophe COMTE
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $router = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $router->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Hirschmann L2 devices
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head2 Required MIBs
=over
=item F<>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=head2 Overrides
=over
=item $device->vendor()
Returns 'hirschmann'
=item $device->os()
Returns 'hirschmann'
=item $device->os_ver()
Return os version
=item $device->mac()
Return Interface MAC addresse of the switch (on the CPU pseudo interface).
=item $device->model()
Returns device model extracted from description
=item $device->serial()
Returns serial number
=back
=head2 Globals imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
=head1 TABLE METHODS
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
=cut

View File

@@ -37,7 +37,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Airespace;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -53,9 +53,9 @@ $VERSION = '3.71';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
'os_ver' => 'ntwsVersionString',
'serial' => 'ntwsSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
'os_ver' => 'ntwsVersionString',
'nws_serial' => 'ntwsSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
);
%FUNCS = (
@@ -139,6 +139,14 @@ sub vendor {
return 'avaya';
}
sub serial {
my $nwss2300 = shift;
my $ser = $nwss2300->ntwsSerialNumber();
# my $ser = $nwss2300->nws_serial();
return $ser;
}
sub model {
my $nwss2300 = shift;
my $id = $nwss2300->id();
@@ -654,7 +662,7 @@ sub e_serial {
my %e_serial;
# Chassis
$e_serial{1} = $nwss2300->serial();
$e_serial{1} = $nwss2300->serial() || '';
# APs
foreach my $iid ( keys %$ap_serial ) {

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (%SNMP::Info::Layer2::MIBS, 'SIXNET-MIB' => 'sxid',);

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,
@@ -53,9 +53,9 @@ $VERSION = '3.71';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
'os_ver' => 'trpzVersionString',
'serial' => 'trpzSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
'os_ver' => 'trpzVersionString',
'tr_serial' => 'trpzSerialNumber',
'mac' => 'dot1dBaseBridgeAddress',
);
%FUNCS = (
@@ -138,6 +138,14 @@ sub vendor {
return 'juniper';
}
sub serial {
my $trapeze = shift;
my $ser = $trapeze->trpzSerialNumber();
# my $ser = $trapeze->tr_serial();
return $ser;
}
sub model {
my $trapeze = shift;
my $id = $trapeze->id();
@@ -653,7 +661,7 @@ sub e_serial {
my %e_serial;
# Chassis
$e_serial{1} = $trapeze->serial();
$e_serial{1} = $trapeze->serial() || '';
# APs
foreach my $iid ( keys %$ap_serial ) {

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Layer3; # only used in sub mac()
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -54,7 +54,7 @@ use SNMP::Info::DocsisHE;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::MIBS,
@@ -277,6 +277,30 @@ sub model {
return $model;
}
sub i_subinterfaces {
my $dev = shift;
my $partial = shift;
my $ifstack = $dev->i_stack_status() || {};
# TODO: if we want to do partial, we need to use inverse status
my $iftype = $dev->i_type() || {};
my $ret = $dev->SUPER::i_subinterfaces() || {};
foreach my $idx ( keys %$ifstack ) {
next unless $ifstack->{$idx} eq 'active';
my ( $higher, $lower ) = split /\./, $idx;
next if ( $higher == 0 or $lower == 0 );
if ( $iftype->{ $higher } eq 'l2vlan' or $iftype->{ $higher } eq 'l3ipvlan') {
push @{ $ret->{ $lower } }, $higher;
}
}
return $ret;
}
sub i_name {
my $l3 = shift;
my $partial = shift;
@@ -357,8 +381,8 @@ sub interfaces {
sub vendor {
my $l3 = shift;
my $descr = $l3->description();
my $id = $l3->id();
my $descr = $l3->description() || '';
my $id = $l3->id() || '';
# .1.3.6.1.4.1.9.1 is the CISCO-PRODUCTS-MIB
# .1.3.6.1.4.1.9.9.368.4 is an old tree that Cisco CSSs were numbered from
@@ -611,6 +635,22 @@ name.
Only returns those iids that have a description listed in $l3->i_description()
=item $l3->i_subinterfaces()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of
C<ifIndex>. These are the VLAN subinterfaces (C<l2vlan> type) for the parent
(C<ethernetCsmacd> type) interface.
Example:
my $interfaces = $l3->interfaces();
my $i_subs = $l3->i_subinterfaces();
foreach my $iid (sort keys %$interfaces) {
my $port = $interfaces->{$iid};
my $subs = join(',', sort(map {$interfaces->{$_}} @{$i_subs->{$iid}}));
print "Port: $port has subinterfaces: $subs\n";
}
=item $l3->i_name()
Returns reference to hash of iid to human set name.

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE,
$int_include_vpn, $fake_idx, $type_class);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -46,7 +46,7 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -128,6 +128,11 @@ sub lldp_if {
return $lldp_if;
}
sub set_i_vlan {
my ($arista, $vlan, $iid) = @_;
return $arista->set_qb_i_vlan($vlan, $iid);
}
sub agg_ports { return agg_ports_ifstack(@_) }
1;
@@ -258,4 +263,17 @@ See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
=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.
=over
=item set_i_vlan()
=back
=cut

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -0,0 +1,371 @@
# SNMP::Info::Layer3::ArubaCX
#
# Copyright (c) 2021 Jeroen van Ingen
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::ArubaCX;
use strict;
use warnings;
use Exporter;
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use SNMP::Info::Layer3;
use SNMP::Info::IEEE802_Bridge;
@SNMP::Info::Layer3::ArubaCX::ISA = qw/
SNMP::Info::IEEE802dot3ad
SNMP::Info::Layer3
SNMP::Info::IEEE802_Bridge
Exporter
/;
@SNMP::Info::Layer3::ArubaCX::EXPORT_OK = qw/
agg_ports
/;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::IEEE802dot3ad::MIBS,
%SNMP::Info::IEEE802_Bridge::MIBS,
'ARUBAWIRED-FAN-MIB' => 'arubaWiredFanName',
'ARUBAWIRED-VSF-MIB' => 'arubaWiredVsfTrapEnable',
'ARUBAWIRED-POWERSUPPLY-MIB' => 'arubaWiredPSUName',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::IEEE802_Bridge::GLOBALS,
'ps1_type' => 'arubaWiredPSUProductName.1.1',
'ps2_type' => 'arubaWiredPSUProductName.1.2',
'ps1_status' => 'arubaWiredPSUState.1.1',
'ps2_status' => 'arubaWiredPSUState.1.2',
'vsf_topology' => 'arubaWiredVsfTopology',
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::IEEE802dot3ad::FUNCS,
%SNMP::Info::IEEE802_Bridge::FUNCS,
'fan_names' => 'arubaWiredFanName',
'fan_states' => 'arubaWiredFanState',
'psu_names' => 'arubaWiredPSUName',
'psu_types' => 'arubaWiredPSUProductName',
'psu_states' => 'arubaWiredPSUState',
'vsf_prod_names' => 'arubaWiredVsfMemberProductName',
'raw_ad_lag_ports' => 'dot3adAggPortListPorts', # unmunged raw data
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::IEEE802dot3ad::MUNGE,
%SNMP::Info::IEEE802_Bridge::MUNGE,
);
sub _at_pbb_one {
my $in = shift // {};
my $ret = {};
foreach my $key (keys %$in) {
if ($key =~ /^1\.(\d+)$/) {
$ret->{$1} = $in->{$key};
}
}
return $ret;
}
sub fan {
my $cx = shift;
my $names = $cx->fan_names() || {};
my $states = $cx->fan_states() || {};
my @ary = ();
foreach my $idx (sort keys %$names) {
my $name = $names->{$idx} // 'n/a';
my $state = $states->{$idx} // 'n/a';
push @ary, sprintf("%s: %s", $name, $state);
}
return join (', ', @ary);
}
sub vendor {
my $cx = shift;
my $mfg = $cx->entPhysicalMfgName(1) || {};
my $vendor = $mfg->{1} || "aruba";
return lc($vendor);
}
sub stack_info {
my $cx = shift;
my $vsf_topo = $cx->vsf_topology();
if (defined $vsf_topo and $vsf_topo ne 'standalone') {
my $member_prod_names = $cx->vsf_prod_names() || {};
my $num_members = scalar keys %$member_prod_names;
my $fullname = (values %$member_prod_names)[0];
my $modelname = '';
if ($fullname =~ /^(\S+)/) {
$modelname = $1;
}
return sprintf("%s (stack of %d)", $modelname, $num_members);
} else {
return;
}
}
sub model {
my $cx = shift;
my $model = $cx->entPhysicalModelName(1) || {};
my $id = $cx->id();
my $translated_id = &SNMP::translateObj($id) || $id;
$translated_id =~ s/arubaWiredSwitch//i;
return $cx->stack_info() || $model->{1} || $translated_id;
}
sub os {
return "arubaos-cx";
}
sub os_ver {
my $cx = shift;
my $ver_release = $cx->entPhysicalSoftwareRev(1) || {};
return $ver_release->{1};
}
# agg_ports should return a hash with
# ifindex of member -> ifindex of aggregation
#
# arabuaos-cx has a broken implementation of
# dot3adAggPortListPorts / 1.2.840.10006.300.43.1.1.2.1.1
# it return a comma seperated String with interface names
# (rfc states a PortList / bitmask of member ports)
#
# fetch value, split at comma, reverse search the interface hash
# for the interface index
sub agg_ports {
my $cx = shift;
my $ret = {};
my $ports = $cx->raw_ad_lag_ports();
my $interfaces = $cx->interfaces();
foreach my $m ( keys %$ports ) {
my $idx = $m;
my $portlist = $ports->{$m};
next unless $portlist;
foreach my $ifname ( split(/,/, $portlist) ) {
foreach my $ifindex ( keys %$interfaces) {
if ($interfaces->{$ifindex} eq $ifname) {
$ret->{$ifindex} = $idx;
}
}
}
}
return $ret;
}
# Overrides for VLAN & forwarding table methods
sub v_name {
my $cx = shift;
return _at_pbb_one($cx->iqb_v_name()) || $cx->SUPER::v_name();
}
sub qb_i_vlan {
my $cx = shift;
return _at_pbb_one($cx->iqb_i_vlan()) || $cx->SUPER::qb_i_vlan();
}
sub i_vlan_type {
my $cx = shift;
return _at_pbb_one($cx->iqb_i_vlan_type()) || $cx->SUPER::qb_i_vlan_type();
}
sub qb_v_egress {
my $cx = shift;
return $cx->iqb_v_egress() || $cx->SUPER::qb_v_egress();
}
sub qb_cv_egress {
my $cx = shift;
return $cx->iqb_cv_egress() || $cx->SUPER::qb_cv_egress();
}
sub qb_v_untagged {
my $cx = shift;
return $cx->iqb_v_untagged() || $cx->SUPER::qb_v_untagged();
}
sub qb_cv_untagged {
my $cx = shift;
return $cx->iqb_cv_untagged() || $cx->SUPER::qb_cv_untagged();
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::ArubaCX - SNMP Interface to L3 Devices running ArubaOS-CX
=head1 AUTHORS
Jeroen van Ingen
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $cx = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $cx->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for devices running ArubaOS-CX
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=item SNMP::Info::IEEE802_Bridge
=item SNMP::Info::IEEE802dot3ad
=back
=head2 Required MIBs
=over
=item F<ARUBAWIRED-FAN-MIB>
=item F<ARUBAWIRED-VSF-MIB>
=item F<ARUBAWIRED-POWERSUPPLY-MIB>
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3> for its own MIB requirements.
See L<SNMP::Info::IEEE802_Bridge> for its own MIB requirements.
See L<SNMP::Info::IEEE802dot3ad> for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $cx->stack_info()
If the device supports VSF stacking and is not in standalone mode, returns
a string describing the switch family and the number of stack members.
Example return value: '6300M (stack of 2)'. Will return undef when VSF is not
supported or when the device is VSF standalone.
=item $cx->model()
Returns L<stack_info()> if defined, otherwise will fall back to returning the
model from C<entPhysicalModelName.1>; if that's also not set, will use
C<sysObjectID> as a last resort, stripping 'arubaWiredSwitch' from the value.
=item $cx->vendor()
Returns (lowercased) value for C<entPhysicalMfgName.1>, or 'aruba'.
=item $cx->os()
Returns 'arubaos-cx'.
=item $cx->os_ver()
Returns the software version. Either C<entPhysicalSoftwareRev.1> or
extracted from C<sysDescr>.
=item $cx->fan()
Returns a string with status information for all fans listed in
C<ARUBAWIRED-FAN-MIB>.
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=head2 Globals imported from SNMP::Info::IEEE802_Bridge
See documentation in L<SNMP::Info::IEEE802_Bridge> for details.
=head2 Globals imported from SNMP::Info::IEEE802dot3ad
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=head1 TABLE ENTRIES
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Overrides
=over
=item C<agg_ports>
Returns a HASH reference mapping from slave to master port for each member of
a port bundle on the device. Keys are ifIndex of the slave ports, Values are
ifIndex of the corresponding master ports.
=item C<v_name>
=item C<qb_i_vlan>
=item C<i_vlan_type>
=item C<qb_v_egress>
=item C<qb_cv_egress>
=item C<qb_v_untagged>
=item C<qb_cv_untagged>
All overridden to return the VLAN data structures that we'd expect for a
device that implements C<Q-BRIDGE-MIB>, but with data from
L<SNMP::Info::IEEE8021_Bridge> at PBB 1.
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=head2 Table Methods imported from SNMP::Info::IEEE802_Bridge
See documentation in L<SNMP::Info::IEEE802_Bridge> for details.
=head2 Table Methods imported from SNMP::Info::IEEE802dot3ad
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
=cut

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE, %MODEL_MAP,
%MODID_MAP, %PROCID_MAP);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -37,7 +37,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,

View File

@@ -46,7 +46,7 @@ our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.71';
$VERSION = '3.93';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -43,7 +43,7 @@ use SNMP::Info::MAU;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::MAU::MIBS,

View File

@@ -48,7 +48,7 @@ our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
@SNMP::Info::Layer3::C6500::EXPORT_OK = qw//;
$VERSION = '3.71';
$VERSION = '3.93';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -182,7 +182,21 @@ sub ps2_status {
my $ps_status = $ciena->ps_status;
return $ps_status->{'2'} if defined $ps_status->{'2'};
}
1;
__END__
=head1 NAME
SNMP::Info::Layer3::Ciena - SNMP Interface to Ciena Devices
=head1 AUTHORS
pyro3d
=head1 DESCRIPTION
Subclass for Ciena Devices running SAOS
=head2 Inherited Classes
@@ -323,3 +337,5 @@ Returns reference to hash of fans and their types (ex. fixed, modular, etc.)
Returns reference to hash of fans and their status
=back
=cut

View File

@@ -32,6 +32,7 @@ package SNMP::Info::Layer3::Cisco;
use strict;
use warnings;
use Exporter;
use SNMP::Info::CiscoBGP;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
@@ -42,7 +43,9 @@ use SNMP::Info::CiscoPower;
use SNMP::Info::CiscoStpExtensions;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::Cisco::ISA = qw/SNMP::Info::CiscoVTP
@SNMP::Info::Layer3::Cisco::ISA = qw/
SNMP::Info::CiscoBGP
SNMP::Info::CiscoVTP
SNMP::Info::CDP
SNMP::Info::CiscoStats SNMP::Info::CiscoRTT
SNMP::Info::CiscoQOS SNMP::Info::CiscoConfig
@@ -53,10 +56,11 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::CiscoBGP::MIBS,
%SNMP::Info::CiscoStpExtensions::MIBS,
%SNMP::Info::CiscoPower::MIBS,
%SNMP::Info::CiscoConfig::MIBS,
@@ -70,6 +74,7 @@ $VERSION = '3.71';
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::CiscoBGP::GLOBALS,
%SNMP::Info::CiscoStpExtensions::GLOBALS,
%SNMP::Info::CiscoPower::GLOBALS,
%SNMP::Info::CiscoConfig::GLOBALS,
@@ -83,6 +88,7 @@ $VERSION = '3.71';
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoBGP::FUNCS,
%SNMP::Info::CiscoStpExtensions::FUNCS,
%SNMP::Info::CiscoPower::FUNCS,
%SNMP::Info::CiscoConfig::FUNCS,
@@ -98,13 +104,21 @@ $VERSION = '3.71';
);
%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::Layer3::MUNGE,
%SNMP::Info::CiscoBGP::MUNGE,
%SNMP::Info::CiscoStpExtensions::MUNGE,
%SNMP::Info::CiscoPower::MUNGE,
%SNMP::Info::CiscoConfig::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE,
%SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
);
# the i_vlan in SUPER is just fine; this exists to catch any dotted vlan
# subinterfaces not caught by CiscoVTP
sub i_vlan {
my $cisco = shift;
my $partial = shift;
@@ -115,18 +129,17 @@ sub i_vlan {
foreach my $idx ( keys %$i_descr ) {
next unless $i_type->{$idx};
if ( $i_type->{$idx} eq 'l2vlan'
|| $i_type->{$idx} eq '135' && !defined $i_vlan->{$idx} )
{
# Not sure where this regex came from, anchored at end?
if ( $i_descr->{$idx} =~ /\.(\d+)$/ ) {
$i_vlan->{$idx} = $1;
}
next unless (($i_type->{$idx} eq 'l2vlan' or $i_type->{$idx} eq '135')
and !defined $i_vlan->{$idx});
# This matches 101 in 'Ethernet0.101-802.1Q vLAN subif'
elsif ( $i_descr->{$idx} =~ /\.(\d+)-/ ) {
$i_vlan->{$idx} = $1;
}
# Not sure where this regex came from, anchored at end?
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;
}
}
return $i_vlan;
@@ -218,7 +231,7 @@ for other device specific L3 Cisco classes.
=item SNMP::Info::CiscoConfig
=item SNMP::Info::Power
=item SNMP::Info::CiscoPower
=item SNMP::Info::CiscoStpExtensions

View File

@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );

View File

@@ -35,6 +35,7 @@ use Exporter;
use SNMP::Info::CiscoAgg;
use SNMP::Info::CiscoPortSecurity;
use SNMP::Info::Layer3::Cisco;
use SNMP::Info::PortAccessEntity;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
@@ -42,35 +43,40 @@ our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
SNMP::Info::CiscoAgg
SNMP::Info::CiscoPortSecurity
SNMP::Info::Layer3::Cisco
SNMP::Info::PortAccessEntity
Exporter
/;
@SNMP::Info::Layer3::CiscoSwitch::EXPORT_OK = qw//;
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,
%SNMP::Info::CiscoPortSecurity::MIBS,
%SNMP::Info::CiscoAgg::MIBS,
%SNMP::Info::PortAccessEntity::MIBS,
);
%GLOBALS = (
%SNMP::Info::Layer3::Cisco::GLOBALS,
%SNMP::Info::CiscoPortSecurity::GLOBALS,
%SNMP::Info::CiscoAgg::GLOBALS,
%SNMP::Info::PortAccessEntity::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::Cisco::FUNCS,
%SNMP::Info::CiscoPortSecurity::FUNCS,
%SNMP::Info::CiscoAgg::FUNCS,
%SNMP::Info::PortAccessEntity::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::Cisco::MUNGE,
%SNMP::Info::CiscoPortSecurity::MUNGE,
%SNMP::Info::CiscoAgg::MUNGE,
%SNMP::Info::PortAccessEntity::MUNGE,
);
sub cisco_comm_indexing { return 1; }

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -44,7 +44,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -80,7 +80,8 @@ sub os_ver {
my $descr = $netsnmp->description();
# STRING: "Cumulus Linux version 3.5.1 running on innotek GmbH VirtualBox"
return $1 if ( defined ($descr) && $descr =~ /^Cumulus Linux.+(\d+\.\d+\.\d+)\s/ );
# STRING: "Cumulus-Linux 4.1.1 (Linux Kernel 4.19.94-1+cl4u3)"
return $1 if ( defined ($descr) && $descr =~ /^Cumulus(?: |-)Linux.+(\d+\.\d+\.\d+)\s/ );
return;
}

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -74,6 +74,18 @@ $VERSION = '3.71';
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
sub layers {
my $dlink = shift;
my $layers = $dlink->SUPER::layers();
if ($layers) {
substr $layers, 5, 1, "1";
substr $layers, 6, 1, "1";
}
return $layers;
}
sub model {
my $dlink=shift;
my $id = $dlink->id();
@@ -233,6 +245,10 @@ These are methods that return scalar value from SNMP
=over
=item $dlink->layers()
Makes sure to always report layer 2 and 3.
=item $dlink->model()
Returns the ID or else description.

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.71';
$VERSION = '3.93';
%MIBS = (
%SNMP::Info::Layer3::MIBS

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