Compare commits
103 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ce80ba4ee | ||
|
|
16e96d9fcf | ||
|
|
ac753c5970 | ||
|
|
313e187399 | ||
|
|
f5aaee6c89 | ||
|
|
c8b4f8f4fd | ||
|
|
6113dd3b98 | ||
|
|
e21f22bb3b | ||
|
|
bb4578dea5 | ||
|
|
e83ca6fbe3 | ||
|
|
ae9963cf85 | ||
|
|
650aef9c2d | ||
|
|
397b14da22 | ||
|
|
0f00322e03 | ||
|
|
e2b688077e | ||
|
|
4afbd37cbd | ||
|
|
40d3340ac5 | ||
|
|
9bb71d3df7 | ||
|
|
4860447b06 | ||
|
|
445b3f19a3 | ||
|
|
32efd26999 | ||
|
|
f2f95150bd | ||
|
|
f210bf8812 | ||
|
|
c30e1a2446 | ||
|
|
10392fc08e | ||
|
|
df10473fb5 | ||
|
|
6505e7e85f | ||
|
|
ffd80722b8 | ||
|
|
6bd5bb3dda | ||
|
|
83dec3c1d6 | ||
|
|
82f2a83eec | ||
|
|
5194af9d91 | ||
|
|
a4c76d2fb9 | ||
|
|
57a35075fa | ||
|
|
fb69a60b45 | ||
|
|
2625381e5b | ||
|
|
1c048320a6 | ||
|
|
c5c25cee7f | ||
|
|
dee8177a67 | ||
|
|
abbe040351 | ||
|
|
29a0f849f1 | ||
|
|
7e524f46c6 | ||
|
|
1146e99de2 | ||
|
|
6740929d41 | ||
|
|
831788c1c9 | ||
|
|
7e9d4520af | ||
|
|
c4317e6e6b | ||
|
|
e4e3debce0 | ||
|
|
a5b7431070 | ||
|
|
054808f59d | ||
|
|
0b313d627e | ||
|
|
9813b9db90 | ||
|
|
9a4e024abb | ||
|
|
04a669157f | ||
|
|
a364c1512d | ||
|
|
0451e6f0a6 | ||
|
|
b7f87d9e82 | ||
|
|
e2713fb57a | ||
|
|
c8eff78d34 | ||
|
|
04ca5793fa | ||
|
|
83d00ee9c7 | ||
|
|
bf56ed2540 | ||
|
|
e75aba14b4 | ||
|
|
5d2d2d416f | ||
|
|
62799bfc9d | ||
|
|
df8fbc3c03 | ||
|
|
604de81ab8 | ||
|
|
ed14b09567 | ||
|
|
800758815c | ||
|
|
058b74bd63 | ||
|
|
02a52a4e09 | ||
|
|
74ddc93f7f | ||
|
|
eb8af0c81b | ||
|
|
bd49274808 | ||
|
|
8b1547c589 | ||
|
|
c093f83848 | ||
|
|
c0b28c38c5 | ||
|
|
4621a0898f | ||
|
|
6f02e1035f | ||
|
|
d4ae9237a6 | ||
|
|
914eb05a60 | ||
|
|
4da17227c1 | ||
|
|
20014cab29 | ||
|
|
9d62361c8a | ||
|
|
260992b7bf | ||
|
|
b9cd429551 | ||
|
|
2d18a75ad7 | ||
|
|
0cfc501f83 | ||
|
|
44b19153f1 | ||
|
|
433b87b9df | ||
|
|
f9464bcd6c | ||
|
|
f5c5ec202a | ||
|
|
4b64a70830 | ||
|
|
4c8f7e298e | ||
|
|
2d539be214 | ||
|
|
c35d5814b4 | ||
|
|
7d19ad401b | ||
|
|
985577ce79 | ||
|
|
36cba5ce18 | ||
|
|
4753f30c53 | ||
|
|
d719e240d2 | ||
|
|
e35faee278 | ||
|
|
7b23edcb29 |
31
.github/issue_template.md
vendored
Normal file
31
.github/issue_template.md
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<!--- Provide a general summary of the issue in the Title above -->
|
||||||
|
<!--- https://guides.github.com/features/mastering-markdown/#examples -->
|
||||||
|
|
||||||
|
## Expected Behavior
|
||||||
|
<!--- If you're describing a bug, tell us what should happen -->
|
||||||
|
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||||
|
|
||||||
|
## Current Behavior
|
||||||
|
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
|
||||||
|
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
|
||||||
|
|
||||||
|
## Possible Solution
|
||||||
|
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
||||||
|
<!--- or ideas how to implement the addition or change -->
|
||||||
|
|
||||||
|
## Steps to Reproduce (for bugs)
|
||||||
|
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||||
|
<!--- reproduce this bug. Include code to reproduce, if relevant, or attach screenshots -->
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
4.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
<!--- How has this issue affected you? What are you trying to accomplish? -->
|
||||||
|
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
||||||
|
|
||||||
|
## Your Environment
|
||||||
|
<!--- Include as many relevant details about the environment you experienced the bug in -->
|
||||||
|
* SNMP::Info version used:
|
||||||
|
* Netdisco version (if used):
|
||||||
18
.gitignore
vendored
18
.gitignore
vendored
@@ -1,9 +1,11 @@
|
|||||||
*.db
|
*.swp
|
||||||
SNMP
|
*.pid
|
||||||
*.komodo*
|
test.pl
|
||||||
blib/
|
|
||||||
META.*
|
|
||||||
MYMETA.*
|
MYMETA.*
|
||||||
Makefile
|
*.tar.gz
|
||||||
Makefile.old
|
MANIFEST.*
|
||||||
pm_to_blib
|
*.komodo*
|
||||||
|
Makefile*
|
||||||
|
Build
|
||||||
|
_build
|
||||||
|
blib
|
||||||
|
|||||||
29
.travis.yml
Normal file
29
.travis.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
language: perl
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- jq
|
||||||
|
- libsnmp-dev
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- /^3\.\d{2}$/
|
||||||
|
- 'master'
|
||||||
|
before_install:
|
||||||
|
- mkdir ~/netdisco-mibs
|
||||||
|
- cd ~/netdisco-mibs
|
||||||
|
install:
|
||||||
|
- curl -sL https://github.com/netdisco/netdisco-mibs/releases/download/4.004/netdisco-mibs.tar.gz | tar --strip-components=1 -zxf -
|
||||||
|
- cpanm --quiet --notest PkgConfig Test::CChecker Alien::zlib::Static Alien::OpenSSL::Static Alien::SNMP::MAXTC
|
||||||
|
before_script:
|
||||||
|
- 'cd ${TRAVIS_BUILD_DIR}'
|
||||||
|
script:
|
||||||
|
- >
|
||||||
|
perl Build.PL &&
|
||||||
|
PERL_MM_USE_DEFAULT=1 ./Build installdeps --cpan_client 'cpanm --quiet --notest' &&
|
||||||
|
./Build test --test_files t/ --test_files xt/
|
||||||
|
notifications:
|
||||||
|
irc:
|
||||||
|
on_success: change
|
||||||
|
on_failure: always
|
||||||
|
channels:
|
||||||
|
- 'chat.freenode.net#netdisco'
|
||||||
43
Build.PL
Normal file
43
Build.PL
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Module::Build;
|
||||||
|
|
||||||
|
Module::Build->new(
|
||||||
|
module_name => 'SNMP::Info',
|
||||||
|
license => 'bsd',
|
||||||
|
dist_author => 'Eric A. Miller <emiller@cpan.org>',
|
||||||
|
# dynamic_config => 1,
|
||||||
|
create_readme => 1,
|
||||||
|
configure_requires => {
|
||||||
|
'Module::Build' => '0.42',
|
||||||
|
},
|
||||||
|
# build_requires => {
|
||||||
|
# },
|
||||||
|
requires => {
|
||||||
|
'SNMP' => '0',
|
||||||
|
'Math::BigInt' => '0',
|
||||||
|
},
|
||||||
|
recommends => {
|
||||||
|
'PPI' => '0',
|
||||||
|
'Class::ISA' => '0',
|
||||||
|
'Module::Info' => '0',
|
||||||
|
'Module::Load' => '0',
|
||||||
|
'File::Slurp' => '0',
|
||||||
|
},
|
||||||
|
test_requires => {
|
||||||
|
'Test::More' => '0.88',
|
||||||
|
'Test::Distribution' => '0',
|
||||||
|
},
|
||||||
|
# script_files => [
|
||||||
|
# ],
|
||||||
|
# share_dir => 'share',
|
||||||
|
meta_merge => {
|
||||||
|
resources => {
|
||||||
|
homepage => 'http://netdisco.org/',
|
||||||
|
bugtracker => 'https://github.com/netdisco/snmp-info/issues',
|
||||||
|
repository => 'https://github.com/netdisco/snmp-info',
|
||||||
|
MailingList => 'https://lists.sourceforge.net/lists/listinfo/snmp-info-users',
|
||||||
|
IRC => 'irc://irc.freenode.org/#netdisco',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)->create_build_script;
|
||||||
@@ -1,4 +1,131 @@
|
|||||||
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
|
version 3.49 (2018-03-03)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Better Layer3::Cumulus interface naming
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* Use GitHub for MIBs download for testing, instead of sf.net
|
||||||
|
|
||||||
|
version 3.48 (2018-03-03)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Add Layer3::Cumulus for Cumulus Networks devices
|
||||||
|
|
||||||
|
version 3.47 (2018-02-27)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Add LLDP-MIB::lldpXMedRemInventoryTable methods
|
||||||
|
|
||||||
|
version 3.46 (2018-02-17)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Add method to get err-disable cause for interfaces on Cisco
|
||||||
|
|
||||||
|
version 3.45 (2018-02-14)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Enable Layer3::Foundry for Brocade VDX platform
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* #222 #238 #239 handle BayStack switches with port index 128 (zoeloe)
|
||||||
|
|
||||||
|
version 3.44 (2018-02-12)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Improve F10 OS version detection (laelly)
|
||||||
|
* Better IPv6 prefix derivation
|
||||||
|
|
||||||
|
version 3.43 (2018-02-02)
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* Fix identification of Brocade CES
|
||||||
|
|
||||||
|
version 3.42 (2018-02-02)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* IPv6 Prefix Length support via IPv6::ipv6_addr_prefixlength
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* Fix test for updated snmplabs.com data
|
||||||
|
|
||||||
|
version 3.41 (2018-02-01)
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* Fixes to distriution metadata
|
||||||
|
|
||||||
|
version 3.40 (2018-01-28)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* #240 Support for CheckPoint devies through SNMP
|
||||||
|
* #240 Cisco SB switches fixup
|
||||||
|
* #244 Add Adtran support
|
||||||
|
* #241 Vyatta/VyOS support
|
||||||
|
* #246 Nexus VRF support (works with Netdisco)
|
||||||
|
* #244 Improve Juniper model reporting
|
||||||
|
* #240 Improve H3C reporting
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* #243 Nexus additional debug lines should be hidden
|
||||||
|
|
||||||
|
version 3.39 (2017-12-17)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* #236 Enhanced Ubiquiti device support (L. Begnaud)
|
||||||
|
* add HP J9774A model (H. Teulahti)
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* fix scripts (F. Mass)
|
||||||
|
* fix CiscoASA typos (laelly)
|
||||||
|
|
||||||
|
version 3.38 (2017-10-23)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Layer2::Airespace several newer 802.11 data rates added
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* #232 Improve generic Info::Layer3 serial number detection
|
||||||
|
|
||||||
|
version 3.37 (2017-07-11)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Layer3::Juniper fixed to return os_ver for JUNOS 14.x and higher
|
||||||
|
|
||||||
|
version 3.36 (2017-06-28)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Migrate to Module::Build for distribution maintenance
|
||||||
|
|
||||||
|
version 3.35 (2017-06-28)
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Include loading of LLDP-EXT-MED-MIB in LLDP.pm
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* #180 support CiscoConfig on Nexus (sf.net:scratchfury)
|
||||||
|
* #50 remove interface specific part from vrf interfaces on IOS (W. Vandersmissen)
|
||||||
|
* #211 f5 class should respect UseEnums when faking i_type
|
||||||
|
|
||||||
version 3.34 (2016-11-20)
|
version 3.34 (2016-11-20)
|
||||||
|
|
||||||
@@ -721,7 +848,7 @@ version 1.05 (11/25/07) - CVS only. No official release
|
|||||||
+ Added support for Cisco (Airespace) wireless controllers as new class
|
+ Added support for Cisco (Airespace) wireless controllers as new class
|
||||||
L2::Airespace
|
L2::Airespace
|
||||||
+ Added support for Nortel Ethernet Routing Switch 2500 series and
|
+ Added support for Nortel Ethernet Routing Switch 2500 series and
|
||||||
Business Ethernet Switches (David Siebörger)
|
Business Ethernet Switches (David Siebörger)
|
||||||
+ Update of L3::Foundry to support all Foundry devices including newer
|
+ Update of L3::Foundry to support all Foundry devices including newer
|
||||||
switches. Depreciate L2::Foundry.
|
switches. Depreciate L2::Foundry.
|
||||||
+ Added generic device type detection using IANA assigned enterpise
|
+ Added generic device type detection using IANA assigned enterpise
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
# SNMP Device Compatibility Matrix
|
|
||||||
# SNMP::Info - (C) 2004 Max Baker
|
|
||||||
|
|
||||||
# THIS FILE IS NO LONGER MAINTAINED
|
|
||||||
|
|
||||||
# THERE ARE NOW GENERIC CLASSES FOR MOST DEVICES, SIMPLY LOAD SNMP::Info AND
|
|
||||||
# TRY YOUR DEVICE, THEN REPORT TO THE MAIL LIST ANY MISSING FUNCTIONALITY.
|
|
||||||
|
|
||||||
# THANK YOU
|
|
||||||
@@ -1,177 +0,0 @@
|
|||||||
# SNMP::Info::Layer2::Ubiquiti
|
|
||||||
# $Id$
|
|
||||||
#
|
|
||||||
|
|
||||||
package SNMP::Info::Layer2::Ubiquiti;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Exporter;
|
|
||||||
use SNMP::Info::IEEE802dot11;
|
|
||||||
use SNMP::Info::Layer2;
|
|
||||||
|
|
||||||
@SNMP::Info::Layer2::Ubiquiti::ISA
|
|
||||||
= qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
|
|
||||||
@SNMP::Info::Layer2::Ubiquiti::EXPORT_OK = qw//;
|
|
||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
|
||||||
|
|
||||||
$VERSION = '3.34';
|
|
||||||
|
|
||||||
%MIBS = (
|
|
||||||
%SNMP::Info::Layer2::MIBS,
|
|
||||||
%SNMP::Info::IEEE802dot11::MIBS,
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
%GLOBALS
|
|
||||||
= ( %SNMP::Info::Layer2::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS, );
|
|
||||||
|
|
||||||
%FUNCS = (
|
|
||||||
%SNMP::Info::Layer2::FUNCS,
|
|
||||||
%SNMP::Info::IEEE802dot11::FUNCS,
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::IEEE802dot11::MUNGE, );
|
|
||||||
|
|
||||||
sub os {
|
|
||||||
return 'Ubiquiti';
|
|
||||||
}
|
|
||||||
|
|
||||||
sub os_ver {
|
|
||||||
my $dot11 = shift;
|
|
||||||
|
|
||||||
my $versions = $dot11->dot11_prod_ver();
|
|
||||||
|
|
||||||
foreach my $iid ( keys %$versions ) {
|
|
||||||
my $ver = $versions->{$iid};
|
|
||||||
next unless defined $ver;
|
|
||||||
return $ver;
|
|
||||||
if ( $ver =~ /([\d\.]+)/ ) {
|
|
||||||
return $1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub vendor {
|
|
||||||
return 'Ubiquiti Networks, Inc.';
|
|
||||||
}
|
|
||||||
|
|
||||||
sub model {
|
|
||||||
my $dot11 = shift;
|
|
||||||
|
|
||||||
my $names = $dot11->dot11_prod_name();
|
|
||||||
|
|
||||||
foreach my $iid ( keys %$names ) {
|
|
||||||
my $prod = $names->{$iid};
|
|
||||||
next unless defined $prod;
|
|
||||||
return $prod;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
1;
|
|
||||||
__END__
|
|
||||||
|
|
||||||
=head1 NAME
|
|
||||||
|
|
||||||
SNMP::Info::Layer2::Ubiquiti - SNMP Interface to Ubiquiti Access Points
|
|
||||||
|
|
||||||
=head1 AUTHOR
|
|
||||||
|
|
||||||
Max Kosmach
|
|
||||||
|
|
||||||
=head1 SYNOPSIS
|
|
||||||
|
|
||||||
# Let SNMP::Info determine the correct subclass for you.
|
|
||||||
my $ubnt = new SNMP::Info(
|
|
||||||
AutoSpecify => 1,
|
|
||||||
Debug => 1,
|
|
||||||
DestHost => 'myswitch',
|
|
||||||
Community => 'public',
|
|
||||||
Version => 2
|
|
||||||
)
|
|
||||||
or die "Can't connect to DestHost.\n";
|
|
||||||
|
|
||||||
my $class = $ubnt->class();
|
|
||||||
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
|
||||||
|
|
||||||
Provides abstraction to the configuration information obtainable from
|
|
||||||
Ubiquiti Access Point through SNMP.
|
|
||||||
|
|
||||||
For speed or debugging purposes you can call the subclass directly, but not
|
|
||||||
after determining a more specific class using the method above.
|
|
||||||
|
|
||||||
my $ubnt = new SNMP::Info::Layer2::Ubiquiti(...);
|
|
||||||
|
|
||||||
=head2 Inherited Classes
|
|
||||||
|
|
||||||
=over
|
|
||||||
|
|
||||||
=item SNMP::Info::Layer2
|
|
||||||
|
|
||||||
=item SNMP::Info::IEEE802dot11
|
|
||||||
|
|
||||||
=back
|
|
||||||
|
|
||||||
=head2 Required MIBs
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
=head2 Inherited MIBs
|
|
||||||
|
|
||||||
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
|
|
||||||
|
|
||||||
See L<SNMP::Info::IEEE802dot11/"Required MIBs"> for its MIB requirements.
|
|
||||||
|
|
||||||
=head1 GLOBALS
|
|
||||||
|
|
||||||
These are methods that return scalar value from SNMP
|
|
||||||
|
|
||||||
=over
|
|
||||||
|
|
||||||
=item $ubnt->vendor()
|
|
||||||
|
|
||||||
Returns 'Ubiquiti Networks, Inc.'
|
|
||||||
|
|
||||||
=item $ubnt->model()
|
|
||||||
|
|
||||||
Returns the model extracted from C<dot11manufacturerProductName>.
|
|
||||||
|
|
||||||
=item $ubnt->os()
|
|
||||||
|
|
||||||
Returns 'Ubiquiti'
|
|
||||||
|
|
||||||
=item $ubnt->os_ver()
|
|
||||||
|
|
||||||
Returns the software version extracted from C<dot11manufacturerProductVersion>.
|
|
||||||
|
|
||||||
=back
|
|
||||||
|
|
||||||
=head2 Global Methods imported from SNMP::Info::Layer2
|
|
||||||
|
|
||||||
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
|
|
||||||
|
|
||||||
=head2 Global Methods imported from SNMP::Info::IEEE802dot11
|
|
||||||
|
|
||||||
See L<SNMP::Info::IEEE802dot11/"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 L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
|
|
||||||
|
|
||||||
=head2 Table Methods imported from SNMP::Info::IEEE802dot11
|
|
||||||
|
|
||||||
See L<SNMP::Info::IEEE802dot11/"TABLE METHODS"> for details.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
271
MANIFEST
271
MANIFEST
@@ -1,129 +1,144 @@
|
|||||||
ChangeLog
|
Build.PL
|
||||||
COPYRIGHT
|
Changes
|
||||||
DEVELOP
|
contrib/DEVELOP
|
||||||
DeviceMatrix.txt
|
contrib/util/docmunge
|
||||||
Info.pm
|
contrib/util/make_dev_matrix.pl
|
||||||
Info/AdslLine.pm
|
contrib/util/make_snmpdata.pl
|
||||||
Info/Aggregate.pm
|
contrib/util/push_ver
|
||||||
Info/Airespace.pm
|
contrib/util/run_test
|
||||||
Info/AMAP.pm
|
contrib/util/test_class.pl
|
||||||
Info/Bridge.pm
|
contrib/util/test_class_mocked.pl
|
||||||
Info/CDP.pm
|
lib/SNMP/Info.pm
|
||||||
Info/CiscoAgg.pm
|
lib/SNMP/Info/AdslLine.pm
|
||||||
Info/CiscoConfig.pm
|
lib/SNMP/Info/Aggregate.pm
|
||||||
Info/CiscoPortSecurity.pm
|
lib/SNMP/Info/Airespace.pm
|
||||||
Info/CiscoPower.pm
|
lib/SNMP/Info/AMAP.pm
|
||||||
Info/CiscoQOS.pm
|
lib/SNMP/Info/Bridge.pm
|
||||||
Info/CiscoRTT.pm
|
lib/SNMP/Info/CDP.pm
|
||||||
Info/CiscoStack.pm
|
lib/SNMP/Info/CiscoAgg.pm
|
||||||
Info/CiscoStats.pm
|
lib/SNMP/Info/CiscoConfig.pm
|
||||||
Info/CiscoStpExtensions.pm
|
lib/SNMP/Info/CiscoPortSecurity.pm
|
||||||
Info/CiscoVTP.pm
|
lib/SNMP/Info/CiscoPower.pm
|
||||||
Info/EDP.pm
|
lib/SNMP/Info/CiscoQOS.pm
|
||||||
Info/Entity.pm
|
lib/SNMP/Info/CiscoRTT.pm
|
||||||
Info/EtherLike.pm
|
lib/SNMP/Info/CiscoStack.pm
|
||||||
Info/FDP.pm
|
lib/SNMP/Info/CiscoStats.pm
|
||||||
Info/IEEE802dot11.pm
|
lib/SNMP/Info/CiscoStpExtensions.pm
|
||||||
Info/IEEE802dot3ad.pm
|
lib/SNMP/Info/CiscoVTP.pm
|
||||||
Info/IPv6.pm
|
lib/SNMP/Info/EDP.pm
|
||||||
Info/Layer1.pm
|
lib/SNMP/Info/Entity.pm
|
||||||
Info/Layer1/Allied.pm
|
lib/SNMP/Info/EtherLike.pm
|
||||||
Info/Layer1/Asante.pm
|
lib/SNMP/Info/FDP.pm
|
||||||
Info/Layer1/Bayhub.pm
|
lib/SNMP/Info/IEEE802dot11.pm
|
||||||
Info/Layer1/Cyclades.pm
|
lib/SNMP/Info/IEEE802dot3ad.pm
|
||||||
Info/Layer1/S3000.pm
|
lib/SNMP/Info/IPv6.pm
|
||||||
Info/Layer2.pm
|
lib/SNMP/Info/Layer1.pm
|
||||||
Info/Layer2/3Com.pm
|
lib/SNMP/Info/Layer1/Allied.pm
|
||||||
Info/Layer2/Airespace.pm
|
lib/SNMP/Info/Layer1/Asante.pm
|
||||||
Info/Layer2/Aironet.pm
|
lib/SNMP/Info/Layer1/Bayhub.pm
|
||||||
Info/Layer2/Allied.pm
|
lib/SNMP/Info/Layer1/Cyclades.pm
|
||||||
Info/Layer2/Baystack.pm
|
lib/SNMP/Info/Layer1/S3000.pm
|
||||||
Info/Layer2/C1900.pm
|
lib/SNMP/Info/Layer2.pm
|
||||||
Info/Layer2/C2900.pm
|
lib/SNMP/Info/Layer2/3Com.pm
|
||||||
Info/Layer2/Catalyst.pm
|
lib/SNMP/Info/Layer2/Adtran.pm
|
||||||
Info/Layer2/Centillion.pm
|
lib/SNMP/Info/Layer2/Airespace.pm
|
||||||
Info/Layer2/Cisco.pm
|
lib/SNMP/Info/Layer2/Aironet.pm
|
||||||
Info/Layer2/CiscoSB.pm
|
lib/SNMP/Info/Layer2/Allied.pm
|
||||||
Info/Layer2/HP.pm
|
lib/SNMP/Info/Layer2/Baystack.pm
|
||||||
Info/Layer2/HP4000.pm
|
lib/SNMP/Info/Layer2/C1900.pm
|
||||||
Info/Layer2/HPVC.pm
|
lib/SNMP/Info/Layer2/C2900.pm
|
||||||
Info/Layer2/Kentrox.pm
|
lib/SNMP/Info/Layer2/Catalyst.pm
|
||||||
Info/Layer2/N2270.pm
|
lib/SNMP/Info/Layer2/Centillion.pm
|
||||||
Info/Layer2/NAP222x.pm
|
lib/SNMP/Info/Layer2/Cisco.pm
|
||||||
Info/Layer2/Netgear.pm
|
lib/SNMP/Info/Layer2/CiscoSB.pm
|
||||||
Info/Layer2/NWSS2300.pm
|
lib/SNMP/Info/Layer2/HP.pm
|
||||||
Info/Layer2/Orinoco.pm
|
lib/SNMP/Info/Layer2/HP4000.pm
|
||||||
Info/Layer2/Trapeze.pm
|
lib/SNMP/Info/Layer2/HPVC.pm
|
||||||
Info/Layer2/Ubiquiti.pm
|
lib/SNMP/Info/Layer2/Kentrox.pm
|
||||||
Info/Layer2/ZyXEL_DSLAM.pm
|
lib/SNMP/Info/Layer2/N2270.pm
|
||||||
Info/Layer3.pm
|
lib/SNMP/Info/Layer2/NAP222x.pm
|
||||||
Info/Layer3/Aironet.pm
|
lib/SNMP/Info/Layer2/Netgear.pm
|
||||||
Info/Layer3/AlcatelLucent.pm
|
lib/SNMP/Info/Layer2/NWSS2300.pm
|
||||||
Info/Layer3/AlteonAD.pm
|
lib/SNMP/Info/Layer2/Orinoco.pm
|
||||||
Info/Layer3/Altiga.pm
|
lib/SNMP/Info/Layer2/Trapeze.pm
|
||||||
Info/Layer3/Arista.pm
|
lib/SNMP/Info/Layer2/Ubiquiti.pm
|
||||||
Info/Layer3/Aruba.pm
|
lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
|
||||||
Info/Layer3/BayRS.pm
|
lib/SNMP/Info/Layer3.pm
|
||||||
Info/Layer3/BlueCoatSG.pm
|
lib/SNMP/Info/Layer3/Aironet.pm
|
||||||
Info/Layer3/C3550.pm
|
lib/SNMP/Info/Layer3/AlcatelLucent.pm
|
||||||
Info/Layer3/C4000.pm
|
lib/SNMP/Info/Layer3/AlteonAD.pm
|
||||||
Info/Layer3/C6500.pm
|
lib/SNMP/Info/Layer3/Altiga.pm
|
||||||
Info/Layer3/Cisco.pm
|
lib/SNMP/Info/Layer3/Arista.pm
|
||||||
Info/Layer3/CiscoASA.pm
|
lib/SNMP/Info/Layer3/Aruba.pm
|
||||||
Info/Layer3/CiscoFWSM.pm
|
lib/SNMP/Info/Layer3/BayRS.pm
|
||||||
Info/Layer3/CiscoSwitch.pm
|
lib/SNMP/Info/Layer3/BlueCoatSG.pm
|
||||||
Info/Layer3/Contivity.pm
|
lib/SNMP/Info/Layer3/C3550.pm
|
||||||
Info/Layer3/Dell.pm
|
lib/SNMP/Info/Layer3/C4000.pm
|
||||||
Info/Layer3/Enterasys.pm
|
lib/SNMP/Info/Layer3/C6500.pm
|
||||||
Info/Layer3/Extreme.pm
|
lib/SNMP/Info/Layer3/CheckPoint.pm
|
||||||
Info/Layer3/F5.pm
|
lib/SNMP/Info/Layer3/Cisco.pm
|
||||||
Info/Layer3/Force10.pm
|
lib/SNMP/Info/Layer3/CiscoASA.pm
|
||||||
Info/Layer3/Fortinet.pm
|
lib/SNMP/Info/Layer3/CiscoFWSM.pm
|
||||||
Info/Layer3/Foundry.pm
|
lib/SNMP/Info/Layer3/CiscoSwitch.pm
|
||||||
Info/Layer3/H3C.pm
|
lib/SNMP/Info/Layer3/Contivity.pm
|
||||||
Info/Layer3/HP9300.pm
|
lib/SNMP/Info/Layer3/Cumulus.pm
|
||||||
Info/Layer3/Huawei.pm
|
lib/SNMP/Info/Layer3/Dell.pm
|
||||||
Info/Layer3/IBMGbTor.pm
|
lib/SNMP/Info/Layer3/DLink.pm
|
||||||
Info/Layer3/Juniper.pm
|
lib/SNMP/Info/Layer3/Enterasys.pm
|
||||||
Info/Layer3/Lantronix.pm
|
lib/SNMP/Info/Layer3/Extreme.pm
|
||||||
Info/Layer3/Microsoft.pm
|
lib/SNMP/Info/Layer3/F5.pm
|
||||||
Info/Layer3/Mikrotik.pm
|
lib/SNMP/Info/Layer3/Force10.pm
|
||||||
Info/Layer3/N1600.pm
|
lib/SNMP/Info/Layer3/Fortinet.pm
|
||||||
Info/Layer3/Netscreen.pm
|
lib/SNMP/Info/Layer3/Foundry.pm
|
||||||
Info/Layer3/NetSNMP.pm
|
lib/SNMP/Info/Layer3/H3C.pm
|
||||||
Info/Layer3/Nexus.pm
|
lib/SNMP/Info/Layer3/HP9300.pm
|
||||||
Info/Layer3/PacketFront.pm
|
lib/SNMP/Info/Layer3/Huawei.pm
|
||||||
Info/Layer3/PaloAlto.pm
|
lib/SNMP/Info/Layer3/IBMGbTor.pm
|
||||||
Info/Layer3/Passport.pm
|
lib/SNMP/Info/Layer3/Juniper.pm
|
||||||
Info/Layer3/Pf.pm
|
lib/SNMP/Info/Layer3/Lantronix.pm
|
||||||
Info/Layer3/Pica8.pm
|
lib/SNMP/Info/Layer3/Microsoft.pm
|
||||||
Info/Layer3/SonicWALL.pm
|
lib/SNMP/Info/Layer3/Mikrotik.pm
|
||||||
Info/Layer3/Steelhead.pm
|
lib/SNMP/Info/Layer3/N1600.pm
|
||||||
Info/Layer3/Sun.pm
|
lib/SNMP/Info/Layer3/Netscreen.pm
|
||||||
Info/Layer3/Tasman.pm
|
lib/SNMP/Info/Layer3/NetSNMP.pm
|
||||||
Info/Layer3/Timetra.pm
|
lib/SNMP/Info/Layer3/Nexus.pm
|
||||||
Info/Layer3/VMware.pm
|
lib/SNMP/Info/Layer3/PacketFront.pm
|
||||||
Info/Layer7.pm
|
lib/SNMP/Info/Layer3/PaloAlto.pm
|
||||||
Info/Layer7/APC.pm
|
lib/SNMP/Info/Layer3/Passport.pm
|
||||||
Info/Layer7/CiscoIPS.pm
|
lib/SNMP/Info/Layer3/Pf.pm
|
||||||
Info/Layer7/Neoteris.pm
|
lib/SNMP/Info/Layer3/Pica8.pm
|
||||||
Info/Layer7/Netscaler.pm
|
lib/SNMP/Info/Layer3/SonicWALL.pm
|
||||||
Info/LLDP.pm
|
lib/SNMP/Info/Layer3/Steelhead.pm
|
||||||
Info/MAU.pm
|
lib/SNMP/Info/Layer3/Sun.pm
|
||||||
Info/MRO.pm
|
lib/SNMP/Info/Layer3/Tasman.pm
|
||||||
Info/NortelStack.pm
|
lib/SNMP/Info/Layer3/Timetra.pm
|
||||||
Info/PowerEthernet.pm
|
lib/SNMP/Info/Layer3/VMware.pm
|
||||||
Info/RapidCity.pm
|
lib/SNMP/Info/Layer3/VyOS.pm
|
||||||
Info/SONMP.pm
|
lib/SNMP/Info/Layer7.pm
|
||||||
Makefile.PL
|
lib/SNMP/Info/Layer7/APC.pm
|
||||||
MANIFEST
|
lib/SNMP/Info/Layer7/CiscoIPS.pm
|
||||||
|
lib/SNMP/Info/Layer7/Neoteris.pm
|
||||||
|
lib/SNMP/Info/Layer7/Netscaler.pm
|
||||||
|
lib/SNMP/Info/LLDP.pm
|
||||||
|
lib/SNMP/Info/MAU.pm
|
||||||
|
lib/SNMP/Info/MRO.pm
|
||||||
|
lib/SNMP/Info/NortelStack.pm
|
||||||
|
lib/SNMP/Info/PowerEthernet.pm
|
||||||
|
lib/SNMP/Info/RapidCity.pm
|
||||||
|
lib/SNMP/Info/SONMP.pm
|
||||||
|
LICENSE
|
||||||
|
MANIFEST This list of files
|
||||||
|
META.json
|
||||||
|
META.yml
|
||||||
README
|
README
|
||||||
t/00-load.t
|
t/00_load.t
|
||||||
t/docmunge
|
xt/.perltidyrc
|
||||||
t/make_dev_matrix.pl
|
xt/00_local_distribution.t
|
||||||
t/prereq.t
|
xt/00_local_docininfo.t
|
||||||
t/push_ver
|
xt/00_local_perlcritic.t
|
||||||
t/run_test
|
xt/00_local_pod-coverage.t
|
||||||
t/test_class.pl
|
xt/00_local_pod.t
|
||||||
t/util/make_snmpdata.pl
|
xt/00_local_prereq.t
|
||||||
t/util/test_class_mocked.pl
|
xt/00_local_spelling.t
|
||||||
|
xt/00_local_versionsync.t
|
||||||
|
xt/10_remote_snmplabs.t
|
||||||
|
|||||||
@@ -1,28 +1,67 @@
|
|||||||
# Version control files and dirs.
|
\.bak$
|
||||||
|
\.pid$
|
||||||
|
\.swp$
|
||||||
|
|
||||||
|
^SNMP-Info-
|
||||||
|
|
||||||
|
^MANIFEST\.
|
||||||
|
|
||||||
|
# Avoid version control files.
|
||||||
\bRCS\b
|
\bRCS\b
|
||||||
\bCVS\b
|
\bCVS\b
|
||||||
|
\bSCCS\b
|
||||||
,v$
|
,v$
|
||||||
\B\.svn\b
|
\B\.svn\b
|
||||||
\B\.git\b
|
\B\.git\b
|
||||||
.gitignore
|
\B\.gitignore\b
|
||||||
|
\b_darcs\b
|
||||||
|
\B\.cvsignore$
|
||||||
|
|
||||||
# Makemaker generated files and dirs.
|
# Avoid VMS specific MakeMaker generated files
|
||||||
^MANIFEST\.
|
\bDescrip.MMS$
|
||||||
^Makefile$
|
\bDESCRIP.MMS$
|
||||||
^blib/
|
\bdescrip.mms$
|
||||||
^MakeMaker-\d
|
|
||||||
pm_to_blib
|
|
||||||
MYMETA.*
|
|
||||||
|
|
||||||
# Temp, old and emacs backup files.
|
# Avoid Makemaker generated and utility files.
|
||||||
|
\bMANIFEST\.bak
|
||||||
|
\bMakefile$
|
||||||
|
\bblib/
|
||||||
|
\bMakeMaker-\d
|
||||||
|
\bpm_to_blib\.ts$
|
||||||
|
\bpm_to_blib$
|
||||||
|
\bblibdirs\.ts$ # 6.18 through 6.25 generated this
|
||||||
|
|
||||||
|
# Avoid Module::Build generated and utility files.
|
||||||
|
\bBuild$
|
||||||
|
\b_build/
|
||||||
|
\bBuild.bat$
|
||||||
|
\bBuild.COM$
|
||||||
|
\bBUILD.COM$
|
||||||
|
\bbuild.com$
|
||||||
|
|
||||||
|
# Avoid temp and backup files.
|
||||||
~$
|
~$
|
||||||
\.old$
|
\.old$
|
||||||
^#.*#$
|
\#$
|
||||||
^\.#
|
\b\.#
|
||||||
|
\.bak$
|
||||||
|
\.tmp$
|
||||||
|
\.#
|
||||||
|
\.rej$
|
||||||
|
|
||||||
# Private Regression Tests
|
# Avoid OS-specific files/dirs
|
||||||
^xt/
|
# Mac OSX metadata
|
||||||
\.?perl\w+\.?rc$
|
\B\.DS_Store
|
||||||
|
# Mac OSX SMB mount metadata files
|
||||||
|
\B\._
|
||||||
|
|
||||||
# Komodo project file
|
# Avoid Devel::Cover and Devel::CoverX::Covered files.
|
||||||
\.kpf$
|
\bcover_db\b
|
||||||
|
\bcovered\b
|
||||||
|
|
||||||
|
# Avoid MYMETA files
|
||||||
|
^MYMETA\.
|
||||||
|
|
||||||
|
.github
|
||||||
|
.travis
|
||||||
|
README.md
|
||||||
|
|||||||
533
META.json
Normal file
533
META.json
Normal file
@@ -0,0 +1,533 @@
|
|||||||
|
{
|
||||||
|
"abstract" : "OO Interface to Network devices and MIBs through SNMP",
|
||||||
|
"author" : [
|
||||||
|
"Eric A. Miller <emiller@cpan.org>"
|
||||||
|
],
|
||||||
|
"dynamic_config" : 1,
|
||||||
|
"generated_by" : "Module::Build version 0.4224",
|
||||||
|
"license" : [
|
||||||
|
"bsd"
|
||||||
|
],
|
||||||
|
"meta-spec" : {
|
||||||
|
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
|
||||||
|
"version" : 2
|
||||||
|
},
|
||||||
|
"name" : "SNMP-Info",
|
||||||
|
"prereqs" : {
|
||||||
|
"configure" : {
|
||||||
|
"requires" : {
|
||||||
|
"Module::Build" : "0.42"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime" : {
|
||||||
|
"recommends" : {
|
||||||
|
"Class::ISA" : "0",
|
||||||
|
"File::Slurp" : "0",
|
||||||
|
"Module::Info" : "0",
|
||||||
|
"Module::Load" : "0",
|
||||||
|
"PPI" : "0"
|
||||||
|
},
|
||||||
|
"requires" : {
|
||||||
|
"Math::BigInt" : "0",
|
||||||
|
"SNMP" : "0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test" : {
|
||||||
|
"requires" : {
|
||||||
|
"Test::Distribution" : "0",
|
||||||
|
"Test::More" : "0.88"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"provides" : {
|
||||||
|
"SNMP::Info" : {
|
||||||
|
"file" : "lib/SNMP/Info.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::AMAP" : {
|
||||||
|
"file" : "lib/SNMP/Info/AMAP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::AdslLine" : {
|
||||||
|
"file" : "lib/SNMP/Info/AdslLine.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Aggregate" : {
|
||||||
|
"file" : "lib/SNMP/Info/Aggregate.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Airespace" : {
|
||||||
|
"file" : "lib/SNMP/Info/Airespace.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Bridge" : {
|
||||||
|
"file" : "lib/SNMP/Info/Bridge.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CDP" : {
|
||||||
|
"file" : "lib/SNMP/Info/CDP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoAgg" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoAgg.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoConfig" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoConfig.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoPortSecurity" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoPower" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoPower.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoQOS" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoQOS.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoRTT" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoRTT.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoStack" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoStack.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoStats" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoStats.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoStpExtensions" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::CiscoVTP" : {
|
||||||
|
"file" : "lib/SNMP/Info/CiscoVTP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::EDP" : {
|
||||||
|
"file" : "lib/SNMP/Info/EDP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Entity" : {
|
||||||
|
"file" : "lib/SNMP/Info/Entity.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::EtherLike" : {
|
||||||
|
"file" : "lib/SNMP/Info/EtherLike.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::FDP" : {
|
||||||
|
"file" : "lib/SNMP/Info/FDP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::IEEE802dot11" : {
|
||||||
|
"file" : "lib/SNMP/Info/IEEE802dot11.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::IEEE802dot3ad" : {
|
||||||
|
"file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::IPv6" : {
|
||||||
|
"file" : "lib/SNMP/Info/IPv6.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::LLDP" : {
|
||||||
|
"file" : "lib/SNMP/Info/LLDP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer1" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer1.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer1::Allied" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer1/Allied.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer1::Asante" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer1/Asante.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer1::Bayhub" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer1::Cyclades" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer1::S3000" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer1/S3000.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::3Com" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/3Com.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Adtran" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Adtran.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Airespace" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Airespace.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Aironet" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Aironet.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Allied" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Allied.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Baystack" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Baystack.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::C1900" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/C1900.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::C2900" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/C2900.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Catalyst" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Centillion" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Centillion.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Cisco" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Cisco.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::CiscoSB" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::HP" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/HP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::HP4000" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/HP4000.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::HPVC" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/HPVC.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Kentrox" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::N2270" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/N2270.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::NAP222x" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::NWSS2300" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Netgear" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Netgear.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Orinoco" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Trapeze" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::Ubiquiti" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer2::ZyXEL_DSLAM" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Aironet" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Aironet.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::AlcatelLucent" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::AlteonAD" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Altiga" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Altiga.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Arista" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Arista.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Aruba" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Aruba.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::BayRS" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/BayRS.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::BlueCoatSG" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::C3550" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/C3550.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::C4000" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/C4000.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::C6500" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/C6500.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::CheckPoint" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/CheckPoint.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Cisco" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Cisco.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::CiscoASA" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::CiscoFWSM" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::CiscoSwitch" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Contivity" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Contivity.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Cumulus" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Cumulus.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::DLink" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/DLink.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Dell" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Dell.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Enterasys" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Extreme" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Extreme.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::F5" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/F5.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Force10" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Force10.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Fortinet" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Foundry" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Foundry.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::H3C" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/H3C.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::HP9300" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/HP9300.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Huawei" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Huawei.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::IBMGbTor" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Juniper" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Juniper.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Lantronix" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Microsoft" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Mikrotik" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::N1600" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/N1600.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::NetSNMP" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Netscreen" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Nexus" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Nexus.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::PacketFront" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::PaloAlto" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Passport" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Passport.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Pf" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Pf.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Pica8" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Pica8.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::SonicWALL" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Steelhead" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Sun" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Sun.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Tasman" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Tasman.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::Timetra" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/Timetra.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::VMware" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/VMware.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer3::VyOS" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer3/VyOS.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer7" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer7.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer7::APC" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer7/APC.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer7::CiscoIPS" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer7::Neoteris" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::Layer7::Netscaler" : {
|
||||||
|
"file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::MAU" : {
|
||||||
|
"file" : "lib/SNMP/Info/MAU.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::MRO" : {
|
||||||
|
"file" : "lib/SNMP/Info/MRO.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::NortelStack" : {
|
||||||
|
"file" : "lib/SNMP/Info/NortelStack.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::PowerEthernet" : {
|
||||||
|
"file" : "lib/SNMP/Info/PowerEthernet.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::RapidCity" : {
|
||||||
|
"file" : "lib/SNMP/Info/RapidCity.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
},
|
||||||
|
"SNMP::Info::SONMP" : {
|
||||||
|
"file" : "lib/SNMP/Info/SONMP.pm",
|
||||||
|
"version" : "3.49"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"release_status" : "stable",
|
||||||
|
"resources" : {
|
||||||
|
"bugtracker" : {
|
||||||
|
"web" : "https://github.com/netdisco/snmp-info/issues"
|
||||||
|
},
|
||||||
|
"homepage" : "http://netdisco.org/",
|
||||||
|
"license" : [
|
||||||
|
"http://opensource.org/licenses/bsd-license.php"
|
||||||
|
],
|
||||||
|
"repository" : {
|
||||||
|
"url" : "https://github.com/netdisco/snmp-info"
|
||||||
|
},
|
||||||
|
"x_IRC" : "irc://irc.freenode.org/#netdisco",
|
||||||
|
"x_MailingList" : "https://lists.sourceforge.net/lists/listinfo/snmp-info-users"
|
||||||
|
},
|
||||||
|
"version" : "3.49",
|
||||||
|
"x_serialization_backend" : "JSON::PP version 2.97001"
|
||||||
|
}
|
||||||
389
META.yml
Normal file
389
META.yml
Normal file
@@ -0,0 +1,389 @@
|
|||||||
|
---
|
||||||
|
abstract: 'OO Interface to Network devices and MIBs through SNMP'
|
||||||
|
author:
|
||||||
|
- 'Eric A. Miller <emiller@cpan.org>'
|
||||||
|
build_requires:
|
||||||
|
Test::Distribution: '0'
|
||||||
|
Test::More: '0.88'
|
||||||
|
configure_requires:
|
||||||
|
Module::Build: '0.42'
|
||||||
|
dynamic_config: 1
|
||||||
|
generated_by: 'Module::Build version 0.4224, CPAN::Meta::Converter version 2.150010'
|
||||||
|
license: bsd
|
||||||
|
meta-spec:
|
||||||
|
url: http://module-build.sourceforge.net/META-spec-v1.4.html
|
||||||
|
version: '1.4'
|
||||||
|
name: SNMP-Info
|
||||||
|
provides:
|
||||||
|
SNMP::Info:
|
||||||
|
file: lib/SNMP/Info.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::AMAP:
|
||||||
|
file: lib/SNMP/Info/AMAP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::AdslLine:
|
||||||
|
file: lib/SNMP/Info/AdslLine.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Aggregate:
|
||||||
|
file: lib/SNMP/Info/Aggregate.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Airespace:
|
||||||
|
file: lib/SNMP/Info/Airespace.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Bridge:
|
||||||
|
file: lib/SNMP/Info/Bridge.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CDP:
|
||||||
|
file: lib/SNMP/Info/CDP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoAgg:
|
||||||
|
file: lib/SNMP/Info/CiscoAgg.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoConfig:
|
||||||
|
file: lib/SNMP/Info/CiscoConfig.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoPortSecurity:
|
||||||
|
file: lib/SNMP/Info/CiscoPortSecurity.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoPower:
|
||||||
|
file: lib/SNMP/Info/CiscoPower.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoQOS:
|
||||||
|
file: lib/SNMP/Info/CiscoQOS.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoRTT:
|
||||||
|
file: lib/SNMP/Info/CiscoRTT.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoStack:
|
||||||
|
file: lib/SNMP/Info/CiscoStack.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoStats:
|
||||||
|
file: lib/SNMP/Info/CiscoStats.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoStpExtensions:
|
||||||
|
file: lib/SNMP/Info/CiscoStpExtensions.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::CiscoVTP:
|
||||||
|
file: lib/SNMP/Info/CiscoVTP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::EDP:
|
||||||
|
file: lib/SNMP/Info/EDP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Entity:
|
||||||
|
file: lib/SNMP/Info/Entity.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::EtherLike:
|
||||||
|
file: lib/SNMP/Info/EtherLike.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::FDP:
|
||||||
|
file: lib/SNMP/Info/FDP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::IEEE802dot11:
|
||||||
|
file: lib/SNMP/Info/IEEE802dot11.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::IEEE802dot3ad:
|
||||||
|
file: lib/SNMP/Info/IEEE802dot3ad.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::IPv6:
|
||||||
|
file: lib/SNMP/Info/IPv6.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::LLDP:
|
||||||
|
file: lib/SNMP/Info/LLDP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer1:
|
||||||
|
file: lib/SNMP/Info/Layer1.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer1::Allied:
|
||||||
|
file: lib/SNMP/Info/Layer1/Allied.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer1::Asante:
|
||||||
|
file: lib/SNMP/Info/Layer1/Asante.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer1::Bayhub:
|
||||||
|
file: lib/SNMP/Info/Layer1/Bayhub.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer1::Cyclades:
|
||||||
|
file: lib/SNMP/Info/Layer1/Cyclades.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer1::S3000:
|
||||||
|
file: lib/SNMP/Info/Layer1/S3000.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2:
|
||||||
|
file: lib/SNMP/Info/Layer2.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::3Com:
|
||||||
|
file: lib/SNMP/Info/Layer2/3Com.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Adtran:
|
||||||
|
file: lib/SNMP/Info/Layer2/Adtran.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Airespace:
|
||||||
|
file: lib/SNMP/Info/Layer2/Airespace.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Aironet:
|
||||||
|
file: lib/SNMP/Info/Layer2/Aironet.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Allied:
|
||||||
|
file: lib/SNMP/Info/Layer2/Allied.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Baystack:
|
||||||
|
file: lib/SNMP/Info/Layer2/Baystack.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::C1900:
|
||||||
|
file: lib/SNMP/Info/Layer2/C1900.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::C2900:
|
||||||
|
file: lib/SNMP/Info/Layer2/C2900.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Catalyst:
|
||||||
|
file: lib/SNMP/Info/Layer2/Catalyst.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Centillion:
|
||||||
|
file: lib/SNMP/Info/Layer2/Centillion.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Cisco:
|
||||||
|
file: lib/SNMP/Info/Layer2/Cisco.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::CiscoSB:
|
||||||
|
file: lib/SNMP/Info/Layer2/CiscoSB.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::HP:
|
||||||
|
file: lib/SNMP/Info/Layer2/HP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::HP4000:
|
||||||
|
file: lib/SNMP/Info/Layer2/HP4000.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::HPVC:
|
||||||
|
file: lib/SNMP/Info/Layer2/HPVC.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Kentrox:
|
||||||
|
file: lib/SNMP/Info/Layer2/Kentrox.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::N2270:
|
||||||
|
file: lib/SNMP/Info/Layer2/N2270.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::NAP222x:
|
||||||
|
file: lib/SNMP/Info/Layer2/NAP222x.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::NWSS2300:
|
||||||
|
file: lib/SNMP/Info/Layer2/NWSS2300.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Netgear:
|
||||||
|
file: lib/SNMP/Info/Layer2/Netgear.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Orinoco:
|
||||||
|
file: lib/SNMP/Info/Layer2/Orinoco.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Trapeze:
|
||||||
|
file: lib/SNMP/Info/Layer2/Trapeze.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::Ubiquiti:
|
||||||
|
file: lib/SNMP/Info/Layer2/Ubiquiti.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer2::ZyXEL_DSLAM:
|
||||||
|
file: lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3:
|
||||||
|
file: lib/SNMP/Info/Layer3.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Aironet:
|
||||||
|
file: lib/SNMP/Info/Layer3/Aironet.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::AlcatelLucent:
|
||||||
|
file: lib/SNMP/Info/Layer3/AlcatelLucent.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::AlteonAD:
|
||||||
|
file: lib/SNMP/Info/Layer3/AlteonAD.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Altiga:
|
||||||
|
file: lib/SNMP/Info/Layer3/Altiga.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Arista:
|
||||||
|
file: lib/SNMP/Info/Layer3/Arista.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Aruba:
|
||||||
|
file: lib/SNMP/Info/Layer3/Aruba.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::BayRS:
|
||||||
|
file: lib/SNMP/Info/Layer3/BayRS.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::BlueCoatSG:
|
||||||
|
file: lib/SNMP/Info/Layer3/BlueCoatSG.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::C3550:
|
||||||
|
file: lib/SNMP/Info/Layer3/C3550.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::C4000:
|
||||||
|
file: lib/SNMP/Info/Layer3/C4000.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::C6500:
|
||||||
|
file: lib/SNMP/Info/Layer3/C6500.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::CheckPoint:
|
||||||
|
file: lib/SNMP/Info/Layer3/CheckPoint.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Cisco:
|
||||||
|
file: lib/SNMP/Info/Layer3/Cisco.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::CiscoASA:
|
||||||
|
file: lib/SNMP/Info/Layer3/CiscoASA.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::CiscoFWSM:
|
||||||
|
file: lib/SNMP/Info/Layer3/CiscoFWSM.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::CiscoSwitch:
|
||||||
|
file: lib/SNMP/Info/Layer3/CiscoSwitch.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Contivity:
|
||||||
|
file: lib/SNMP/Info/Layer3/Contivity.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Cumulus:
|
||||||
|
file: lib/SNMP/Info/Layer3/Cumulus.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::DLink:
|
||||||
|
file: lib/SNMP/Info/Layer3/DLink.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Dell:
|
||||||
|
file: lib/SNMP/Info/Layer3/Dell.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Enterasys:
|
||||||
|
file: lib/SNMP/Info/Layer3/Enterasys.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Extreme:
|
||||||
|
file: lib/SNMP/Info/Layer3/Extreme.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::F5:
|
||||||
|
file: lib/SNMP/Info/Layer3/F5.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Force10:
|
||||||
|
file: lib/SNMP/Info/Layer3/Force10.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Fortinet:
|
||||||
|
file: lib/SNMP/Info/Layer3/Fortinet.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Foundry:
|
||||||
|
file: lib/SNMP/Info/Layer3/Foundry.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::H3C:
|
||||||
|
file: lib/SNMP/Info/Layer3/H3C.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::HP9300:
|
||||||
|
file: lib/SNMP/Info/Layer3/HP9300.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Huawei:
|
||||||
|
file: lib/SNMP/Info/Layer3/Huawei.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::IBMGbTor:
|
||||||
|
file: lib/SNMP/Info/Layer3/IBMGbTor.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Juniper:
|
||||||
|
file: lib/SNMP/Info/Layer3/Juniper.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Lantronix:
|
||||||
|
file: lib/SNMP/Info/Layer3/Lantronix.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Microsoft:
|
||||||
|
file: lib/SNMP/Info/Layer3/Microsoft.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Mikrotik:
|
||||||
|
file: lib/SNMP/Info/Layer3/Mikrotik.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::N1600:
|
||||||
|
file: lib/SNMP/Info/Layer3/N1600.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::NetSNMP:
|
||||||
|
file: lib/SNMP/Info/Layer3/NetSNMP.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Netscreen:
|
||||||
|
file: lib/SNMP/Info/Layer3/Netscreen.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Nexus:
|
||||||
|
file: lib/SNMP/Info/Layer3/Nexus.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::PacketFront:
|
||||||
|
file: lib/SNMP/Info/Layer3/PacketFront.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::PaloAlto:
|
||||||
|
file: lib/SNMP/Info/Layer3/PaloAlto.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Passport:
|
||||||
|
file: lib/SNMP/Info/Layer3/Passport.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Pf:
|
||||||
|
file: lib/SNMP/Info/Layer3/Pf.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Pica8:
|
||||||
|
file: lib/SNMP/Info/Layer3/Pica8.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::SonicWALL:
|
||||||
|
file: lib/SNMP/Info/Layer3/SonicWALL.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Steelhead:
|
||||||
|
file: lib/SNMP/Info/Layer3/Steelhead.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Sun:
|
||||||
|
file: lib/SNMP/Info/Layer3/Sun.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Tasman:
|
||||||
|
file: lib/SNMP/Info/Layer3/Tasman.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::Timetra:
|
||||||
|
file: lib/SNMP/Info/Layer3/Timetra.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::VMware:
|
||||||
|
file: lib/SNMP/Info/Layer3/VMware.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer3::VyOS:
|
||||||
|
file: lib/SNMP/Info/Layer3/VyOS.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer7:
|
||||||
|
file: lib/SNMP/Info/Layer7.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer7::APC:
|
||||||
|
file: lib/SNMP/Info/Layer7/APC.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer7::CiscoIPS:
|
||||||
|
file: lib/SNMP/Info/Layer7/CiscoIPS.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer7::Neoteris:
|
||||||
|
file: lib/SNMP/Info/Layer7/Neoteris.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::Layer7::Netscaler:
|
||||||
|
file: lib/SNMP/Info/Layer7/Netscaler.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::MAU:
|
||||||
|
file: lib/SNMP/Info/MAU.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::MRO:
|
||||||
|
file: lib/SNMP/Info/MRO.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::NortelStack:
|
||||||
|
file: lib/SNMP/Info/NortelStack.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::PowerEthernet:
|
||||||
|
file: lib/SNMP/Info/PowerEthernet.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::RapidCity:
|
||||||
|
file: lib/SNMP/Info/RapidCity.pm
|
||||||
|
version: '3.49'
|
||||||
|
SNMP::Info::SONMP:
|
||||||
|
file: lib/SNMP/Info/SONMP.pm
|
||||||
|
version: '3.49'
|
||||||
|
recommends:
|
||||||
|
Class::ISA: '0'
|
||||||
|
File::Slurp: '0'
|
||||||
|
Module::Info: '0'
|
||||||
|
Module::Load: '0'
|
||||||
|
PPI: '0'
|
||||||
|
requires:
|
||||||
|
Math::BigInt: '0'
|
||||||
|
SNMP: '0'
|
||||||
|
resources:
|
||||||
|
IRC: irc://irc.freenode.org/#netdisco
|
||||||
|
MailingList: https://lists.sourceforge.net/lists/listinfo/snmp-info-users
|
||||||
|
bugtracker: https://github.com/netdisco/snmp-info/issues
|
||||||
|
homepage: http://netdisco.org/
|
||||||
|
license: http://opensource.org/licenses/bsd-license.php
|
||||||
|
repository: https://github.com/netdisco/snmp-info
|
||||||
|
version: '3.49'
|
||||||
|
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
|
||||||
39
Makefile.PL
39
Makefile.PL
@@ -1,39 +0,0 @@
|
|||||||
# Module makefile for SNMP::Info (using ExtUtils::MakeMaker)
|
|
||||||
# $Id$
|
|
||||||
|
|
||||||
require 5.006;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
use ExtUtils::MakeMaker;
|
|
||||||
|
|
||||||
WriteMakefile(
|
|
||||||
NAME => 'SNMP::Info',
|
|
||||||
AUTHOR => 'Eric A. Miller <emiller@cpan.org>',
|
|
||||||
VERSION_FROM => 'Info.pm',
|
|
||||||
ABSTRACT_FROM => 'Info.pm',
|
|
||||||
PREREQ_PM => {
|
|
||||||
'Test::More' => 0,
|
|
||||||
'Math::BigInt' => 0,
|
|
||||||
'SNMP' => 0,
|
|
||||||
},
|
|
||||||
PMLIBDIRS => [ 'Info', '$(BASEEXT)' ],
|
|
||||||
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
|
|
||||||
clean => { FILES => 'SNMP-Info-*' },
|
|
||||||
realclean => { FILES => 'Makefile.old' },
|
|
||||||
( ( ExtUtils::MakeMaker->VERSION() lt '6.25' ) ? ( 'PL_FILES' => {} )
|
|
||||||
: ()
|
|
||||||
),
|
|
||||||
( ( ExtUtils::MakeMaker->VERSION() gt '6.30' ) ? ( 'LICENSE' => 'bsd' )
|
|
||||||
: ()
|
|
||||||
),
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
sub MY::postamble {
|
|
||||||
"
|
|
||||||
.PHONY: readme
|
|
||||||
readme: README
|
|
||||||
README: Info.pm
|
|
||||||
pod2text -l Info.pm > README";
|
|
||||||
}
|
|
||||||
279
README
279
README
@@ -1,31 +1,26 @@
|
|||||||
NAME
|
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.49
|
||||||
SNMP::Info - Version 3.34
|
|
||||||
|
|
||||||
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
|
||||||
Miller, Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
|
Miller, Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
|
||||||
|
|
||||||
Please visit <http://sourceforge.net/projects/snmp-info/> for most
|
Please visit http://sourceforge.net/projects/snmp-info/ for most
|
||||||
up-to-date list of developers.
|
up-to-date list of developers.
|
||||||
|
|
||||||
SNMP::Info was originally created at UCSC for the Netdisco project
|
SNMP::Info was originally created at UCSC for the Netdisco project
|
||||||
<http://netdisco.org> by Max Baker.
|
http://netdisco.org by Max Baker.
|
||||||
|
|
||||||
DEVICES SUPPORTED
|
DEVICES SUPPORTED
|
||||||
|
|
||||||
There are now generic classes for most types of device and so the
|
There are now generic classes for most types of device and so the
|
||||||
authors recommend loading SNMP::Info with AutoSpecify, and then
|
authors recommend loading SNMP::Info with AutoSpecify, and then
|
||||||
reporting to the mail list any missing functionality (such as neighbor
|
reporting to the mail list any missing functionality (such as neighbor
|
||||||
discovery tables).
|
discovery tables).
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
|
|
||||||
use SNMP::Info;
|
use SNMP::Info;
|
||||||
|
|
||||||
my $info = new SNMP::Info(
|
my $info = new SNMP::Info(
|
||||||
@@ -81,13 +76,11 @@ SYNOPSIS
|
|||||||
}
|
}
|
||||||
|
|
||||||
SUPPORT
|
SUPPORT
|
||||||
|
|
||||||
Please direct all support, help, and bug requests to the snmp-info-users
|
Please direct all support, help, and bug requests to the snmp-info-users
|
||||||
Mailing List at
|
Mailing List at
|
||||||
<http://lists.sourceforge.net/lists/listinfo/snmp-info-users>.
|
http://lists.sourceforge.net/lists/listinfo/snmp-info-users.
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
|
||||||
SNMP::Info gives an object oriented interface to information obtained
|
SNMP::Info gives an object oriented interface to information obtained
|
||||||
through SNMP.
|
through SNMP.
|
||||||
|
|
||||||
@@ -114,7 +107,6 @@ DESCRIPTION
|
|||||||
a couple hashes. See EXTENDING SNMP::INFO.
|
a couple hashes. See EXTENDING SNMP::INFO.
|
||||||
|
|
||||||
REQUIREMENTS
|
REQUIREMENTS
|
||||||
|
|
||||||
1. Net-SNMP
|
1. Net-SNMP
|
||||||
To use this module, you must have Net-SNMP installed on your system.
|
To use this module, you must have Net-SNMP installed on your system.
|
||||||
More specifically you need the Perl modules that come with it.
|
More specifically you need the Perl modules that come with it.
|
||||||
@@ -124,9 +116,9 @@ REQUIREMENTS
|
|||||||
The SNMP module is matched to an install of net-snmp, and must be
|
The SNMP module is matched to an install of net-snmp, and must be
|
||||||
installed from the net-snmp source tree.
|
installed from the net-snmp source tree.
|
||||||
|
|
||||||
The Perl module "SNMP" is found inside the net-snmp distribution. Go
|
The Perl module `SNMP' is found inside the net-snmp distribution. Go
|
||||||
to the perl/ directory of the distribution to install it, or run
|
to the perl/ directory of the distribution to install it, or run
|
||||||
"./configure --with-perl-modules" from the top directory of the
|
`./configure --with-perl-modules' from the top directory of the
|
||||||
net-snmp distribution.
|
net-snmp distribution.
|
||||||
|
|
||||||
Net-SNMP can be found at http://net-snmp.sourceforge.net
|
Net-SNMP can be found at http://net-snmp.sourceforge.net
|
||||||
@@ -145,28 +137,24 @@ REQUIREMENTS
|
|||||||
|
|
||||||
If you are using SNMP::Info separate from Netdisco, download the
|
If you are using SNMP::Info separate from Netdisco, download the
|
||||||
Netdisco MIB package at
|
Netdisco MIB package at
|
||||||
<http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest
|
http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest-
|
||||||
-snapshot/>
|
snapshot/
|
||||||
|
|
||||||
Make sure that your snmp.conf is updated to point to your MIB
|
Make sure that your snmp.conf is updated to point to your MIB
|
||||||
directory and that the MIBs are world-readable.
|
directory and that the MIBs are world-readable.
|
||||||
|
|
||||||
DESIGN GOALS
|
DESIGN GOALS
|
||||||
|
|
||||||
1. Use of textual MIB leaf identifier and enumerated values
|
1. Use of textual MIB leaf identifier and enumerated values
|
||||||
|
|
||||||
* All values are retrieved via MIB Leaf node names
|
* All values are retrieved via MIB Leaf node names
|
||||||
|
|
||||||
For example SNMP::Info has an entry in its %GLOBALS hash for
|
For example SNMP::Info has an entry in its %GLOBALS hash for
|
||||||
``sysName'' instead of 1.3.6.1.2.1.1.5.
|
``sysName'' instead of 1.3.6.1.2.1.1.5.
|
||||||
|
|
||||||
* Data returned is in the enumerated value form.
|
* Data returned is in the enumerated value form.
|
||||||
|
|
||||||
For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and
|
For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and
|
||||||
getting back 23
|
getting back `23'
|
||||||
|
|
||||||
SNMP::Info will ask for "RFC1213-MIB::ifType" and will get back
|
SNMP::Info will ask for `RFC1213-MIB::ifType' and will get back
|
||||||
"ppp".
|
`ppp'.
|
||||||
|
|
||||||
2. SNMP::Info is easily extended to new devices
|
2. SNMP::Info is easily extended to new devices
|
||||||
You can create a new subclass for a device by providing four hashes
|
You can create a new subclass for a device by providing four hashes
|
||||||
@@ -182,18 +170,16 @@ DESIGN GOALS
|
|||||||
inclusion in the next version.
|
inclusion in the next version.
|
||||||
|
|
||||||
SUBCLASSES
|
SUBCLASSES
|
||||||
|
|
||||||
These are the subclasses that implement MIBs and support devices:
|
These are the subclasses that implement MIBs and support devices:
|
||||||
|
|
||||||
Required MIBs not included in the install instructions above are noted
|
Required MIBs not included in the install instructions above are noted
|
||||||
here.
|
here.
|
||||||
|
|
||||||
MIB Subclasses
|
MIB Subclasses
|
||||||
|
|
||||||
These subclasses implement method to access one or more MIBs. These are
|
These subclasses implement method to access one or more MIBs. These are
|
||||||
not used directly, but rather inherited from device subclasses.
|
not used directly, but rather inherited from device subclasses.
|
||||||
|
|
||||||
For more info run "perldoc" on any of the following module names.
|
For more info run `perldoc' on any of the following module names.
|
||||||
|
|
||||||
SNMP::Info::AdslLine
|
SNMP::Info::AdslLine
|
||||||
SNMP Interface to the ADSL-LINE-MIB for ADSL interfaces.
|
SNMP Interface to the ADSL-LINE-MIB for ADSL interfaces.
|
||||||
@@ -203,7 +189,7 @@ SUBCLASSES
|
|||||||
See documentation in SNMP::Info::AdslLine for details.
|
See documentation in SNMP::Info::AdslLine for details.
|
||||||
|
|
||||||
SNMP::Info::Aggregate
|
SNMP::Info::Aggregate
|
||||||
SNMP Interface to IF-MIB "ifStackTable" Aggregated Links
|
SNMP Interface to IF-MIB `ifStackTable' Aggregated Links
|
||||||
|
|
||||||
See documentation in SNMP::Info::Aggregate for details.
|
See documentation in SNMP::Info::Aggregate for details.
|
||||||
|
|
||||||
@@ -367,7 +353,6 @@ SUBCLASSES
|
|||||||
See documentation in SNMP::Info::SONMP for details.
|
See documentation in SNMP::Info::SONMP for details.
|
||||||
|
|
||||||
Device Subclasses
|
Device Subclasses
|
||||||
|
|
||||||
These subclasses inherit from one or more classes to provide a common
|
These subclasses inherit from one or more classes to provide a common
|
||||||
interface to data obtainable from network devices.
|
interface to data obtainable from network devices.
|
||||||
|
|
||||||
@@ -420,6 +405,11 @@ SUBCLASSES
|
|||||||
|
|
||||||
See documentation in SNMP::Info::Layer2::3Com for details.
|
See documentation in SNMP::Info::Layer2::3Com for details.
|
||||||
|
|
||||||
|
SNMP::Info::Layer2::Adtran
|
||||||
|
Subclass for Adtran devices.
|
||||||
|
|
||||||
|
See documentation in SNMP::Info::Layer2::Adtran for details.
|
||||||
|
|
||||||
SNMP::Info::Layer2::Airespace
|
SNMP::Info::Layer2::Airespace
|
||||||
Subclass for Cisco (Airespace) wireless controllers.
|
Subclass for Cisco (Airespace) wireless controllers.
|
||||||
|
|
||||||
@@ -463,7 +453,7 @@ SUBCLASSES
|
|||||||
|
|
||||||
SNMP::Info::Layer2::Catalyst
|
SNMP::Info::Layer2::Catalyst
|
||||||
Subclass for Cisco Catalyst switches running CatOS. These
|
Subclass for Cisco Catalyst switches running CatOS. These
|
||||||
switches usually report a model number that starts with "wsc".
|
switches usually report a model number that starts with `wsc'.
|
||||||
Note that this class does not support everything that has the
|
Note that this class does not support everything that has the
|
||||||
name Catalyst.
|
name Catalyst.
|
||||||
|
|
||||||
@@ -538,7 +528,7 @@ SUBCLASSES
|
|||||||
See documentation in SNMP::Info::Layer2::Trapeze for details.
|
See documentation in SNMP::Info::Layer2::Trapeze for details.
|
||||||
|
|
||||||
SNMP::Info::Layer2::Ubiquiti
|
SNMP::Info::Layer2::Ubiquiti
|
||||||
SNMP Interface to Ubiquiti Access Points
|
SNMP Interface to Ubiquiti Access Points and other devices
|
||||||
|
|
||||||
See documentation in SNMP::Info::Layer2::Ubiquiti for details.
|
See documentation in SNMP::Info::Layer2::Ubiquiti for details.
|
||||||
|
|
||||||
@@ -615,6 +605,11 @@ SUBCLASSES
|
|||||||
|
|
||||||
See documentation in SNMP::Info::Layer3::C6500 for details.
|
See documentation in SNMP::Info::Layer3::C6500 for details.
|
||||||
|
|
||||||
|
SNMP::Info::Layer3::CheckPoint
|
||||||
|
Subclass for CheckPoint devices
|
||||||
|
|
||||||
|
See documentation in SNMP::Info::Layer3::CheckPoint for details.
|
||||||
|
|
||||||
SNMP::Info::Layer3::Cisco
|
SNMP::Info::Layer3::Cisco
|
||||||
This is a simple wrapper around layer 3 for IOS devices and the
|
This is a simple wrapper around layer 3 for IOS devices and the
|
||||||
base layer 3 Cisco class for other device specific layer 3 Cisco
|
base layer 3 Cisco class for other device specific layer 3 Cisco
|
||||||
@@ -641,6 +636,16 @@ SUBCLASSES
|
|||||||
|
|
||||||
See documentation in SNMP::Info::Layer3::Contivity for details.
|
See documentation in SNMP::Info::Layer3::Contivity for details.
|
||||||
|
|
||||||
|
SNMP::Info::Layer3::Cumulus
|
||||||
|
Subclass for Cumulus Networks Routers.
|
||||||
|
|
||||||
|
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. D-Link, the IBM
|
Subclass for Dell PowerConnect switches. D-Link, the IBM
|
||||||
BladeCenter Gigabit Ethernet Switch Module and some Linksys
|
BladeCenter Gigabit Ethernet Switch Module and some Linksys
|
||||||
@@ -792,6 +797,11 @@ SUBCLASSES
|
|||||||
|
|
||||||
See documentation in SNMP::Info::Layer3::Timetra for details.
|
See documentation in SNMP::Info::Layer3::Timetra for details.
|
||||||
|
|
||||||
|
SNMP::Info::Layer3::VyOS
|
||||||
|
Subclass for VyOS routers.
|
||||||
|
|
||||||
|
See documentation in SNMP::Info::Layer3::VyOS for details.
|
||||||
|
|
||||||
SNMP::Info::Layer3::VMware
|
SNMP::Info::Layer3::VMware
|
||||||
Subclass for VMware ESXi hosts.
|
Subclass for VMware ESXi hosts.
|
||||||
|
|
||||||
@@ -807,6 +817,11 @@ SUBCLASSES
|
|||||||
|
|
||||||
See documentation in SNMP::Info::Layer7::APC for details.
|
See documentation in SNMP::Info::Layer7::APC for details.
|
||||||
|
|
||||||
|
SNMP::Info::Layer7::CiscoIPS
|
||||||
|
SNMP Interface to Cisco IPS devices
|
||||||
|
|
||||||
|
See documentation in SNMP::Info::Layer7::Cisco IPS for details.
|
||||||
|
|
||||||
SNMP::Info::Layer7::Netscaler
|
SNMP::Info::Layer7::Netscaler
|
||||||
SNMP Interface to Citrix Netscaler appliances
|
SNMP Interface to Citrix Netscaler appliances
|
||||||
|
|
||||||
@@ -818,7 +833,6 @@ SUBCLASSES
|
|||||||
See documentation in SNMP::Info::Layer7::Neoteris for details.
|
See documentation in SNMP::Info::Layer7::Neoteris for details.
|
||||||
|
|
||||||
Thanks
|
Thanks
|
||||||
|
|
||||||
Thanks for testing and coding help (in no particular order) to :
|
Thanks for testing and coding help (in no particular order) to :
|
||||||
Alexander Barthel, Andy Ford, Alexander Hartmaier, Andrew Herrick, Alex
|
Alexander Barthel, Andy Ford, Alexander Hartmaier, Andrew Herrick, Alex
|
||||||
Kramarov, Bernhard Augenstein, Bradley Baetz, Brian Chow, Brian Wilson,
|
Kramarov, Bernhard Augenstein, Bradley Baetz, Brian Chow, Brian Wilson,
|
||||||
@@ -829,9 +843,7 @@ Thanks
|
|||||||
Netdisco README!
|
Netdisco README!
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
|
|
||||||
Constructor
|
Constructor
|
||||||
|
|
||||||
new()
|
new()
|
||||||
Creates a new object and connects via SNMP::Session.
|
Creates a new object and connects via SNMP::Session.
|
||||||
|
|
||||||
@@ -862,7 +874,7 @@ USAGE
|
|||||||
(default 0, which means "off")
|
(default 0, which means "off")
|
||||||
|
|
||||||
BulkWalk
|
BulkWalk
|
||||||
Set to 0 to turn off BULKWALK commands for SNMPv2 connections.
|
Set to `0' to turn off BULKWALK commands for SNMPv2 connections.
|
||||||
|
|
||||||
Note that BULKWALK is turned off for Net-SNMP versions 5.1.x
|
Note that BULKWALK is turned off for Net-SNMP versions 5.1.x
|
||||||
because of a bug.
|
because of a bug.
|
||||||
@@ -870,8 +882,8 @@ USAGE
|
|||||||
(default 1, which means "on")
|
(default 1, which means "on")
|
||||||
|
|
||||||
BulkRepeaters
|
BulkRepeaters
|
||||||
Set number of MaxRepeaters for BULKWALK operation. See "perldoc
|
Set number of MaxRepeaters for BULKWALK operation. See `perldoc
|
||||||
SNMP" -> bulkwalk() for more info.
|
SNMP' -> bulkwalk() for more info.
|
||||||
|
|
||||||
(default 20)
|
(default 20)
|
||||||
|
|
||||||
@@ -882,7 +894,7 @@ USAGE
|
|||||||
detect loops during a bulkwalk operation, Net-SNMP's internal
|
detect loops during a bulkwalk operation, Net-SNMP's internal
|
||||||
bulkwalk function must detect the loop.
|
bulkwalk function must detect the loop.
|
||||||
|
|
||||||
Set to 0 to turn off loop detection.
|
Set to `0' to turn off loop detection.
|
||||||
|
|
||||||
(default 1, which means "on")
|
(default 1, which means "on")
|
||||||
|
|
||||||
@@ -892,8 +904,8 @@ USAGE
|
|||||||
/usr/lib(64)/snmp, or $HOME/.snmp and uses those settings to
|
/usr/lib(64)/snmp, or $HOME/.snmp and uses those settings to
|
||||||
automatically parse MIB files, etc.
|
automatically parse MIB files, etc.
|
||||||
|
|
||||||
Set to 1 "on" to ignore Net-SNMP configuration files by
|
Set to `1' "on" to ignore Net-SNMP configuration files by
|
||||||
overriding the "SNMPCONFPATH" environmental variable during
|
overriding the `SNMPCONFPATH' environmental variable during
|
||||||
object initialization. Note: MibDirs must be defined or Net-SNMP
|
object initialization. Note: MibDirs must be defined or Net-SNMP
|
||||||
will not be able to load MIBs and initialize the object.
|
will not be able to load MIBs and initialize the object.
|
||||||
|
|
||||||
@@ -933,14 +945,14 @@ USAGE
|
|||||||
Offline
|
Offline
|
||||||
Causes SNMP::Info to avoid network activity and return data only
|
Causes SNMP::Info to avoid network activity and return data only
|
||||||
from its cache. If you ask for something not in the cache, an
|
from its cache. If you ask for something not in the cache, an
|
||||||
error is thrown. See also the "cache()" and "offline()" methods.
|
error is thrown. See also the `cache()' and `offline()' methods.
|
||||||
|
|
||||||
(default 0, which means "online")
|
(default 0, which means "online")
|
||||||
|
|
||||||
Cache
|
Cache
|
||||||
Pass in a HashRef to prime the cache of retrieved data. Useful
|
Pass in a HashRef to prime the cache of retrieved data. Useful
|
||||||
for creating an instance in "Offline" mode from a previously
|
for creating an instance in `Offline' mode from a previously
|
||||||
dumped cache. See also the "cache()" method to retrieve a cache
|
dumped cache. See also the `cache()' method to retrieve a cache
|
||||||
after running actial queries.
|
after running actial queries.
|
||||||
|
|
||||||
OTHER
|
OTHER
|
||||||
@@ -977,11 +989,10 @@ USAGE
|
|||||||
This is useful, e.g., when a device supports multiple contexts (via
|
This is useful, e.g., when a device supports multiple contexts (via
|
||||||
changes to the Community string, or via the SNMPv3 Context
|
changes to the Community string, or via the SNMPv3 Context
|
||||||
parameter), but a context that you want to access does not support
|
parameter), but a context that you want to access does not support
|
||||||
the objects (e.g., "sysObjectID", "sysDescr") that we use to
|
the objects (e.g., `sysObjectID', `sysDescr') that we use to
|
||||||
identify the device.
|
identify the device.
|
||||||
|
|
||||||
Data is Cached
|
Data is Cached
|
||||||
|
|
||||||
Methods and subroutines requesting data from a device will only load the
|
Methods and subroutines requesting data from a device will only load the
|
||||||
data once, and then return cached versions of that data.
|
data once, and then return cached versions of that data.
|
||||||
|
|
||||||
@@ -992,10 +1003,9 @@ USAGE
|
|||||||
globals and table methods.
|
globals and table methods.
|
||||||
|
|
||||||
The cache can be retrieved or set using the $info->cache() method. This
|
The cache can be retrieved or set using the $info->cache() method. This
|
||||||
works together with the "Offline" option.
|
works together with the `Offline' option.
|
||||||
|
|
||||||
Object Scalar Methods
|
Object Scalar Methods
|
||||||
|
|
||||||
These are for package related data, not directly supplied from SNMP.
|
These are for package related data, not directly supplied from SNMP.
|
||||||
|
|
||||||
$info->clear_cache()
|
$info->clear_cache()
|
||||||
@@ -1013,7 +1023,7 @@ USAGE
|
|||||||
|
|
||||||
$info->cache([new_cache])
|
$info->cache([new_cache])
|
||||||
Returns a HashRef of all cached data in this object. There will be a
|
Returns a HashRef of all cached data in this object. There will be a
|
||||||
"store" key for table data and then one key for each leaf.
|
`store' key for table data and then one key for each leaf.
|
||||||
|
|
||||||
Optionally sets the cache parameters if passed a HashRef.
|
Optionally sets the cache parameters if passed a HashRef.
|
||||||
|
|
||||||
@@ -1028,7 +1038,7 @@ USAGE
|
|||||||
Optionally sets the loopdetect parameter.
|
Optionally sets the loopdetect parameter.
|
||||||
|
|
||||||
$info->device_type()
|
$info->device_type()
|
||||||
Returns the Subclass name for this device. "SNMP::Info" is returned
|
Returns the Subclass name for this device. `SNMP::Info' is returned
|
||||||
if no more specific class is available.
|
if no more specific class is available.
|
||||||
|
|
||||||
First the device is checked for Layer 3 support and a specific
|
First the device is checked for Layer 3 support and a specific
|
||||||
@@ -1075,11 +1085,10 @@ USAGE
|
|||||||
calls on certain Cisco devices.
|
calls on certain Cisco devices.
|
||||||
|
|
||||||
See
|
See
|
||||||
<ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-community
|
ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-communityI
|
||||||
Indexing.html>
|
ndexing.html
|
||||||
|
|
||||||
Globals (Scalar Methods)
|
Globals (Scalar Methods)
|
||||||
|
|
||||||
These are methods to return scalar data from RFC1213.
|
These are methods to return scalar data from RFC1213.
|
||||||
|
|
||||||
Some subset of these is probably available for any network device that
|
Some subset of these is probably available for any network device that
|
||||||
@@ -1088,16 +1097,16 @@ USAGE
|
|||||||
$info->uptime()
|
$info->uptime()
|
||||||
Uptime in hundredths of seconds since device became available.
|
Uptime in hundredths of seconds since device became available.
|
||||||
|
|
||||||
("sysUpTime")
|
(`sysUpTime')
|
||||||
|
|
||||||
$info->contact()
|
$info->contact()
|
||||||
("sysContact")
|
(`sysContact')
|
||||||
|
|
||||||
$info->name()
|
$info->name()
|
||||||
("sysName")
|
(`sysName')
|
||||||
|
|
||||||
$info->location()
|
$info->location()
|
||||||
("sysLocation")
|
(`sysLocation')
|
||||||
|
|
||||||
$info->layers()
|
$info->layers()
|
||||||
This returns a binary encoded string where each digit represents a
|
This returns a binary encoded string where each digit represents a
|
||||||
@@ -1110,7 +1119,7 @@ USAGE
|
|||||||
|
|
||||||
See $info->has_layer()
|
See $info->has_layer()
|
||||||
|
|
||||||
("sysServices")
|
(`sysServices')
|
||||||
|
|
||||||
$info->ports()
|
$info->ports()
|
||||||
Number of interfaces available on this device.
|
Number of interfaces available on this device.
|
||||||
@@ -1118,17 +1127,16 @@ USAGE
|
|||||||
Not too useful as the number of SNMP interfaces usually does not
|
Not too useful as the number of SNMP interfaces usually does not
|
||||||
correspond with the number of physical ports
|
correspond with the number of physical ports
|
||||||
|
|
||||||
("ifNumber")
|
(`ifNumber')
|
||||||
|
|
||||||
$info->ipforwarding()
|
$info->ipforwarding()
|
||||||
The indication of whether the entity is acting as an IP gateway
|
The indication of whether the entity is acting as an IP gateway
|
||||||
|
|
||||||
Returns either forwarding or not-forwarding
|
Returns either forwarding or not-forwarding
|
||||||
|
|
||||||
("ipForwarding")
|
(`ipForwarding')
|
||||||
|
|
||||||
Table Methods
|
Table Methods
|
||||||
|
|
||||||
Each of these methods returns a hash_reference to a hash keyed on the
|
Each of these methods returns a hash_reference to a hash keyed on the
|
||||||
interface index in SNMP.
|
interface index in SNMP.
|
||||||
|
|
||||||
@@ -1143,14 +1151,13 @@ USAGE
|
|||||||
cases changes between reboots of the network device.
|
cases changes between reboots of the network device.
|
||||||
|
|
||||||
Partial Table Fetches
|
Partial Table Fetches
|
||||||
|
|
||||||
If you want to get only a part of an SNMP table or a single instance
|
If you want to get only a part of an SNMP table or a single instance
|
||||||
from the table and you know the IID for the part of the table that you
|
from the table and you know the IID for the part of the table that you
|
||||||
want, you can specify it in the call:
|
want, you can specify it in the call:
|
||||||
|
|
||||||
$local_routes = $info->ipr_route('192.168.0');
|
$local_routes = $info->ipr_route('192.168.0');
|
||||||
|
|
||||||
This will only fetch entries in the table that start with 192.168.0,
|
This will only fetch entries in the table that start with `192.168.0',
|
||||||
which in this case are routes on the local network.
|
which in this case are routes on the local network.
|
||||||
|
|
||||||
Remember that you must supply the partial IID (a numeric OID).
|
Remember that you must supply the partial IID (a numeric OID).
|
||||||
@@ -1158,7 +1165,6 @@ USAGE
|
|||||||
Partial table results are not cached.
|
Partial table results are not cached.
|
||||||
|
|
||||||
Interface Information
|
Interface Information
|
||||||
|
|
||||||
$info->interfaces()
|
$info->interfaces()
|
||||||
This methods is overridden in each subclass to provide a mapping
|
This methods is overridden in each subclass to provide a mapping
|
||||||
between the Interface Table Index (iid) and the physical port name.
|
between the Interface Table Index (iid) and the physical port name.
|
||||||
@@ -1178,82 +1184,81 @@ USAGE
|
|||||||
$info->i_index()
|
$info->i_index()
|
||||||
Default SNMP IID to Interface index.
|
Default SNMP IID to Interface index.
|
||||||
|
|
||||||
("ifIndex")
|
(`ifIndex')
|
||||||
|
|
||||||
$info->i_description()
|
$info->i_description()
|
||||||
Description of the interface. Usually a little longer single word
|
Description of the interface. Usually a little longer single word
|
||||||
name that is both human and machine friendly. Not always.
|
name that is both human and machine friendly. Not always.
|
||||||
|
|
||||||
("ifDescr")
|
(`ifDescr')
|
||||||
|
|
||||||
$info->i_type()
|
$info->i_type()
|
||||||
Interface type, such as Vlan, Ethernet, Serial
|
Interface type, such as Vlan, Ethernet, Serial
|
||||||
|
|
||||||
("ifType")
|
(`ifType')
|
||||||
|
|
||||||
$info->i_mtu()
|
$info->i_mtu()
|
||||||
INTEGER. Interface MTU value.
|
INTEGER. Interface MTU value.
|
||||||
|
|
||||||
("ifMtu")
|
(`ifMtu')
|
||||||
|
|
||||||
$info->i_speed()
|
$info->i_speed()
|
||||||
Speed of the link, human format. See munge_speed() later in document
|
Speed of the link, human format. See munge_speed() later in document
|
||||||
for details.
|
for details.
|
||||||
|
|
||||||
("ifSpeed", "ifHighSpeed" if necessary)
|
(`ifSpeed', `ifHighSpeed' if necessary)
|
||||||
|
|
||||||
$info->i_speed_raw()
|
$info->i_speed_raw()
|
||||||
Speed of the link in bits per second without munging. If
|
Speed of the link in bits per second without munging. If
|
||||||
i_speed_high is available it will be used and multiplied by
|
i_speed_high is available it will be used and multiplied by
|
||||||
1_000_000.
|
1_000_000.
|
||||||
|
|
||||||
("ifSpeed", "ifHighSpeed" if necessary)
|
(`ifSpeed', `ifHighSpeed' if necessary)
|
||||||
|
|
||||||
$info->i_speed_high()
|
$info->i_speed_high()
|
||||||
Speed of a high-speed link, human format. See munge_highspeed()
|
Speed of a high-speed link, human format. See munge_highspeed()
|
||||||
later in document for details. You should not need to call this
|
later in document for details. You should not need to call this
|
||||||
directly, as i_speed() will call it if it needs to.
|
directly, as i_speed() will call it if it needs to.
|
||||||
|
|
||||||
("ifHighSpeed")
|
(`ifHighSpeed')
|
||||||
|
|
||||||
$info->i_mac()
|
$info->i_mac()
|
||||||
MAC address of the interface. Note this is just the MAC of the port,
|
MAC address of the interface. Note this is just the MAC of the port,
|
||||||
not anything connected to it.
|
not anything connected to it.
|
||||||
|
|
||||||
("ifPhysAddress")
|
(`ifPhysAddress')
|
||||||
|
|
||||||
$info->i_up()
|
$info->i_up()
|
||||||
Link Status of the interface. Typical values are 'up' and 'down'.
|
Link Status of the interface. Typical values are 'up' and 'down'.
|
||||||
|
|
||||||
("ifOperStatus")
|
(`ifOperStatus')
|
||||||
|
|
||||||
$info->i_up_admin()
|
$info->i_up_admin()
|
||||||
Administrative status of the port. Typical values are 'enabled' and
|
Administrative status of the port. Typical values are 'enabled' and
|
||||||
'disabled'.
|
'disabled'.
|
||||||
|
|
||||||
("ifAdminStatus")
|
(`ifAdminStatus')
|
||||||
|
|
||||||
$info->i_lastchange()
|
$info->i_lastchange()
|
||||||
The value of "sysUpTime" when this port last changed states
|
The value of `sysUpTime' when this port last changed states
|
||||||
(up,down).
|
(up,down).
|
||||||
|
|
||||||
("ifLastChange")
|
(`ifLastChange')
|
||||||
|
|
||||||
$info->i_name()
|
$info->i_name()
|
||||||
Interface Name field. Supported by a smaller subset of devices, this
|
Interface Name field. Supported by a smaller subset of devices, this
|
||||||
fields is often human set.
|
fields is often human set.
|
||||||
|
|
||||||
("ifName")
|
(`ifName')
|
||||||
|
|
||||||
$info->i_alias()
|
$info->i_alias()
|
||||||
Interface Name field. For certain devices this is a more human
|
Interface Name field. For certain devices this is a more human
|
||||||
friendly form of i_description(). For others it is a human set field
|
friendly form of i_description(). For others it is a human set field
|
||||||
like i_name().
|
like i_name().
|
||||||
|
|
||||||
("ifAlias")
|
(`ifAlias')
|
||||||
|
|
||||||
Interface Statistics
|
Interface Statistics
|
||||||
|
|
||||||
$info->i_octet_in(), $info->i_octets_out(), $info->i_octet_in64(),
|
$info->i_octet_in(), $info->i_octets_out(), $info->i_octet_in64(),
|
||||||
$info->i_octets_out64()
|
$info->i_octets_out64()
|
||||||
Bandwidth.
|
Bandwidth.
|
||||||
@@ -1268,13 +1273,13 @@ USAGE
|
|||||||
global $SNMP::Info::BIGINT to 1 , or pass the BigInt value to new()
|
global $SNMP::Info::BIGINT to 1 , or pass the BigInt value to new()
|
||||||
if you want SNMP::Info to do it for you.
|
if you want SNMP::Info to do it for you.
|
||||||
|
|
||||||
("ifInOctets") ("ifOutOctets") ("ifHCInOctets") ("ifHCOutOctets")
|
(`ifInOctets') (`ifOutOctets') (`ifHCInOctets') (`ifHCOutOctets')
|
||||||
|
|
||||||
$info->i_errors_in(), $info->i_errors_out()
|
$info->i_errors_in(), $info->i_errors_out()
|
||||||
Number of packets that contained an error preventing delivery. See
|
Number of packets that contained an error preventing delivery. See
|
||||||
"IF-MIB" for more info.
|
`IF-MIB' for more info.
|
||||||
|
|
||||||
("ifInErrors") ("ifOutErrors")
|
(`ifInErrors') (`ifOutErrors')
|
||||||
|
|
||||||
$info->i_pkts_ucast_in(), $info->i_pkts_ucast_out(),
|
$info->i_pkts_ucast_in(), $info->i_pkts_ucast_out(),
|
||||||
$info->i_pkts_ucast_in64(), $info->i_pkts_ucast_out64()
|
$info->i_pkts_ucast_in64(), $info->i_pkts_ucast_out64()
|
||||||
@@ -1282,17 +1287,17 @@ USAGE
|
|||||||
|
|
||||||
64 bit version may not exist on all devices.
|
64 bit version may not exist on all devices.
|
||||||
|
|
||||||
("ifInUcastPkts") ("ifOutUcastPkts") ("ifHCInUcastPkts")
|
(`ifInUcastPkts') (`ifOutUcastPkts') (`ifHCInUcastPkts')
|
||||||
("ifHCOutUcastPkts")
|
(`ifHCOutUcastPkts')
|
||||||
|
|
||||||
$info->i_pkts_nucast_in(), $info->i_pkts_nucast_out(),
|
$info->i_pkts_nucast_in(), $info->i_pkts_nucast_out(),
|
||||||
Number of packets sent to a multicast or broadcast address.
|
Number of packets sent to a multicast or broadcast address.
|
||||||
|
|
||||||
These methods are deprecated by i_pkts_multi_in() and
|
These methods are deprecated by i_pkts_multi_in() and
|
||||||
i_pkts_bcast_in() according to "IF-MIB". Actual device usage may
|
i_pkts_bcast_in() according to `IF-MIB'. Actual device usage may
|
||||||
vary.
|
vary.
|
||||||
|
|
||||||
("ifInNUcastPkts") ("ifOutNUcastPkts")
|
(`ifInNUcastPkts') (`ifOutNUcastPkts')
|
||||||
|
|
||||||
$info->i_pkts_multi_in() $info->i_pkts_multi_out(),
|
$info->i_pkts_multi_in() $info->i_pkts_multi_out(),
|
||||||
$info->i_pkts_multi_in64(), $info->i_pkts_multi_out64()
|
$info->i_pkts_multi_in64(), $info->i_pkts_multi_out64()
|
||||||
@@ -1300,8 +1305,8 @@ USAGE
|
|||||||
|
|
||||||
64 bit version may not exist on all devices.
|
64 bit version may not exist on all devices.
|
||||||
|
|
||||||
("ifInMulticastPkts") ("ifOutMulticastPkts") ("ifHCInMulticastPkts")
|
(`ifInMulticastPkts') (`ifOutMulticastPkts') (`ifHCInMulticastPkts')
|
||||||
("ifHCOutMulticastPkts")
|
(`ifHCOutMulticastPkts')
|
||||||
|
|
||||||
$info->i_pkts_bcast_in() $info->i_pkts_bcast_out(),
|
$info->i_pkts_bcast_in() $info->i_pkts_bcast_out(),
|
||||||
$info->i_pkts_bcast_in64() $info->i_pkts_bcast_out64()
|
$info->i_pkts_bcast_in64() $info->i_pkts_bcast_out64()
|
||||||
@@ -1309,17 +1314,17 @@ USAGE
|
|||||||
|
|
||||||
64 bit version may not exist on all devices.
|
64 bit version may not exist on all devices.
|
||||||
|
|
||||||
("ifInBroadcastPkts") ("ifOutBroadcastPkts") ("ifHCInBroadcastPkts")
|
(`ifInBroadcastPkts') (`ifOutBroadcastPkts') (`ifHCInBroadcastPkts')
|
||||||
("ifHCOutBroadcastPkts")
|
(`ifHCOutBroadcastPkts')
|
||||||
|
|
||||||
$info->i_discards_in() $info->i_discards_out()
|
$info->i_discards_in() $info->i_discards_out()
|
||||||
"The number of inbound packets which were chosen to be discarded
|
"The number of inbound packets which were chosen to be discarded
|
||||||
even though no errors had been detected to prevent their being
|
even though no errors had been detected to prevent their being
|
||||||
deliverable to a higher-layer protocol. One possible reason for
|
deliverable to a higher-layer protocol. One possible reason for
|
||||||
discarding such a packet could be to free up buffer space."
|
discarding such a packet could be to free up buffer space."
|
||||||
("IF-MIB")
|
(`IF-MIB')
|
||||||
|
|
||||||
("ifInDiscards") ("ifOutDiscards")
|
(`ifInDiscards') (`ifOutDiscards')
|
||||||
|
|
||||||
$info->i_bad_proto_in()
|
$info->i_bad_proto_in()
|
||||||
"For packet-oriented interfaces, the number of packets received via
|
"For packet-oriented interfaces, the number of packets received via
|
||||||
@@ -1331,74 +1336,72 @@ USAGE
|
|||||||
that does not support protocol multiplexing, this counter will
|
that does not support protocol multiplexing, this counter will
|
||||||
always be 0."
|
always be 0."
|
||||||
|
|
||||||
("ifInUnknownProtos")
|
(`ifInUnknownProtos')
|
||||||
|
|
||||||
$info->i_qlen_out()
|
$info->i_qlen_out()
|
||||||
"The length of the output packet queue (in packets)."
|
"The length of the output packet queue (in packets)."
|
||||||
|
|
||||||
("ifOutQLen")
|
(`ifOutQLen')
|
||||||
|
|
||||||
$info->i_specific()
|
$info->i_specific()
|
||||||
See "IF-MIB" for full description
|
See `IF-MIB' for full description
|
||||||
|
|
||||||
("ifSpecific")
|
(`ifSpecific')
|
||||||
|
|
||||||
IP Address Table
|
IP Address Table
|
||||||
|
|
||||||
Each entry in this table is an IP address in use on this device. Usually
|
Each entry in this table is an IP address in use on this device. Usually
|
||||||
this is implemented in Layer3 Devices.
|
this is implemented in Layer3 Devices.
|
||||||
|
|
||||||
$info->ip_index()
|
$info->ip_index()
|
||||||
Maps the IP Table to the IID
|
Maps the IP Table to the IID
|
||||||
|
|
||||||
("ipAdEntIfIndex")
|
(`ipAdEntIfIndex')
|
||||||
|
|
||||||
$info->ip_table()
|
$info->ip_table()
|
||||||
Maps the Table to the IP address
|
Maps the Table to the IP address
|
||||||
|
|
||||||
("ipAdEntAddr")
|
(`ipAdEntAddr')
|
||||||
|
|
||||||
$info->ip_netmask()
|
$info->ip_netmask()
|
||||||
Gives netmask setting for IP table entry.
|
Gives netmask setting for IP table entry.
|
||||||
|
|
||||||
("ipAdEntNetMask")
|
(`ipAdEntNetMask')
|
||||||
|
|
||||||
$info->ip_broadcast()
|
$info->ip_broadcast()
|
||||||
Gives broadcast address for IP table entry.
|
Gives broadcast address for IP table entry.
|
||||||
|
|
||||||
("ipAdEntBcastAddr")
|
(`ipAdEntBcastAddr')
|
||||||
|
|
||||||
IP Routing Table
|
IP Routing Table
|
||||||
|
|
||||||
$info->ipr_route()
|
$info->ipr_route()
|
||||||
The route in question. A value of 0.0.0.0 is the default gateway
|
The route in question. A value of 0.0.0.0 is the default gateway
|
||||||
route.
|
route.
|
||||||
|
|
||||||
("ipRouteDest")
|
(`ipRouteDest')
|
||||||
|
|
||||||
$info->ipr_if()
|
$info->ipr_if()
|
||||||
The interface (IID) that the route is on. Use interfaces() to map.
|
The interface (IID) that the route is on. Use interfaces() to map.
|
||||||
|
|
||||||
("ipRouteIfIndex")
|
(`ipRouteIfIndex')
|
||||||
|
|
||||||
$info->ipr_1()
|
$info->ipr_1()
|
||||||
Primary routing metric for this route.
|
Primary routing metric for this route.
|
||||||
|
|
||||||
("ipRouteMetric1")
|
(`ipRouteMetric1')
|
||||||
|
|
||||||
$info->ipr_2()
|
$info->ipr_2()
|
||||||
If metrics are not used, they should be set to -1
|
If metrics are not used, they should be set to -1
|
||||||
|
|
||||||
("ipRouteMetric2")
|
(`ipRouteMetric2')
|
||||||
|
|
||||||
$info->ipr_3()
|
$info->ipr_3()
|
||||||
("ipRouteMetric3")
|
(`ipRouteMetric3')
|
||||||
|
|
||||||
$info->ipr_4()
|
$info->ipr_4()
|
||||||
("ipRouteMetric4")
|
(`ipRouteMetric4')
|
||||||
|
|
||||||
$info->ipr_5()
|
$info->ipr_5()
|
||||||
("ipRouteMetric5")
|
(`ipRouteMetric5')
|
||||||
|
|
||||||
$info->ipr_dest()
|
$info->ipr_dest()
|
||||||
From RFC1213:
|
From RFC1213:
|
||||||
@@ -1409,7 +1412,7 @@ USAGE
|
|||||||
of this field is the agent's IP address on that
|
of this field is the agent's IP address on that
|
||||||
interface.)"
|
interface.)"
|
||||||
|
|
||||||
("ipRouteNextHop")
|
(`ipRouteNextHop')
|
||||||
|
|
||||||
$info->ipr_type()
|
$info->ipr_type()
|
||||||
From RFC1213:
|
From RFC1213:
|
||||||
@@ -1421,7 +1424,6 @@ USAGE
|
|||||||
-- route to a non-local
|
-- route to a non-local
|
||||||
indirect(4) -- host/network/sub-network
|
indirect(4) -- host/network/sub-network
|
||||||
|
|
||||||
|
|
||||||
"The type of route. Note that the values
|
"The type of route. Note that the values
|
||||||
direct(3) and indirect(4) refer to the notion of
|
direct(3) and indirect(4) refer to the notion of
|
||||||
direct and indirect routing in the IP
|
direct and indirect routing in the IP
|
||||||
@@ -1441,7 +1443,7 @@ USAGE
|
|||||||
Proper interpretation of such entries requires
|
Proper interpretation of such entries requires
|
||||||
examination of the relevant ipRouteType object."
|
examination of the relevant ipRouteType object."
|
||||||
|
|
||||||
("ipRouteType")
|
(`ipRouteType')
|
||||||
|
|
||||||
$info->ipr_proto()
|
$info->ipr_proto()
|
||||||
From RFC1213:
|
From RFC1213:
|
||||||
@@ -1468,25 +1470,24 @@ USAGE
|
|||||||
ospf(13),
|
ospf(13),
|
||||||
bgp(14)
|
bgp(14)
|
||||||
|
|
||||||
("ipRouteProto")
|
(`ipRouteProto')
|
||||||
|
|
||||||
$info->ipr_age()
|
$info->ipr_age()
|
||||||
Seconds since route was last updated or validated.
|
Seconds since route was last updated or validated.
|
||||||
|
|
||||||
("ipRouteAge")
|
(`ipRouteAge')
|
||||||
|
|
||||||
$info->ipr_mask()
|
$info->ipr_mask()
|
||||||
Subnet Mask of route. 0.0.0.0 for default gateway.
|
Subnet Mask of route. 0.0.0.0 for default gateway.
|
||||||
|
|
||||||
("ipRouteMask")
|
(`ipRouteMask')
|
||||||
|
|
||||||
$info->ipr_info()
|
$info->ipr_info()
|
||||||
Reference to MIB definition specific to routing protocol.
|
Reference to MIB definition specific to routing protocol.
|
||||||
|
|
||||||
("ipRouteInfo")
|
(`ipRouteInfo')
|
||||||
|
|
||||||
Topology Information
|
Topology Information
|
||||||
|
|
||||||
Based upon the manufacturer and software version devices may support
|
Based upon the manufacturer and software version devices may support
|
||||||
some combination of Layer 2 topology protocol information. SNMP::Info
|
some combination of Layer 2 topology protocol information. SNMP::Info
|
||||||
supports querying Link Layer Discovery Protocol (LLDP), Cisco Discovery
|
supports querying Link Layer Discovery Protocol (LLDP), Cisco Discovery
|
||||||
@@ -1504,17 +1505,15 @@ USAGE
|
|||||||
AMAP: See SNMP::Info::AMAP for details.
|
AMAP: See SNMP::Info::AMAP for details.
|
||||||
|
|
||||||
Topology Capabilities
|
Topology Capabilities
|
||||||
|
|
||||||
$info->has_topo()
|
$info->has_topo()
|
||||||
Reports Layer 2 topology protocols which are supported and running
|
Reports Layer 2 topology protocols which are supported and running
|
||||||
on a device.
|
on a device.
|
||||||
|
|
||||||
Returns either a reference to an array of protocols, possible values
|
Returns either a reference to an array of protocols, possible values
|
||||||
being: "lldp", "cdp", "sonmp", "fdp", "edp", "amap" or "undef" if no
|
being: `lldp', `cdp', `sonmp', `fdp', `edp', `amap' or `undef' if no
|
||||||
protocols are supported or running.
|
protocols are supported or running.
|
||||||
|
|
||||||
Common Topology Table Information
|
Common Topology Table Information
|
||||||
|
|
||||||
The common topology table methods below will query the device for
|
The common topology table methods below will query the device for
|
||||||
information from the specified topology protocols and return a single
|
information from the specified topology protocols and return a single
|
||||||
hash combining all information. As a result, there may be identical
|
hash combining all information. As a result, there may be identical
|
||||||
@@ -1529,7 +1528,7 @@ USAGE
|
|||||||
|
|
||||||
If a reference to an array is provided as the second argument, those
|
If a reference to an array is provided as the second argument, those
|
||||||
protocols will be queried for information. The supported array values
|
protocols will be queried for information. The supported array values
|
||||||
are: "lldp", "cdp", "sonmp", "fdp", "edp", "amap".
|
are: `lldp', `cdp', `sonmp', `fdp', `edp', `amap'.
|
||||||
|
|
||||||
If nothing is passed in as the second argument, the methods will call
|
If nothing is passed in as the second argument, the methods will call
|
||||||
has_topo() to determine supported and running topology protocols on the
|
has_topo() to determine supported and running topology protocols on the
|
||||||
@@ -1565,7 +1564,7 @@ USAGE
|
|||||||
Returns reference to hash. Key: iid, Value: Remote Device Type
|
Returns reference to hash. Key: iid, Value: Remote Device Type
|
||||||
|
|
||||||
Note: EDP does not provide this information. LLDP uses
|
Note: EDP does not provide this information. LLDP uses
|
||||||
("lldpRemSysDesc") or "lldp_rem_sysname" as the closest match.
|
(`lldpRemSysDesc') or `lldp_rem_sysname' as the closest match.
|
||||||
|
|
||||||
$info->c_cap(partial, topology_protocol_arrayref)
|
$info->c_cap(partial, topology_protocol_arrayref)
|
||||||
Returns reference to hash of arrays. Key: iid, Value: Array of
|
Returns reference to hash of arrays. Key: iid, Value: Array of
|
||||||
@@ -1575,7 +1574,6 @@ USAGE
|
|||||||
Note: Only CDP and LLDP support this method.
|
Note: Only CDP and LLDP support this method.
|
||||||
|
|
||||||
SETTING DATA VIA SNMP
|
SETTING DATA VIA SNMP
|
||||||
|
|
||||||
This section explains how to use SNMP::Info to do SNMP Set operations.
|
This section explains how to use SNMP::Info to do SNMP Set operations.
|
||||||
|
|
||||||
$info->set_METHOD($value)
|
$info->set_METHOD($value)
|
||||||
@@ -1597,7 +1595,7 @@ SETTING DATA VIA SNMP
|
|||||||
$info->set_i_up_admin('down', $if_map{'FastEthernet0/0'})
|
$info->set_i_up_admin('down', $if_map{'FastEthernet0/0'})
|
||||||
or die "Couldn't disable the port. ",$info->error(1);
|
or die "Couldn't disable the port. ",$info->error(1);
|
||||||
|
|
||||||
NOTE: You must be connected to your device with a "ReadWrite" community
|
NOTE: You must be connected to your device with a `ReadWrite' community
|
||||||
string in order for set operations to work.
|
string in order for set operations to work.
|
||||||
|
|
||||||
NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data
|
NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data
|
||||||
@@ -1605,7 +1603,6 @@ SETTING DATA VIA SNMP
|
|||||||
subroutines will need to be added if they haven't been already.
|
subroutines will need to be added if they haven't been already.
|
||||||
|
|
||||||
Quiet Mode
|
Quiet Mode
|
||||||
|
|
||||||
SNMP::Info will not chirp anything to STDOUT unless there is a serious
|
SNMP::Info will not chirp anything to STDOUT unless there is a serious
|
||||||
error (in which case it will probably die).
|
error (in which case it will probably die).
|
||||||
|
|
||||||
@@ -1620,7 +1617,6 @@ Quiet Mode
|
|||||||
my $name = $info->name() or die "Couldn't get sysName!" . $name->error();
|
my $name = $info->name() or die "Couldn't get sysName!" . $name->error();
|
||||||
|
|
||||||
EXTENDING SNMP::INFO
|
EXTENDING SNMP::INFO
|
||||||
|
|
||||||
To support a new class (vendor or platform) of device, add a Perl
|
To support a new class (vendor or platform) of device, add a Perl
|
||||||
package with the data structures and methods listed below.
|
package with the data structures and methods listed below.
|
||||||
|
|
||||||
@@ -1630,16 +1626,15 @@ EXTENDING SNMP::INFO
|
|||||||
to verify the implementation.
|
to verify the implementation.
|
||||||
|
|
||||||
Gathering MIB data for SNMP::Info Developers
|
Gathering MIB data for SNMP::Info Developers
|
||||||
|
|
||||||
The preference is to open a feature request in the SourceForge project.
|
The preference is to open a feature request in the SourceForge project.
|
||||||
This allows all developers to have visibility into the request. Please
|
This allows all developers to have visibility into the request. Please
|
||||||
include pointers to the applicable platform MIBs. For development we
|
include pointers to the applicable platform MIBs. For development we
|
||||||
will need an "snmpwalk" of the device. There is a tool now included in
|
will need an `snmpwalk' of the device. There is a tool now included in
|
||||||
the SNMP::Info distribution to help with this task, although you'll most
|
the SNMP::Info distribution to help with this task, although you'll most
|
||||||
likely need to download the distribution from CPAN as it's included in
|
likely need to download the distribution from CPAN as it's included in
|
||||||
the ""t/util"" directory.
|
the "`contrib/util'" directory.
|
||||||
|
|
||||||
The utility is named "make_snmpdata.pl". Run it with a command line
|
The utility is named `make_snmpdata.pl'. Run it with a command line
|
||||||
like:
|
like:
|
||||||
|
|
||||||
./make_snmpdata.pl -c community -i -d device_ip \
|
./make_snmpdata.pl -c community -i -d device_ip \
|
||||||
@@ -1656,7 +1651,6 @@ EXTENDING SNMP::INFO
|
|||||||
ticket.
|
ticket.
|
||||||
|
|
||||||
Data Structures required in new Subclass
|
Data Structures required in new Subclass
|
||||||
|
|
||||||
A class inheriting this class must implement these data structures :
|
A class inheriting this class must implement these data structures :
|
||||||
|
|
||||||
$INIT
|
$INIT
|
||||||
@@ -1680,7 +1674,7 @@ EXTENDING SNMP::INFO
|
|||||||
|
|
||||||
%FUNCS
|
%FUNCS
|
||||||
Contains a hash in the form ( method_name => SNMP MIB leaf name)
|
Contains a hash in the form ( method_name => SNMP MIB leaf name)
|
||||||
These are table entries, such as the "ifIndex"
|
These are table entries, such as the `ifIndex'
|
||||||
|
|
||||||
To resolve MIB leaf name conflicts between private MIBs, you may
|
To resolve MIB leaf name conflicts between private MIBs, you may
|
||||||
prefix the leaf name with the MIB replacing each - (dash) and :
|
prefix the leaf name with the MIB replacing each - (dash) and :
|
||||||
@@ -1713,7 +1707,6 @@ EXTENDING SNMP::INFO
|
|||||||
)
|
)
|
||||||
|
|
||||||
Sample Subclass
|
Sample Subclass
|
||||||
|
|
||||||
Let's make a sample Layer 2 Device subclass. This class will inherit the
|
Let's make a sample Layer 2 Device subclass. This class will inherit the
|
||||||
Cisco Vlan module as an example.
|
Cisco Vlan module as an example.
|
||||||
|
|
||||||
@@ -1757,7 +1750,6 @@ EXTENDING SNMP::INFO
|
|||||||
'super_hero_powers' => 'SuperHeroIfPowers'
|
'super_hero_powers' => 'SuperHeroIfPowers'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
%MUNGE = (%SNMP::Info::Layer2::MUNGE,
|
%MUNGE = (%SNMP::Info::Layer2::MUNGE,
|
||||||
%SNMP::Info::CiscoVTP::MUNGE,
|
%SNMP::Info::CiscoVTP::MUNGE,
|
||||||
'super_hero_powers' => \&munge_powers
|
'super_hero_powers' => \&munge_powers
|
||||||
@@ -1806,9 +1798,7 @@ EXTENDING SNMP::INFO
|
|||||||
of SNMP::Info.
|
of SNMP::Info.
|
||||||
|
|
||||||
SNMP::INFO INTERNALS
|
SNMP::INFO INTERNALS
|
||||||
|
|
||||||
Object Namespace
|
Object Namespace
|
||||||
|
|
||||||
Internal data is stored with bareword keys. For example $info->{debug}
|
Internal data is stored with bareword keys. For example $info->{debug}
|
||||||
|
|
||||||
SNMP Data is stored or marked cached with keys starting with an
|
SNMP Data is stored or marked cached with keys starting with an
|
||||||
@@ -1818,7 +1808,6 @@ SNMP::INFO INTERNALS
|
|||||||
above.
|
above.
|
||||||
|
|
||||||
Package Globals
|
Package Globals
|
||||||
|
|
||||||
These set the default value for an object upon creation.
|
These set the default value for an object upon creation.
|
||||||
|
|
||||||
$DEBUG
|
$DEBUG
|
||||||
@@ -1836,11 +1825,10 @@ SNMP::INFO INTERNALS
|
|||||||
SNMP::Session. Or see method in new() to do it on an object scope.
|
SNMP::Session. Or see method in new() to do it on an object scope.
|
||||||
|
|
||||||
$REPEATERS
|
$REPEATERS
|
||||||
Default 20. MaxRepeaters for BULKWALK operations. See "perldoc SNMP"
|
Default 20. MaxRepeaters for BULKWALK operations. See `perldoc SNMP'
|
||||||
for more info. Can change by passing BulkRepeaters option in new()
|
for more info. Can change by passing BulkRepeaters option in new()
|
||||||
|
|
||||||
Data Munging Callback Subroutines
|
Data Munging Callback Subroutines
|
||||||
|
|
||||||
munge_speed()
|
munge_speed()
|
||||||
Makes human friendly speed ratings using %SPEED_MAP
|
Makes human friendly speed ratings using %SPEED_MAP
|
||||||
|
|
||||||
@@ -1885,13 +1873,13 @@ SNMP::INFO INTERNALS
|
|||||||
)
|
)
|
||||||
|
|
||||||
Note: high speed interfaces (usually 1 Gbps or faster) have their
|
Note: high speed interfaces (usually 1 Gbps or faster) have their
|
||||||
link speed in "ifHighSpeed". i_speed() automatically determines
|
link speed in `ifHighSpeed'. i_speed() automatically determines
|
||||||
whether to use "ifSpeed" or "ifHighSpeed"; if the latter is used,
|
whether to use `ifSpeed' or `ifHighSpeed'; if the latter is used,
|
||||||
the value is munged by munge_highspeed(). SNMP::Info can return
|
the value is munged by munge_highspeed(). SNMP::Info can return
|
||||||
speeds up to terabit levels this way.
|
speeds up to terabit levels this way.
|
||||||
|
|
||||||
munge_highspeed()
|
munge_highspeed()
|
||||||
Makes human friendly speed ratings for "ifHighSpeed"
|
Makes human friendly speed ratings for `ifHighSpeed'
|
||||||
|
|
||||||
munge_ip()
|
munge_ip()
|
||||||
Takes a binary IP and makes it dotted ASCII
|
Takes a binary IP and makes it dotted ASCII
|
||||||
@@ -1922,8 +1910,8 @@ SNMP::INFO INTERNALS
|
|||||||
See Math::BigInt for details.
|
See Math::BigInt for details.
|
||||||
|
|
||||||
munge_i_up
|
munge_i_up
|
||||||
Net-SNMP tends to load "RFC1213-MIB" first, and so ignores the
|
Net-SNMP tends to load `RFC1213-MIB' first, and so ignores the
|
||||||
updated enumeration for "ifOperStatus" in "IF-MIB". This munge
|
updated enumeration for `ifOperStatus' in `IF-MIB'. This munge
|
||||||
handles the "newer" definitions for the enumeration in IF-MIB.
|
handles the "newer" definitions for the enumeration in IF-MIB.
|
||||||
|
|
||||||
TODO: Get the precedence of MIBs and overriding of MIB data in
|
TODO: Get the precedence of MIBs and overriding of MIB data in
|
||||||
@@ -1944,7 +1932,6 @@ SNMP::INFO INTERNALS
|
|||||||
Takes an OID and return the object name if the right MIB is loaded.
|
Takes an OID and return the object name if the right MIB is loaded.
|
||||||
|
|
||||||
Internally Used Functions
|
Internally Used Functions
|
||||||
|
|
||||||
$info->init()
|
$info->init()
|
||||||
Used internally. Loads all entries in %MIBS.
|
Used internally. Loads all entries in %MIBS.
|
||||||
|
|
||||||
@@ -2064,7 +2051,7 @@ SNMP::INFO INTERNALS
|
|||||||
a MIB Leaf node name contained within a table of a loaded MIB.
|
a MIB Leaf node name contained within a table of a loaded MIB.
|
||||||
|
|
||||||
Supports partial table fetches and single instance table fetches.
|
Supports partial table fetches and single instance table fetches.
|
||||||
See "Partial Table Fetches" in SNMP::Info.
|
See SNMP::Info.
|
||||||
|
|
||||||
These methods return data as a reference to a hash.
|
These methods return data as a reference to a hash.
|
||||||
|
|
||||||
@@ -2082,7 +2069,7 @@ SNMP::INFO INTERNALS
|
|||||||
$info->_cache(attr, data)
|
$info->_cache(attr, data)
|
||||||
Cache retrieved data so that if it's asked for again, we use the
|
Cache retrieved data so that if it's asked for again, we use the
|
||||||
cache instead of going back to Net-SNMP. Data is cached inside the
|
cache instead of going back to Net-SNMP. Data is cached inside the
|
||||||
blessed hashref $self.
|
blessed hashref `$self'.
|
||||||
|
|
||||||
Accepts the leaf and value (scalar, or hashref for a table). Does
|
Accepts the leaf and value (scalar, or hashref for a table). Does
|
||||||
not return anything useful.
|
not return anything useful.
|
||||||
@@ -2122,7 +2109,6 @@ SNMP::INFO INTERNALS
|
|||||||
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. Generated
|
loaded MIBs are used by AUTOLOAD() to create dynamic methods. Generated
|
||||||
methods are inserted into the symbol table so that subsequent calls can
|
methods are inserted into the symbol table so that subsequent calls can
|
||||||
@@ -2145,7 +2131,6 @@ SNMP::INFO INTERNALS
|
|||||||
subclass.
|
subclass.
|
||||||
|
|
||||||
COPYRIGHT AND LICENSE
|
COPYRIGHT AND LICENSE
|
||||||
|
|
||||||
Changes from SNMP::Info Version 0.7 and on are: Copyright (c) 2003-2010
|
Changes from SNMP::Info Version 0.7 and on are: Copyright (c) 2003-2010
|
||||||
Max Baker and SNMP::Info Developers All rights reserved.
|
Max Baker and SNMP::Info Developers All rights reserved.
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
use File::Glob qw/bsd_glob/;
|
use File::Glob qw/bsd_glob/;
|
||||||
|
|
||||||
my @pms = glob_rec("../Info");
|
my @pms = glob_rec("./lib");
|
||||||
|
|
||||||
$new_version = shift @ARGV || '3.01';
|
$new_version = shift @ARGV || die "missing new version\n";
|
||||||
|
|
||||||
foreach my $p (@pms) {
|
foreach my $p (@pms) {
|
||||||
print "$p\n";
|
print "$p\n";
|
||||||
@@ -16,6 +16,7 @@ foreach my $p (@pms) {
|
|||||||
|
|
||||||
while (<O>) {
|
while (<O>) {
|
||||||
s/^\s*\$VERSION\s+=\s*'[^']+'\s*;/\$VERSION = '$new_version';/;
|
s/^\s*\$VERSION\s+=\s*'[^']+'\s*;/\$VERSION = '$new_version';/;
|
||||||
|
s/^SNMP::Info - Version [\d.]+$/SNMP::Info - Version $new_version/;
|
||||||
print P;
|
print P;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ use vars
|
|||||||
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
|
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
|
||||||
$NOSUCH $BIGINT $REPEATERS/;
|
$NOSUCH $BIGINT $REPEATERS/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
|
|||||||
|
|
||||||
=head1 VERSION
|
=head1 VERSION
|
||||||
|
|
||||||
SNMP::Info - Version 3.34
|
SNMP::Info - Version 3.49
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
@@ -439,7 +439,7 @@ interface to data obtainable from network devices.
|
|||||||
All the required MIB files are included in the netdisco-mib package.
|
All the required MIB files are included in the netdisco-mib package.
|
||||||
(See Above).
|
(See Above).
|
||||||
|
|
||||||
=over
|
=over 4
|
||||||
|
|
||||||
=item SNMP::Info::Layer1
|
=item SNMP::Info::Layer1
|
||||||
|
|
||||||
@@ -447,7 +447,7 @@ Generic Layer1 Device subclass.
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer1> for details.
|
See documentation in L<SNMP::Info::Layer1> for details.
|
||||||
|
|
||||||
=over
|
=over 4
|
||||||
|
|
||||||
=item SNMP::Info::Layer1::Allied
|
=item SNMP::Info::Layer1::Allied
|
||||||
|
|
||||||
@@ -501,6 +501,12 @@ SNMP::Info::Layer2::3Com - SNMP Interface to L2 3Com Switches
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer2::3Com> for details.
|
See documentation in L<SNMP::Info::Layer2::3Com> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer2::Adtran
|
||||||
|
|
||||||
|
Subclass for Adtran devices.
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer2::Adtran> for details.
|
||||||
|
|
||||||
=item SNMP::Info::Layer2::Airespace
|
=item SNMP::Info::Layer2::Airespace
|
||||||
|
|
||||||
Subclass for Cisco (Airespace) wireless controllers.
|
Subclass for Cisco (Airespace) wireless controllers.
|
||||||
@@ -634,7 +640,7 @@ See documentation in L<SNMP::Info::Layer2::Trapeze> for details.
|
|||||||
|
|
||||||
=item SNMP::Info::Layer2::Ubiquiti
|
=item SNMP::Info::Layer2::Ubiquiti
|
||||||
|
|
||||||
SNMP Interface to Ubiquiti Access Points
|
SNMP Interface to Ubiquiti Access Points and other devices
|
||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer2::Ubiquiti> for details.
|
See documentation in L<SNMP::Info::Layer2::Ubiquiti> for details.
|
||||||
|
|
||||||
@@ -724,6 +730,12 @@ This class covers Catalyst 6500s in native mode, hybrid mode. Catalyst
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer3::C6500> for details.
|
See documentation in L<SNMP::Info::Layer3::C6500> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3::CheckPoint
|
||||||
|
|
||||||
|
Subclass for CheckPoint devices
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3::CheckPoint> for details.
|
||||||
|
|
||||||
=item SNMP::Info::Layer3::Cisco
|
=item SNMP::Info::Layer3::Cisco
|
||||||
|
|
||||||
This is a simple wrapper around layer 3 for IOS devices and the base layer 3
|
This is a simple wrapper around layer 3 for IOS devices and the base layer 3
|
||||||
@@ -754,6 +766,18 @@ Subclass for Avaya/Nortel Contivity/VPN Routers.
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer3::Contivity> for details.
|
See documentation in L<SNMP::Info::Layer3::Contivity> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3::Cumulus
|
||||||
|
|
||||||
|
Subclass for Cumulus Networks Routers.
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3::Cumulus> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3::DLink
|
||||||
|
|
||||||
|
Subclass for DLink devices.
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3::DLink> for details.
|
||||||
|
|
||||||
=item SNMP::Info::Layer3::Dell
|
=item SNMP::Info::Layer3::Dell
|
||||||
|
|
||||||
Subclass for Dell PowerConnect switches. D-Link, the IBM BladeCenter
|
Subclass for Dell PowerConnect switches. D-Link, the IBM BladeCenter
|
||||||
@@ -931,6 +955,12 @@ Alcatel-Lucent SR Class.
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer3::Timetra> for details.
|
See documentation in L<SNMP::Info::Layer3::Timetra> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3::VyOS
|
||||||
|
|
||||||
|
Subclass for VyOS routers.
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3::VyOS> for details.
|
||||||
|
|
||||||
=item SNMP::Info::Layer3::VMware
|
=item SNMP::Info::Layer3::VMware
|
||||||
|
|
||||||
Subclass for VMware ESXi hosts.
|
Subclass for VMware ESXi hosts.
|
||||||
@@ -957,6 +987,12 @@ SNMP Interface to APC UPS devices
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer7::APC> for details.
|
See documentation in L<SNMP::Info::Layer7::APC> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer7::CiscoIPS
|
||||||
|
|
||||||
|
SNMP Interface to Cisco IPS devices
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer7::Cisco IPS> for details.
|
||||||
|
|
||||||
=item SNMP::Info::Layer7::Netscaler
|
=item SNMP::Info::Layer7::Netscaler
|
||||||
|
|
||||||
SNMP Interface to Citrix Netscaler appliances
|
SNMP Interface to Citrix Netscaler appliances
|
||||||
@@ -1512,16 +1548,19 @@ sub device_type {
|
|||||||
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',
|
||||||
171 => 'SNMP::Info::Layer3::Dell',
|
171 => 'SNMP::Info::Layer3::DLink',
|
||||||
244 => 'SNMP::Info::Layer3::Lantronix',
|
244 => 'SNMP::Info::Layer3::Lantronix',
|
||||||
311 => 'SNMP::Info::Layer3::Microsoft',
|
311 => 'SNMP::Info::Layer3::Microsoft',
|
||||||
|
664 => 'SNMP::Info::Layer2::Adtran',
|
||||||
674 => 'SNMP::Info::Layer3::Dell',
|
674 => 'SNMP::Info::Layer3::Dell',
|
||||||
|
1588 => 'SNMP::Info::Layer3::Foundry',
|
||||||
1872 => 'SNMP::Info::Layer3::AlteonAD',
|
1872 => 'SNMP::Info::Layer3::AlteonAD',
|
||||||
1916 => 'SNMP::Info::Layer3::Extreme',
|
1916 => 'SNMP::Info::Layer3::Extreme',
|
||||||
1991 => 'SNMP::Info::Layer3::Foundry',
|
1991 => 'SNMP::Info::Layer3::Foundry',
|
||||||
2011 => 'SNMP::Info::Layer3::Huawei',
|
2011 => 'SNMP::Info::Layer3::Huawei',
|
||||||
2021 => 'SNMP::Info::Layer3::NetSNMP',
|
2021 => 'SNMP::Info::Layer3::NetSNMP',
|
||||||
2272 => 'SNMP::Info::Layer3::Passport',
|
2272 => 'SNMP::Info::Layer3::Passport',
|
||||||
|
2620 => 'SNMP::Info::Layer3::CheckPoint',
|
||||||
2636 => 'SNMP::Info::Layer3::Juniper',
|
2636 => 'SNMP::Info::Layer3::Juniper',
|
||||||
2925 => 'SNMP::Info::Layer1::Cyclades',
|
2925 => 'SNMP::Info::Layer1::Cyclades',
|
||||||
3076 => 'SNMP::Info::Layer3::Altiga',
|
3076 => 'SNMP::Info::Layer3::Altiga',
|
||||||
@@ -1550,6 +1589,9 @@ sub device_type {
|
|||||||
30065 => 'SNMP::Info::Layer3::Arista',
|
30065 => 'SNMP::Info::Layer3::Arista',
|
||||||
35098 => 'SNMP::Info::Layer3::Pica8',
|
35098 => 'SNMP::Info::Layer3::Pica8',
|
||||||
41112 => 'SNMP::Info::Layer2::Ubiquiti',
|
41112 => 'SNMP::Info::Layer2::Ubiquiti',
|
||||||
|
4413 => 'SNMP::Info::Layer2::Ubiquiti',
|
||||||
|
30803 => 'SNMP::Info::Layer3::VyOS',
|
||||||
|
40310 => 'SNMP::Info::Layer3::Cumulus',
|
||||||
);
|
);
|
||||||
|
|
||||||
my %l2sysoidmap = (
|
my %l2sysoidmap = (
|
||||||
@@ -1557,8 +1599,9 @@ 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',
|
||||||
171 => 'SNMP::Info::Layer3::Dell',
|
171 => 'SNMP::Info::Layer3::DLink',
|
||||||
207 => 'SNMP::Info::Layer2::Allied',
|
207 => 'SNMP::Info::Layer2::Allied',
|
||||||
|
664 => 'SNMP::Info::Layer2::Adtran',
|
||||||
674 => 'SNMP::Info::Layer3::Dell',
|
674 => 'SNMP::Info::Layer3::Dell',
|
||||||
1872 => 'SNMP::Info::Layer3::AlteonAD',
|
1872 => 'SNMP::Info::Layer3::AlteonAD',
|
||||||
1916 => 'SNMP::Info::Layer3::Extreme',
|
1916 => 'SNMP::Info::Layer3::Extreme',
|
||||||
@@ -1671,7 +1714,9 @@ sub device_type {
|
|||||||
=~ /^(BayStack|Ethernet\s+Routing\s+Switch)\s[2345](\d){2,3}/i );
|
=~ /^(BayStack|Ethernet\s+Routing\s+Switch)\s[2345](\d){2,3}/i );
|
||||||
|
|
||||||
# Nortel Contivity
|
# Nortel Contivity
|
||||||
$objtype = 'SNMP::Info::Layer3::Contivity' if $desc =~ /(\bCES\b|\bNVR\sV\d)/;
|
$objtype = 'SNMP::Info::Layer3::Contivity'
|
||||||
|
if $desc =~ /(\bCES\b|\bNVR\sV\d)/
|
||||||
|
and (!defined $id or !defined $l3sysoidmap{$id});
|
||||||
|
|
||||||
# SonicWALL
|
# SonicWALL
|
||||||
$objtype = 'SNMP::Info::Layer3::SonicWALL' if $desc =~ /SonicWALL/i;
|
$objtype = 'SNMP::Info::Layer3::SonicWALL' if $desc =~ /SonicWALL/i;
|
||||||
@@ -1689,6 +1734,11 @@ sub device_type {
|
|||||||
$objtype = 'SNMP::Info::Layer3::CiscoFWSM'
|
$objtype = 'SNMP::Info::Layer3::CiscoFWSM'
|
||||||
if ( $desc =~ /Cisco Firewall Services Module/i );
|
if ( $desc =~ /Cisco Firewall Services Module/i );
|
||||||
|
|
||||||
|
# Cisco Small Business (300 500) series override
|
||||||
|
# This is for enterprises(1).cisco(9).otherEnterprises(6).ciscosb(1)
|
||||||
|
$objtype = 'SNMP::Info::Layer2::CiscoSB'
|
||||||
|
if ( $soid =~ /^\.?1\.3\.6\.1\.4\.1\.9\.6\.1/ );
|
||||||
|
|
||||||
# Avaya Secure Router
|
# Avaya Secure Router
|
||||||
$objtype = 'SNMP::Info::Layer3::Tasman'
|
$objtype = 'SNMP::Info::Layer3::Tasman'
|
||||||
if ( $desc =~ /^(avaya|nortel)\s+(SR|secure\srouter)\s+\d{4}/i );
|
if ( $desc =~ /^(avaya|nortel)\s+(SR|secure\srouter)\s+\d{4}/i );
|
||||||
@@ -2940,7 +2990,7 @@ allows all developers to have visibility into the request. Please include
|
|||||||
pointers to the applicable platform MIBs. For development we will need an
|
pointers to the applicable platform MIBs. For development we will need an
|
||||||
C<snmpwalk> of the device. There is a tool now included in the SNMP::Info
|
C<snmpwalk> of the device. There is a tool now included in the SNMP::Info
|
||||||
distribution to help with this task, although you'll most likely need to
|
distribution to help with this task, although you'll most likely need to
|
||||||
download the distribution from CPAN as it's included in the "C<t/util>"
|
download the distribution from CPAN as it's included in the "C<contrib/util>"
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
The utility is named C<make_snmpdata.pl>. Run it with a command line like:
|
The utility is named C<make_snmpdata.pl>. Run it with a command line like:
|
||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS
|
%MIBS
|
||||||
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
|
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
|
||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
|
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (); # IF-MIB
|
%MIBS = (); # IF-MIB
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
|
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
|
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
|
||||||
@@ -43,7 +43,7 @@ use SNMP::Info;
|
|||||||
use vars
|
use vars
|
||||||
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
|
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
# Five data structures required by SNMP::Info
|
# Five data structures required by SNMP::Info
|
||||||
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
|
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
|
||||||
@@ -43,7 +43,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::IEEE802dot3ad::MIBS,
|
%SNMP::Info::IEEE802dot3ad::MIBS,
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
|
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
|
||||||
@@ -97,6 +97,10 @@ sub copy_run_tftp {
|
|||||||
print "Using new method, row iid: $rand\n" if $ciscoconfig->debug();
|
print "Using new method, row iid: $rand\n" if $ciscoconfig->debug();
|
||||||
|
|
||||||
#Check each set, delete created row if any fail
|
#Check each set, delete created row if any fail
|
||||||
|
unless ( $ciscoconfig->set_config_row_status( 5, $rand ) ) {
|
||||||
|
$ciscoconfig->error_throw("Initializing config copy instruction failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
unless ( $ciscoconfig->set_config_source_type( 4, $rand ) ) {
|
unless ( $ciscoconfig->set_config_source_type( 4, $rand ) ) {
|
||||||
$ciscoconfig->error_throw("Setting source type failed");
|
$ciscoconfig->error_throw("Setting source type failed");
|
||||||
unless ( $ciscoconfig->set_config_row_status( 6, $rand ) ) {
|
unless ( $ciscoconfig->set_config_row_status( 6, $rand ) ) {
|
||||||
@@ -38,12 +38,13 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
|
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
|
||||||
'CISCO-PAE-MIB' => 'ciscoPaeMIB',
|
'CISCO-PAE-MIB' => 'ciscoPaeMIB',
|
||||||
'IEEE8021-PAE-MIB' => 'dot1xAuthLastEapolFrameSource',
|
'IEEE8021-PAE-MIB' => 'dot1xAuthLastEapolFrameSource',
|
||||||
|
'CISCO-ERR-DISABLE-MIB' => 'ciscoErrDisableMIB',
|
||||||
);
|
);
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
@@ -99,6 +100,9 @@ $VERSION = '3.34';
|
|||||||
# IEEE8021-PAE-MIB::dot1xPaePortEntry
|
# IEEE8021-PAE-MIB::dot1xPaePortEntry
|
||||||
'pae_i_capabilities' => 'dot1xPaePortCapabilities',
|
'pae_i_capabilities' => 'dot1xPaePortCapabilities',
|
||||||
'pae_i_last_eapol_frame_source' => 'dot1xAuthLastEapolFrameSource',
|
'pae_i_last_eapol_frame_source' => 'dot1xAuthLastEapolFrameSource',
|
||||||
|
|
||||||
|
# CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusEntry
|
||||||
|
'cerr_i_cause' => 'cErrDisableIfStatusCause',
|
||||||
);
|
);
|
||||||
|
|
||||||
%MUNGE = (
|
%MUNGE = (
|
||||||
@@ -123,13 +127,29 @@ sub munge_pae_capabilities {
|
|||||||
return join( ' ', @vals );
|
return join( ' ', @vals );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Define a generic method to show the cause for a port to be err-disabled.
|
||||||
|
# Cisco indexes cErrDisableIfStatusCause by {ifindex,vlan}, but for a more
|
||||||
|
# generic method, using ifIndex only makes it easier to implement across
|
||||||
|
# device classes. Besides, several (most?) err-disable features will disable
|
||||||
|
# the whole interface anyway, and not just a vlan on the interface.
|
||||||
|
sub i_err_disable_cause {
|
||||||
|
my $cps = shift;
|
||||||
|
my $ret;
|
||||||
|
my $causes = $cps->cerr_i_cause() || {};
|
||||||
|
foreach my $interfacevlan (keys %$causes) {
|
||||||
|
my ($iid, $vid) = split(/\./, $interfacevlan);
|
||||||
|
$ret->{$iid} = $causes->{$interfacevlan};
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
SNMP::Info::CiscoPortSecurity - SNMP Interface to data from
|
SNMP::Info::CiscoPortSecurity - SNMP Interface to data from
|
||||||
F<CISCO-PORT-SECURITY-MIB> and F<CISCO-PAE-MIB>
|
F<CISCO-PORT-SECURITY-MIB>, F<CISCO-PAE-MIB> and F<CISCO-ERR-DISABLE-MIB>.
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
@@ -153,8 +173,9 @@ Eric Miller
|
|||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
SNMP::Info::CiscoPortSecurity is a subclass of SNMP::Info that provides
|
SNMP::Info::CiscoPortSecurity is a subclass of SNMP::Info that provides
|
||||||
an interface to the F<CISCO-PORT-SECURITY-MIB> and F<CISCO-PAE-MIB>. These
|
an interface to the F<CISCO-PORT-SECURITY-MIB>, F<CISCO-PAE-MIB> and
|
||||||
MIBs are used across the Catalyst family under CatOS and IOS.
|
F<CISCO-ERR-DISABLE-MIB>. These MIBs are used across the Catalyst
|
||||||
|
family under CatOS and IOS.
|
||||||
|
|
||||||
Use or create in a subclass of SNMP::Info. Do not use directly.
|
Use or create in a subclass of SNMP::Info. Do not use directly.
|
||||||
|
|
||||||
@@ -172,6 +193,8 @@ None.
|
|||||||
|
|
||||||
=item F<IEEE8021-PAE-MIB>
|
=item F<IEEE8021-PAE-MIB>
|
||||||
|
|
||||||
|
=item F<CISCO-ERR-DISABLE-MIB>
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head1 GLOBALS
|
=head1 GLOBALS
|
||||||
@@ -374,6 +397,31 @@ The source MAC address carried in the most recently received EAPOL frame.
|
|||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
=head2 C<CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusEntry>
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $cps->cerr_i_cause()
|
||||||
|
|
||||||
|
C<cErrDisableIfStatusCause>
|
||||||
|
|
||||||
|
Indicates the feature/event that caused the {interface, vlan} (or the entire
|
||||||
|
interface) to be error-disabled.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item C<i_err_disable_cause>
|
||||||
|
|
||||||
|
Returns a HASH reference mapping ifIndex to err-disabled cause. The returned
|
||||||
|
data is sparse, so if the ifIndex is not present in the return value, the port
|
||||||
|
is not err-disabled.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
=head1 Data Munging Callback Subroutines
|
=head1 Data Munging Callback Subroutines
|
||||||
|
|
||||||
=over
|
=over
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
|
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
|
||||||
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
|
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
|
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
|
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
|
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'SNMPv2-MIB' => 'sysDescr',
|
'SNMPv2-MIB' => 'sysDescr',
|
||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
|
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
@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//;
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-VTP-MIB' => 'vtpVlanName',
|
'CISCO-VTP-MIB' => 'vtpVlanName',
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
|
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
|
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
|
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
|
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ $VERSION = '3.34';
|
|||||||
'fdp_run' => 'snFdpGlobalRun',
|
'fdp_run' => 'snFdpGlobalRun',
|
||||||
'fdp_interval' => 'snFdpGlobalMessageInterval',
|
'fdp_interval' => 'snFdpGlobalMessageInterval',
|
||||||
'fdp_holdtime' => 'snFdpGlobalHoldTime',
|
'fdp_holdtime' => 'snFdpGlobalHoldTime',
|
||||||
'fdp_id' => 'snFdpGlobalDeviceId',
|
'fdp_gid' => 'snFdpGlobalDeviceId',
|
||||||
);
|
);
|
||||||
|
|
||||||
%FUNCS = (
|
%FUNCS = (
|
||||||
@@ -231,7 +231,7 @@ Time in seconds that FDP messages are kept.
|
|||||||
|
|
||||||
(C<fdpGlobalHoldTime>)
|
(C<fdpGlobalHoldTime>)
|
||||||
|
|
||||||
=item $fdp->fdp_id()
|
=item $fdp->fdp_gid()
|
||||||
|
|
||||||
Returns FDP device ID.
|
Returns FDP device ID.
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
|
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Aggregate;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Aggregate::MIBS,
|
%SNMP::Info::Aggregate::MIBS,
|
||||||
@@ -44,7 +44,7 @@ use constant {
|
|||||||
IPV6MIB => 3,
|
IPV6MIB => 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -75,12 +75,15 @@ $VERSION = '3.34';
|
|||||||
'ip_addr6_pfx' => 'ipAddressPrefix', # IP-MIB
|
'ip_addr6_pfx' => 'ipAddressPrefix', # IP-MIB
|
||||||
'c_addr6_pfx' => 'cIpAddressPrefix', # CISCO-IETF-IP-MIB
|
'c_addr6_pfx' => 'cIpAddressPrefix', # CISCO-IETF-IP-MIB
|
||||||
|
|
||||||
|
'ip_addr6_pfxlen' => 'ipAddressPrefixLength', # IP-MIB
|
||||||
|
'c_addr6_pfxlen' => 'cIpAddressPfxLength', # CISCO-IETF-IP-MIB
|
||||||
|
'i6_addr_pfxlen' => 'ipv6AddrPfxLength', # IPV6-MIB
|
||||||
|
|
||||||
'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIB
|
'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIB
|
||||||
'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB
|
'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB
|
||||||
|
|
||||||
'ip_addr6_type' => 'ipAddressType', # IP-MIB
|
'ip_addr6_type' => 'ipAddressType', # IP-MIB
|
||||||
'c_addr6_type' => 'cIpAddressType', # CISCO-IETF-IP-MIB
|
'c_addr6_type' => 'cIpAddressType', # CISCO-IETF-IP-MIB
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
%MUNGE = (
|
%MUNGE = (
|
||||||
@@ -313,7 +316,9 @@ sub ipv6_addr_prefix {
|
|||||||
foreach my $row (keys %$ipv6_addr_prefix){
|
foreach my $row (keys %$ipv6_addr_prefix){
|
||||||
if ($row =~ /^(\d+)\.[\d\.]+$/) {
|
if ($row =~ /^(\d+)\.[\d\.]+$/) {
|
||||||
my $type = $1;
|
my $type = $1;
|
||||||
if ($type == 2) { # IPv6
|
if (($type == 2) or ($type == 4)) { # IPv6
|
||||||
|
# Remove interface specific part from vrf interfaces
|
||||||
|
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+)$/ ){
|
||||||
@@ -327,6 +332,33 @@ sub ipv6_addr_prefix {
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub ipv6_addr_prefixlength {
|
||||||
|
my $info = shift;
|
||||||
|
my $return;
|
||||||
|
my $ipv6_addr_prefix = &_test_methods( $info, {
|
||||||
|
ip_addr6_pfx => IPMIB,
|
||||||
|
c_addr6_pfx => CISCO,
|
||||||
|
});
|
||||||
|
return unless defined $ipv6_addr_prefix;
|
||||||
|
foreach my $row (keys %$ipv6_addr_prefix) {
|
||||||
|
if ($row =~ /^(\d+)\.[\d\.]+$/) {
|
||||||
|
my $type = $1;
|
||||||
|
if (($type == 2) or ($type == 4)) { # IPv6
|
||||||
|
# Remove interface specific part from vrf interfaces
|
||||||
|
if ($row =~ /^((\d+\.){17}\d+)/) { $row = $1 }
|
||||||
|
# Remove the OID part from the value
|
||||||
|
my $val = $ipv6_addr_prefix->{$row};
|
||||||
|
if ( $val =~ /^.+?((?:\d+\.){19}(\d+))$/ ) {
|
||||||
|
$val = $2;
|
||||||
|
$return->{$row} = $val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%s: data comes from %s.\n", &_my_sub_name, $info->_method_used() ) if $info->debug();
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
sub ipv6_addr {
|
sub ipv6_addr {
|
||||||
my $info = shift;
|
my $info = shift;
|
||||||
my $return;
|
my $return;
|
||||||
@@ -353,6 +385,7 @@ sub ipv6_addr {
|
|||||||
sub _method_used {
|
sub _method_used {
|
||||||
my $info = shift;
|
my $info = shift;
|
||||||
my $return = 'none of the MIBs';
|
my $return = 'none of the MIBs';
|
||||||
|
# FIXME ugh! a global. makes order of calls important for debug.
|
||||||
if (defined $info::METHOD) {
|
if (defined $info::METHOD) {
|
||||||
if ($info::METHOD eq IPMIB) {
|
if ($info::METHOD eq IPMIB) {
|
||||||
$return = 'IP-MIB';
|
$return = 'IP-MIB';
|
||||||
@@ -372,6 +405,7 @@ sub _test_methods {
|
|||||||
foreach my $method (sort {$test->{$a} <=> $test->{$b}} keys %$test) {
|
foreach my $method (sort {$test->{$a} <=> $test->{$b}} keys %$test) {
|
||||||
$return = $info->$method || {};
|
$return = $info->$method || {};
|
||||||
if (scalar keys %$return) {
|
if (scalar keys %$return) {
|
||||||
|
# FIXME ugh! a global. makes order of calls important for debug.
|
||||||
$info::METHOD = $test->{$method};
|
$info::METHOD = $test->{$method};
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
@@ -488,6 +522,10 @@ Maps an IPv6 prefix with its origin (manual, well-known, dhcp, etc.)
|
|||||||
|
|
||||||
Maps IPv6 addresses with their prefixes
|
Maps IPv6 addresses with their prefixes
|
||||||
|
|
||||||
|
=item $info->ipv6_addr_prefixlength()
|
||||||
|
|
||||||
|
Maps IPv6 addresses with their prefix length
|
||||||
|
|
||||||
=item $info->ipv6_addr()
|
=item $info->ipv6_addr()
|
||||||
|
|
||||||
Maps a table instance to an IPv6 address
|
Maps a table instance to an IPv6 address
|
||||||
@@ -39,10 +39,11 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'LLDP-MIB' => 'lldpLocSysCapEnabled',
|
'LLDP-MIB' => 'lldpLocSysCapEnabled',
|
||||||
|
'LLDP-EXT-MED-MIB' => 'lldpXMedMIB',
|
||||||
'LLDP-EXT-DOT1-MIB' => 'lldpXdot1MIB',
|
'LLDP-EXT-DOT1-MIB' => 'lldpXdot1MIB',
|
||||||
'LLDP-EXT-DOT3-MIB' => 'lldpXdot3MIB',
|
'LLDP-EXT-DOT3-MIB' => 'lldpXdot3MIB',
|
||||||
);
|
);
|
||||||
@@ -69,6 +70,18 @@ $VERSION = '3.34';
|
|||||||
'lldp_rem_sys_cap' => 'lldpRemSysCapEnabled',
|
'lldp_rem_sys_cap' => 'lldpRemSysCapEnabled',
|
||||||
'lldp_rem_cap_spt' => 'lldpRemSysCapSupported',
|
'lldp_rem_cap_spt' => 'lldpRemSysCapSupported',
|
||||||
|
|
||||||
|
# LLDP-MIB::lldpXMedRemInventoryTable
|
||||||
|
'lldp_rem_hw_rev' => 'lldpXMedRemHardwareRev',
|
||||||
|
'lldp_rem_fw_rev' => 'lldpXMedRemFirmwareRev',
|
||||||
|
'lldp_rem_sw_rev' => 'lldpXMedRemSoftwareRev',
|
||||||
|
'lldp_rem_serial' => 'lldpXMedRemSerialNum',
|
||||||
|
'lldp_rem_vendor' => 'lldpXMedRemMfgName',
|
||||||
|
'lldp_rem_model' => 'lldpXMedRemModelName',
|
||||||
|
'lldp_rem_asset' => 'lldpXMedRemAssetID',
|
||||||
|
|
||||||
|
'lldp_rem_media_cap' => 'lldpXMedRemCapCurrent',
|
||||||
|
'lldp_rem_media_cap_spt' => 'lldpXMedRemCapSupported',
|
||||||
|
|
||||||
# LLDP-MIB::lldpRemManAddrTable
|
# LLDP-MIB::lldpRemManAddrTable
|
||||||
'lldp_rman_addr' => 'lldpRemManAddrIfSubtype',
|
'lldp_rman_addr' => 'lldpRemManAddrIfSubtype',
|
||||||
);
|
);
|
||||||
@@ -82,6 +95,17 @@ $VERSION = '3.34';
|
|||||||
'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,
|
||||||
|
|
||||||
|
'lldp_rem_hw_rev' => \&SNMP::Info::munge_null,
|
||||||
|
'lldp_rem_fw_rev' => \&SNMP::Info::munge_null,
|
||||||
|
'lldp_rem_sw_rev' => \&SNMP::Info::munge_null,
|
||||||
|
'lldp_rem_serial' => \&SNMP::Info::munge_null,
|
||||||
|
'lldp_rem_vendor' => \&SNMP::Info::munge_null,
|
||||||
|
'lldp_rem_model' => \&SNMP::Info::munge_null,
|
||||||
|
'lldp_rem_asset' => \&SNMP::Info::munge_null,
|
||||||
|
|
||||||
|
'lldp_rem_media_cap' => \&SNMP::Info::munge_bits,
|
||||||
|
'lldp_rem_media_cap_spt' => \&SNMP::Info::munge_bits,
|
||||||
);
|
);
|
||||||
|
|
||||||
sub hasLLDP {
|
sub hasLLDP {
|
||||||
@@ -323,6 +347,39 @@ sub lldp_cap {
|
|||||||
return \%lldp_cap;
|
return \%lldp_cap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub lldp_media_cap {
|
||||||
|
my $lldp = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $lldp_caps = $lldp->lldp_rem_media_cap_spt($partial) || {};
|
||||||
|
|
||||||
|
# Encoded as BITS which Perl Net-SNMP implementation doesn't seem to
|
||||||
|
# be able to enumerate for us, so we have to get it from the MIB
|
||||||
|
# and enumerate ourselves
|
||||||
|
my $oid = SNMP::translateObj( 'lldpXMedRemCapCurrent', 0, 1 ) || '';
|
||||||
|
my $enums = (
|
||||||
|
( ref {} eq ref $SNMP::MIB{$oid}{'enums'} )
|
||||||
|
? $SNMP::MIB{$oid}{'enums'}
|
||||||
|
: {}
|
||||||
|
);
|
||||||
|
my %r_enums = reverse %$enums;
|
||||||
|
|
||||||
|
my %lldp_cap;
|
||||||
|
foreach my $key ( keys %$lldp_caps ) {
|
||||||
|
my $cap_bits = $lldp_caps->{$key};
|
||||||
|
next unless $cap_bits;
|
||||||
|
|
||||||
|
my $count = 0;
|
||||||
|
foreach my $bit ( split //, $cap_bits ) {
|
||||||
|
if ($bit) {
|
||||||
|
push( @{ $lldp_cap{$key} }, $r_enums{$count} );
|
||||||
|
}
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return \%lldp_cap;
|
||||||
|
}
|
||||||
|
|
||||||
#sub root_ip {
|
#sub root_ip {
|
||||||
# my $lldp = shift;
|
# my $lldp = shift;
|
||||||
#
|
#
|
||||||
@@ -435,6 +492,8 @@ None.
|
|||||||
|
|
||||||
=item F<LLDP-MIB>
|
=item F<LLDP-MIB>
|
||||||
|
|
||||||
|
=item F<LLDP-EXT-MED-MIB>
|
||||||
|
|
||||||
=item F<LLDP-EXT-DOT1-MIB>
|
=item F<LLDP-EXT-DOT1-MIB>
|
||||||
|
|
||||||
=item F<LLDP-EXT-DOT3-MIB>
|
=item F<LLDP-EXT-DOT3-MIB>
|
||||||
@@ -567,6 +626,12 @@ Returns hash of arrays with each array containing the system capabilities
|
|||||||
supported by the remote system. Possible elements in the array are
|
supported by the remote system. Possible elements in the array are
|
||||||
enumerated from C<LldpSystemCapabilitiesMap>.
|
enumerated from C<LldpSystemCapabilitiesMap>.
|
||||||
|
|
||||||
|
=item $lldp->lldp_media_cap()
|
||||||
|
|
||||||
|
Returns hash of arrays with each array containing the media capabilities
|
||||||
|
supported by the remote system. Possible elements in the array are
|
||||||
|
enumerated from C<LldpXMedCapabilities>.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 LLDP Remote Table (C<lldpRemTable>)
|
=head2 LLDP Remote Table (C<lldpRemTable>)
|
||||||
@@ -628,6 +693,65 @@ Nulls are removed before the value is returned.
|
|||||||
|
|
||||||
(C<lldpRemSysDesc>)
|
(C<lldpRemSysDesc>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_hw_rev()
|
||||||
|
|
||||||
|
Returns the string value used to identify the hardware revision of the
|
||||||
|
remote system. Nulls are removed before the value is returned.
|
||||||
|
|
||||||
|
(C<lldpXMedRemHardwareRev>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_fw_rev()
|
||||||
|
|
||||||
|
Returns the string value used to identify the firmware revision of the
|
||||||
|
remote system. Nulls are removed before the value is returned.
|
||||||
|
|
||||||
|
(C<lldpXMedRemHardwareRev>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_sw_rev()
|
||||||
|
|
||||||
|
Returns the string value used to identify the software revision of the
|
||||||
|
remote system. Nulls are removed before the value is returned.
|
||||||
|
|
||||||
|
(C<lldpXMedRemSoftwareRev>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_serial()
|
||||||
|
|
||||||
|
Returns the string value used to identify the serial number of the
|
||||||
|
remote system. Nulls are removed before the value is returned.
|
||||||
|
|
||||||
|
(C<lldpXMedRemSerialNum>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_vendor()
|
||||||
|
|
||||||
|
Returns the string value used to identify the manufacturer of the
|
||||||
|
remote system. Nulls are removed before the value is returned.
|
||||||
|
|
||||||
|
(C<lldpXMedRemMfgName>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_asset()
|
||||||
|
|
||||||
|
Returns the string value used to identify the asset number of the
|
||||||
|
remote system. Nulls are removed before the value is returned.
|
||||||
|
|
||||||
|
(C<lldpXMedRemAssetID>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_model()
|
||||||
|
|
||||||
|
Returns the string value used to identify the model of the
|
||||||
|
remote system. Nulls are removed before the value is returned.
|
||||||
|
|
||||||
|
(C<lldpXMedRemModelName>)
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_media_cap_spt()
|
||||||
|
|
||||||
|
Returns which media capabilities are supported on the remote system. Results
|
||||||
|
are munged into an ascii binary string, LSB.
|
||||||
|
|
||||||
|
=item $lldp->lldp_rem_media_cap()
|
||||||
|
|
||||||
|
Returns which media capabilities are enabled on the remote system. Results
|
||||||
|
are munged into an ascii binary string, LSB.
|
||||||
|
|
||||||
=item $lldp->lldp_rem_sys_cap()
|
=item $lldp->lldp_rem_sys_cap()
|
||||||
|
|
||||||
Returns which system capabilities are enabled on the remote system. Results
|
Returns which system capabilities are enabled on the remote system. Results
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
|
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
|
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
|
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
|
||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer1::MIBS,
|
%SNMP::Info::Layer1::MIBS,
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
@@ -46,7 +46,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
@@ -11,7 +11,7 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::LLDP::MIBS,
|
%SNMP::Info::LLDP::MIBS,
|
||||||
@@ -73,6 +73,8 @@ sub model {
|
|||||||
my $descr = $dsmodel->description();
|
my $descr = $dsmodel->description();
|
||||||
if ( $descr =~ /^([\S ]+) Software.*/){
|
if ( $descr =~ /^([\S ]+) Software.*/){
|
||||||
return $1;
|
return $1;
|
||||||
|
} else {
|
||||||
|
return $descr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
286
lib/SNMP/Info/Layer2/Adtran.pm
Normal file
286
lib/SNMP/Info/Layer2/Adtran.pm
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
package SNMP::Info::Layer2::Adtran;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Exporter;
|
||||||
|
use SNMP::Info::LLDP;
|
||||||
|
use SNMP::Info::Layer2;
|
||||||
|
use SNMP::Info::Layer3;
|
||||||
|
|
||||||
|
@SNMP::Info::Layer2::Adtran::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer2 Exporter/;
|
||||||
|
@SNMP::Info::Layer2::Adtran::EXPORT_OK = qw//;
|
||||||
|
|
||||||
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
|
$VERSION = '3.49';
|
||||||
|
|
||||||
|
# This will be filled in with the device's index into the EntPhysicalEntry
|
||||||
|
# table by the serial() function.
|
||||||
|
our $index = undef;
|
||||||
|
|
||||||
|
%MIBS = (
|
||||||
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
'ADTRAN-GENEVC-MIB' => 'adGenEVCMIB',
|
||||||
|
'ADTRAN-GENMEF-MIB' => 'adGenMEFMIB',
|
||||||
|
'ADTRAN-GENPORT-MIB' => 'adGenPort',
|
||||||
|
'ADTRAN-MIB' => 'adtran',
|
||||||
|
'ADTRAN-AOSUNIT' => 'adGenAOSUnitMib',
|
||||||
|
);
|
||||||
|
|
||||||
|
%GLOBALS = (
|
||||||
|
%SNMP::Info::Layer2::GLOBALS,
|
||||||
|
%SNMP::Info::Layer3::GLOBALS,
|
||||||
|
%SNMP::Info::LLDP::GLOBALS,
|
||||||
|
'serial' => 'adProdSerialNumber',
|
||||||
|
'ad_mgmtevcvid' => 'adGenEVCSysMgmtEVCSTagVID',
|
||||||
|
);
|
||||||
|
|
||||||
|
%FUNCS = ( %SNMP::Info::Layer2::FUNCS,
|
||||||
|
%SNMP::Info::Layer3::FUNCS,
|
||||||
|
%SNMP::Info::LLDP::FUNCS,
|
||||||
|
'ad_evcstag' => 'adGenEVCLookupName',
|
||||||
|
'ad_menport' => 'adGenMenPortRowStatus',
|
||||||
|
'ad_evcnamevid' => 'adGenEVCSTagVID',
|
||||||
|
'ad_mgmtevcports' => 'adGenSysMgmtEVCInterfaceConnectionType',
|
||||||
|
'ad_evcmapuniport' => 'adGenMEFMapUNIPort',
|
||||||
|
'ad_evcmapevc' => 'adGenMEFMapAssociatedEVCAlias',
|
||||||
|
'ad_genportcustuse' => 'adGenPortCustomerUse',
|
||||||
|
);
|
||||||
|
|
||||||
|
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::LLDP::MUNGE, %SNMP::Info::Layer3::MUNGE );
|
||||||
|
|
||||||
|
sub vendor {
|
||||||
|
return 'adtran';
|
||||||
|
}
|
||||||
|
sub os {
|
||||||
|
return 'aos';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub layers {
|
||||||
|
my $adtran = shift;
|
||||||
|
|
||||||
|
my $layers = $adtran->SUPER::layers();
|
||||||
|
# Some netvantas don't report L2 properly
|
||||||
|
my $macs = $adtran->fw_mac();
|
||||||
|
|
||||||
|
if (keys %$macs) {
|
||||||
|
my $l = substr $layers, 6, 1, "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $layers;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os_ver {
|
||||||
|
my $adtran = shift;
|
||||||
|
my $ver = $adtran->adProdSwVersion() || undef;
|
||||||
|
return $ver if (defined $ver);
|
||||||
|
my $aos_ver = $adtran->adAOSDeviceVersion();
|
||||||
|
return $aos_ver;
|
||||||
|
}
|
||||||
|
sub model {
|
||||||
|
my $adtran = shift;
|
||||||
|
my $id = $adtran->id();
|
||||||
|
my $mod = $adtran->adProdName() || undef;
|
||||||
|
return $mod if (defined $mod);
|
||||||
|
my $model = $adtran->adAOSDeviceProductName() || undef;
|
||||||
|
return $model;
|
||||||
|
}
|
||||||
|
sub serial {
|
||||||
|
my $adtran = shift;
|
||||||
|
my $e_serial = $adtran->e_serial() || {};
|
||||||
|
my $serial2 = $e_serial->{1} || undef;
|
||||||
|
return $serial2 if ( defined $serial2 );
|
||||||
|
return $adtran->orig_serial();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub i_name {
|
||||||
|
my $adtran = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
my $i_name = $adtran->SUPER::i_alias() || undef;
|
||||||
|
return $i_name if (defined $i_name);
|
||||||
|
$i_name = {};
|
||||||
|
my $adname = $adtran->ad_genportcustuse() || undef;
|
||||||
|
if (defined $adname) {
|
||||||
|
foreach my $port (keys %$adname) {
|
||||||
|
my @split = split(/\./,$port);
|
||||||
|
$i_name->{@split[1]} = $adname->{$port};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $i_name;
|
||||||
|
}
|
||||||
|
sub i_vlan {
|
||||||
|
my $adtran = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
my $uniports = $adtran->ad_evcmapuniport() || undef;
|
||||||
|
my $evcmaps = $adtran->ad_evcmapevc() || undef;
|
||||||
|
my $v_names = $adtran->ad_evcnamevid() || undef;
|
||||||
|
if (defined $uniports) {
|
||||||
|
my $vlans = {};
|
||||||
|
foreach my $oid (keys %$v_names) {
|
||||||
|
my $name = pack("C*", split(/\./,$oid));
|
||||||
|
$vlans->{$name} = $v_names->{$oid};
|
||||||
|
}
|
||||||
|
my $i_vlan = {};
|
||||||
|
foreach my $evcmap (keys %$evcmaps) {
|
||||||
|
$i_vlan->{$uniports->{$evcmap}} = $vlans->{$evcmaps->{$evcmap}};
|
||||||
|
}
|
||||||
|
return $i_vlan;
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership {
|
||||||
|
my $adtran = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
my $i_vlan = $adtran->ad_menport();
|
||||||
|
if (defined $i_vlan) {
|
||||||
|
my $vlans = {};
|
||||||
|
my $v_name = $adtran->v_name();
|
||||||
|
foreach my $vid (keys %$v_name) {
|
||||||
|
$vlans->{$v_name->{$vid}} = $vid;
|
||||||
|
}
|
||||||
|
my $if_vlans = {};
|
||||||
|
foreach my $entry (keys %$i_vlan) {
|
||||||
|
my @split = split(/(\.0)+\./,$entry);
|
||||||
|
my $name = pack("C*", split(/\./,@split[0]));
|
||||||
|
push @{$if_vlans->{@split[2]}}, $vlans->{$name};
|
||||||
|
}
|
||||||
|
my $mgmtevcports = $adtran->ad_mgmtevcports();
|
||||||
|
my $mgmtevcid = $adtran->ad_mgmtevcvid();
|
||||||
|
foreach my $port (keys %$mgmtevcports) {
|
||||||
|
push @{$if_vlans->{$port}}, $mgmtevcid;
|
||||||
|
}
|
||||||
|
return $if_vlans;
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub v_name {
|
||||||
|
my $adtran = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
my $v_index = $adtran->ad_evcstag();
|
||||||
|
return {} unless defined $v_index;
|
||||||
|
$v_index->{$adtran->ad_mgmtevcvid()} = 'system-management-evc';
|
||||||
|
return $v_index;
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SNMP::Info::Layer2::Adtran - SNMP Interface to Adtran Devices
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
# Let SNMP::Info determine the correct subclass for you.
|
||||||
|
my $adtran = new SNMP::Info(
|
||||||
|
AutoSpecify => 1,
|
||||||
|
Debug => 1,
|
||||||
|
DestHost => 'myrouter',
|
||||||
|
Community => 'public',
|
||||||
|
Version => 2
|
||||||
|
)
|
||||||
|
or die "Can't connect to DestHost.\n";
|
||||||
|
|
||||||
|
my $class = $adtran->class();
|
||||||
|
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Subclass for adtran Devices running JUNOS
|
||||||
|
|
||||||
|
=head2 Inherited Classes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3
|
||||||
|
|
||||||
|
=item SNMP::Info::LLDP
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Inherited Classes' MIBs
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
|
||||||
|
|
||||||
|
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
|
||||||
|
|
||||||
|
=head1 GLOBALS
|
||||||
|
|
||||||
|
These are methods that return scalar value from SNMP
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $adtran->vendor()
|
||||||
|
|
||||||
|
Returns 'adtran'
|
||||||
|
|
||||||
|
=item $adtran->os()
|
||||||
|
|
||||||
|
Returns 'aos'
|
||||||
|
|
||||||
|
=item $adtran->layers()
|
||||||
|
|
||||||
|
Ensures that layer two is reported, at least.
|
||||||
|
|
||||||
|
=item $adtran->os_ver()
|
||||||
|
|
||||||
|
Returns the software version extracted first from C<adProdSwVersion> or
|
||||||
|
C<adAOSDeviceVersion>.
|
||||||
|
|
||||||
|
=item $adtran->model()
|
||||||
|
|
||||||
|
Returns the model extracted first from C<adProdName> or
|
||||||
|
C<adAOSDeviceProductName>.
|
||||||
|
|
||||||
|
=item $adtran->serial()
|
||||||
|
|
||||||
|
Returns serial number.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
|
||||||
|
|
||||||
|
=head2 Global Methods imported from SNMP::Info::LLDP
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
|
||||||
|
|
||||||
|
=head1 TABLE METHODS
|
||||||
|
|
||||||
|
These are methods that return tables of information in the form of a reference
|
||||||
|
to a hash.
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $adtran->v_name()
|
||||||
|
|
||||||
|
VLAN names table.
|
||||||
|
|
||||||
|
=item $adtran->i_name()
|
||||||
|
|
||||||
|
Interface names table.
|
||||||
|
|
||||||
|
=item $adtran->i_vlan()
|
||||||
|
|
||||||
|
Returns a mapping between C<ifIndex> and the PVID or default VLAN.
|
||||||
|
|
||||||
|
=item $adtran->i_vlan_membership()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the egress list for the port.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Table Methods imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
=head2 Table Methods imported from SNMP::Info::LLDP
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
=cut
|
||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
@@ -97,6 +97,14 @@ my $mcs_index = {
|
|||||||
m13 => '104',
|
m13 => '104',
|
||||||
m14 => '117',
|
m14 => '117',
|
||||||
m15 => '130',
|
m15 => '130',
|
||||||
|
m16 => '19.5',
|
||||||
|
m17 => '39',
|
||||||
|
m18 => '58.5',
|
||||||
|
m19 => '78',
|
||||||
|
m20 => '117',
|
||||||
|
m21 => '156',
|
||||||
|
m22 => '175.5',
|
||||||
|
m23 => '195',
|
||||||
# This is a cheat for 802.11a bonded
|
# This is a cheat for 802.11a bonded
|
||||||
m108 => '108',
|
m108 => '108',
|
||||||
},
|
},
|
||||||
@@ -117,6 +125,14 @@ my $mcs_index = {
|
|||||||
m13 => '240',
|
m13 => '240',
|
||||||
m14 => '270',
|
m14 => '270',
|
||||||
m15 => '300',
|
m15 => '300',
|
||||||
|
m16 => '45',
|
||||||
|
m17 => '90',
|
||||||
|
m18 => '135',
|
||||||
|
m19 => '180',
|
||||||
|
m20 => '270',
|
||||||
|
m21 => '360',
|
||||||
|
m22 => '405',
|
||||||
|
m23 => '450',
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -165,6 +181,7 @@ sub cd11_txrate {
|
|||||||
elsif ( $rate =~ /^m/ ) {
|
elsif ( $rate =~ /^m/ ) {
|
||||||
my $band = $protos->{$idx};
|
my $band = $protos->{$idx};
|
||||||
my $bw = $bws->{$band};
|
my $bw = $bws->{$band};
|
||||||
|
# FIXME throw some kind of error if we get an index/rate that we haven't implemented yet? Now we simply return "0.0"...
|
||||||
$cd11_txrate->{$idx} = [ $mcs_index->{$bw}->{$rate} || '0.0' ];
|
$cd11_txrate->{$idx} = [ $mcs_index->{$bw}->{$rate} || '0.0' ];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -49,7 +49,7 @@ use SNMP::Info::IEEE802dot11;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::IEEE802dot11::GLOBALS,
|
%SNMP::Info::IEEE802dot11::GLOBALS,
|
||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
|
||||||
@@ -229,7 +229,7 @@ sub index_factor {
|
|||||||
if ( ( $model =~ /(470)/ )
|
if ( ( $model =~ /(470)/ )
|
||||||
or ( $os =~ m/(boss|bes)/ ) and ( $op_mode eq 'pure' ) );
|
or ( $os =~ m/(boss|bes)/ ) and ( $op_mode eq 'pure' ) );
|
||||||
$index_factor = 128
|
$index_factor = 128
|
||||||
if ( ( $model =~ /(5[56]\d\d)|VSP/ )
|
if ( ( $model =~ /(5[56]\d\d)|VSP|4950|59100/ )
|
||||||
and ( $os_ver >= 6 ) );
|
and ( $os_ver >= 6 ) );
|
||||||
|
|
||||||
return $index_factor;
|
return $index_factor;
|
||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer2::GLOBALS,
|
%SNMP::Info::Layer2::GLOBALS,
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2::Cisco;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer2::Cisco::GLOBALS,
|
%SNMP::Info::Layer2::Cisco::GLOBALS,
|
||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2::Cisco;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::Cisco::MIBS,
|
%SNMP::Info::Layer2::Cisco::MIBS,
|
||||||
@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -52,7 +52,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
@@ -50,7 +50,7 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer2::GLOBALS,
|
%SNMP::Info::Layer2::GLOBALS,
|
||||||
@@ -130,8 +130,9 @@ sub model {
|
|||||||
|
|
||||||
foreach my $e ( sort keys %$e_model ) {
|
foreach my $e ( sort keys %$e_model ) {
|
||||||
if (defined $e_model->{$e} and $e_model->{$e} !~ /^\s*$/) {
|
if (defined $e_model->{$e} and $e_model->{$e} !~ /^\s*$/) {
|
||||||
my $model = "$e_model->{$e} $e_hwver->{$e}";
|
return $e_model->{$e};
|
||||||
return $model;
|
#my $model = "$e_model->{$e} $e_hwver->{$e}";
|
||||||
|
#return $model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $ciscosb->description();
|
return $ciscosb->description();
|
||||||
@@ -50,7 +50,7 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -215,6 +215,7 @@ $VERSION = '3.34';
|
|||||||
'J9085A' => '2610-24',
|
'J9085A' => '2610-24',
|
||||||
'J8762A' => '2600-8-PWR',
|
'J8762A' => '2600-8-PWR',
|
||||||
'J9780A' => '2530-8-PoE+',
|
'J9780A' => '2530-8-PoE+',
|
||||||
|
'J9774A' => '2530-8G-PoEP',
|
||||||
'J9777A' => '2530-8G',
|
'J9777A' => '2530-8G',
|
||||||
'J9783A' => '2530-8',
|
'J9783A' => '2530-8',
|
||||||
'J9778A' => '2530-48-PoE+',
|
'J9778A' => '2530-48-PoE+',
|
||||||
@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Airespace;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Bridge;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
# 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.
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
319
lib/SNMP/Info/Layer2/Ubiquiti.pm
Normal file
319
lib/SNMP/Info/Layer2/Ubiquiti.pm
Normal file
@@ -0,0 +1,319 @@
|
|||||||
|
# SNMP::Info::Layer2::Ubiquiti
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
|
||||||
|
package SNMP::Info::Layer2::Ubiquiti;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Exporter;
|
||||||
|
use SNMP::Info::IEEE802dot11;
|
||||||
|
use SNMP::Info::Layer2;
|
||||||
|
use SNMP::Info::Layer3; # only used in sub mac()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@SNMP::Info::Layer2::Ubiquiti::ISA
|
||||||
|
= qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
|
||||||
|
@SNMP::Info::Layer2::Ubiquiti::EXPORT_OK = qw//;
|
||||||
|
|
||||||
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
|
$VERSION = '3.49';
|
||||||
|
|
||||||
|
%MIBS = (
|
||||||
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
%SNMP::Info::IEEE802dot11::MIBS,
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
%GLOBALS
|
||||||
|
= ( %SNMP::Info::Layer2::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS, );
|
||||||
|
|
||||||
|
%FUNCS = (
|
||||||
|
%SNMP::Info::Layer2::FUNCS,
|
||||||
|
%SNMP::Info::IEEE802dot11::FUNCS,
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::IEEE802dot11::MUNGE, );
|
||||||
|
|
||||||
|
sub os {
|
||||||
|
my $ubnt = shift;
|
||||||
|
|
||||||
|
my $names = $ubnt->dot11_prod_name();
|
||||||
|
|
||||||
|
foreach my $iid ( keys %$names ) {
|
||||||
|
my $prod = $names->{$iid};
|
||||||
|
next unless defined $prod;
|
||||||
|
# Product names that match AirOS products
|
||||||
|
if((lc $prod) =~ /station/ or (lc $prod) =~ /beam/ or (lc $prod) =~ /grid/){
|
||||||
|
return 'AirOS';
|
||||||
|
# Product names that match UAP
|
||||||
|
}elsif((lc $prod) =~ /uap/){
|
||||||
|
return 'UniFi';
|
||||||
|
}else{
|
||||||
|
# Continue below to find OS name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
## EdgeMAX OS (EdgeSwitch and EdgeRouter) name is first field split by space
|
||||||
|
my $ver = $ubnt->description() || '';
|
||||||
|
|
||||||
|
my @myver = split(/ /, $ver);
|
||||||
|
|
||||||
|
return $myver[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os_ver {
|
||||||
|
my $dot11 = shift;
|
||||||
|
|
||||||
|
my $versions = $dot11->dot11_prod_ver();
|
||||||
|
|
||||||
|
foreach my $iid ( keys %$versions ) {
|
||||||
|
my $ver = $versions->{$iid};
|
||||||
|
next unless defined $ver;
|
||||||
|
return $ver;
|
||||||
|
## Not sure what this function does, it seems to be extraneous being in the same code block after a return statement?
|
||||||
|
if ( $ver =~ /([\d\.]+)/ ) {
|
||||||
|
return $1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
my $ver = $dot11->description() || '';
|
||||||
|
if($ver =~ /^edgeswitch/){
|
||||||
|
## EdgeSwitch OS version is second field split by comma
|
||||||
|
my @myver = split(/, /, $ver);
|
||||||
|
|
||||||
|
return $myver[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
## EdgeRouter OS version is second field split by space
|
||||||
|
my @myver = split(/ /, $ver);
|
||||||
|
|
||||||
|
return $myver[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vendor {
|
||||||
|
return 'Ubiquiti Networks, Inc.';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub model {
|
||||||
|
my $ubnt = shift;
|
||||||
|
|
||||||
|
my $names = $ubnt->dot11_prod_name();
|
||||||
|
|
||||||
|
foreach my $iid ( keys %$names ) {
|
||||||
|
my $prod = $names->{$iid};
|
||||||
|
next unless defined $prod;
|
||||||
|
return $prod;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $desc = $ubnt->description() || '';
|
||||||
|
|
||||||
|
## Pull Model from beginning of description, separated by comma (EdgeSwitch)
|
||||||
|
if((lc $desc) =~ /^edgeswitch/){
|
||||||
|
my @mydesc = split(/, /, $desc);
|
||||||
|
return $mydesc[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!((lc $desc) =~ /edgeos/)){
|
||||||
|
# Not sure what type of device this is to get Model
|
||||||
|
# Wireless devices report dot11_prod_name
|
||||||
|
# EdgeSwitch includes mode directly and edgeos logic is in else statement
|
||||||
|
return ;
|
||||||
|
}else{
|
||||||
|
## do some logic to determine ER model based on tech specs from ubnt:
|
||||||
|
## https://help.ubnt.com/hc/en-us/articles/219652227--EdgeRouter-Which-EdgeRouter-Should-I-Use-#tech%20specs
|
||||||
|
## Would be nice if UBNT simply adds the model string to their SNMP daemon directly
|
||||||
|
my $ethCount = 0;
|
||||||
|
my $switchCount = 0;
|
||||||
|
#my $sfpCount = 0;
|
||||||
|
#my $poeCount = 0;
|
||||||
|
my $memTotalReal = $ubnt->memTotalReal;
|
||||||
|
my $cpuLoad = $ubnt->hrProcessorLoad;
|
||||||
|
my $cpuCount = 0;
|
||||||
|
## My perl is lacking. Not sure if there's a more efficient way to find the cpu count
|
||||||
|
foreach my $iid ( keys %$cpuLoad ) {
|
||||||
|
$cpuCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $ifDescs = $ubnt->ifDescr;
|
||||||
|
foreach my $iid ( keys %$ifDescs ) {
|
||||||
|
my $ifDesc = $ifDescs->{$iid};
|
||||||
|
next unless defined $ifDesc;
|
||||||
|
|
||||||
|
if((lc $ifDesc) =~ /^eth\d+$/){ # exclude vlan interfaces. Ex: eth1.5
|
||||||
|
$ethCount++;
|
||||||
|
}elsif((lc $ifDesc) =~ /^switch/){
|
||||||
|
$switchCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
## If people have other models to further fine-tune this logic that would be great.
|
||||||
|
if($ethCount eq 9){
|
||||||
|
## Should be ER Infinity
|
||||||
|
return "EdgeRouter Infinity"
|
||||||
|
}if($ethCount eq 8){
|
||||||
|
## Could be ER-8 Pro, ER-8, or EP-R8
|
||||||
|
return "EdgeRouter 8-Port"
|
||||||
|
}elsif($ethCount eq 5 and $cpuCount eq 4){
|
||||||
|
## Could be ER-X or ER-X-SFP
|
||||||
|
return "EdgeRouter X 5-Port"
|
||||||
|
}elsif($ethCount eq 5){
|
||||||
|
return "EdgeRouter PoE 5-Port"
|
||||||
|
}elsif($ethCount eq 3 and $cpuCount eq 2){
|
||||||
|
return "EdgeRouter LITE 3-Port"
|
||||||
|
}else{
|
||||||
|
## failback string
|
||||||
|
return "EdgeRouter eth-$ethCount switch-$switchCount mem-$memTotalReal cpuNum-$cpuCount";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
## simply take the MAC and clean it up
|
||||||
|
sub serial {
|
||||||
|
my $ubnt = shift;
|
||||||
|
|
||||||
|
my $serial = $ubnt->mac();
|
||||||
|
if($serial){
|
||||||
|
$serial =~ s/://g;
|
||||||
|
return uc $serial;
|
||||||
|
}
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
## UBNT doesn't put the primary-mac interface at index 1
|
||||||
|
sub mac {
|
||||||
|
my $ubnt = shift;
|
||||||
|
my $ifDescs = $ubnt->ifDescr;
|
||||||
|
|
||||||
|
foreach my $iid ( keys %$ifDescs ) {
|
||||||
|
my $ifDesc = $ifDescs->{$iid};
|
||||||
|
next unless defined $ifDesc;
|
||||||
|
## CPU Interface will have the primary MAC for EdgeSwitch
|
||||||
|
## eth0 will have primary MAC for linux-based UBNT devices
|
||||||
|
if($ifDesc =~ /CPU/ or $ifDesc eq 'eth0'){
|
||||||
|
my $mac = $ubnt->ifPhysAddress->{$iid};
|
||||||
|
|
||||||
|
# syntax stolen from sub munge_mac in SNMP::Info
|
||||||
|
$mac = lc join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
|
||||||
|
return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){5}[0-9A-F][0-9A-F]$/i;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# MAC malformed or missing
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SNMP::Info::Layer2::Ubiquiti - SNMP Interface to Ubiquiti Access Points
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Max Kosmach
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
# Let SNMP::Info determine the correct subclass for you.
|
||||||
|
my $ubnt = new SNMP::Info(
|
||||||
|
AutoSpecify => 1,
|
||||||
|
Debug => 1,
|
||||||
|
DestHost => 'myswitch',
|
||||||
|
Community => 'public',
|
||||||
|
Version => 2
|
||||||
|
)
|
||||||
|
or die "Can't connect to DestHost.\n";
|
||||||
|
|
||||||
|
my $class = $ubnt->class();
|
||||||
|
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Provides abstraction to the configuration information obtainable from
|
||||||
|
Ubiquiti Access Point through SNMP.
|
||||||
|
|
||||||
|
For speed or debugging purposes you can call the subclass directly, but not
|
||||||
|
after determining a more specific class using the method above.
|
||||||
|
|
||||||
|
my $ubnt = new SNMP::Info::Layer2::Ubiquiti(...);
|
||||||
|
|
||||||
|
=head2 Inherited Classes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer2
|
||||||
|
|
||||||
|
=item SNMP::Info::IEEE802dot11
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Required MIBs
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=head2 Inherited MIBs
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
|
||||||
|
|
||||||
|
See L<SNMP::Info::IEEE802dot11/"Required MIBs"> for its MIB requirements.
|
||||||
|
|
||||||
|
=head1 GLOBALS
|
||||||
|
|
||||||
|
These are methods that return scalar value from SNMP
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $ubnt->vendor()
|
||||||
|
|
||||||
|
Returns 'Ubiquiti Networks, Inc.'
|
||||||
|
|
||||||
|
=item $ubnt->model()
|
||||||
|
|
||||||
|
Returns the model extracted from C<dot11manufacturerProductName>, with failback to some complex logic for EdgeMax devices
|
||||||
|
|
||||||
|
=item $ubnt->serial()
|
||||||
|
|
||||||
|
Serial Number.
|
||||||
|
|
||||||
|
=item $ubnt->mac()
|
||||||
|
|
||||||
|
Bridge MAC address.
|
||||||
|
|
||||||
|
=item $ubnt->os()
|
||||||
|
|
||||||
|
Returns 'Ubiquiti Networks, Inc.'
|
||||||
|
|
||||||
|
=item $ubnt->os_ver()
|
||||||
|
|
||||||
|
Returns the software version extracted from C<dot11manufacturerProductVersion>, with failback to description splitting for EdgeMax devices
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Global Methods imported from SNMP::Info::Layer2
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
|
||||||
|
|
||||||
|
=head2 Global Methods imported from SNMP::Info::IEEE802dot11
|
||||||
|
|
||||||
|
See L<SNMP::Info::IEEE802dot11/"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 L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
=head2 Table Methods imported from SNMP::Info::IEEE802dot11
|
||||||
|
|
||||||
|
See L<SNMP::Info::IEEE802dot11/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
=cut
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
||||||
@@ -53,7 +53,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -196,10 +196,13 @@ sub serial {
|
|||||||
|
|
||||||
my $serial1 = $l3->serial1();
|
my $serial1 = $l3->serial1();
|
||||||
my $e_parent = $l3->e_parent() || {};
|
my $e_parent = $l3->e_parent() || {};
|
||||||
|
my $e_class = $l3->e_class() || {};
|
||||||
|
|
||||||
foreach my $iid ( keys %$e_parent ) {
|
foreach my $iid ( keys %$e_parent ) {
|
||||||
my $parent = $e_parent->{$iid};
|
my $parent = $e_parent->{$iid};
|
||||||
if ( $parent eq '0' ) {
|
my $class = $e_class->{$iid} || '';
|
||||||
|
# Only consider serial numbers for entries without a parent, or if they are of type "chassis"
|
||||||
|
if ( $parent eq '0' or $class eq 'chassis') {
|
||||||
my $serial = $l3->e_serial($iid);
|
my $serial = $l3->e_serial($iid);
|
||||||
if ( $serial && $serial->{$iid} ) {
|
if ( $serial && $serial->{$iid} ) {
|
||||||
return $serial->{$iid};
|
return $serial->{$iid};
|
||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
|
|||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
|
||||||
$int_include_vpn $fake_idx $type_class/;
|
$int_include_vpn $fake_idx $type_class/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Aggregate 'agg_ports_ifstack';
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Bridge;
|
|||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
|
||||||
%MODID_MAP %PROCID_MAP/;
|
%MODID_MAP %PROCID_MAP/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
||||||
@@ -47,7 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
|
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
# 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
|
||||||
@@ -44,7 +44,7 @@ use SNMP::Info::MAU;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MAU::MIBS,
|
%SNMP::Info::MAU::MIBS,
|
||||||
@@ -51,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
# 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
|
||||||
330
lib/SNMP/Info/Layer3/CheckPoint.pm
Normal file
330
lib/SNMP/Info/Layer3/CheckPoint.pm
Normal file
@@ -0,0 +1,330 @@
|
|||||||
|
# SNMP::Info::Layer3::CheckPoint
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 Bill Fenner
|
||||||
|
# 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::CheckPoint;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Exporter;
|
||||||
|
use SNMP::Info::Layer3;
|
||||||
|
use SNMP::Info::LLDP;
|
||||||
|
|
||||||
|
@SNMP::Info::Layer3::CheckPoint::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
|
||||||
|
@SNMP::Info::Layer3::CheckPoint::EXPORT_OK = qw//;
|
||||||
|
|
||||||
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
|
$VERSION = '3.49';
|
||||||
|
|
||||||
|
%MIBS = (
|
||||||
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
%SNMP::Info::LLDP::MIBS,
|
||||||
|
'CHECKPOINT-MIB' => 'fwProduct',
|
||||||
|
'UCD-SNMP-MIB' => 'versionTag',
|
||||||
|
'NET-SNMP-TC' => 'netSnmpAgentOIDs',
|
||||||
|
'NET-SNMP-EXTEND-MIB' => 'nsExtendNumEntries',
|
||||||
|
'HOST-RESOURCES-MIB' => 'hrSystem',
|
||||||
|
);
|
||||||
|
|
||||||
|
%GLOBALS = (
|
||||||
|
%SNMP::Info::Layer3::GLOBALS,
|
||||||
|
%SNMP::Info::LLDP::GLOBALS,
|
||||||
|
'netsnmp_vers' => 'versionTag',
|
||||||
|
'hrSystemUptime' => 'hrSystemUptime',
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
%FUNCS = (
|
||||||
|
%SNMP::Info::Layer3::FUNCS,
|
||||||
|
%SNMP::Info::LLDP::FUNCS,
|
||||||
|
|
||||||
|
# Net-SNMP Extend table that could but customize to add a the CheckPoint version
|
||||||
|
'extend_output_table' => 'nsExtendOutputFull',
|
||||||
|
);
|
||||||
|
|
||||||
|
%MUNGE = (
|
||||||
|
%SNMP::Info::Layer3::MUNGE,
|
||||||
|
%SNMP::Info::LLDP::MUNGE,
|
||||||
|
);
|
||||||
|
|
||||||
|
sub vendor {
|
||||||
|
return 'checkpoint';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub model {
|
||||||
|
my $ckp = shift;
|
||||||
|
my $id = $ckp->id;
|
||||||
|
|
||||||
|
my $model = &SNMP::translateObj($id);
|
||||||
|
|
||||||
|
if (defined $model) {
|
||||||
|
$model =~ s/^checkPoint//;
|
||||||
|
return $model;
|
||||||
|
} else {
|
||||||
|
return $id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os {
|
||||||
|
return 'checkpoint';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os_ver {
|
||||||
|
my $ckp = shift;
|
||||||
|
my $extend_table = $ckp->extend_output_table() || {};
|
||||||
|
|
||||||
|
my $descr = $ckp->description();
|
||||||
|
my $vers = $ckp->netsnmp_vers();
|
||||||
|
my $os_ver = undef;
|
||||||
|
|
||||||
|
foreach my $ex (keys %$extend_table) {
|
||||||
|
(my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
|
||||||
|
if ($name eq 'ckpVersion') {
|
||||||
|
return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/);
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ );
|
||||||
|
if ($vers) {
|
||||||
|
$os_ver = "???" unless defined($os_ver);
|
||||||
|
$os_ver .= " / Net-SNMP " . $vers;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $os_ver;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub serial {
|
||||||
|
my $ckp = shift;
|
||||||
|
my $extend_table = $ckp->extend_output_table() || {};
|
||||||
|
|
||||||
|
foreach my $ex (keys %$extend_table) {
|
||||||
|
(my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
|
||||||
|
if ($name eq 'ckpAsset') {
|
||||||
|
return $1 if ($extend_table->{$ex} =~ /Serial Number: (\S+)/);
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub layers {
|
||||||
|
return '01001100';
|
||||||
|
}
|
||||||
|
|
||||||
|
# sysUptime gives us the time since the SNMP daemon has restarted,
|
||||||
|
# so return the system uptime since that's probably what the user
|
||||||
|
# wants. (Caution: this could cause trouble if using
|
||||||
|
# sysUptime-based discontinuity timers or other TimeStamp
|
||||||
|
# objects.
|
||||||
|
sub uptime {
|
||||||
|
my $ckp = shift;
|
||||||
|
my $uptime;
|
||||||
|
|
||||||
|
$uptime = $ckp->hrSystemUptime();
|
||||||
|
return $uptime if defined $uptime;
|
||||||
|
|
||||||
|
return $ckp->SUPER::uptime();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub i_ignore {
|
||||||
|
my $l3 = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $interfaces = $l3->interfaces($partial) || {};
|
||||||
|
|
||||||
|
my %i_ignore;
|
||||||
|
foreach my $if ( keys %$interfaces ) {
|
||||||
|
|
||||||
|
# lo0 etc
|
||||||
|
if ( $interfaces->{$if} =~ /\blo\d*\b/i ) {
|
||||||
|
$i_ignore{$if}++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return \%i_ignore;
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SNMP::Info::Layer3::CheckPoint - SNMP Interface to CheckPoint Devices
|
||||||
|
|
||||||
|
=head1 AUTHORS
|
||||||
|
|
||||||
|
Ambroise Rosset
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
# Let SNMP::Info determine the correct subclass for you.
|
||||||
|
my $ckp = new SNMP::Info(
|
||||||
|
AutoSpecify => 1,
|
||||||
|
Debug => 1,
|
||||||
|
DestHost => 'myrouter',
|
||||||
|
Community => 'public',
|
||||||
|
Version => 2
|
||||||
|
)
|
||||||
|
or die "Can't connect to DestHost.\n";
|
||||||
|
|
||||||
|
my $class = $ckp->class();
|
||||||
|
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Subclass for Generic Net-SNMP devices
|
||||||
|
|
||||||
|
=head2 WARNING
|
||||||
|
|
||||||
|
To correctly and completelly work, you should add the following line in the file C</etc/snmp/snmpd.local.conf> on each of your CheckPoint devices:
|
||||||
|
|
||||||
|
# Netdisco SNMP configuration
|
||||||
|
extend ckpVersion /opt/CPsuite-R77/fw1/bin/fw ver
|
||||||
|
extend ckpAsset /bin/clish -c 'show asset all'
|
||||||
|
|
||||||
|
=head2 Inherited Classes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Required MIBs
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item F<UCD-SNMP-MIB>
|
||||||
|
|
||||||
|
=item F<NET-SNMP-TC>
|
||||||
|
|
||||||
|
=item F<HOST-RESOURCES-MIB>
|
||||||
|
|
||||||
|
=item Inherited Classes' MIBs
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer3> for its own MIB requirements.
|
||||||
|
|
||||||
|
See L<SNMP::Info::LLDP> for its own MIB requirements.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 GLOBALS
|
||||||
|
|
||||||
|
These are methods that return scalar value from SNMP
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $ckp->vendor()
|
||||||
|
|
||||||
|
Returns 'checkpoint'.
|
||||||
|
|
||||||
|
=item $ckp->model()
|
||||||
|
|
||||||
|
Return the model type of the CheckPoint device (Based on the sysObjectOID translation).
|
||||||
|
|
||||||
|
=item $ckp->os()
|
||||||
|
|
||||||
|
Returns the OS extracted from C<sysDescr>.
|
||||||
|
|
||||||
|
=item $ckp->os_ver()
|
||||||
|
|
||||||
|
Returns the software version extracted from C<sysDescr>, along
|
||||||
|
with the Net-SNMP version.
|
||||||
|
|
||||||
|
=item $ckp->uptime()
|
||||||
|
|
||||||
|
Returns the system uptime instead of the agent uptime.
|
||||||
|
NOTE: discontinuity timers and other Time Stamp based objects
|
||||||
|
are based on agent uptime, so use orig_uptime().
|
||||||
|
|
||||||
|
=item $ckp->serial()
|
||||||
|
|
||||||
|
Return the serial number of the device if the SNMP server is configured as indicated previously.
|
||||||
|
Return '' in other case.
|
||||||
|
|
||||||
|
=item $ckp->layers()
|
||||||
|
|
||||||
|
Return '01001100'.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3> for details.
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::LLDP
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP> for details.
|
||||||
|
|
||||||
|
=head1 TABLE ENTRIES
|
||||||
|
|
||||||
|
These are methods that return tables of information in the form of a reference
|
||||||
|
to a hash.
|
||||||
|
|
||||||
|
=head2 Overrides
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $ckp->i_ignore()
|
||||||
|
|
||||||
|
Returns reference to hash. Increments value of IID if port is to be ignored.
|
||||||
|
|
||||||
|
Ignores loopback
|
||||||
|
|
||||||
|
=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::LLDP
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP> for details.
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
In order to cause SNMP::Info to classify your device into this class, it
|
||||||
|
may be necessary to put a configuration line into your F<snmpd.conf>
|
||||||
|
similar to
|
||||||
|
|
||||||
|
sysobjectid .1.3.6.1.4.1.8072.3.2.N
|
||||||
|
|
||||||
|
where N is the object ID for your OS from the C<NET-SNMP-TC> MIB (or
|
||||||
|
255 if not listed). Some Net-SNMP installations default to an
|
||||||
|
incorrect return value for C<system.sysObjectId>.
|
||||||
|
|
||||||
|
In order to recognize a Net-SNMP device as Layer3, it may be necessary
|
||||||
|
to put a configuration line similar to
|
||||||
|
|
||||||
|
sysservices 76
|
||||||
|
|
||||||
|
in your F<snmpd.conf>.
|
||||||
|
|
||||||
|
=cut
|
||||||
@@ -55,7 +55,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
||||||
|
|
||||||
@@ -73,8 +73,8 @@ sub b_mac {
|
|||||||
foreach my $i ( keys %$macs ) {
|
foreach my $i ( keys %$macs ) {
|
||||||
my $mac = $macs->{$i};
|
my $mac = $macs->{$i};
|
||||||
|
|
||||||
# don't catch the bad macs with zeroed OUI
|
# don't catch the bad macs with bogus OUI
|
||||||
if ( $mac !~ m/(0{1,2}:){3}/ ) {
|
if ( $mac !~ m/(0{1,2}:){2}(00|01)/ ) {
|
||||||
push( @macs, $mac );
|
push( @macs, $mac );
|
||||||
}
|
}
|
||||||
@macs = sort(@macs);
|
@macs = sort(@macs);
|
||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::Cisco::MIBS,
|
%SNMP::Info::Layer3::Cisco::MIBS,
|
||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
|
||||||
312
lib/SNMP/Info/Layer3/Cumulus.pm
Normal file
312
lib/SNMP/Info/Layer3/Cumulus.pm
Normal file
@@ -0,0 +1,312 @@
|
|||||||
|
# SNMP::Info::Layer3::Cumulus
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018 Bill Fenner and Oliver Gorwits
|
||||||
|
# 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::Cumulus;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Exporter;
|
||||||
|
use SNMP::Info::Layer3;
|
||||||
|
use SNMP::Info::LLDP;
|
||||||
|
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
|
||||||
|
|
||||||
|
@SNMP::Info::Layer3::Cumulus::ISA = qw/
|
||||||
|
SNMP::Info::IEEE802dot3ad
|
||||||
|
SNMP::Info::LLDP
|
||||||
|
SNMP::Info::Layer3
|
||||||
|
Exporter
|
||||||
|
/;
|
||||||
|
@SNMP::Info::Layer3::Cumulus::EXPORT_OK = qw/ agg_ports /;
|
||||||
|
|
||||||
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
|
$VERSION = '3.49';
|
||||||
|
|
||||||
|
%MIBS = (
|
||||||
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
%SNMP::Info::LLDP::MIBS,
|
||||||
|
%SNMP::Info::IEEE802dot3ad::MIBS,
|
||||||
|
'UCD-SNMP-MIB' => 'versionTag',
|
||||||
|
'NET-SNMP-TC' => 'netSnmpAgentOIDs',
|
||||||
|
'HOST-RESOURCES-MIB' => 'hrSystem',
|
||||||
|
);
|
||||||
|
|
||||||
|
%GLOBALS = (
|
||||||
|
%SNMP::Info::Layer3::GLOBALS,
|
||||||
|
%SNMP::Info::LLDP::GLOBALS,
|
||||||
|
'netsnmp_vers' => 'versionTag',
|
||||||
|
'hrSystemUptime' => 'hrSystemUptime',
|
||||||
|
'chassis' => 'entPhysicalDescr.1',
|
||||||
|
);
|
||||||
|
|
||||||
|
%FUNCS = (
|
||||||
|
%SNMP::Info::Layer3::FUNCS,
|
||||||
|
%SNMP::Info::LLDP::FUNCS,
|
||||||
|
);
|
||||||
|
|
||||||
|
%MUNGE = (
|
||||||
|
%SNMP::Info::Layer3::MUNGE,
|
||||||
|
%SNMP::Info::LLDP::MUNGE,
|
||||||
|
);
|
||||||
|
|
||||||
|
sub vendor { return 'Cumulus Networks' }
|
||||||
|
|
||||||
|
sub os { return 'cumulus' }
|
||||||
|
|
||||||
|
sub os_ver {
|
||||||
|
my $netsnmp = shift;
|
||||||
|
my $descr = $netsnmp->description();
|
||||||
|
|
||||||
|
# STRING: "Cumulus Linux version 3.5.1 running on innotek GmbH VirtualBox"
|
||||||
|
return $1 if ( $descr =~ /^Cumulus Linux (\S+)\s+/ );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub model {
|
||||||
|
my $netsnmp = shift;
|
||||||
|
my $chassis = $netsnmp->chassis();
|
||||||
|
|
||||||
|
# STRING: "Cumulus Networks VX Chassis"
|
||||||
|
return $1 if ( $chassis =~ /^Cumulus Networks\s+(.+)/ );
|
||||||
|
return $netsnmp->SUPER::model();
|
||||||
|
}
|
||||||
|
|
||||||
|
# sysUptime gives us the time since the SNMP daemon has restarted,
|
||||||
|
# so return the system uptime since that's probably what the user
|
||||||
|
# wants. (Caution: this could cause trouble if using
|
||||||
|
# sysUptime-based discontinuity timers or other TimeStamp
|
||||||
|
# objects.
|
||||||
|
sub uptime {
|
||||||
|
my $netsnmp = shift;
|
||||||
|
my $uptime;
|
||||||
|
|
||||||
|
$uptime = $netsnmp->hrSystemUptime();
|
||||||
|
return $uptime if defined $uptime;
|
||||||
|
|
||||||
|
return $netsnmp->SUPER::uptime();
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifDescr is the same for all interfaces in a class, but the ifName is
|
||||||
|
# unique, so let's use that for port name. If all else fails,
|
||||||
|
# concatentate ifDesc and ifIndex.
|
||||||
|
# (code from SNMP/Info/Layer2/Netgear.pm)
|
||||||
|
sub interfaces {
|
||||||
|
my $netgear = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $interfaces = $netgear->i_index($partial) || {};
|
||||||
|
my $i_descr = $netgear->i_description($partial) || {};
|
||||||
|
my $i_name = $netgear->i_name($partial);
|
||||||
|
my $i_isset = ();
|
||||||
|
# Replace the description with the ifName field, if set
|
||||||
|
foreach my $iid ( keys %$i_name ) {
|
||||||
|
my $name = $i_name->{$iid};
|
||||||
|
next unless defined $name;
|
||||||
|
if (defined $name and $name !~ /^\s*$/) {
|
||||||
|
$interfaces->{$iid} = $name;
|
||||||
|
$i_isset->{$iid} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Replace the Index with the ifDescr field, appended with index
|
||||||
|
# number, to deal with devices with non-unique ifDescr.
|
||||||
|
foreach my $iid ( keys %$i_descr ) {
|
||||||
|
my $port = $i_descr->{$iid} . '-' . $iid;
|
||||||
|
next unless defined $port;
|
||||||
|
next if (defined $i_isset->{$iid} and $i_isset->{$iid} == 1);
|
||||||
|
$interfaces->{$iid} = $port;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $interfaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub i_ignore {
|
||||||
|
my $l3 = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $interfaces = $l3->interfaces($partial) || {};
|
||||||
|
|
||||||
|
my %i_ignore;
|
||||||
|
foreach my $if ( keys %$interfaces ) {
|
||||||
|
|
||||||
|
# vlan1@br0 or peerlink.4094@peerlink
|
||||||
|
if ( $interfaces->{$if} =~ /@/i ) {
|
||||||
|
$i_ignore{$if}++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return \%i_ignore;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub agg_ports { return agg_ports_lag(@_) }
|
||||||
|
|
||||||
|
1;
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SNMP::Info::Layer3::Cumulus - SNMP Interface to Cumulus Networks Devices
|
||||||
|
|
||||||
|
=head1 AUTHORS
|
||||||
|
|
||||||
|
Oliver Gorwits - based on Layer3::NetSNMP implementation
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
# Let SNMP::Info determine the correct subclass for you.
|
||||||
|
my $cumulus = new SNMP::Info(
|
||||||
|
AutoSpecify => 1,
|
||||||
|
Debug => 1,
|
||||||
|
DestHost => 'myrouter',
|
||||||
|
Community => 'public',
|
||||||
|
Version => 2
|
||||||
|
)
|
||||||
|
or die "Can't connect to DestHost.\n";
|
||||||
|
|
||||||
|
my $class = $cumulus->class();
|
||||||
|
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Subclass for Cumulus Networks devices
|
||||||
|
|
||||||
|
=head2 Inherited Classes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Required MIBs
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item F<UCD-SNMP-MIB>
|
||||||
|
|
||||||
|
=item F<NET-SNMP-TC>
|
||||||
|
|
||||||
|
=item F<HOST-RESOURCES-MIB>
|
||||||
|
|
||||||
|
=item Inherited Classes' MIBs
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer3> for its own MIB requirements.
|
||||||
|
|
||||||
|
See L<SNMP::Info::LLDP> for its own MIB requirements.
|
||||||
|
|
||||||
|
See L<SNMP::Info::IEEE802dot3ad> for its own MIB requirements.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 GLOBALS
|
||||||
|
|
||||||
|
These are methods that return scalar value from SNMP
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $cumulus->vendor()
|
||||||
|
|
||||||
|
Returns 'Cumulus Networks'.
|
||||||
|
|
||||||
|
=item $cumulus->os()
|
||||||
|
|
||||||
|
Returns 'cumulus'.
|
||||||
|
|
||||||
|
=item $cumulus->os_ver()
|
||||||
|
|
||||||
|
Returns the software version extracted from C<sysDescr>.
|
||||||
|
|
||||||
|
=item $cumulus->uptime()
|
||||||
|
|
||||||
|
Returns the system uptime instead of the agent uptime.
|
||||||
|
NOTE: discontinuity timers and other Time Stamp based objects
|
||||||
|
are based on agent uptime, so use orig_uptime().
|
||||||
|
|
||||||
|
=item $l3->model()
|
||||||
|
|
||||||
|
Returns the chassis type.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3> for details.
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::LLDP
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP> for details.
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::IEEE802dot3ad
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
|
||||||
|
|
||||||
|
=head1 TABLE ENTRIES
|
||||||
|
|
||||||
|
These are methods that return tables of information in the form of a reference
|
||||||
|
to a hash.
|
||||||
|
|
||||||
|
=head2 Overrides
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $cumulus->interfaces()
|
||||||
|
|
||||||
|
Uses the i_name() field.
|
||||||
|
|
||||||
|
=item $cumulus->i_ignore()
|
||||||
|
|
||||||
|
Returns reference to hash. Increments value of IID if port is to be ignored.
|
||||||
|
|
||||||
|
Ignores interfaces with an "@" in them.
|
||||||
|
|
||||||
|
=item $cumulus->i_ignore()
|
||||||
|
|
||||||
|
Returns reference to hash. Increments value of IID if port is to be ignored.
|
||||||
|
|
||||||
|
Ignores loopback
|
||||||
|
|
||||||
|
=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.
|
||||||
|
|
||||||
|
=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::LLDP
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP> for details.
|
||||||
|
|
||||||
|
=head2 Table Methods imported from SNMP::Info::IEEE802dot3ad
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::IEEE802dot3ad> for details.
|
||||||
|
|
||||||
|
=cut
|
||||||
213
lib/SNMP/Info/Layer3/DLink.pm
Normal file
213
lib/SNMP/Info/Layer3/DLink.pm
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
package SNMP::Info::Layer3::DLink;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Exporter;
|
||||||
|
use SNMP::Info::Layer3;
|
||||||
|
use SNMP::Info::LLDP;
|
||||||
|
|
||||||
|
@SNMP::Info::Layer3::DLink::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
|
||||||
|
@SNMP::Info::Layer3::DLink::EXPORT_OK = qw//;
|
||||||
|
|
||||||
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
|
$VERSION = '3.49';
|
||||||
|
|
||||||
|
%MIBS = (
|
||||||
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
%SNMP::Info::LLDP::MIBS,
|
||||||
|
'DLINK-ID-REC-MIB' => 'dlink',
|
||||||
|
'SWPRIMGMT-DES3200-MIB' => 'dlink-des3200SeriesProd',
|
||||||
|
'SWPRIMGMT-DES30XXP-MIB' => 'dlink-des30xxproductProd',
|
||||||
|
'SWPRIMGMT-DES1228ME-MIB' => 'dlink-des1228MEproductProd',
|
||||||
|
'SWDES3528-52PRIMGMT-MIB' => 'dlink-Des3500Series',
|
||||||
|
'DES-1210-28-AX' => 'des-1210-28ax',
|
||||||
|
'DES-1210-10MEbx' => 'des-1210-10mebx',
|
||||||
|
'DES-1210-26MEbx' => 'des-1210-26mebx',
|
||||||
|
'DES-1210-52-BX' => 'des-1210-52bx',
|
||||||
|
'DES-1210-52-CX' => 'des-1210-52-cx',
|
||||||
|
'DGS-1210-24-AX' => 'dgs-1210-24ax',
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
%GLOBALS = (
|
||||||
|
%SNMP::Info::Layer3::GLOBALS,
|
||||||
|
%SNMP::Info::LLDP::GLOBALS,
|
||||||
|
);
|
||||||
|
|
||||||
|
%FUNCS = (
|
||||||
|
%SNMP::Info::Layer3::FUNCS,
|
||||||
|
%SNMP::Info::LLDP::FUNCS,
|
||||||
|
'dlink_fw' => 'probeSoftwareRev',
|
||||||
|
'dlink_hw' => 'probeHardwareRev',
|
||||||
|
'dlink_stp_i_root_port' => 'MSTP_MIB__swMSTPInstRootPort',
|
||||||
|
'dlink_serial_no' => 'AGENT_GENERAL_MIB__agentSerialNumber',
|
||||||
|
);
|
||||||
|
|
||||||
|
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, %SNMP::Info::LLDP::MUNGE, );
|
||||||
|
|
||||||
|
sub model {
|
||||||
|
my $dlink=shift;
|
||||||
|
my $id = $dlink->id();
|
||||||
|
my $model = &SNMP::translateObj($id);
|
||||||
|
return $id unless defined $model;
|
||||||
|
if (defined $model && $model !~ /dlink-products/) {
|
||||||
|
return $model;
|
||||||
|
} else {
|
||||||
|
#If don't have a device MIB
|
||||||
|
return $dlink->description();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub vendor {
|
||||||
|
return 'dlink';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub serial {
|
||||||
|
my $dlink = shift;
|
||||||
|
my $model = $dlink->model();
|
||||||
|
my $id = $dlink->id();
|
||||||
|
my $serial;
|
||||||
|
if ($model =~ /1210/) {
|
||||||
|
#Due to the zoo of MIB from DLink by 1210 series
|
||||||
|
$serial->{0} = $dlink->session()->get($id.'.1.30.0');
|
||||||
|
} else {
|
||||||
|
$serial = $dlink->dlink_serial_no();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $serial->{0} if ( defined $serial->{0} and $serial->{0} !~ /^\s*$/ and $serial->{0} !~ 'NOSUCHOBJECT' );
|
||||||
|
return $dlink->SUPER::serial();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fwver {
|
||||||
|
my $dlink=shift;
|
||||||
|
my $model = $dlink->model();
|
||||||
|
my $id = $dlink->id();
|
||||||
|
my $fw;
|
||||||
|
if ($model =~ /1210/) {
|
||||||
|
#Due to the zoo of MIB from DLink by 1210 series
|
||||||
|
$fw->{0} = $dlink->session()->get($id.'.1.3.0');
|
||||||
|
} else {
|
||||||
|
$fw = $dlink->dlink_fw();
|
||||||
|
}
|
||||||
|
return $fw->{0} if ( defined $fw->{0} and $fw->{0} !~ /^\s*$/ and $fw->{0} !~ 'NOSUCHOBJECT');
|
||||||
|
}
|
||||||
|
|
||||||
|
sub hwver {
|
||||||
|
my $dlink=shift;
|
||||||
|
my $model = $dlink->model();
|
||||||
|
my $id = $dlink->id();
|
||||||
|
my $hw;
|
||||||
|
if ($model =~ /1210/) {
|
||||||
|
#Due to the zoo of MIB from DLink by 1210 series
|
||||||
|
$hw->{0} = $dlink->session()->get($id.'.1.2.0');
|
||||||
|
} else {
|
||||||
|
$hw = $dlink->dlink_hw();
|
||||||
|
}
|
||||||
|
return $hw->{0} if ( defined $hw->{0} and $hw->{0} !~ /^\s*$/ and $hw->{0} !~ 'NOSUCHOBJECT');
|
||||||
|
}
|
||||||
|
|
||||||
|
sub stp_i_root_port {
|
||||||
|
my $dlink=shift;
|
||||||
|
my $model = $dlink->model();
|
||||||
|
my $id = $dlink->id();
|
||||||
|
my $stp_i_root_port;
|
||||||
|
if ($model =~ /1210-(?:10|26)/) {
|
||||||
|
#Due to the zoo of MIB from DLink by 1210 series
|
||||||
|
$stp_i_root_port->{0} = $dlink->session()->get($id.'.6.1.13.0');
|
||||||
|
} else {
|
||||||
|
$stp_i_root_port = $dlink->dlink_stp_i_root_port();
|
||||||
|
}
|
||||||
|
return $stp_i_root_port if ( defined $stp_i_root_port->{0} and $stp_i_root_port->{0} !~ /^\s*$/ and $stp_i_root_port->{0} !~ 'NOSUCHOBJECT');
|
||||||
|
return $dlink->SUPER::stp_i_root_port();
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SNMP::Info::Layer3::DLink - SNMP Interface to DLink Devices
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
# Let SNMP::Info determine the correct subclass for you.
|
||||||
|
my $dlink = new SNMP::Info(
|
||||||
|
AutoSpecify => 1,
|
||||||
|
Debug => 1,
|
||||||
|
DestHost => 'myrouter',
|
||||||
|
Community => 'public',
|
||||||
|
Version => 2
|
||||||
|
)
|
||||||
|
or die "Can't connect to DestHost.\n";
|
||||||
|
|
||||||
|
my $class = $dlink->class();
|
||||||
|
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Subclass for Vyatta Devices running dlink.
|
||||||
|
|
||||||
|
=head2 Inherited Classes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3
|
||||||
|
|
||||||
|
=item SNMP::Info::LLDP
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Inherited Classes' MIBs
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
|
||||||
|
|
||||||
|
See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
|
||||||
|
|
||||||
|
=head1 GLOBALS
|
||||||
|
|
||||||
|
These are methods that return scalar value from SNMP
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $dlink->model()
|
||||||
|
|
||||||
|
Returns the ID or else description.
|
||||||
|
|
||||||
|
=item $dlink->vendor()
|
||||||
|
|
||||||
|
Returns 'dlink'.
|
||||||
|
|
||||||
|
=item $dlink->serial()
|
||||||
|
|
||||||
|
Returns serial number.
|
||||||
|
|
||||||
|
=item $dlink->fwver()
|
||||||
|
|
||||||
|
Returns the firmware version.
|
||||||
|
|
||||||
|
=item $dlink->hwver()
|
||||||
|
|
||||||
|
Returns the hardware version.
|
||||||
|
|
||||||
|
=item $dlink->stp_i_root_port()
|
||||||
|
|
||||||
|
Returns the STP root port.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
|
||||||
|
|
||||||
|
=head1 TABLE METHODS
|
||||||
|
|
||||||
|
=head2 Table Methods imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
=cut
|
||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
|
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.34';
|
$VERSION = '3.49';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user