Compare commits

...

47 Commits
3.26 ... 3.32

Author SHA1 Message Date
Oliver Gorwits
fd898829c3 release 3.32 2016-04-26 21:26:39 +01:00
Oliver Gorwits
b0158628bb update copyright year 2016-04-26 21:25:09 +01:00
Oliver Gorwits
0f69a7b391 Removed DeviceMatrix from the distribution 2016-04-26 21:24:27 +01:00
Oliver Gorwits
72773117e5 Respect version/comm/secname on passed Session obj 2016-04-26 21:17:35 +01:00
Oliver Gorwits
06806f5a6e AUTOLOAD typo-catcher search for SNMP::Info no longer anchored 2016-04-26 21:02:57 +01:00
Oliver Gorwits
a01c785ec8 add missing changelog entries GRRRRRR! 2016-04-26 21:01:08 +01:00
Brian De Wolf
502e206371 Improve VG350 detection
Cisco VG350s get detected as Aironet 350s, which breaks CDP collection.  This
overrides the behavior to mark VG350s as generic Cisco Layer3 devices.
2016-04-08 16:18:30 -07:00
Max Kosmach
8fba1bc6a9 Remove L2 from PaloAlto layers 2016-03-19 15:27:21 +03:00
Jeroen van Ingen
f43803d6d4 Merge /u/begemot/snmp-info/ branch support-for-paloalto-v2 into master
https://sourceforge.net/p/snmp-info/code/merge-requests/14/
2016-03-17 13:59:00 +00:00
Jeroen van Ingen
338cba6350 Merge /u/begemot/snmp-info/ branch support-for-vmware-v2 into master
https://sourceforge.net/p/snmp-info/code/merge-requests/15/
2016-03-11 08:16:12 +00:00
Jeroen van Ingen
2a15066062 APC: also report model for PDU products (#61) 2016-03-07 10:12:55 +01:00
Jeroen van Ingen
add86bc566 Add workaround in IPv6.pm to deal with possibly incorrect IPV6-MIB implementations 2016-03-01 08:37:26 +01:00
Jeroen van Ingen
e9b4eaaeb9 Merge /u/begemot/snmp-info/ branch fix-apc-mac into master
http://sourceforge.net/p/snmp-info/code/merge-requests/17/
2016-02-29 09:23:08 +00:00
Oliver Gorwits
07605051f5 Avoid deep recusion when AUTOLOAD and carp collide 2016-02-25 20:02:19 +00:00
Oliver Gorwits
998356484b Merge branch 'master' of ssh://git.code.sf.net/p/snmp-info/code 2016-02-25 17:54:11 +00:00
Oliver Gorwits
e97617ad60 Do not init table cache if Cache provided by user 2016-02-25 08:04:20 +00:00
Oliver Gorwits
9685c3afa8 Support undefined (noSuchIntance) values in Offline mode 2016-02-25 07:49:55 +00:00
Bill Fenner
c209b9a72f Merge /u/begemot/snmp-info/ branch fix-aggregate into master
http://sourceforge.net/p/snmp-info/code/merge-requests/18/
2016-02-24 16:49:59 +00:00
Max Kosmach
4999b769ba fix for 'Use of inherited AUTOLOAD for non-method SNMP::Info::Layer2::HP::agg_ports_ifstack() is deprecated' 2016-02-24 18:50:45 +03:00
Max Kosmach
d8b5ba2161 Add device MAC to APC UPS 2016-02-23 19:20:52 +03:00
Max Kosmach
6f4a4a91cf Add support for propMultiplexor as ifType.
3Com/H3C switches use this type for Link Aggegation without LACP.
2016-02-19 18:46:49 +03:00
Max Kosmach
0049f0d72e Add VMware support 2016-02-17 01:59:24 +03:00
Max Kosmach
4ea66fc0fd Add Palo Alto support 2016-02-17 01:45:32 +03:00
Max Kosmach
8426620572 Add 200 Mbps and 2.0 Gbps aliases to SPEED_MAP (useful withport aggregation) 2016-02-11 21:50:44 +03:00
Oliver Gorwits
76aece0a3f release 3.31 2016-01-22 20:40:09 +00:00
Eric A. Miller
508e7f77a0 Add support for channelized interfaces in L3::Passport.
Channelized interfaces are 40G or 100G ports split into multiple 10G sub ports, reported as Slot.Port.Sub-Port.  Note: Currently ifDescr reports the interface correctly as Slot/Port/Sub-Port on channelized interfaces but ifName misreports as just Slot/Port.
2016-01-19 23:24:00 -05:00
Eric A. Miller
d250a829cb SONMP support for Enhanced Topology Table
The Enhanced Topology Table (s5EnMsTopNmmEnhancedTable) supports channelized interfaces as sub ports and is the only table populated on newer VOSS based devices.
2016-01-19 23:16:21 -05:00
Oliver Gorwits
2fada0c31c Support for CiscoSB OS and Version (D. Tuecks) 2015-11-28 20:19:33 +00:00
Oliver Gorwits
e6ad08733d release 3.30 2015-11-16 21:35:59 +00:00
Eric A. Miller
a8d83b5e1c Statistics in the sysIfxStatTable are 64-bit counters, so they should override the 64-bit methods. See documentation at https://metacpan.org/pod/SNMP::Info#Interface-Statistics for implications. The proprietary MIB does not have 32-bit counters, as a result 32-bit counter methods are not overridden. 2015-11-10 23:05:47 -05:00
Eric A. Miller
9392b74cbc Correct port indexing of newer VSP 4K and 8K in L3::Passport 2015-11-10 22:42:15 -05:00
Eric A. Miller
e09624efd0 RT #106254: Add new sysObjectID mapping for Ubiquiti 2015-11-10 22:21:21 -05:00
Alexander Hartmaier
d4d7429de4 Correct link to MIB tarball 2015-11-10 10:26:31 +01:00
Oliver Gorwits
b97cef86a3 release 3.29 2015-10-13 22:31:16 +01:00
Jeroen van Ingen
70615a172b IPv6 related updated to Info::LLDP
- LLDP::lldp_addr() may now also return neighbor IPv6 addresses
- Make more clear in POD that lldp_addr() will not return all management addresses reported by neighbor, it's a kind of roulette
- Add LLDP::lldp_ipv6() and LLDP::lldp_mac() methods for remote management addresses of types IPv6 and MAC, respectively
2015-09-04 16:15:08 +02:00
Jeroen van Ingen
d399ca90d3 Add IPv6::ipv6_addr() method for decoding table instances to actual addresses 2015-09-01 14:53:34 +02:00
Jeroen van Ingen
bbc9695075 Report L2 capability on PacketFront devices if they have bridge ports 2015-06-29 17:02:48 +02:00
Oliver Gorwits
c8fceeb75b release 3.28 2015-06-18 22:37:26 +01:00
Eric A. Miller
036cb4556e Correct port indexing of VSP 4K in L3::Passport 2015-06-11 18:23:23 -04:00
Jeroen van Ingen
e7b06a0b06 POD fixes in Layer2::Aironet 2015-06-09 17:17:46 +02:00
Jeroen van Ingen
c0067113e9 Add model translation to Layer3::Huawei by loading correct MIB 2015-06-09 17:17:01 +02:00
Jeroen van Ingen
ce4349a188 Try to determine whether a device in generic Layer3::Cisco class needs community based indexing
Layer3 capable Cisco device without a mapping to a more specific class fall
under the Layer3::Cisco class. These can be "real" routers that don't need
community based indexing, or Layer 3 switches that do need community based
indexing (to fetch L2 forwarding tables for different VLANs). Generally, if
community based indexing is needed on a platform, it also supports the
CISCO-VTP-MIB. Dynamically return cisco_comm_indexing based on vtpVersion.
2015-06-02 18:07:50 +02:00
Jeroen van Ingen
224085dfca Add Layer3::Huawei class 2015-06-02 17:17:13 +02:00
Oliver Gorwits
9b3262a5fe release 3.27 2015-05-05 20:32:40 +01:00
Oliver Gorwits
86856b6d54 Only log adding mibdirs at debug level 2 2015-05-05 20:24:44 +01:00
Oliver Gorwits
d5bf08329e [#221] Drop Cisco Voice VLAN 4096 2015-05-05 20:18:48 +01:00
Bill Fenner
60efce8404 Add power supply information
Use ps1_type and ps1_status to report power injector type
(e.g., cdp negotiated, inline power, etc.) and status
(e.g., full power, reduced power)
2015-03-18 19:05:40 +00:00
118 changed files with 1187 additions and 1256 deletions

View File

@@ -1,5 +1,5 @@
All code from version 0.7 on
Copyright (c) 2003-2009 Max Baker and SNMP::Info Developers
Copyright (c) 2003-2016 Max Baker and SNMP::Info Developers
All rights reserved.
Original Code

View File

@@ -1,5 +1,85 @@
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
version 3.32 (2016-04-26)
[ENHANCEMENTS]
* Add 200 Mbps and 2.0 Gbps aliases to SPEED_MAP
* Add Palo Alto support
* Add VMware support
* Support for propMultiplexor as ifType
* Add device MAC to APC UPS
* [#61] Report APC model for PDU products
* Removed DeviceMatrix from the distribution
[BUG FIXES]
* Support undefined (noSuchInstance) values in Offline mode
* Do not init table cache if Cache provided by user
* Avoid deep recusion when AUTOLOAD and carp collide
* Detect Cisco VG350s as L3 devices instead of APs
* fix for 'Use of inherited AUTOLOAD for non-method SNMP::Info::Layer2::HP::agg_ports_ifstack() is deprecated'
* Workaround in IPv6.pm to deal with possibly incorrect IPV6-MIB implementations
* [#71] AUTOLOAD typo-catcher search for SNMP::Info no longer anchored
* [#70] Respect version/comm/secname on passed Session obj
version 3.31 (2016-01-22)
[ENHANCEMENTS]
* Support for CiscoSB OS and Version (D. Tuecks)
* SONMP support for Enhanced Topology Table
* Add support for channelized interfaces in L3::Passport
[BUG FIXES]
* Correct link to MIB tarball
version 3.30 (2015-11-16)
[ENHANCEMENTS]
* RT #106254: Add new sysObjectID mapping for Ubiquiti
[BUG FIXES]
* Correct link to MIB tarball
* Correct port indexing of newer VSP 4K and 8K in L3::Passport
* Statistics in the sysIfxStatTable are 64-bit counters, so they should
override the 64-bit methods.
version 3.29 (2015-10-13)
[ENHANCEMENTS]
* Add IPv6::ipv6_addr() method to map IPv6 interface address indexes to actual addresses
* Add support for (remote) IPv6 addresses to LLDP::lldp_addr()
* Add LLDP::lldp_ipv6() and LLDP::lldp_mac() so that remote management
addresses of specific types can be requested
version 3.28 (2015-06-18)
[ENHANCEMENTS]
* Add Layer3::Huawei class for Huawei Quidway switches
* Modified generic Layer3::Cisco class: use community based indexing if
the device returns a value for vtpVersion
[BUG FIXES]
* Correct port indexing of VSP 4K in L3::Passport
version 3.27 (2015-05-05)
[ENHANCEMENTS]
* Cisco Aironet PSU information
* Only log adding mibdirs at debug level 2
[BUG FIXES]
* [#221] Drop Cisco Voice VLAN 4096
version 3.26 (2015-03-07)
[ENHANCEMENTS]

View File

@@ -4,7 +4,6 @@ Coding Guidelines:
- tab-width of 4, no tab characters
- keep POD documentation up-to-date
- always update ChangeLog before committing
- always update DeviceMatrix.txt before committing
- check-in required mibs to netdisco-mibs and release new package if needed
Release and Testing Instructions:

File diff suppressed because it is too large Load Diff

56
Info.pm
View File

@@ -24,7 +24,7 @@ use vars
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
$NOSUCH $BIGINT $REPEATERS/;
$VERSION = '3.26';
$VERSION = '3.32';
=head1 NAME
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
=head1 VERSION
SNMP::Info - Version 3.26
SNMP::Info - Version 3.32
=head1 AUTHOR
@@ -47,7 +47,9 @@ by Max Baker.
=head1 DEVICES SUPPORTED
See L<http://netdisco.org/doc/DeviceMatrix.html> or L<DeviceMatrix.txt> for more details.
There are now generic classes for most types of device and so the authors
recommend loading SNMP::Info with AutoSpecify, and then reporting to the mail
list any missing functionality (such as neighbor discovery tables).
=head1 SYNOPSIS
@@ -168,7 +170,7 @@ install by hand.
SNMP::Info operates on textual descriptors found in MIBs.
If you are using SNMP::Info separate from Netdisco,
download the Netdisco MIB package at L<http://sourceforge.net/project/showfiles.php?group_id=80033&package_id=135517>
download the Netdisco MIB package at L<http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest-snapshot/>
Make sure that your snmp.conf is updated to point to your MIB directory
and that the MIBs are world-readable.
@@ -809,6 +811,12 @@ Original Equipment Manufacturer (OEM) such as the HP ProCurve 9300 and 6300 seri
See documentation in L<SNMP::Info::Layer3::HP9300> for details.
=item SNMP::Info::Layer3::Huawei
SNMP Interface to Huawei Layer 3 switches and routers.
See documentation in L<SNMP::Info::Layer3::Huawei> for details.
=item SNMP::Info::Layer3::IBMGbTor
SNMP Interface to IBM Rackswitch (formerly Blade Network Technologies)
@@ -1234,16 +1242,13 @@ sub new {
return;
}
# Table function store
my $store = {};
# Save Args for later
$new_obj->{store} = $store;
$new_obj->{store} ||= {};
$new_obj->{sess} = $sess;
$new_obj->{args} = \%args;
$new_obj->{snmp_ver} = $args{Version} || 2;
$new_obj->{snmp_comm} = $args{Community} || 'public';
$new_obj->{snmp_user} = $args{SecName} || 'initial';
$new_obj->{snmp_ver} = $sess->{Version} || $args{Version} || 2;
$new_obj->{snmp_comm} = $sess->{Community} || $args{Community} || 'public';
$new_obj->{snmp_user} = $sess->{SecName} || $args{SecName} || 'initial';
return $auto_specific ? $new_obj->specify() : $new_obj;
}
@@ -1460,9 +1465,6 @@ SNMP::Info::Layer3 subclasses.
If the device still can be connected to via SNMP::Info, then
SNMP::Info is returned.
See L<http://netdisco.org/doc/DeviceMatrix.html> or L<DeviceMatrix.txt> for more details
about device support, or view C<device_type()> in F<Info.pm>.
=cut
sub device_type {
@@ -1505,6 +1507,7 @@ sub device_type {
1872 => 'SNMP::Info::Layer3::AlteonAD',
1916 => 'SNMP::Info::Layer3::Extreme',
1991 => 'SNMP::Info::Layer3::Foundry',
2011 => 'SNMP::Info::Layer3::Huawei',
2021 => 'SNMP::Info::Layer3::NetSNMP',
2272 => 'SNMP::Info::Layer3::Passport',
2636 => 'SNMP::Info::Layer3::Juniper',
@@ -1518,6 +1521,7 @@ sub device_type {
6027 => 'SNMP::Info::Layer3::Force10',
6486 => 'SNMP::Info::Layer3::AlcatelLucent',
6527 => 'SNMP::Info::Layer3::Timetra',
6876 => 'SNMP::Info::Layer3::VMware',
8072 => 'SNMP::Info::Layer3::NetSNMP',
9303 => 'SNMP::Info::Layer3::PacketFront',
10002 => 'SNMP::Info::Layer2::Ubiquiti',
@@ -1529,9 +1533,11 @@ sub device_type {
14988 => 'SNMP::Info::Layer3::Mikrotik',
17163 => 'SNMP::Info::Layer3::Steelhead',
25506 => 'SNMP::Info::Layer3::H3C',
25461 => 'SNMP::Info::Layer3::PaloAlto',
26543 => 'SNMP::Info::Layer3::IBMGbTor',
30065 => 'SNMP::Info::Layer3::Arista',
35098 => 'SNMP::Info::Layer3::Pica8',
41112 => 'SNMP::Info::Layer2::Ubiquiti',
);
my %l2sysoidmap = (
@@ -1545,6 +1551,7 @@ sub device_type {
1872 => 'SNMP::Info::Layer3::AlteonAD',
1916 => 'SNMP::Info::Layer3::Extreme',
1991 => 'SNMP::Info::Layer3::Foundry',
2011 => 'SNMP::Info::Layer3::Huawei',
2272 => 'SNMP::Info::Layer3::Passport',
2925 => 'SNMP::Info::Layer1::Cyclades',
3224 => 'SNMP::Info::Layer3::Netscreen',
@@ -1552,6 +1559,7 @@ sub device_type {
4526 => 'SNMP::Info::Layer2::Netgear',
5624 => 'SNMP::Info::Layer3::Enterasys',
6486 => 'SNMP::Info::Layer3::AlcatelLucent',
9303 => 'SNMP::Info::Layer3::PacketFront',
11898 => 'SNMP::Info::Layer2::Orinoco',
14179 => 'SNMP::Info::Layer2::Airespace',
14525 => 'SNMP::Info::Layer2::Trapeze',
@@ -1599,6 +1607,9 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Aironet'
if ( $desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/ );
# Override voice gateway device (VG350) showing up as Aironet
$objtype = 'SNMP::Info::Layer3::Cisco' if $desc =~ /VG350/;
# Cat6k with older SUPs (hybrid CatOS/IOS?)
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/;
@@ -3294,6 +3305,7 @@ Makes human friendly speed ratings using %SPEED_MAP
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
@@ -3303,6 +3315,7 @@ Makes human friendly speed ratings using %SPEED_MAP
'622000000' => 'OC-12',
'622080000' => 'OC-12',
'1000000000' => '1.0 Gbps',
'2000000000' => '2.0 Gbps',
'2488000000' => 'OC-48',
)
@@ -3339,6 +3352,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'200000000' => '200 Mbps',
'149760000' => 'ATM on OC-3',
'155000000' => 'OC-3',
'155519000' => 'OC-3',
@@ -3348,6 +3362,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
'622000000' => 'OC-12',
'622080000' => 'OC-12',
'1000000000' => '1.0 Gbps',
'2000000000' => '2.0 Gbps',
'2488000000' => 'OC-48',
);
@@ -3622,7 +3637,8 @@ sub init {
foreach my $d (@$mibdirs) {
next unless -d $d;
print "SNMP::Info::init() - Adding new mibdir:$d\n" if $self->debug();
print "SNMP::Info::init() - Adding new mibdir:$d\n"
if $self->debug() > 1;
SNMP::addMibDirs($d);
}
@@ -3782,6 +3798,7 @@ These methods return data as a scalar.
sub _global {
my $method = shift;
my $oid = shift;
return sub {} if $method eq 'CARP_TRACE';
return sub {
my $self = shift;
@@ -3799,7 +3816,7 @@ sub _global {
# Return cached data unless loading
# We now store in raw format so munge before returning
# unless expecting raw data
if ( defined $self->{"_$attr"} && !$load ) {
if ( exists $self->{"_$attr"} && !$load ) {
my $val = $self->{"_$attr"};
if ( !$raw ) {
@@ -4509,6 +4526,11 @@ sub _validate_autoload_method {
$leaf_name =~ s/_/-/g;
}
# skip if offline
if ( $self->{Offline} ) {
return [1,(exists $self->{store}->{$method} ? 1: 0)];
}
# Translate MIB leaf node name to OID
my $oid = SNMP::translateObj($leaf_name);
@@ -4658,7 +4680,7 @@ sub AUTOLOAD {
# Typos in function calls in SNMP::Info subclasses turn into
# AUTOLOAD requests for non-methods. While this is deprecated,
# we'll still get called, so report a less confusing error.
if ( ref($self) !~ /^SNMP::Info/ ) {
if ( ref($self) !~ /SNMP::Info/ ) {
# croak reports one level too high. die reports here.
# I would really like to get the place that's likely to

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );

View File

@@ -38,7 +38,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (); # IF-MIB
@@ -61,7 +61,7 @@ sub agg_ports_ifstack {
foreach my $idx ( keys %$ifStack ) {
my ( $higher, $lower ) = split /\./, $idx;
next if ( $higher == 0 or $lower == 0 );
if ( $ifType->{ $higher } eq 'ieee8023adLag' ) {
if ( $ifType->{ $higher } eq 'ieee8023adLag' or $ifType->{ $higher } eq 'propMultiplexor') {
$ret->{ $lower } = $higher;
}
}

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',

View File

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

View File

@@ -43,7 +43,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::IEEE802dot3ad::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
'SNMPv2-MIB' => 'sysDescr',

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
$VERSION = '3.26';
$VERSION = '3.32';
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName',
@@ -246,6 +246,7 @@ sub i_vlan_membership {
foreach my $port ( keys %$i_voice_vlan ) {
my $vlan = $i_voice_vlan->{$port};
next unless defined $vlan;
next unless ($vlan =~ m/[[:digit:]]+/ and $vlan < 4095);
my $dyn = $trunk_dyn->{$port};
unless ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))) {
push( @{ $i_vlan_membership->{$port} }, $vlan );

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );

View File

@@ -42,7 +42,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );

View File

@@ -38,7 +38,7 @@ use Exporter;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Aggregate;
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Aggregate::MIBS,

View File

@@ -44,7 +44,7 @@ use constant {
IPV6MIB => 3,
};
$VERSION = '3.26';
$VERSION = '3.32';
@@ -72,10 +72,10 @@ $VERSION = '3.26';
'ip_pfx_origin' => 'ipAddressPrefixOrigin', # IP-MIB
'c_pfx_origin' => 'cIpAddressPfxOrigin', # CISCO-IETF-IP-MIB
'ip_addr6_pfx' => 'ipAddressPrefix', # IP-MIB
'ip_addr6_pfx' => 'ipAddressPrefix', # IP-MIB
'c_addr6_pfx' => 'cIpAddressPrefix', # CISCO-IETF-IP-MIB
'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIBw
'ip_addr6_index' => 'ipAddressIfIndex', # IP-MIB
'c_addr6_index' => 'cIpAddressIfIndex', # CISCO-IETF-IP-MIB
'ip_addr6_type' => 'ipAddressType', # IP-MIB
@@ -142,6 +142,12 @@ sub ipv6_n2p_addr {
# so what we've collected in that variable is actually the first byte of the address.
$v6_packed = pack('C', $addrsize) . $v6_packed;
}
if (length($v6_packed) == 17) {
# Workaround for IPV6-MIB on Windows 2012: if the address is one byte too long, the SNMP agent probably has an incorrect
# implementation where a length field precedes the actual IPv6 address.
# In that case, the first character should be chr(16), ie 0x10; strip it if that's the case.
$v6_packed =~ s/^\x10//;
}
if (length($v6_packed) == 16) {
$v6addr = join(':', map { sprintf("%04x", $_) } unpack("n*", $v6_packed) );
$return->{$row} = $v6addr;
@@ -321,6 +327,29 @@ sub ipv6_addr_prefix {
return $return;
}
sub ipv6_addr {
my $info = shift;
my $return;
my $indexes = $info->ipv6_index();
foreach my $row (keys %$indexes) {
my @parts = split(/\./, $row);
my $is_valid = 0;
if (scalar @parts == 18) {
my $addrtype = shift @parts;
$is_valid = 1;
} elsif (scalar @parts == 17) {
$is_valid = 1;
}
my $addrsize = shift @parts; # First element now is addrsize, should be 16
if ($is_valid && $addrsize == 16) {
$return->{$row} = join(':', unpack('(H4)*', pack('C*', @parts)));
} else {
warn sprintf("%s: unable to decode table index to IPv6 address. Raw data is [%s].\n", &_my_sub_name, $row);
}
}
return $return;
}
sub _method_used {
my $info = shift;
my $return = 'none of the MIBs';
@@ -459,6 +488,10 @@ Maps an IPv6 prefix with its origin (manual, well-known, dhcp, etc.)
Maps IPv6 addresses with their prefixes
=item $info->ipv6_addr()
Maps a table instance to an IPv6 address
=back
=head2 Internet Address Translation Table

View File

@@ -39,7 +39,7 @@ use SNMP::Info;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
'LLDP-MIB' => 'lldpLocSysCapEnabled',
@@ -149,6 +149,38 @@ sub lldp_ip {
return \%lldp_ip;
}
sub lldp_ipv6 {
my $lldp = shift;
my $partial = shift;
my $rman_addr = $lldp->lldp_rman_addr($partial) || {};
my %lldp_ipv6;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
next unless defined $index;
next unless $proto == 2;
$lldp_ipv6{$index} = $addr;
}
return \%lldp_ipv6;
}
sub lldp_mac {
my $lldp = shift;
my $partial = shift;
my $rman_addr = $lldp->lldp_rman_addr($partial) || {};
my %lldp_ipv6;
foreach my $key ( keys %$rman_addr ) {
my ( $index, $proto, $addr ) = _lldp_addr_index($key);
next unless defined $index;
next unless $proto == 6;
$lldp_ipv6{$index} = $addr;
}
return \%lldp_ipv6;
}
sub lldp_addr {
my $lldp = shift;
my $partial = shift;
@@ -323,13 +355,19 @@ sub _lldp_addr_index {
return ( $index, $proto, join( '.', @oids ) );
}
# IPv6
elsif ( $proto == 2 ) {
return ( $index, $proto,
join(':', unpack('(H4)*', pack('C*', @oids)) ) );
}
# MAC
elsif ( $proto == 6 ) {
return ( $index, $proto,
join( ':', map { sprintf "%02x", $_ } @oids ) );
}
# TODO - Need to handle other protocols, i.e. IPv6
# TODO - Other protocols may be used as well; implement when needed?
else {
return;
}
@@ -495,10 +533,24 @@ if unable defaults to (C<lldpRemLocalPortNum>).
Returns remote IPv4 address. Returns for all other address types, use
lldp_addr if you want any return address type.
=item $lldp->lldp_ipv6()
Returns remote IPv6 address, if known. Returns for all other address types,
use lldp_addr if you don't care about return address type.
=item $lldp->lldp_mac()
Returns remote (management) MAC address, if known. Returns for all other
address types, use lldp_addr if you don't care about return address type.
=item $lldp->lldp_addr()
Returns remote address. Type may be any IANA Address Family Number.
Currently only returns IPv4 or MAC addresses.
Currently only returns IPv4, IPv6 or MAC addresses. If the remote device
returns more than one address type, this method will give only one. Which one
is returned is decided by chance, phase of the moon and Perl hash ordering.
Use lldp_mac, lldp_ip or lldp_ipv6 if you want a specific address type.
=item $lldp->lldp_port()
@@ -530,7 +582,7 @@ the remote system.
=item $lldp->lldp_rem_id()
Returns the string value used to identify the chassis component associated
Returns the string value used to identify the chassis component associated
with the remote system.
(C<lldpRemChassisId>)

View File

@@ -41,7 +41,7 @@ use SNMP::Info;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer1::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -46,7 +46,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -11,7 +11,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::LLDP::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -49,7 +49,7 @@ use SNMP::Info::IEEE802dot11;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%GLOBALS = (
%SNMP::Info::IEEE802dot11::GLOBALS,
@@ -60,7 +60,8 @@ $VERSION = '3.26';
%SNMP::Info::CiscoConfig::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
'serial' => 'entPhysicalSerialNum.1',
'descr' => 'sysDescr'
'descr' => 'sysDescr',
'ps1_type' => 'cpoePdCurrentPowerSource'
);
%FUNCS = (
@@ -97,6 +98,7 @@ $VERSION = '3.26';
'CISCO-DOT11-ASSOCIATION-MIB' => 'cDot11ClientSubIfIndex',
'CISCO-DOT11-SSID-SECURITY-MIB' => 'cdot11SecVlanNameId',
'CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB' => 'cviRoutedVlanIfIndex',
'CISCO-POE-PD-MIB' => 'cpoePdCurrentPowerSource',
);
%MUNGE = (
@@ -457,6 +459,18 @@ sub i_ssidmac {
return $i_ssidmac;
}
###
# PoE status. The ps1_type is the PoE injector type, which is just
# a scalar; the status is a little more complex.
sub ps1_status {
my $aironet = shift;
my $idx = $aironet->cpoePdCurrentPowerLevel();
my $mw = $aironet->cpoePdSupportedPower( $idx );
my $descr = $aironet->cpoePdSupportedPowerMode( $idx );
return sprintf( "%.2fW (%s)", $mw->{$idx} * 0.001, $descr->{$idx} );
}
1;
__END__
@@ -540,17 +554,13 @@ These are methods that return scalar value from SNMP
=over
=item $aironet->discription()
Adds info from method e_descr() from SNMP::Info::Entity
=item $aironet->vendor()
Returns 'cisco'
=item $aironet->description()
System description
System description. Adds info from method e_descr() from SNMP::Info::Entity
=back
@@ -648,6 +658,11 @@ being broadcast.
With the same keys as i_ssidlist, returns the Basic service set
identification (BSSID), MAC address, the AP is using for the SSID.
=item $aironet ps1_status()
Returns the PoE injector status based on C<cpoePdSupportedPower> and
C<cpoePdSupportedPowerMode>.
=back
=head2 Table Methods imported from SNMP::Info::Layer2

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,

View File

@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::Layer2::Cisco;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%GLOBALS = (
%SNMP::Info::Layer2::Cisco::GLOBALS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2::Cisco;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::Cisco::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -52,7 +52,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -50,11 +50,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.
our $index = undef;
$VERSION = '3.32';
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
@@ -98,6 +94,10 @@ sub vendor {
return 'cisco';
}
sub os {
return 'ros';
}
# Walk the entPhysicalSerialNum table and return the first serial found
sub serial {
my $ciscosb = shift;
@@ -113,20 +113,26 @@ sub serial {
sub os_ver {
my $ciscosb = shift;
my $os_ver = $ciscosb->e_swver();
my $e_swver = $ciscosb->e_swver();
return $os_ver->{$index} if defined $index;
foreach my $e ( sort keys %$e_swver ) {
if (defined $e_swver->{$e} and $e_swver->{$e} !~ /^\s*$/) {
return $e_swver->{$e};
}
}
}
# Grab e_model from Entity and tag on e_hwver
sub model {
my $ciscosb = shift;
my $e_model = $ciscosb->e_model();
my $e_model = $ciscosb->e_model();
my $e_hwver = $ciscosb->e_hwver();
if (defined ($index)) {
my $model = "$e_model->{$index} $e_hwver->{$index}";
return $model;
foreach my $e ( sort keys %$e_model ) {
if (defined $e_model->{$e} and $e_model->{$e} !~ /^\s*$/) {
my $model = "$e_model->{$e} $e_hwver->{$e}";
return $model;
}
}
return $ciscosb->description();
}

View File

@@ -37,7 +37,7 @@ use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::CDP;
use SNMP::Info::Aggregate;
use SNMP::Info::Aggregate 'agg_ports_ifstack';
@SNMP::Info::Layer2::HP::ISA = qw/
SNMP::Info::Aggregate
@@ -50,7 +50,7 @@ use SNMP::Info::Aggregate;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Airespace;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
# This will be filled in with the device's index into the EntPhysicalEntry
# table by the serial() function.

View File

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

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -15,7 +15,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS,

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
# Set for No CDP
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );

View File

@@ -53,7 +53,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS,

View File

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

View File

@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

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

View File

@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
$int_include_vpn $fake_idx $type_class/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -36,7 +36,7 @@ use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::LLDP;
use SNMP::Info::Aggregate;
use SNMP::Info::Aggregate 'agg_ports_ifstack';
@SNMP::Info::Layer3::Arista::ISA = qw/
SNMP::Info::Aggregate
@@ -48,7 +48,7 @@ use SNMP::Info::Aggregate;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -43,7 +43,7 @@ use SNMP::Info::Bridge;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
%MODID_MAP %PROCID_MAP/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS,

View File

@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,

View File

@@ -47,7 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
$VERSION = '3.26';
$VERSION = '3.32';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -44,7 +44,7 @@ use SNMP::Info::MAU;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MAU::MIBS,

View File

@@ -51,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -55,7 +55,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -136,6 +136,13 @@ sub i_vlan {
return $i_vlan;
}
sub cisco_comm_indexing {
my $cisco = shift;
# If we get a VTP version, it's *extremely* likely that the device needs community based indexing
my $vtp = $cisco->vtp_version() || '0';
return ($vtp ne '0');
}
1;
__END__
@@ -237,6 +244,11 @@ These are methods that return scalar value from SNMP
(C<cEigrpAsRouterId>)
=item $switch->cisco_comm_indexing()
Returns 1 when the device is likely to need vlan indexing.
Determined by checking C<vtpVersion>.
=back
=head2 Global Methods imported from SNMP::Info::CiscoVTP

View File

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

View File

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

View File

@@ -50,7 +50,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::Cisco::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,

View File

@@ -46,7 +46,7 @@ use SNMP::Info::EDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -38,7 +38,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -72,10 +72,14 @@ $VERSION = '3.26';
'i_up' => 'sysInterfaceStatus',
# sysIfxStatTable
'i_octet_in' => 'sysIfxStatHcInOctets',
'i_octet_out' => 'sysIfxStatHcOutOctets',
'i_pkts_ucast_in' => 'sysIfxStatHcInUcastPkts',
'i_pkts_ucast_out' => 'sysIfxStatHcOutUcastPkts',
'i_octet_in64' => 'sysIfxStatHcInOctets',
'i_octet_out64' => 'sysIfxStatHcOutOctets',
'i_pkts_ucast_in64' => 'sysIfxStatHcInUcastPkts',
'i_pkts_ucast_out64' => 'sysIfxStatHcOutUcastPkts',
'i_pkts_mutli_in64' => 'sysIfxStatInMulticastPkts',
'i_pkts_multi_out64' => 'sysIfxStatOutMulticastPkts',
'i_pkts_bcast_in64' => 'sysIfxStatInBroadcastPkts',
'i_pkts_bcast_out64' => 'sysIfxStatOutBroadcastPkts',
# sysInterfaceStatTable
'i_discards_in' => 'sysInterfaceStatDropsIn',
@@ -115,8 +119,8 @@ sub fan {
my $ret = "";
my $s = "";
foreach my $i ( sort { $a <=> $b } keys %$fan_state ) {
$ret .= $s . $i . ": " . $fan_state->{$i};
$s = ", ";
$ret .= $s . $i . ': ' . $fan_state->{$i};
$s = ', ';
}
return if ( $s eq "" );
return $ret;

View File

@@ -43,7 +43,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

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

View File

@@ -48,7 +48,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -47,7 +47,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -42,7 +42,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

232
Info/Layer3/Huawei.pm Normal file
View File

@@ -0,0 +1,232 @@
# SNMP::Info::Layer3::Huawei
#
# Copyright (c) 2015 Jeroen van Ingen
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::Huawei;
use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::LLDP;
use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
@SNMP::Info::Layer3::Huawei::ISA = qw/
SNMP::Info::IEEE802dot3ad
SNMP::Info::LLDP
SNMP::Info::Layer3
Exporter
/;
@SNMP::Info::Layer3::Huawei::EXPORT_OK = qw/
agg_ports
/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::LLDP::MIBS,
%SNMP::Info::IEEE802dot3ad::MIBS,
'HUAWEI-MIB' => 'quidway',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::LLDP::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::LLDP::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::LLDP::MUNGE,
);
sub vendor {
return "Huawei";
}
sub os {
my $huawei = shift;
my $descr = $huawei->description();
return $1 if ( $descr =~ /\b(VRP)\b/ );
return "huawei";
}
sub os_ver {
my $huawei = shift;
my $descr = $huawei->description();
my $os_ver = undef;
$os_ver = "$1" if ( $descr =~ /\bVersion ([0-9.]+)/i );
return $os_ver;
}
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} =~ /\b(inloopback|console)\d*\b/i ) {
$i_ignore{$if}++;
}
}
return \%i_ignore;
}
sub agg_ports { return agg_ports_lag(@_) }
1;
__END__
=head1 NAME
SNMP::Info::Layer3::Huawei - SNMP Interface to Huawei Layer 3 switches and routers.
=head1 AUTHORS
Jeroen van Ingen
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $huawei = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $huawei->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Huawei Quidway switches
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=item SNMP::Info::LLDP
=item SNMP::Info::IEEE802dot3ad
=back
=head2 Required MIBs
=over
=item F<HUAWEI-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 $huawei->vendor()
Returns 'Huawei'.
=item $huawei->os()
Returns 'VRP' if contained in C<sysDescr>, 'huawei' otherwise.
=item $huawei->os_ver()
Returns the software version extracted from C<sysDescr>.
=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 $huawei->i_ignore()
Returns reference to hash. Increments value of IID if port is to be ignored.
Ignores InLoopback and Console interfaces
=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.
=cut

View File

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

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = ( %SNMP::Info::Layer3::MIBS, );

View File

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

View File

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

View File

@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -40,7 +40,7 @@ use SNMP::Info::IEEE802dot11;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

View File

@@ -46,7 +46,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
# NOTE: Order creates precedence
# Example: v_name exists in Bridge.pm and CiscoVTP.pm

View File

@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
@@ -108,6 +108,21 @@ sub i_ignore {
return \%i_ignore;
}
sub layers {
my $pfront = shift;
my $layers = $pfront->SUPER::layers();
# Some models or softwware versions don't report L2 properly
# so add L2 capability to the output if the device has bridge ports.
my $bports = $pfront->b_ports();
if ($bports) {
my $l = substr $layers, 6, 1, "1";
}
return $layers;
}
1;
__END__
@@ -210,6 +225,11 @@ Returns reference to hash. Increments value of IID if port is to be ignored.
Ignores loopback
=item $pfront->layers()
L2 capability isn't always reported correctly by the device itself; what the
device reports is augmented with L2 capability if the device has bridge ports.
=back
=head2 Table Methods imported from SNMP::Info::Layer3

190
Info/Layer3/PaloAlto.pm Normal file
View File

@@ -0,0 +1,190 @@
# SNMP::Info::Layer3::PaloAlto
#
# Copyright (c) 2014-2016 Max Kosmach
# 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::PaloAlto;
use strict;
use Exporter;
use SNMP::Info::Layer3;
@SNMP::Info::Layer3::PaloAlto::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::PaloAlto::EXPORT_OK = qw//;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,
'PAN-COMMON-MIB' => 'panSysSwVersion',
'PAN-PRODUCTS-MIB' => 'panProductsMibsModule',
);
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
'mac' => 'ifPhysAddress.1',
# Oids from PAN-COMMON-MIB.
'os_ver' => 'panSysSwVersion',
'serial1' => 'panSysSerialNumber',
'pa_model' => 'panChassisType'
);
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
);
sub vendor {
return 'Palo Alto Networks';
}
sub model {
my $pa = shift;
my $model = $pa->pa_model;
$model =~ s/^pan//;
return $model;
}
sub os {
return 'PAN-OS';
}
sub layers {
return '01001100';
}
# TODO:
# support fan and temp sensors from ENTITY-SENSOR-MIB
# test with other Palo Alto devices
1;
__END__
=head1 NAME
SNMP::Info::Layer3::PaloAlto - SNMP Interface to Palo Alto devices
=head1 AUTHORS
Max Kosmach
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $pa = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myrouter',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $pa->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Palo Alto devices
=head2 Inherited Classes
=over
=item SNMP::Info::Layer3
=back
=head2 Required MIBs
=over
=item Inherited Classes' MIBs
See L<SNMP::Info::Layer3> for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $pa->vendor()
Returns C<'Palo Alto Networks'>.
=item $pa->os()
Returns C<'PANOS'>.
=item $pa->model()
Returns the value of C<panChassisType.0>.
=item $pa->os_ver()
Returns the value of C<panSysSwVersion.0>.
=item $pa->serial()
Returns the value of C<panSysSerialNumber.0>.
=back
=head2 Globals imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> 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 $pa->layers()
Returns 01001110. Palo Alto doesn't report layers, modified to reflect
Layer 2,3,4,7 functionality.
=back
=head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3> for details.
=cut

View File

@@ -1,6 +1,6 @@
# SNMP::Info::Layer3::Passport
#
# Copyright (c) 2012 Eric Miller
# Copyright (c) 2016 Eric Miller
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS, %SNMP::Info::RapidCity::MIBS,
@@ -174,9 +174,11 @@ sub interfaces {
my $partial = shift;
my $i_index = $passport->i_index($partial);
my $i_descr = $passport->orig_i_description($partial) || {};
my $model = $passport->model();
my $index_factor = $passport->index_factor();
my $port_offset = $passport->port_offset();
my $slot_offset = $passport->slot_offset();
my $vlan_index = {};
my %reverse_vlan;
my $vlan_id = {};
@@ -202,6 +204,10 @@ sub interfaces {
$if{$index} = 'Cpu.Virtual';
}
elsif ( ( $iid == 64 ) and ( $model =~ /^VSP[478]/ ) ) {
$if{$index} = 'Mgmt.1';
}
elsif ( ( $index == 192 ) and ( $model =~ /^8[86]03/ ) ) {
$if{$index} = 'Cpu.3';
}
@@ -226,11 +232,18 @@ sub interfaces {
}
else {
my $port = ( $index % $index_factor ) + $port_offset;
my $slot = int( $index / $index_factor );
if ($model =~ /VSP/ and $i_descr->{$iid} and $i_descr->{$iid} =~ m<Port\s+(\d+(?:/\d+)*)>) {
my $ps = $1;
$ps =~ s|/|.|g;
$if{$iid} = $ps;
}
else {
my $port = ( $index % $index_factor ) + $port_offset;
my $slot = int( $index / $index_factor ) + $slot_offset;
my $slotport = "$slot.$port";
$if{$iid} = $slotport;
my $slotport = "$slot.$port";
$if{$iid} = $slotport;
}
}
}
@@ -383,6 +396,10 @@ sub i_name {
$i_name{$iid} = 'CPU Virtual Management IP';
}
elsif ( ( $iid == 64 ) and ( $model =~ /^VSP[478]/ ) ) {
$i_name{$iid} = 'Mgmt Port';
}
elsif ( ( $iid == 192 ) and ( $model =~ /^8[86]03/ ) ) {
$i_name{$iid} = 'CPU 3 Ethernet Port';
}
@@ -573,10 +590,17 @@ sub index_factor {
# Older Accelar models use base 16 instead of 64
$index_factor = 16
if ( defined $model and $model =~ /^1[012][05]0/ );
return $index_factor;
}
sub slot_offset {
my $passport = shift;
my $model = $passport->model();
# Newer VSP 4K and 8K start at an index of 192 ~ slot 3 but really slot 1
return -2
if ( defined $model and $model =~ /^VSP[478]/ );
return 0;
}

View File

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

View File

@@ -39,7 +39,7 @@ use SNMP::Info::LLDP;
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
$VERSION = '3.26';
$VERSION = '3.32';
%MIBS = (
%SNMP::Info::Layer3::MIBS,

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