Compare commits

..

39 Commits

Author SHA1 Message Date
Andrey Pazychev
159ab659cb Raisecom. cosmetic 2020-05-20 22:47:37 +03:00
Andrey Pazychev
82032a10e1 Raisecom RC. more wide regexp HW 2020-05-20 22:23:27 +03:00
Andrey Pazychev
84c870f911 Raisecom. HW regexp bugfix 2020-05-20 22:18:57 +03:00
Andrey Pazychev
2b1b53e539 Raisecom RC. Next gen perl coding style. 2020-05-20 22:01:40 +03:00
Andrey Pazychev
b019f3fa06 WIP. Raisecom crap splitting 2020-05-20 21:08:14 +03:00
Andrey Pazychev
4cb3083993 Qtech. China could use different OID prefix for same one ObjectID. Fixed. 2020-05-20 17:49:53 +03:00
Andrey Pazychev
bed7dac4ac Eltex added one more model suport 2020-05-20 17:30:13 +03:00
Andrey Pazychev
316a799fdb Dlink. Added HW to model info 2020-05-20 17:12:25 +03:00
Andrey Pazychev
f2cbd163c9 WIP.
Initial added vendor ECI. os version, serial, hw/fw not found.
2020-05-20 17:03:06 +03:00
Andrey Pazychev
e756091565 WIP. Qtech - more wide model mask for group enterprises.27514.1.3* 2020-05-20 16:53:05 +03:00
Andrey Pazychev
02f667a05b Qtech. Added enterprises.27514.1.3.13 2020-05-20 16:46:49 +03:00
Andrey Pazychev
14e9da0fb7 Qtech vendor refactored. 2020-05-20 05:43:58 +03:00
Andrey Pazychev
08a632c053 WIP.
Added Digital China vendor
Added ASAM 73xx model for Lucent
2020-05-19 21:27:08 +03:00
Andrey Pazychev
fbf0bbe880 WIP.
Accton, Proscend and Nag vendors initial suppport
2020-05-19 20:33:28 +03:00
Andrey Pazychev
4ce3fd8fb6 Increase version because Rotek 2020-05-18 02:58:05 +03:00
Andrey Pazychev
cae9878c60 Rotek added.
Rotek and Raisercom used the same vendor id -(
2020-05-18 02:57:20 +03:00
Andrey Pazychev
cda629bf39 Rotek vendor UCN 2020-05-18 02:09:19 +03:00
Andrey Pazychev
396eb87b57 Raisecom. Crap with OS version same. Different style inside one ObjectID. 2020-05-18 01:42:35 +03:00
Andrey Pazychev
db06c8e75b Raisecom. Crap with HW version different style inside one object ID 2020-05-18 00:58:45 +03:00
Andrey Pazychev
3fd9f1deda Raisecom 886 RC1 2020-05-18 00:34:24 +03:00
Andrey Pazychev
b0e9185cca WIP. Raisecom added 886.6.140 and 191 2020-05-18 00:21:57 +03:00
Andrey Pazychev
b73f0d8d57 WIP. Telindus 2020-05-17 23:43:02 +03:00
Andrey Pazychev
5655486b80 WIP. Reaisecom 2020-05-17 23:31:22 +03:00
Andrey Pazychev
cc935a580d WIP.
Added raisecom 41752
2020-05-17 23:12:19 +03:00
Andrey Pazychev
40ff825a3a Eltex done. I hope... 2020-05-17 20:48:30 +03:00
Andrey Pazychev
4bb40483e6 WIP. Eltex crap 2020-05-17 20:38:53 +03:00
Andrey Pazychev
8c98750541 WIP. Eltex hw crap 2020-05-17 20:32:21 +03:00
Andrey Pazychev
57aa73f613 Eltex hw version crap -( 2020-05-17 19:02:34 +03:00
Andrey Pazychev
fe3bc6afe0 Fix Eltex two verdor numer DSLAM MXA64 2020-05-17 17:07:34 +03:00
Andrey Pazychev
10e0a53b3c Added Eltex DSLAM 35265.1.28 2020-05-17 16:53:28 +03:00
Andrey Pazychev
98d2005bae Eltex fix undef model 2020-05-17 16:17:47 +03:00
Andrey Pazychev
272b56d625 Fix Eltex a lot model.
Add Telindus
Add serial to Zixel
2020-05-17 15:18:08 +03:00
Andrey Pazychev
aa44871f83 Zyxel basic support 2020-05-16 23:22:02 +03:00
Andrey Pazychev
27930d5e50 Add support Raisecom 2020-05-09 19:15:00 +03:00
Andrey Pazychev
a0d3cdcf9f Eltex run also Layer 2 2020-05-09 13:13:08 +03:00
Andrey Pazychev
8317923f28 Eltex support.
Added one Lucend OID
2020-05-09 05:04:39 +03:00
Andrey Pazychev
fc71e2d88d Small fixes. OIDs moved to MIBs 2020-05-09 05:03:55 +03:00
Andrey Pazychev
f96d0df182 Qtech and Carelink support 2020-05-08 20:47:41 +03:00
Andrey Pazychev
1dc4baf1d9 version 135 2020-05-08 20:47:13 +03:00
180 changed files with 2651 additions and 4378 deletions

View File

@@ -1,19 +0,0 @@
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 }}

View File

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

1
.gitignore vendored
View File

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

39
.travis.yml Normal file
View File

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

140
Changes
View File

@@ -1,143 +1,3 @@
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]
* #386 Teltonika RUT9XX support (jeroenvis)
[ENHANCEMENTS]
* #398, 411 more ubiquiti cleanup and support for er-12 (lbegnaud & inphobia)
[BUG FIXES]
* #409, 410 Don't add AUTOLOAD generated methods in symbol table
* #372, 375 fix lldp on nx-os6 (inphobia)
Version 3.70 (2019-10-15) Version 3.70 (2019-10-15)
[NEW FEATURES] [NEW FEATURES]

View File

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

326
META.json
View File

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

311
META.yml
View File

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

181
README
View File

@@ -2,7 +2,7 @@ NAME
SNMP::Info - OO Interface to Network devices and MIBs through SNMP SNMP::Info - OO Interface to Network devices and MIBs through SNMP
VERSION VERSION
SNMP::Info - Version 3.90 SNMP::Info - Version 3.70
AUTHOR AUTHOR
SNMP::Info is maintained by team of Open Source authors headed by Eric SNMP::Info is maintained by team of Open Source authors headed by Eric
@@ -23,29 +23,18 @@ DEVICES SUPPORTED
SYNOPSIS SYNOPSIS
use SNMP::Info; use SNMP::Info;
my $info = SNMP::Info->new({ my $info = new SNMP::Info(
# Auto Discover your Device Class (Cisco, Juniper, etc ...) # Auto Discover more specific Device Class
AutoSpecify => 1, AutoSpecify => 1,
Debug => 1, Debug => 1,
# The rest is passed to SNMP::Session # The rest is passed to SNMP::Session
DestHost => 'router', DestHost => 'router',
Community => 'public', Community => 'public',
Version => 2 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(); my $err = $info->error();
die $err if defined $err; die "SNMP Community or Version probably wrong connecting to device. $err\n" if defined $err;
# usually a wrong DestHost or Community or Version if you have trouble here
my $name = $info->name(); my $name = $info->name();
my $class = $info->class(); my $class = $info->class();
@@ -224,22 +213,16 @@ SUBCLASSES
See documentation in SNMP::Info::Bridge for details. See documentation in SNMP::Info::Bridge 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::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links SNMP Interface to Cisco Aggregated Links
See documentation in SNMP::Info::CiscoAgg for details. See documentation in SNMP::Info::CiscoAgg for details.
SNMP::Info::CiscoBGP SNMP::Info::CDP
CISCO-BGP4-MIB. Cisco BGPv4 support. Inherited by Cisco devices with CISCO-CDP-MIB. Cisco Discovery Protocol (CDP) Support. Inherited by
Layer3 support. Cisco, Enterasys, and HP devices.
See documentation in SNMP::Info::CiscoBGP for details. See documentation in SNMP::Info::CDP for details.
SNMP::Info::CiscoConfig SNMP::Info::CiscoConfig
CISCO-CONFIG-COPY-MIB, CISCO-FLASH-MIB, and OLD-CISCO-SYS-MIB. These CISCO-CONFIG-COPY-MIB, CISCO-FLASH-MIB, and OLD-CISCO-SYS-MIB. These
@@ -274,6 +257,11 @@ SUBCLASSES
See documentation in SNMP::Info::CiscoStack for details. 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 SNMP::Info::CiscoStats
OLD-CISCO-CPU-MIB, CISCO-PROCESS-MIB, and CISCO-MEMORY-POOL-MIB. OLD-CISCO-CPU-MIB, CISCO-PROCESS-MIB, and CISCO-MEMORY-POOL-MIB.
Provides common interfaces for memory, cpu, and os statistics for Provides common interfaces for memory, cpu, and os statistics for
@@ -281,27 +269,22 @@ SUBCLASSES
See documentation in SNMP::Info::CiscoStats for details. 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 SNMP::Info::CiscoVTP
CISCO-VTP-MIB, CISCO-VLAN-MEMBERSHIP-MIB, CISCO-VTP-MIB, CISCO-VLAN-MEMBERSHIP-MIB,
CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB
See documentation in SNMP::Info::CiscoVTP for details. See documentation in SNMP::Info::CiscoVTP for details.
SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in SNMP::Info::DocsisCM for details.
SNMP::Info::DocsisHE SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS SNMP Interface for DOCSIS CMTS
See documentation in SNMP::Info::DocsisHE for details. See documentation in SNMP::Info::DocsisHE for details.
SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in SNMP::Info::DocsisCM for details.
SNMP::Info::EDP SNMP::Info::EDP
Extreme Discovery Protocol. EXTREME-EDP-MIB Extreme Discovery Protocol. EXTREME-EDP-MIB
@@ -323,11 +306,6 @@ SUBCLASSES
See documentation in SNMP::Info::FDP for details. 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 SNMP::Info::IEEE802dot11
IEEE802dot11-MIB. A collection of OIDs providing information about IEEE802dot11-MIB. A collection of OIDs providing information about
standards based 802.11 wireless devices. standards based 802.11 wireless devices.
@@ -368,11 +346,6 @@ SUBCLASSES
See documentation in SNMP::Info::NortelStack for details. 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 SNMP::Info::PowerEthernet
POWER-ETHERNET-MIB POWER-ETHERNET-MIB
@@ -450,7 +423,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer2::Adtran for details. See documentation in SNMP::Info::Layer2::Adtran for details.
SNMP::Info::Layer2::Aerohive SNMP::Info::Layer2::Aerohive
Subclass for Aerohive / Extreme access points. Subclass for Aerohive Access Points.
See documentation in SNMP::Info::Layer2::Aerohive for details. See documentation in SNMP::Info::Layer2::Aerohive for details.
@@ -640,11 +613,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Aruba for details. 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 SNMP::Info::Layer3::BayRS
Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This
includes BCN, BLN, ASN, ARN, AN, 2430, and 5430 routers. includes BCN, BLN, ASN, ARN, AN, 2430, and 5430 routers.
@@ -652,7 +620,7 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::BayRS for details. See documentation in SNMP::Info::Layer3::BayRS for details.
SNMP::Info::Layer3::BlueCoatSG SNMP::Info::Layer3::BlueCoatSG
Subclass for BlueCoat SG series proxy devices. Subclass for Blue Coat SG series proxy devices.
See documentation in SNMP::Info::Layer3::BlueCoatSG for details. See documentation in SNMP::Info::Layer3::BlueCoatSG for details.
@@ -715,6 +683,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Cumulus for details. 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 SNMP::Info::Layer3::Dell
Subclass for Dell PowerConnect switches. The IBM BladeCenter Subclass for Dell PowerConnect switches. The IBM BladeCenter
Gigabit Ethernet Switch Module and some Linksys switches also Gigabit Ethernet Switch Module and some Linksys switches also
@@ -722,11 +695,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Dell for details. 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 SNMP::Info::Layer3::Enterasys
Subclass for Enterasys devices. Subclass for Enterasys devices.
@@ -822,11 +790,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::N1600 for details. 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 SNMP::Info::Layer3::NetSNMP
Subclass for host systems running Net-SNMP. Subclass for host systems running Net-SNMP.
@@ -889,23 +852,11 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::SonicWALL for details. 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 SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances. Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in SNMP::Info::Layer3::Steelhead for details. 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 SNMP::Info::Layer3::Sun
Subclass for Generic Sun Routers running SunOS. Subclass for Generic Sun Routers running SunOS.
@@ -916,11 +867,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::Tasman for details. See documentation in SNMP::Info::Layer3::Tasman for details.
SNMP::Info::Layer3::Teltonika
Subclass for Teltonika RUT9xx series routers.
See documentation in SNMP::Info::Layer3::Teltonika for details.
SNMP::Info::Layer3::Timetra SNMP::Info::Layer3::Timetra
Alcatel-Lucent SR Class. Alcatel-Lucent SR Class.
@@ -936,12 +882,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer3::VMware for details. 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 SNMP::Info::Layer7
Generic Layer7 Devices. Generic Layer7 Devices.
@@ -967,11 +907,6 @@ SUBCLASSES
See documentation in SNMP::Info::Layer7::Gigamon for details. 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 SNMP::Info::Layer7::Liebert
Subclass for Liebert devices. Subclass for Liebert devices.
@@ -1002,24 +937,18 @@ USAGE
new() new()
Creates a new object and connects via SNMP::Session. Creates a new object and connects via SNMP::Session.
Always returns an SNMP::Info instance, and you should always check my $info = new SNMP::Info( 'Debug' => 1,
for error() as in SYNOPSIS above to be sure of success. 'AutoSpecify' => 1,
'BigInt' => 1,
Will take a bare list of key/value options but we recommend a HASH 'BulkWalk' => 1,
ref as in the example below and SYNOPSIS, to catch syntax errors. 'BulkRepeaters' => 20,
'IgnoreNetSNMPConf' => 1,
my $info = SNMP::Info->({ 'Debug' => 1, 'LoopDetect' => 1,
'AutoSpecify' => 1, 'DestHost' => 'myrouter',
'BigInt' => 1, 'Community' => 'public',
'BulkWalk' => 1, 'Version' => 2,
'BulkRepeaters' => 20, 'MibDirs' => ['dir1','dir2','dir3'],
'LoopDetect' => 1, ) or die;
'IgnoreNetSNMPConf' => 1,
'DestHost' => 'myrouter',
'Community' => 'public',
'Version' => 2,
'MibDirs' => ['dir1','dir2','dir3'],
});
SNMP::Info Specific Arguments : SNMP::Info Specific Arguments :
@@ -1669,12 +1598,12 @@ USAGE
For protocol specific information and implementation: For protocol specific information and implementation:
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. LLDP: See SNMP::Info::LLDP for details.
CDP: See SNMP::Info::CDP for details.
SONMP: See SNMP::Info::SONMP 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.
Topology Capabilities Topology Capabilities
$info->has_topo() $info->has_topo()
@@ -2004,7 +1933,7 @@ SNMP::INFO INTERNALS
%SPEED_MAP = ( %SPEED_MAP = (
'56000' => '56 kbps', '56000' => '56 kbps',
'64000' => '64 kbps', '64000' => '64 kbps',
'115000' => '115 kbps', '115000' => '115 kpbs',
'1500000' => '1.5 Mbps', '1500000' => '1.5 Mbps',
'1536000' => 'T1', '1536000' => 'T1',
'1544000' => 'T1', '1544000' => 'T1',
@@ -2015,9 +1944,9 @@ SNMP::INFO INTERNALS
'4000000' => '4.0 Mbps', '4000000' => '4.0 Mbps',
'10000000' => '10 Mbps', '10000000' => '10 Mbps',
'11000000' => '11 Mbps', '11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps', '16000000' => '16 Mbps',
'16777216' => '16 Mbps', '16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3', '44210000' => 'T3',
'44736000' => 'T3', '44736000' => 'T3',
'45000000' => '45 Mbps', '45000000' => '45 Mbps',
@@ -2027,11 +1956,11 @@ SNMP::INFO INTERNALS
'54000000' => '54 Mbps', '54000000' => '54 Mbps',
'64000000' => '64 Mbps', '64000000' => '64 Mbps',
'100000000' => '100 Mbps', '100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3', '149760000' => 'ATM on OC-3',
'155000000' => 'OC-3', '155000000' => 'OC-3',
'155519000' => 'OC-3', '155519000' => 'OC-3',
'155520000' => 'OC-3', '155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps', '400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12', '599040000' => 'ATM on OC-12',
'622000000' => 'OC-12', '622000000' => 'OC-12',
@@ -2053,10 +1982,6 @@ SNMP::INFO INTERNALS
munge_ip() munge_ip()
Takes a binary IP and makes it dotted ASCII. 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() munge_mac()
Takes an octet stream (HEX-STRING) and returns a colon separated Takes an octet stream (HEX-STRING) and returns a colon separated
ASCII hex string. ASCII hex string.
@@ -2282,13 +2207,17 @@ SNMP::INFO INTERNALS
Calls parent can() first to see if method exists, if not validates Calls parent can() first to see if method exists, if not validates
that a method should be created then dispatches to the appropriate that a method should be created then dispatches to the appropriate
internal method for creation. internal method for creation. The newly created method is inserted
into the symbol table returning to AUTOLOAD only for the initial
method call.
Returns undef if the method does not exist and can not be created. Returns undef if the method does not exist and can not be created.
AUTOLOAD AUTOLOAD
Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present in Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present in
loaded MIBs are used by AUTOLOAD() to create dynamic methods. loaded MIBs are used by AUTOLOAD() to create dynamic methods. Generated
methods are inserted into the symbol table so that subsequent calls can
avoid AUTOLOAD() and dispatch directly.
1. Returns unless method is listed in %FUNCS, %GLOBALS, or is a MIB Leaf 1. Returns unless method is listed in %FUNCS, %GLOBALS, or is a MIB Leaf
node name in a loaded MIB for given class. node name in a loaded MIB for given class.
@@ -2338,11 +2267,3 @@ COPYRIGHT AND LICENSE
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
POD ERRORS
Hey! The above document had some coding errors, which are explained
below:
Around line 82:
Non-ASCII character seen before =encoding in '# usually'. Assuming
UTF-8

View File

@@ -15,7 +15,6 @@ use strict;
use Exporter; use Exporter;
use SNMP; use SNMP;
use Carp; use Carp;
use Scalar::Util ();
use Math::BigInt; use Math::BigInt;
use NetAddr::IP::Lite ':lower'; use NetAddr::IP::Lite ':lower';
@@ -26,7 +25,7 @@ our
($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG, %SPEED_MAP, ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG, %SPEED_MAP,
$NOSUCH, $BIGINT, $REPEATERS); $NOSUCH, $BIGINT, $REPEATERS);
$VERSION = '3.90'; $VERSION = '3.70-135-20.5.6';
=head1 NAME =head1 NAME
@@ -34,7 +33,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION =head1 VERSION
SNMP::Info - Version 3.90 SNMP::Info - Version 3.70-135
=head1 AUTHOR =head1 AUTHOR
@@ -57,29 +56,18 @@ list any missing functionality (such as neighbor discovery tables).
use SNMP::Info; use SNMP::Info;
my $info = SNMP::Info->new({ my $info = new SNMP::Info(
# Auto Discover your Device Class (Cisco, Juniper, etc ...) # Auto Discover more specific Device Class
AutoSpecify => 1, AutoSpecify => 1,
Debug => 1, Debug => 1,
# The rest is passed to SNMP::Session # The rest is passed to SNMP::Session
DestHost => 'router', DestHost => 'router',
Community => 'public', Community => 'public',
Version => 2 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(); my $err = $info->error();
die $err if defined $err; die "SNMP Community or Version probably wrong connecting to device. $err\n" if defined $err;
# usually a wrong DestHost or Community or Version if you have trouble here
my $name = $info->name(); my $name = $info->name();
my $class = $info->class(); my $class = $info->class();
@@ -277,25 +265,18 @@ support.
See documentation in L<SNMP::Info::Bridge> for details. See documentation in L<SNMP::Info::Bridge> for details.
=item SNMP::Info::CDP
F<CISCO-CDP-MIB>. Cisco Discovery Protocol (CDP) Support. Inherited by
Cisco, Enterasys, and HP devices.
See documentation in L<SNMP::Info::CDP> for details.
=item SNMP::Info::CiscoAgg =item SNMP::Info::CiscoAgg
SNMP Interface to Cisco Aggregated Links SNMP Interface to Cisco Aggregated Links
See documentation in L<SNMP::Info::CiscoAgg> for details. See documentation in L<SNMP::Info::CiscoAgg> for details.
=item SNMP::Info::CiscoBGP =item SNMP::Info::CDP
F<CISCO-BGP4-MIB>. Cisco BGPv4 support. Inherited by Cisco devices with F<CISCO-CDP-MIB>. Cisco Discovery Protocol (CDP) Support. Inherited by
Layer3 support. Cisco, Enterasys, and HP devices.
See documentation in L<SNMP::Info::CiscoBGP> for details. See documentation in L<SNMP::Info::CDP> for details.
=item SNMP::Info::CiscoConfig =item SNMP::Info::CiscoConfig
@@ -336,6 +317,12 @@ F<CISCO-STACK-MIB>.
See documentation in L<SNMP::Info::CiscoStack> for details. 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 =item SNMP::Info::CiscoStats
F<OLD-CISCO-CPU-MIB>, F<CISCO-PROCESS-MIB>, and F<CISCO-MEMORY-POOL-MIB>. F<OLD-CISCO-CPU-MIB>, F<CISCO-PROCESS-MIB>, and F<CISCO-MEMORY-POOL-MIB>.
@@ -344,12 +331,6 @@ devices.
See documentation in L<SNMP::Info::CiscoStats> for details. 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 =item SNMP::Info::CiscoVTP
F<CISCO-VTP-MIB>, F<CISCO-VLAN-MEMBERSHIP-MIB>, F<CISCO-VTP-MIB>, F<CISCO-VLAN-MEMBERSHIP-MIB>,
@@ -357,18 +338,18 @@ F<CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB>
See documentation in L<SNMP::Info::CiscoVTP> for details. See documentation in L<SNMP::Info::CiscoVTP> for details.
=item SNMP::Info::DocsisCM
SNMP Interface for DOCSIS Cable Modems
See documentation in L<SNMP::Info::DocsisCM> for details.
=item SNMP::Info::DocsisHE =item SNMP::Info::DocsisHE
SNMP Interface for DOCSIS CMTS SNMP Interface for DOCSIS CMTS
See documentation in L<SNMP::Info::DocsisHE> for details. 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::EDP =item SNMP::Info::EDP
Extreme Discovery Protocol. F<EXTREME-EDP-MIB> Extreme Discovery Protocol. F<EXTREME-EDP-MIB>
@@ -394,12 +375,6 @@ Foundry (Brocade) Discovery Protocol. F<FOUNDRY-SN-SWITCH-GROUP-MIB>
See documentation in L<SNMP::Info::FDP> for details. 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 =item SNMP::Info::IEEE802dot11
F<IEEE802dot11-MIB>. A collection of OIDs providing information about F<IEEE802dot11-MIB>. A collection of OIDs providing information about
@@ -447,12 +422,6 @@ F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
See documentation in L<SNMP::Info::NortelStack> for details. 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 =item SNMP::Info::PowerEthernet
F<POWER-ETHERNET-MIB> F<POWER-ETHERNET-MIB>
@@ -553,7 +522,7 @@ See documentation in L<SNMP::Info::Layer2::Adtran> for details.
=item SNMP::Info::Layer2::Aerohive =item SNMP::Info::Layer2::Aerohive
Subclass for Aerohive / Extreme access points. Subclass for Aerohive Access Points.
See documentation in L<SNMP::Info::Layer2::Aerohive> for details. See documentation in L<SNMP::Info::Layer2::Aerohive> for details.
@@ -638,12 +607,6 @@ Subclass for Exinda / GFI Network Orchestrator traffic shapers.
See documentation in L<SNMP::Info::Layer2::Exinda> for details. 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 =item SNMP::Info::Layer2::HP
Subclass for more recent HP Procurve Switches. Subclass for more recent HP Procurve Switches.
@@ -778,12 +741,6 @@ Subclass for Aruba wireless switches.
See documentation in L<SNMP::Info::Layer3::Aruba> for details. 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 =item SNMP::Info::Layer3::BayRS
Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This includes Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This includes
@@ -793,7 +750,7 @@ See documentation in L<SNMP::Info::Layer3::BayRS> for details.
=item SNMP::Info::Layer3::BlueCoatSG =item SNMP::Info::Layer3::BlueCoatSG
Subclass for BlueCoat SG series proxy devices. Subclass for Blue Coat SG series proxy devices.
See documentation in L<SNMP::Info::Layer3::BlueCoatSG> for details. See documentation in L<SNMP::Info::Layer3::BlueCoatSG> for details.
@@ -865,6 +822,12 @@ Subclass for Cumulus Networks Routers.
See documentation in L<SNMP::Info::Layer3::Cumulus> for details. 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 =item SNMP::Info::Layer3::Dell
Subclass for Dell PowerConnect switches. The IBM BladeCenter Subclass for Dell PowerConnect switches. The IBM BladeCenter
@@ -873,12 +836,6 @@ also use this module based upon MIB support.
See documentation in L<SNMP::Info::Layer3::Dell> for details. 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 =item SNMP::Info::Layer3::Enterasys
Subclass for Enterasys devices. Subclass for Enterasys devices.
@@ -990,12 +947,6 @@ Subclass for Avaya/Nortel Ethernet Routing Switch 1600 series.
See documentation in L<SNMP::Info::Layer3::N1600> for details. 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 =item SNMP::Info::Layer3::NetSNMP
Subclass for host systems running Net-SNMP. Subclass for host systems running Net-SNMP.
@@ -1069,24 +1020,12 @@ Subclass for generic SonicWALL devices.
See documentation in L<SNMP::Info::Layer3::SonicWALL> for details. 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 =item SNMP::Info::Layer3::Steelhead
Subclass for Riverbed Steelhead WAN optimization appliances. Subclass for Riverbed Steelhead WAN optimization appliances.
See documentation in L<SNMP::Info::Layer3::Steelhead> for details. 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 =item SNMP::Info::Layer3::Sun
Subclass for Generic Sun Routers running SunOS. Subclass for Generic Sun Routers running SunOS.
@@ -1099,12 +1038,6 @@ Subclass for Avaya Secure Routers.
See documentation in L<SNMP::Info::Layer3::Tasman> for details. See documentation in L<SNMP::Info::Layer3::Tasman> for details.
=item SNMP::Info::Layer3::Teltonika
Subclass for Teltonika RUT9xx series routers.
See documentation in L<SNMP::Info::Layer3::Teltonika> for details.
=item SNMP::Info::Layer3::Timetra =item SNMP::Info::Layer3::Timetra
Alcatel-Lucent SR Class. Alcatel-Lucent SR Class.
@@ -1123,12 +1056,6 @@ Subclass for VMware ESXi hosts.
See documentation in L<SNMP::Info::Layer3::VMware> for details. 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
=back =back
@@ -1167,12 +1094,6 @@ Subclass for Gigamon devices.
See documentation in L<SNMP::Info::Layer7::Gigamon> for details. 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 =item SNMP::Info::Layer7::Liebert
Subclass for Liebert devices. Subclass for Liebert devices.
@@ -1217,24 +1138,18 @@ on the Netdisco README!
Creates a new object and connects via SNMP::Session. Creates a new object and connects via SNMP::Session.
Always returns an SNMP::Info instance, and you should always check for my $info = new SNMP::Info( 'Debug' => 1,
error() as in SYNOPSIS above to be sure of success. 'AutoSpecify' => 1,
'BigInt' => 1,
Will take a bare list of key/value options but we recommend a HASH ref 'BulkWalk' => 1,
as in the example below and SYNOPSIS, to catch syntax errors. 'BulkRepeaters' => 20,
'IgnoreNetSNMPConf' => 1,
my $info = SNMP::Info->({ 'Debug' => 1, 'LoopDetect' => 1,
'AutoSpecify' => 1, 'DestHost' => 'myrouter',
'BigInt' => 1, 'Community' => 'public',
'BulkWalk' => 1, 'Version' => 2,
'BulkRepeaters' => 20, 'MibDirs' => ['dir1','dir2','dir3'],
'LoopDetect' => 1, ) or die;
'IgnoreNetSNMPConf' => 1,
'DestHost' => 'myrouter',
'Community' => 'public',
'Version' => 2,
'MibDirs' => ['dir1','dir2','dir3'],
});
SNMP::Info Specific Arguments : SNMP::Info Specific Arguments :
@@ -1373,7 +1288,7 @@ then fallback to version 1.
sub new { sub new {
my $proto = shift; my $proto = shift;
my $class = ref($proto) || $proto; my $class = ref($proto) || $proto;
my %args = (ref $_[0] ? %{ $_[0] } : @_); my %args = @_;
my %sess_args = %args; my %sess_args = %args;
my $new_obj = {}; my $new_obj = {};
bless $new_obj, $class; bless $new_obj, $class;
@@ -1435,7 +1350,7 @@ sub new {
delete $sess_args{Offline}; delete $sess_args{Offline};
} }
if ( defined $args{Cache} and ref {} eq ref $args{Cache} ) { if ( defined $args{Cache} and ref({}) eq ref $args{Cache} ) {
$new_obj->{$_} = $args{Cache}->{$_} for keys %{$args{Cache}}; $new_obj->{$_} = $args{Cache}->{$_} for keys %{$args{Cache}};
delete $sess_args{Cache}; delete $sess_args{Cache};
} }
@@ -1476,16 +1391,16 @@ sub new {
# No session object created # No session object created
unless ( defined $sess ) { unless ( defined $sess ) {
$new_obj->error_throw("SNMP::Info::new() Net-SNMP session creation failed completely."); $new_obj->error_throw("SNMP::Info::new() Failed to Create Session. ");
return $new_obj; return;
} }
# Session object created but SNMP connection failed. # Session object created but SNMP connection failed.
if ($sess->{ErrorStr}) { my $sess_err = $sess->{ErrorStr} || '';
my $sess_err = $sess->{ErrorStr} || 'no specific error'; if ($sess_err) {
$new_obj->error_throw( $new_obj->error_throw(
"SNMP::Info::new() Net-SNMP session creation failed: $sess_err"); "SNMP::Info::new() Net-SNMP session creation failed. $sess_err");
return $new_obj; return;
} }
# Save Args for later # Save Args for later
@@ -1656,7 +1571,7 @@ sub cache {
my $self = shift; my $self = shift;
my $data = shift; my $data = shift;
if ( defined $data and ref {} eq ref $data ) { if ( defined $data and ref({}) eq ref $data ) {
$self->{$_} = $data->{$_} for keys %$data; $self->{$_} = $data->{$_} for keys %$data;
} }
@@ -1748,19 +1663,23 @@ sub device_type {
# Hash for generic fallback to a device class if unable to determine using # Hash for generic fallback to a device class if unable to determine using
# the sysDescr regex. # the sysDescr regex.
my %l3sysoidmap = ( my %l3sysoidmap = (
9 => 'SNMP::Info::Layer3::CiscoSwitch', 9 => 'SNMP::Info::Layer3::Cisco',
11 => 'SNMP::Info::Layer2::HP', 11 => 'SNMP::Info::Layer2::HP',
18 => 'SNMP::Info::Layer3::BayRS', 18 => 'SNMP::Info::Layer3::BayRS',
42 => 'SNMP::Info::Layer3::Sun', 42 => 'SNMP::Info::Layer3::Sun',
43 => 'SNMP::Info::Layer2::3Com', 43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack', 45 => 'SNMP::Info::Layer2::Baystack',
96 => 'SNMP::Info::Layer3::Whiterabbit',
171 => 'SNMP::Info::Layer3::DLink', 171 => 'SNMP::Info::Layer3::DLink',
207 => 'SNMP::Info::Layer2::Allied',
244 => 'SNMP::Info::Layer3::Lantronix', 244 => 'SNMP::Info::Layer3::Lantronix',
259 => 'SNMP::Info::Layer3::Accton',
311 => 'SNMP::Info::Layer3::Microsoft', 311 => 'SNMP::Info::Layer3::Microsoft',
637 => 'SNMP::Info::Layer3::AlcatelLucent',
655 => 'SNMP::Info::Layer2::Carelink',
664 => 'SNMP::Info::Layer2::Adtran', 664 => 'SNMP::Info::Layer2::Adtran',
674 => 'SNMP::Info::Layer3::Dell', 674 => 'SNMP::Info::Layer3::Dell',
776 => 'SNMP::Info::Layer2::Telindus',
890 => 'SNMP::Info::Layer2::Zyxel',
1286 => 'SNMP::Info::Layer2::ECI',
1588 => 'SNMP::Info::Layer3::Foundry', 1588 => 'SNMP::Info::Layer3::Foundry',
1872 => 'SNMP::Info::Layer3::AlteonAD', 1872 => 'SNMP::Info::Layer3::AlteonAD',
1890 => 'SNMP::Info::Layer3::Redlion', 1890 => 'SNMP::Info::Layer3::Redlion',
@@ -1783,10 +1702,13 @@ sub device_type {
5624 => 'SNMP::Info::Layer3::Enterasys', 5624 => 'SNMP::Info::Layer3::Enterasys',
6027 => 'SNMP::Info::Layer3::Force10', 6027 => 'SNMP::Info::Layer3::Force10',
6141 => 'SNMP::Info::Layer3::Ciena', 6141 => 'SNMP::Info::Layer3::Ciena',
6339 => 'SNMP::Info::Layer3::DigitalChina',
6486 => 'SNMP::Info::Layer3::AlcatelLucent', 6486 => 'SNMP::Info::Layer3::AlcatelLucent',
6527 => 'SNMP::Info::Layer3::Timetra', 6527 => 'SNMP::Info::Layer3::Timetra',
6672 => 'SNMP::Info::Layer2::Proscend',
6876 => 'SNMP::Info::Layer3::VMware', 6876 => 'SNMP::Info::Layer3::VMware',
8072 => 'SNMP::Info::Layer3::NetSNMP', 8072 => 'SNMP::Info::Layer3::NetSNMP',
8886 => 'SNMP::Info::Layer3::Raisecom',
9303 => 'SNMP::Info::Layer3::PacketFront', 9303 => 'SNMP::Info::Layer3::PacketFront',
10002 => 'SNMP::Info::Layer2::Ubiquiti', 10002 => 'SNMP::Info::Layer2::Ubiquiti',
10418 => 'SNMP::Info::Layer1::Cyclades', 10418 => 'SNMP::Info::Layer1::Cyclades',
@@ -1804,15 +1726,18 @@ sub device_type {
25506 => 'SNMP::Info::Layer3::H3C', 25506 => 'SNMP::Info::Layer3::H3C',
26543 => 'SNMP::Info::Layer3::IBMGbTor', 26543 => 'SNMP::Info::Layer3::IBMGbTor',
26928 => 'SNMP::Info::Layer2::Aerohive', 26928 => 'SNMP::Info::Layer2::Aerohive',
27514 => 'SNMP::Info::Layer3::Qtech',
30065 => 'SNMP::Info::Layer3::Arista', 30065 => 'SNMP::Info::Layer3::Arista',
30803 => 'SNMP::Info::Layer3::VyOS', 30803 => 'SNMP::Info::Layer3::VyOS',
32761 => 'SNMP::Info::Layer3::Rotek',
34300 => 'SNMP::Info::Layer3::Eltex',
35098 => 'SNMP::Info::Layer3::Pica8', 35098 => 'SNMP::Info::Layer3::Pica8',
35265 => 'SNMP::Info::Layer3::Eltex',
40310 => 'SNMP::Info::Layer3::Cumulus', 40310 => 'SNMP::Info::Layer3::Cumulus',
40418 => 'SNMP::Info::Layer3::Nag',
41112 => 'SNMP::Info::Layer2::Ubiquiti', 41112 => 'SNMP::Info::Layer2::Ubiquiti',
44641 => 'SNMP::Info::Layer3::VyOS', 44641 => 'SNMP::Info::Layer3::VyOS',
46242 => 'SNMP::Info::Layer3::Netonix', 41752 => 'SNMP::Info::Layer3::Raisecom',
47196 => 'SNMP::Info::Layer3::ArubaCX',
48690 => 'SNMP::Info::Layer3::Teltonika',
); );
my %l2sysoidmap = ( my %l2sysoidmap = (
@@ -1820,13 +1745,17 @@ sub device_type {
11 => 'SNMP::Info::Layer2::HP', 11 => 'SNMP::Info::Layer2::HP',
43 => 'SNMP::Info::Layer2::3Com', 43 => 'SNMP::Info::Layer2::3Com',
45 => 'SNMP::Info::Layer2::Baystack', 45 => 'SNMP::Info::Layer2::Baystack',
96 => 'SNMP::Info::Layer3::Whiterabbit',
171 => 'SNMP::Info::Layer3::DLink', 171 => 'SNMP::Info::Layer3::DLink',
207 => 'SNMP::Info::Layer2::Allied', 207 => 'SNMP::Info::Layer2::Allied',
248 => 'SNMP::Info::Layer2::Hirschmann', 259 => 'SNMP::Info::Layer3::Accton',
266 => 'SNMP::Info::Layer2::Nexans', 266 => 'SNMP::Info::Layer2::Nexans',
637 => 'SNMP::Info::Layer3::AlcatelLucent',
655 => 'SNMP::Info::Layer2::Carelink',
664 => 'SNMP::Info::Layer2::Adtran', 664 => 'SNMP::Info::Layer2::Adtran',
674 => 'SNMP::Info::Layer3::Dell', 674 => 'SNMP::Info::Layer3::Dell',
776 => 'SNMP::Info::Layer2::Telindus',
890 => 'SNMP::Info::Layer2::Zyxel',
1286 => 'SNMP::Info::Layer2::ECI',
1872 => 'SNMP::Info::Layer3::AlteonAD', 1872 => 'SNMP::Info::Layer3::AlteonAD',
1890 => 'SNMP::Info::Layer3::Redlion', 1890 => 'SNMP::Info::Layer3::Redlion',
1916 => 'SNMP::Info::Layer3::Extreme', 1916 => 'SNMP::Info::Layer3::Extreme',
@@ -1839,7 +1768,10 @@ sub device_type {
4526 => 'SNMP::Info::Layer2::Netgear', 4526 => 'SNMP::Info::Layer2::Netgear',
5624 => 'SNMP::Info::Layer3::Enterasys', 5624 => 'SNMP::Info::Layer3::Enterasys',
6141 => 'SNMP::Info::Layer3::Ciena', 6141 => 'SNMP::Info::Layer3::Ciena',
6339 => 'SNMP::Info::Layer3::DigitalChina',
6486 => 'SNMP::Info::Layer3::AlcatelLucent', 6486 => 'SNMP::Info::Layer3::AlcatelLucent',
6672 => 'SNMP::Info::Layer2::Proscend',
8886 => 'SNMP::Info::Layer3::Raisecom',
9303 => 'SNMP::Info::Layer3::PacketFront', 9303 => 'SNMP::Info::Layer3::PacketFront',
10418 => 'SNMP::Info::Layer1::Cyclades', 10418 => 'SNMP::Info::Layer1::Cyclades',
11898 => 'SNMP::Info::Layer2::Orinoco', 11898 => 'SNMP::Info::Layer2::Orinoco',
@@ -1852,9 +1784,12 @@ sub device_type {
21091 => 'SNMP::Info::Layer2::Exinda', 21091 => 'SNMP::Info::Layer2::Exinda',
26543 => 'SNMP::Info::Layer3::IBMGbTor', 26543 => 'SNMP::Info::Layer3::IBMGbTor',
26928 => 'SNMP::Info::Layer2::Aerohive', 26928 => 'SNMP::Info::Layer2::Aerohive',
46242 => 'SNMP::Info::Layer3::Netonix', 27514 => 'SNMP::Info::Layer3::Qtech',
47196 => 'SNMP::Info::Layer3::ArubaCX', 32761 => 'SNMP::Info::Layer3::Rotek',
48690 => 'SNMP::Info::Layer3::Teltonika', 34300 => 'SNMP::Info::Layer3::Eltex',
35265 => 'SNMP::Info::Layer3::Eltex',
40418 => 'SNMP::Info::Layer3::Nag',
41752 => 'SNMP::Info::Layer3::Raisecom',
); );
my %l1sysoidmap = ( my %l1sysoidmap = (
@@ -1869,7 +1804,6 @@ sub device_type {
9694 => 'SNMP::Info::Layer7::Arbor', 9694 => 'SNMP::Info::Layer7::Arbor',
12532 => 'SNMP::Info::Layer7::Neoteris', 12532 => 'SNMP::Info::Layer7::Neoteris',
14525 => 'SNMP::Info::Layer2::Trapeze', 14525 => 'SNMP::Info::Layer2::Trapeze',
21796 => 'SNMP::Info::Layer7::HWGroup',
26866 => 'SNMP::Info::Layer7::Gigamon', 26866 => 'SNMP::Info::Layer7::Gigamon',
); );
@@ -2019,24 +1953,6 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Scalance' $objtype = 'SNMP::Info::Layer3::Scalance'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.4329\.6\.1\.2/i ); 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 # Generic device classification based upon sysObjectID
if ( ( $objtype eq 'SNMP::Info::Layer3' ) if ( ( $objtype eq 'SNMP::Info::Layer3' )
@@ -2247,15 +2163,6 @@ sub device_type {
# it would flip/flop between those # it would flip/flop between those
$objtype = 'SNMP::Info::Layer3::Scalance' $objtype = 'SNMP::Info::Layer3::Scalance'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.4329\.6\.1\.2/i ); if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.4329\.6\.1\.2/i );
# Whiterabbit Timing
$objtype = 'SNMP::Info::Layer3::Whiterabbit'
if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.96\.100\.1000/i );
# Teltonika RUT9xx Series
$objtype = 'SNMP::Info::Layer3::Teltonika'
if (
$desc =~ /\bTeltonika.*RUT9\d{2}\b/);
# Generic device classification based upon sysObjectID # Generic device classification based upon sysObjectID
if ( defined($id) and $objtype eq 'SNMP::Info') { if ( defined($id) and $objtype eq 'SNMP::Info') {
@@ -2356,8 +2263,8 @@ sub specify {
my $device_type = $self->device_type(); my $device_type = $self->device_type();
unless ( defined $device_type ) { unless ( defined $device_type ) {
$self->error_throw( $self->error_throw(
"SNMP::Info::specify() - fatal error: connect failed or missing sysServices and/or sysDescr"); "SNMP::Info::specify() - Could not get info from device");
return $self; return;
} }
return $self if $device_type eq 'SNMP::Info'; return $self if $device_type eq 'SNMP::Info';
@@ -2958,17 +2865,17 @@ For protocol specific information and implementation:
=over =over
=item AMAP: See L<SNMP::Info::AMAP> for details. =item LLDP: See L<SNMP::Info::LLDP> for details.
=item CDP: See L<SNMP::Info::CDP> for details. =item CDP: See L<SNMP::Info::CDP> for details.
=item EDP: See L<SNMP::Info::EDP> for details. =item SONMP: See L<SNMP::Info::SONMP> for details.
=item FDP: See L<SNMP::Info::FDP> for details. =item FDP: See L<SNMP::Info::FDP> for details.
=item LLDP: See L<SNMP::Info::LLDP> for details. =item EDP: See L<SNMP::Info::EDP> for details.
=item SONMP: See L<SNMP::Info::SONMP> for details. =item AMAP: See L<SNMP::Info::AMAP> for details.
=back =back
@@ -2994,7 +2901,7 @@ sub ip_index {
my $o_ip_idx = $self->old_ip_index(); my $o_ip_idx = $self->old_ip_index();
return $o_ip_idx return $o_ip_idx
if ( ref {} eq ref $o_ip_idx and scalar keys %$o_ip_idx ); if ( ref({}) eq ref $o_ip_idx and scalar keys %$o_ip_idx );
# Since callers may be using the old iid to get the IP, strip protocol # Since callers may be using the old iid to get the IP, strip protocol
# and length from the index # and length from the index
@@ -3020,7 +2927,7 @@ sub ip_table {
my $o_ip_table = $self->old_ip_table(); my $o_ip_table = $self->old_ip_table();
return $o_ip_table return $o_ip_table
if ( ref {} eq ref $o_ip_table and scalar keys %$o_ip_table ); if ( ref({}) eq ref $o_ip_table and scalar keys %$o_ip_table );
my $n_ip_idx = $self->new_ip_index() || {}; my $n_ip_idx = $self->new_ip_index() || {};
my $n_ip_type = $self->new_ip_type() || {}; my $n_ip_type = $self->new_ip_type() || {};
@@ -3044,7 +2951,7 @@ sub ip_netmask {
my $o_ip_mask = $self->old_ip_netmask(); my $o_ip_mask = $self->old_ip_netmask();
return $o_ip_mask return $o_ip_mask
if ( ref {} eq ref $o_ip_mask and scalar keys %$o_ip_mask ); if ( ref({}) eq ref $o_ip_mask and scalar keys %$o_ip_mask );
my $n_ip_pfx = $self->new_ip_prefix() || {}; my $n_ip_pfx = $self->new_ip_prefix() || {};
my $n_ip_type = $self->new_ip_type() || {}; my $n_ip_type = $self->new_ip_type() || {};
@@ -3063,7 +2970,7 @@ sub ip_netmask {
$prefix = $1; $prefix = $1;
} }
my $new_iid = join( ".", @parts ); my $new_iid = join( ".", @parts );
my $mask = eval { NetAddr::IP::Lite->new( $new_iid . '/' . $prefix )->mask() } my $mask = NetAddr::IP::Lite->new( $new_iid . '/' . $prefix )->mask()
|| undef; || undef;
$ip_netmask{$new_iid} = $mask; $ip_netmask{$new_iid} = $mask;
@@ -3744,7 +3651,7 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
%SPEED_MAP = ( %SPEED_MAP = (
'56000' => '56 kbps', '56000' => '56 kbps',
'64000' => '64 kbps', '64000' => '64 kbps',
'115000' => '115 kbps', '115000' => '115 kpbs',
'1500000' => '1.5 Mbps', '1500000' => '1.5 Mbps',
'1536000' => 'T1', '1536000' => 'T1',
'1544000' => 'T1', '1544000' => 'T1',
@@ -3755,9 +3662,9 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
'4000000' => '4.0 Mbps', '4000000' => '4.0 Mbps',
'10000000' => '10 Mbps', '10000000' => '10 Mbps',
'11000000' => '11 Mbps', '11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps', '16000000' => '16 Mbps',
'16777216' => '16 Mbps', '16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3', '44210000' => 'T3',
'44736000' => 'T3', '44736000' => 'T3',
'45000000' => '45 Mbps', '45000000' => '45 Mbps',
@@ -3767,11 +3674,11 @@ Makes human friendly speed ratings using C<%SPEED_MAP>.
'54000000' => '54 Mbps', '54000000' => '54 Mbps',
'64000000' => '64 Mbps', '64000000' => '64 Mbps',
'100000000' => '100 Mbps', '100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3', '149760000' => 'ATM on OC-3',
'155000000' => 'OC-3', '155000000' => 'OC-3',
'155519000' => 'OC-3', '155519000' => 'OC-3',
'155520000' => 'OC-3', '155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps', '400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12', '599040000' => 'ATM on OC-12',
'622000000' => 'OC-12', '622000000' => 'OC-12',
@@ -3791,7 +3698,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
%SPEED_MAP = ( %SPEED_MAP = (
'56000' => '56 kbps', '56000' => '56 kbps',
'64000' => '64 kbps', '64000' => '64 kbps',
'115000' => '115 kbps', '115000' => '115 kpbs',
'1500000' => '1.5 Mbps', '1500000' => '1.5 Mbps',
'1536000' => 'T1', '1536000' => 'T1',
'1544000' => 'T1', '1544000' => 'T1',
@@ -3802,9 +3709,9 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'4000000' => '4.0 Mbps', '4000000' => '4.0 Mbps',
'10000000' => '10 Mbps', '10000000' => '10 Mbps',
'11000000' => '11 Mbps', '11000000' => '11 Mbps',
'20000000' => '20 Mbps',
'16000000' => '16 Mbps', '16000000' => '16 Mbps',
'16777216' => '16 Mbps', '16777216' => '16 Mbps',
'20000000' => '20 Mbps',
'44210000' => 'T3', '44210000' => 'T3',
'44736000' => 'T3', '44736000' => 'T3',
'45000000' => '45 Mbps', '45000000' => '45 Mbps',
@@ -3814,11 +3721,11 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'54000000' => '54 Mbps', '54000000' => '54 Mbps',
'64000000' => '64 Mbps', '64000000' => '64 Mbps',
'100000000' => '100 Mbps', '100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3', '149760000' => 'ATM on OC-3',
'155000000' => 'OC-3', '155000000' => 'OC-3',
'155519000' => 'OC-3', '155519000' => 'OC-3',
'155520000' => 'OC-3', '155520000' => 'OC-3',
'200000000' => '200 Mbps',
'400000000' => '400 Mbps', '400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12', '599040000' => 'ATM on OC-12',
'622000000' => 'OC-12', '622000000' => 'OC-12',
@@ -3876,27 +3783,6 @@ sub munge_ip {
return join( '.', unpack( 'C4', $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() =item munge_mac()
Takes an octet stream (HEX-STRING) and returns a colon separated ASCII hex Takes an octet stream (HEX-STRING) and returns a colon separated ASCII hex
@@ -4065,8 +3951,6 @@ Takes an OID and return the object name if the right MIB is loaded.
sub munge_e_type { sub munge_e_type {
my $oid = shift; my $oid = shift;
return unless $oid;
return $oid if $oid =~ m/^\.0/;
my $name = &SNMP::translateObj($oid); my $name = &SNMP::translateObj($oid);
return $name if defined($name); return $name if defined($name);
@@ -4948,12 +4832,7 @@ sub _cache {
my ($attr, $data) = @_; my ($attr, $data) = @_;
my $store = $self->store(); my $store = $self->store();
if (ref {} eq ref $data) { 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}"}++; $self->{"_${attr}"}++;
$store->{$attr} = $data; $store->{$attr} = $data;
} }
@@ -4981,7 +4860,7 @@ sub _munge {
return $data unless defined $munge->{$attr}; return $data unless defined $munge->{$attr};
if (ref {} eq ref $data) { if (ref({}) eq ref $data) {
my $subref = $munge->{$attr}; my $subref = $munge->{$attr};
my %munged; my %munged;
foreach my $key ( keys %$data ) { foreach my $key ( keys %$data ) {
@@ -5123,7 +5002,8 @@ capabilities to include dynamic methods generated at run time via AUTOLOAD.
Calls parent can() first to see if method exists, if not validates that a Calls parent can() first to see if method exists, if not validates that a
method should be created then dispatches to the appropriate internal method method should be created then dispatches to the appropriate internal method
for creation. for creation. The newly created method is inserted into the symbol table
returning to AUTOLOAD only for the initial method call.
Returns undef if the method does not exist and can not be created. Returns undef if the method does not exist and can not be created.
@@ -5157,24 +5037,18 @@ sub can {
# We could add load_/orig_/_raw alternatives to symbol table here on # 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 # 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 # destination code, but they aren't used heavily in main code base so
# we'll just create if/when they are called rather than pollute the # well just create if/when they are called rather than pollute the
# symbol table with entries that never get called. # symbol table with entries that never get called.
# Between 2012-2020 we actually added the methods generated below to the
# symbol table, but they were global to the SNMP::Info class, while
# methods for different device classes may point to different SNMP
# objects. This made interacting with multiple device types from a single
# script somewhat unreliable.
# Check for set_ ing. # Check for set_ ing.
if ( $method =~ /^set_/ ) { if ( $method =~ /^set_/ ) {
return _make_setter( $method, $oid, @_ ); return *{$method} = _make_setter( $method, $oid, @_ );
} }
elsif ( defined $funcs->{$base_method} || $table ) { elsif ( defined $funcs->{$base_method} || $table ) {
return _load_attr( $method, $oid, @_ ); return *{$method} = _load_attr( $method, $oid, @_ );
} }
else { else {
return _global( $method, $oid ); return *{$method} = _global( $method, $oid );
} }
} }
@@ -5183,7 +5057,9 @@ sub can {
=head2 AUTOLOAD =head2 AUTOLOAD
Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present in Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present in
loaded MIBs are used by AUTOLOAD() to create dynamic methods. loaded MIBs are used by AUTOLOAD() to create dynamic methods. Generated
methods are inserted into the symbol table so that subsequent calls can avoid
AUTOLOAD() and dispatch directly.
=over =over
@@ -5214,9 +5090,9 @@ subclass.
sub AUTOLOAD { sub AUTOLOAD {
my $self = shift; my $self = shift;
my ($sub_name) = $AUTOLOAD =~ /::([a-zA-Z0-9_-]+)$/; my ($sub_name) = $AUTOLOAD =~ /::(\w+)$/;
return if $sub_name eq 'CARP_TRACE'; return if $sub_name eq 'CARP_TRACE';
# Typos in function calls in SNMP::Info subclasses turn into # Typos in function calls in SNMP::Info subclasses turn into
# AUTOLOAD requests for non-methods. While this is deprecated, # AUTOLOAD requests for non-methods. While this is deprecated,

View File

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

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE); our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
# Load MIB for leafs referenced within class # Load MIB for leafs referenced within class
%MIBS = ('IF-MIB' => 'ifIndex',); %MIBS = ('IF-MIB' => 'ifIndex',);

View File

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

View File

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

View File

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

View File

@@ -48,7 +48,7 @@ use SNMP::Info::IEEE802dot3ad;
our ($DEBUG, $VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE); our ($DEBUG, $VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::IEEE802dot3ad::MIBS, %SNMP::Info::IEEE802dot3ad::MIBS,

View File

@@ -1,267 +0,0 @@
# 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.90';
%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); our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable', 'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE); our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
'SNMPv2-MIB' => 'sysDescr', 'SNMPv2-MIB' => 'sysDescr',
@@ -109,11 +109,6 @@ sub os {
return 'ios-xe' if ( $descr =~ /Fuji/ ); return 'ios-xe' if ( $descr =~ /Fuji/ );
return 'ios-xe' if ( $descr =~ /Everest/ ); return 'ios-xe' if ( $descr =~ /Everest/ );
return 'ios-xe' if ( $descr =~ /Gibraltar/ ); 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-xe' if ( $descr =~ /IOS-XE/ );
return 'ios-xr' if ( $descr =~ /IOS XR/ ); return 'ios-xr' if ( $descr =~ /IOS XR/ );
return 'ios' if ( $descr =~ /IOS/ ); return 'ios' if ( $descr =~ /IOS/ );

View File

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

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE); our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName', 'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -199,32 +199,6 @@ sub i_vlan {
return \%i_vlans; 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 { sub i_untagged {
my $vtp = shift; my $vtp = shift;
my ( $ifindex ) = @_; my ( $ifindex ) = @_;
@@ -651,22 +625,6 @@ IDs. These are the VLANs which are members of enabled VLAN list for the port.
print "Port: $port VLAN: $vlan\n"; 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() =item $vtp->i_vlan_membership_untagged()
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN 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); our ($VERSION, %MIBS, %FUNCS, %GLOBALS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS %SNMP::Info::Layer2::MIBS

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,230 +0,0 @@
# 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.90';
%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); our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', ); %MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );

View File

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

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE); our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled', 'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -52,18 +52,13 @@ $VERSION = '3.90';
'lldp_sysname' => 'lldpLocSysName', 'lldp_sysname' => 'lldpLocSysName',
'lldp_sysdesc' => 'lldpLocSysDesc', 'lldp_sysdesc' => 'lldpLocSysDesc',
'lldp_sys_cap' => 'lldpLocSysCapEnabled', 'lldp_sys_cap' => 'lldpLocSysCapEnabled',
'lldp_loc_id_type' => 'lldpLocChassisIdSubtype',
'lldp_loc_id_os' => 'lldpLocChassisId',
); );
%FUNCS = ( %FUNCS = (
# LLDP-MIB::lldpLocManAddrTable # LLDP-MIB::lldpLocManAddrTable
'lldp_lman_addr' => 'lldpLocManAddrIfId', 'lldp_lman_addr' => 'lldpLocManAddrIfId',
# LLDP-MIB::LldpLocPortEntry
'lldp_lport_id' => 'lldpLocPortId',
'lldp_lport_desc' => 'lldpLocPortDesc',
# LLDP-MIB::lldpRemTable # LLDP-MIB::lldpRemTable
'lldp_rem_id_type' => 'lldpRemChassisIdSubtype', 'lldp_rem_id_type' => 'lldpRemChassisIdSubtype',
'lldp_rem_id' => 'lldpRemChassisId', 'lldp_rem_id' => 'lldpRemChassisId',
@@ -97,8 +92,6 @@ $VERSION = '3.90';
'lldp_rem_sysname' => \&SNMP::Info::munge_null, 'lldp_rem_sysname' => \&SNMP::Info::munge_null,
'lldp_rem_sysdesc' => \&SNMP::Info::munge_null, 'lldp_rem_sysdesc' => \&SNMP::Info::munge_null,
'lldp_rem_port_desc' => \&SNMP::Info::munge_null, 'lldp_rem_port_desc' => \&SNMP::Info::munge_null,
'lldp_lport_id' => \&SNMP::Info::munge_null,
'lldp_lport_desc' => \&SNMP::Info::munge_null,
'lldp_sys_cap' => \&SNMP::Info::munge_bits, 'lldp_sys_cap' => \&SNMP::Info::munge_bits,
'lldp_rem_sys_cap' => \&SNMP::Info::munge_bits, 'lldp_rem_sys_cap' => \&SNMP::Info::munge_bits,
'lldp_rem_cap_spt' => \&SNMP::Info::munge_bits, 'lldp_rem_cap_spt' => \&SNMP::Info::munge_bits,
@@ -153,11 +146,7 @@ sub lldp_if {
# ifAlias because using cross ref with description is correct # ifAlias because using cross ref with description is correct
# behavior according to the LLDP-MIB. Some devices (eg H3C gear) # behavior according to the LLDP-MIB. Some devices (eg H3C gear)
# seem to use ifAlias though. # seem to use ifAlias though.
# snmp::info #372 -> to make things even more complex some devices my $lldp_desc = $lldp->lldpLocPortDesc($port);
# have different behaviour depending on os version (nx-os 6 vs 7)
# so we made this a function to allow overrides in more specific
# modules
my $lldp_desc = $lldp->lldp_lport_desc($port);
my $desc = $lldp_desc->{$port}; my $desc = $lldp_desc->{$port};
# If cross reference is successful use it, otherwise stick with # If cross reference is successful use it, otherwise stick with
@@ -285,29 +274,6 @@ sub lldp_port {
return \%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 { sub lldp_id {
my $lldp = shift; my $lldp = shift;
my $partial = shift; my $partial = shift;
@@ -322,19 +288,26 @@ sub lldp_id {
my $type = $ch_type->{$key}; my $type = $ch_type->{$key};
next unless $type; next unless $type;
$id = $lldp->_lldp_id_string($id, $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;
}
}
$lldp_id{$key} = $id; $lldp_id{$key} = $id;
} }
return \%lldp_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 { sub lldp_platform {
my $lldp = shift; my $lldp = shift;
my $partial = shift; my $partial = shift;
@@ -604,22 +577,6 @@ capability and nothing else."
(C<lldpLocSysCapEnabled>) (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 =back
=head1 TABLE METHODS =head1 TABLE METHODS

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE); our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -552,6 +552,10 @@ Returns reference to the map between IID and physical Port.
The physical port name is returned as slot.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() =item $baystack->i_mac()
Returns the C<ifPhysAddress> table entries. Returns the C<ifPhysAddress> table entries.

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::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); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %PORTSTAT, %MODEL_MAP, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,

View File

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

View File

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

View File

@@ -1,227 +0,0 @@
# 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.90';
%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); our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

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

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE); our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,
@@ -53,9 +53,9 @@ $VERSION = '3.90';
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::Layer2::GLOBALS,
'os_ver' => 'trpzVersionString', 'os_ver' => 'trpzVersionString',
'tr_serial' => 'trpzSerialNumber', 'serial' => 'trpzSerialNumber',
'mac' => 'dot1dBaseBridgeAddress', 'mac' => 'dot1dBaseBridgeAddress',
); );
%FUNCS = ( %FUNCS = (
@@ -138,14 +138,6 @@ sub vendor {
return 'juniper'; return 'juniper';
} }
sub serial {
my $trapeze = shift;
my $ser = $trapeze->trpzSerialNumber();
# my $ser = $trapeze->tr_serial();
return $ser;
}
sub model { sub model {
my $trapeze = shift; my $trapeze = shift;
my $id = $trapeze->id(); my $id = $trapeze->id();
@@ -661,7 +653,7 @@ sub e_serial {
my %e_serial; my %e_serial;
# Chassis # Chassis
$e_serial{1} = $trapeze->serial() || ''; $e_serial{1} = $trapeze->serial();
# APs # APs
foreach my $iid ( keys %$ap_serial ) { 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); our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,
@@ -199,9 +199,6 @@ sub model {
}if($ethCount eq 8){ }if($ethCount eq 8){
## Could be ER-8 Pro, ER-8, or EP-R8 ## Could be ER-8 Pro, ER-8, or EP-R8
return "EdgeRouter 8-Port" return "EdgeRouter 8-Port"
}if($ethCount eq 12){
## ER-12
return "EdgeRouter 12-Port"
}elsif($ethCount eq 5 and $cpuCount eq 4){ }elsif($ethCount eq 5 and $cpuCount eq 4){
## Could be ER-X or ER-X-SFP ## Could be ER-X or ER-X-SFP
return "EdgeRouter X 5-Port" return "EdgeRouter X 5-Port"
@@ -233,14 +230,13 @@ sub serial {
sub mac { sub mac {
my $ubnt = shift; my $ubnt = shift;
my $ifDescs = $ubnt->ifDescr; my $ifDescs = $ubnt->ifDescr;
my $erModel = $ubnt->model;
foreach my $iid ( keys %$ifDescs ) { foreach my $iid ( keys %$ifDescs ) {
my $ifDesc = $ifDescs->{$iid}; my $ifDesc = $ifDescs->{$iid};
next unless defined $ifDesc; next unless defined $ifDesc;
## CPU Interface will have the primary MAC for EdgeSwitch ## CPU Interface will have the primary MAC for EdgeSwitch
## eth0 will have primary MAC for linux-based UBNT devices, except ER-12 which is eth11 ## eth0 will have primary MAC for linux-based UBNT devices
if($ifDesc =~ /CPU/ or ($ifDesc eq 'eth0' and !($erModel =~ /EdgeRouter 12/)) or ($ifDesc eq 'eth11' and ($erModel =~ /EdgeRouter 12/))){ if($ifDesc =~ /CPU/ or $ifDesc eq 'eth0'){
my $mac = $ubnt->ifPhysAddress->{$iid}; my $mac = $ubnt->ifPhysAddress->{$iid};
# syntax stolen from sub munge_mac in SNMP::Info # syntax stolen from sub munge_mac in SNMP::Info
@@ -254,11 +250,11 @@ sub mac {
} }
sub interfaces { sub interfaces {
my $ubnt = shift; my $netgear = shift;
my $partial = shift; my $partial = shift;
my $interfaces = $ubnt->i_index($partial) || {}; my $interfaces = $netgear->i_index($partial) || {};
my $i_descr = $ubnt->i_description($partial) || {}; my $i_descr = $netgear->i_description($partial) || {};
my $return = {}; my $return = {};
foreach my $iid ( keys %$i_descr ) { foreach my $iid ( keys %$i_descr ) {
@@ -372,11 +368,11 @@ Bridge MAC address.
=item $ubnt->os() =item $ubnt->os()
Returns C<AirOS>, C<UniFi> or C<EdgeOS> depending on model. Returns 'Ubiquiti Networks, Inc.'
=item $ubnt->os_ver() =item $ubnt->os_ver()
Returns the software version extracted from C<dot11manufacturerProductVersion>, with fallback to description splitting for EdgeMax devices Returns the software version extracted from C<dot11manufacturerProductVersion>, with failback to description splitting for EdgeMax devices
=back =back
@@ -397,11 +393,11 @@ to a hash.
=over =over
=item $ubnt->interfaces() =item $ubiquiti->interfaces()
Uses the i_name() field. Uses the i_name() field.
=item $ubnt->i_ignore() =item $ubiquiti->i_ignore()
Ignores interfaces with "CPU Interface" in them. Ignores interfaces with "CPU Interface" in them.

View File

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

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

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

View File

@@ -54,7 +54,7 @@ use SNMP::Info::DocsisHE;
our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE); our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::MIBS,
@@ -277,30 +277,6 @@ sub model {
return $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 { sub i_name {
my $l3 = shift; my $l3 = shift;
my $partial = shift; my $partial = shift;
@@ -381,8 +357,8 @@ sub interfaces {
sub vendor { sub vendor {
my $l3 = shift; my $l3 = shift;
my $descr = $l3->description() || ''; my $descr = $l3->description();
my $id = $l3->id() || ''; my $id = $l3->id();
# .1.3.6.1.4.1.9.1 is the CISCO-PRODUCTS-MIB # .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 # .1.3.6.1.4.1.9.9.368.4 is an old tree that Cisco CSSs were numbered from
@@ -635,22 +611,6 @@ name.
Only returns those iids that have a description listed in $l3->i_description() 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() =item $l3->i_name()
Returns reference to hash of iid to human set name. Returns reference to hash of iid to human set name.

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

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

View File

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

View File

@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,
@@ -96,6 +96,8 @@ sub model {
my $id = $alu->id(); my $id = $alu->id();
my $model = &SNMP::translateObj($id); my $model = &SNMP::translateObj($id);
return 'ASAM 73xx' if $id =~ /637\.61\.1$/;
return $id unless defined $model; return $id unless defined $model;
$model =~ s/^device//; $model =~ s/^device//;

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,371 +0,0 @@
# 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.90';
%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, our ($VERSION, %GLOBALS, %FUNCS, %MIBS, %MUNGE, %MODEL_MAP,
%MODID_MAP, %PROCID_MAP); %MODID_MAP, %PROCID_MAP);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,

View File

@@ -37,7 +37,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::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//; @SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.90'; $VERSION = '3.70-135';
# NOTE: Order creates precedence # NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm # 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); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::MAU::MIBS, %SNMP::Info::MAU::MIBS,

View File

@@ -48,7 +48,7 @@ our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
@SNMP::Info::Layer3::C6500::EXPORT_OK = qw//; @SNMP::Info::Layer3::C6500::EXPORT_OK = qw//;
$VERSION = '3.90'; $VERSION = '3.70-135';
# NOTE: Order creates precedence # NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm # 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); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::Layer3::MIBS,

View File

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

View File

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

View File

@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, ); %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); our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
$VERSION = '3.90'; $VERSION = '3.70-135';
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, ); %MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );

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