Compare commits

...

33 Commits

Author SHA1 Message Date
Eric Miller
8015e59161 fix C1130, C1240 2006-07-08 02:43:43 +00:00
Eric Miller
7a94ddcc26 date for 1.04 2006-07-08 02:17:21 +00:00
Eric Miller
4e73ff2bae updates for 1.04 2006-07-08 02:04:10 +00:00
Eric Miller
257eb48e70 doc updates for 1.04 2006-07-08 02:02:34 +00:00
Eric Miller
cf1564d598 doc updates 2006-07-08 02:01:22 +00:00
Eric Miller
e83380c7c5 add L2::Cisco 2006-07-08 01:35:52 +00:00
Eric Miller
799a06b63a prep 1.04, capture older versions of BayRS 2006-07-08 01:25:40 +00:00
Eric Miller
b55e15a568 prep 1.04 2006-06-30 21:33:47 +00:00
Eric Miller
6b3edc3232 capture older versions 2006-06-30 21:24:23 +00:00
Max Baker
f65332f9cc added detection for C3400 w/ metrobase to L3/C3550 class 2006-06-26 23:00:27 +00:00
Max Baker
3416928233 added c2940 support, fixed typo in Orinoco detection. 2006-06-20 18:26:52 +00:00
Max Baker
4d262872c8 added sysID to debug messages for data collection purposes 2006-06-20 05:00:23 +00:00
Max Baker
795ae41d68 changed detection of HP ProCurve devices. New firmware doesn't have the string HP in the description... maybe we should use OIDs :-) 2006-06-20 04:34:59 +00:00
Max Baker
2e17b5c64a *** empty log message *** 2006-06-20 03:58:45 +00:00
Max Baker
ddca296e2a added generic L2::Cisco class and fixed warnings in CiscoStack 2006-06-20 03:58:10 +00:00
Eric Miller
af5d1d6c03 device detection 2006-06-20 02:43:50 +00:00
Eric Miller
2f07667560 device detection for Cisco Aironet 1130/1240, Cisco Sup Eng 2/32, Cisco 2960 2006-06-20 02:10:52 +00:00
Bill Fenner
1fac4cb13c Remove CiscoStack from @ISA 2006-04-15 19:02:44 +00:00
Bill Fenner
aa8c86ddcd Add debug option, -x or --debug 2006-04-15 01:20:40 +00:00
Eric Miller
83751acf91 1.03-beta 2006-04-14 15:54:38 +00:00
Eric Miller
01dc21e338 prep 1.03-beta 2006-04-14 03:14:53 +00:00
Eric Miller
0b8f6db97a prep 1.03-beta, ? 2006-04-14 03:14:36 +00:00
Eric Miller
23dd87c294 prep 1.03-beta 2006-04-14 03:09:14 +00:00
Eric Miller
9a19d3a6f6 update for 1.03-beta 2006-04-14 02:49:55 +00:00
Eric Miller
ba6e02ea5e remove ciscostack 2006-04-14 02:39:47 +00:00
Eric Miller
1426f7656d clean up cisco 4000 family 2006-04-14 02:34:43 +00:00
Bill Fenner
53ebeacc09 Don't call mau_i_duplex_admin_old() if the device doesn't implement
the table at all.
2006-04-13 04:03:53 +00:00
Bill Fenner
bd6cc8d7f4 Default to using the ipNetToMediaTable to get arp entries.
The old atTable has been deprecated since 1991; many newer
 devices don't implement it at all.  Fall back to the old
 atTable if the device doesn't implement ipNetToMediaTable
 (but I find it hard to imagine that there are any such devices)
2006-04-13 04:01:24 +00:00
Eric Miller
19018f364e ver in doc 2006-04-08 03:27:59 +00:00
Eric Miller
be0391bfa8 ver in doc 2006-04-08 03:22:08 +00:00
Eric Miller
bfc36df82b rev for beta 2006-04-08 03:01:38 +00:00
Eric Miller
5134f4163c rev version for beta 2006-04-08 02:54:55 +00:00
Eric Miller
4939a18a6c make update 2006-04-07 03:48:24 +00:00
58 changed files with 537 additions and 144 deletions

View File

@@ -1,7 +1,24 @@
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
ChangeLog $Id$
version 1.0 ()
version 1.04 (07/08/06)
+ Added C1130 and C1240 to L2::Aironet (Ralf Gross)
+ Added detection for Cisco 2960, 2940, 3400 w/ MetroBase
+ Added generic L2::Cisco Class
* Corrected detection for Cisco Supervisor Engine 2 and 32 (IOS).
* Fixed warnings in CiscoStack
* Updated ProCurve HP device detection for newer firmwares
version 1.03 (04/14/06) - Beta/developer release
* Use ipNetToMedia table instead of atTable for ARP
* Remove CiscoStack from Layer3::C4000
* Fixed bug in MAU class when polling devices without MAU-MIB support
version 1.01 (04/08/06) - Beta/developer release
+ Change version numbers to X.XX format. Odd releases are beta
or developer only releases. Even are official releases.
version 1.0 (04/07/06) - CVS only. No official release
+ Added Interface FlowControl status to CiscoStack (Nicolai Petri)
+ Added CiscoImage class (Matthew Tuttle)
+ Added C1200 and C350 IOS devices to L2::Aironet (Matthew Tuttle)

View File

@@ -63,7 +63,7 @@ device-family: Aironet
note: IOS and Aironet OS versions
class: Layer3::Aironet
device: AIRAP1100, AP1200, C1100
device: AIRAP1100, AP1200, C1100, C1130, C1240
note: IOS based device
class: Layer2::Aironet
@@ -76,12 +76,12 @@ note: Aironet based device
device-family: 1000
duplex: no
ver: 1
class: Layer3
class: Layer3::Cisco
device: 1003
device-family: 1700
class: Layer3
class: Layer3::Cisco
device: 1710
duplex: link
@@ -91,7 +91,7 @@ duplex: no
macsuck: yes
arpnip: yes
ver: 1
class: Layer3
class: Layer3::Cisco
device: 2501
@@ -109,7 +109,7 @@ device-family: 2600
duplex: link
arpnip: yes
macsuck: yes
class: Layer3
class: Layer3::Cisco
device:2610,2610XM,2611,2620,2620XM,2621
@@ -120,7 +120,7 @@ device:2651XM
device:2691
device-family: 3600
class: Layer3
class: Layer3::Cisco
device: 3620
@@ -128,7 +128,7 @@ device: 3640
duplex: no
device-family: 7500
class: Layer3
class: Layer3::Cisco
device: 7507
duplex: no
@@ -136,7 +136,7 @@ note: !Duplex settings are falsely reported in older IOS versions
device-family: AS5000
duplex: no
class: Layer3
class: Layer3::Cisco
device: AS5300
@@ -205,7 +205,7 @@ vlan: write
note: Acts just like IOS Catalyst 6500 series
class: Layer3::C6500
device: 2970G-24T-E
device: 2960, 2970G-24T-E
device-family: Catalyst 3500 XL
portmac: yes
@@ -234,6 +234,8 @@ note: Comes in flavors that support L2, L3 or combo.
device: 3550-12T
device: 3400 w/ MetroBase Image
device: 3550
note: L2/L3 Switch
arpnip: yes
@@ -244,25 +246,38 @@ macsuck: vlan
device-family: Catalyst 3750
class: Layer3::C6500
device: 3750
device-family: Catalyst 4000
duplex: both
duplex: write
macsuck: vlan
vlan: write
class: Layer3::C4000
class: Layer2::Catalyst
note: Comes in IOS and CatOS versions like the 6k series.
note: CatOS versions like L2::Catalyst just fine.
note: !Reported problems with SNMP taking up all the CPU. Requests take significantly longer.
note: !IOS Version 12.1.8a reported not to respond to BRIDGE-MIB calls.
device: wsc4006
device: wsc4003, wsc4006
device: 4507
class: Layer3::C6500
note: !Has serious slowdown/timeout problems with SNMP
device: wsc4503, wsc4506
device: wsc4912g
note: Dedicated 12 port gig-e switch
device: 4006
duplex: both
class: Layer3::C4000
note: !Has serious slowdown/timeout problems with SNMP
note: !IOS Software Release 12.2(20)EW or higher required for duplex support
device: 4503, 4506, 4507, 4510
duplex: both
class: Layer3::C4000
note: !Has serious slowdown/timeout problems with SNMP
note: !IOS Software Release 12.2(20)EW or higher required for duplex support
device-family: Catalyst 5000
duplex: write
vlan: write

42
Info.pm
View File

@@ -9,7 +9,7 @@
# $Id$
package SNMP::Info;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;
@@ -29,7 +29,7 @@ SNMP::Info - Object Oriented Perl5 Interface to Network devices and MIBs through
=head1 VERSION
SNMP::Info - Version 1.0
SNMP::Info - Version 1.04
=head1 AUTHOR
@@ -38,7 +38,7 @@ and was orginally written by Max Baker.
Currently being maintained by team of Open Source authors headed by Eric Miller
and Bill Fenner.
=head1 SYNOPSIS
use SNMP::Info;
@@ -372,6 +372,11 @@ does not support everything that has the name Catalyst.
Subclass for Nortel/Bay Centillion and 5000BH ATM switches.
=item SNMP::Info::Layer2::Cisco
Generic Cisco subclass for layer2 devices that are not yet supported
in more specific subclasses.
=item SNMP::Info::Layer2::Foundry
Subclass for Foundry Switches. Tested on EdgeIron 24G.
@@ -811,10 +816,13 @@ Algorithm for Subclass Detection:
Elsif Layer2 (no Layer3) -> SNMP::Info::Layer2
Aironet - IOS Devices -> SNMP::Info::Layer2::Aironet
Catalyst 1900 -> SNMP::Info::Layer2::C1900
Catalyst 2900XL,2950,3500XL -> SNMP::Info::Layer2::C2900
Catalyst 2970 -> SNMP::Info::Layer3::C6500
Catalyst 2900XL,2940,2950,
3500XL -> SNMP::Info::Layer2::C2900
Catalyst 2960, 2970 -> SNMP::Info::Layer3::C6500
Catalyst 3550/3548 -> SNMP::Info::Layer3::C3550
Cisco 3400 w/ MetroBase -> SNMP::Info::Layer3::C3550
Catalyst WS-C 2926,5xxx -> SNMP::Info::Layer2::Catalyst
Cisco (not covered by above) -> SNMP::Info::Layer2::Cisco
Extreme -> SNMP::Info::Layer3::Extreme
Foundry (EdgeIron,????) -> SNMP::Info::Layer2::Foundry
HP Procurve -> SNMP::Info::Layer2::HP
@@ -846,7 +854,9 @@ sub device_type {
my $desc = $info->description() || 'undef';
$desc =~ s/[\r\n\l]+/ /g;
$info->debug() and print "SNMP::Info::device_type() layers:$layers sysDescr: \"$desc\".\n";
my $id = $info->id() || 'undef';
$info->debug() and print "SNMP::Info::device_type() layers:$layers id:$id sysDescr:\"$desc\"\n";
# Layer 3 Supported
# (usually has layer2 as well, so we check for 3 first)
@@ -866,7 +876,7 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/;
# Next one untested. Reported working by DA
$objtype = 'SNMP::Info::Layer3::C6500' if ($desc =~ /cisco/i and $desc =~ /3750/);
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /s72033_rp/;
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(s72033_rp|s3223_rp|s222_rp)/;
# Extreme Networks
$objtype = 'SNMP::Info::Layer3::Extreme' if $desc =~ /Alpine38/;
$objtype = 'SNMP::Info::Layer3::Extreme' if $desc =~ /Summit\s*\d/;
@@ -882,7 +892,7 @@ sub device_type {
# Nortel Contivity
$objtype = 'SNMP::Info::Layer3::Contivity' if $desc =~ /\bCES\b/;
# Nortel BayRS
$objtype = 'SNMP::Info::Layer3::BayRS' if $desc =~ /^\s*Image:\s+rel\//;
$objtype = 'SNMP::Info::Layer3::BayRS' if $desc =~ /^\s*Image:\s+re[lv]\/(\d+\.){1,3}\d+\//;
# Allied Telesyn Layer2 managed switches. They report they have L3 support
$objtype = 'SNMP::Info::Layer2::Allied' if ($desc =~ /Allied.*AT-80\d{2}\S*/i);
@@ -908,23 +918,24 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::C1900' if ($desc =~ /catalyst/i and $desc =~ /\D19\d{2}/);
# Catalyst 2900 and 3500XL (IOS) series override
$objtype = 'SNMP::Info::Layer2::C2900' if ($desc =~ /(C2900XL|C2950|C3500XL)/i );
$objtype = 'SNMP::Info::Layer2::C2900' if ($desc =~ /(C2900XL|C2950|C3500XL|C2940)/i );
# Catalyst WS-C series override 2926,4k,5k,6k in Hybrid
$objtype = 'SNMP::Info::Layer2::Catalyst' if ($desc =~ /WS-C\d{4}/);
# Catalyst 3550 / 3548 Layer2 only switches
$objtype = 'SNMP::Info::Layer3::C3550' if ($desc =~ /C3550/);
# Cisco 3400 w/ MetroBase Image
$objtype = 'SNMP::Info::Layer3::C3550' if ($desc =~ /(C3550|ME340x)/);
# Cisco 2970
$objtype = 'SNMP::Info::Layer3::C6500' if ($desc =~ /C2970/);
$objtype = 'SNMP::Info::Layer3::C6500' if ($desc =~ /(C2970|C2960)/);
# Extreme Networks
$objtype = 'SNMP::Info::Layer3::Extreme' if $desc =~ /Alpine38/;
$objtype = 'SNMP::Info::Layer3::Extreme' if $desc =~ /Summit\s*\d/;
# HP
$objtype = 'SNMP::Info::Layer2::HP' if ($desc =~ /HP.*ProCurve/);
$objtype = 'SNMP::Info::Layer2::HP' if ($desc =~ /\bProCurve\b/);
# Centillion ATM
$objtype = 'SNMP::Info::Layer2::Centillion' if ($desc =~ /MCP/);
@@ -943,10 +954,10 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::NAP222x' if ($desc =~ /Access\s+Point\s+222/);
# Orinco
$objtype = 'SNMP::Info::Layer2::Orinoco' if ($desc =~ /AP-\d{3}|WavePOINT/);
$objtype = 'SNMP::Info::Layer2::Orinoco' if ($desc =~ /(AP-\d{3}|WavePOINT)/);
# Aironet - IOS
$objtype = 'SNMP::Info::Layer2::Aironet' if ($desc =~ /\b(C1100|AP1200|C350|C1200)\b/ and $desc =~ /\bIOS\b/);
$objtype = 'SNMP::Info::Layer2::Aironet' if ($desc =~ /\b(C1100|C1130|AP1200|C350|C1200|C1240)\b/ and $desc =~ /\bIOS\b/);
# Aironet - non IOS
$objtype = 'SNMP::Info::Layer3::Aironet' if ($desc =~ /Cisco/ and $desc =~ /\D(BR500)\D/) ;
@@ -954,6 +965,9 @@ sub device_type {
#Nortel 2270
$objtype = 'SNMP::Info::Layer2::N2270' if ($desc =~ /Nortel\s+(Networks\s+)??WLAN\s+-\s+Security\s+Switch/) ;
# Default generic cisco
$objtype = 'SNMP::Info::Layer2::Cisco' if ($objtype eq 'SNMP::Info::Layer2' and $desc =~ /\bCisco\b/);
} elsif ($info->has_layer(1)) {
$objtype = 'SNMP::Info::Layer1';
# Allied crap-o-hub

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Airespace;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -32,7 +32,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Bridge;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -31,7 +31,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CDP;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -32,7 +32,7 @@ use Exporter;
use SNMP::Info;
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
$VERSION = 1.0;
$VERSION = '1.04';
@SNMP::Info::CiscoImage::ISA = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoImage::EXPORT_OK = qw//;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoQOS;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoRTT;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;

View File

@@ -1,7 +1,7 @@
# SNMP::Info::CiscoStack
# Max Baker
#
# Copyright (c)2003,2004 Max Baker
# Copyright (c)2003,2004,2006 Max Baker
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoStack;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;
@@ -170,15 +170,16 @@ sub serial {
sub i_type {
my $stack = shift;
my $p_port = $stack->p_port();
my $p_type = $stack->p_type();
my $p_port = $stack->p_port() || {};
my $p_type = $stack->p_type() || {};
# Get more generic port types from IF-MIB
my $i_type = $stack->i_type2();
my $i_type = $stack->i_type2() || {};
# Now Override w/ port entries
foreach my $port (keys %$p_type) {
my $iid = $p_port->{$port};
next unless defined $iid;
$i_type->{$iid} = $p_type->{$port};
}
@@ -190,8 +191,8 @@ sub i_type {
sub i_name {
my $stack = shift;
my $p_port = $stack->p_port();
my $p_name = $stack->p_name();
my $p_port = $stack->p_port() || {};
my $p_name = $stack->p_name() || {};
my %i_name;
foreach my $port (keys %$p_name) {
@@ -206,12 +207,13 @@ sub i_duplex {
my $stack = shift;
#my $i_duplex = $stack->SUPER::i_duplex();
my $p_port = $stack->p_port();
my $p_duplex = $stack->p_duplex();
my $p_port = $stack->p_port() || {};
my $p_duplex = $stack->p_duplex() || {};
my $i_duplex = {};
foreach my $port (keys %$p_duplex) {
my $iid = $p_port->{$port};
next unless defined $iid;
$i_duplex->{$iid} = $p_duplex->{$port};
}
return $i_duplex;
@@ -220,8 +222,8 @@ sub i_duplex {
sub i_duplex_admin {
my $stack = shift;
my $p_port = $stack->p_port();
my $p_duplex_admin = $stack->p_duplex_admin();
my $p_port = $stack->p_port() || {};
my $p_duplex_admin = $stack->p_duplex_admin() || {};
my %i_duplex_admin;
foreach my $port (keys %$p_duplex_admin) {
@@ -250,7 +252,7 @@ sub set_i_speed_admin {
my $stack = shift;
my ($speed, $iid) = @_;
my $p_port = $stack->p_port();
my $p_port = $stack->p_port() || {};
my %reverse_p_port = reverse %$p_port;
$speed = lc($speed);
@@ -268,7 +270,7 @@ sub set_i_duplex_admin {
my $stack = shift;
my ($duplex, $iid) = @_;
my $p_port = $stack->p_port();
my $p_port = $stack->p_port() || {};
my %reverse_p_port = reverse %$p_port;
$duplex = lc($duplex);
@@ -285,11 +287,12 @@ sub set_i_duplex_admin {
sub interfaces {
my $self = shift;
my $i_index = $self->i_index();
my $portnames = $self->p_port();
my $portnames = $self->p_port() || {};
my %portmap = reverse %$portnames;
my %interfaces = ();
foreach my $iid (keys %$i_index) {
next unless defined $iid;
my $if = $i_index->{$iid};
my $port = $portmap{$iid};
$interfaces{$iid} = $port || $if;

View File

@@ -31,7 +31,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoStats;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoVTP;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Entity;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::EtherLike;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

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

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1::Allied;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1::Asante;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1::Bayhub;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1::S3000;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Aironet;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Allied;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Aruba;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -31,7 +31,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Bay;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Baystack;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::C1900;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::C2900;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Catalyst;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Centillion;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;

214
Info/Layer2/Cisco.pm Normal file
View File

@@ -0,0 +1,214 @@
# SNMP::Info::Layer2::Cisco
# Max Baker
#
# Copyright (c) 2006 Max Baker
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the University of California, Santa Cruz nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Cisco;
# $Id$
use strict;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
use SNMP::Info::CiscoRTT;
use SNMP::Info::CiscoQOS;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE $INIT/ ;
$VERSION = 1.04;
@SNMP::Info::Layer2::Cisco::ISA = qw/SNMP::Info::Layer2 SNMP::Info::CiscoVTP
SNMP::Info::CDP SNMP::Info::CiscoStats
SNMP::Info::CiscoImage SNMP::Info::CiscoRTT
SNMP::Info::CiscoQOS Exporter/;
@SNMP::Info::Layer2::Cisco::EXPORT_OK = qw//;
%MIBS = (
%SNMP::Info::Layer2::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CiscoImage::MIBS,
%SNMP::Info::CiscoRTT::MIBS,
%SNMP::Info::CiscoQOS::MIBS,
);
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CiscoImage::GLOBALS,
%SNMP::Info::CiscoRTT::GLOBALS,
%SNMP::Info::CiscoQOS::GLOBALS,
);
%FUNCS = (
%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CiscoImage::FUNCS,
%SNMP::Info::CiscoRTT::FUNCS,
%SNMP::Info::CiscoQOS::FUNCS,
);
%MUNGE = (
%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CiscoImage::MUNGE,
%SNMP::Info::CiscoRTT::MUNGE,
%SNMP::Info::CiscoQOS::MUNGE,
);
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Cisco - Perl5 Interface to L3 and L2+L3 IOS Cisco Device
that are not covered in other classes.
=head1 AUTHOR
Max Baker
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $cisco = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly on to SNMP::Session
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $cisco->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Subclass for Generic Cisco Routers running IOS
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CDP
=item SNMP::Info::CiscoStats
=item SNMP::Info::CiscoImage
=back
=head2 Required MIBs
=over
=item Inherited Classes' MIBs
See SNMP::Info::Layer2 for its own MIB requirements.
See SNMP::Info::CiscoVTP for its own MIB requirements.
See SNMP::Info::CiscoStats for its own MIB requirements.
See SNMP::Info::CDP for its own MIB requirements.
See SNMP::Info::CiscoImage for its own MIB requirements.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=over
=item $cisco->vendor()
Returns 'cisco'
=back
=head2 Globals imported from SNMP::Info::Layer2
See documentation in SNMP::Info::Layer2 for details.
=head2 Global Methods imported from SNMP::Info::CiscoVTP
See documentation in SNMP::Info::CiscoVTP for details.
=head2 Globals imported from SNMP::Info::CDP
See documentation in SNMP::Info::CDP for details.
=head2 Globals imported from SNMP::Info::CiscoStats
See documentation in SNMP::Info::CiscoStats for details.
=head2 Globals imported from SNMP::Info::CiscoImage
See documentation in SNMP::Info::CiscoImage for details.
=head1 TABLE ENTRIES
These are methods that return tables of information in the form of a reference
to a hash.
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in SNMP::Info::Layer2 for details.
=head2 Table Methods imported from SNMP::Info::CiscoVTP
See documentation in SNMP::Info::CiscoVTP for details.
=head2 Table Methods imported from SNMP::Info::CDP
See documentation in SNMP::Info::CDP for details.
=head2 Table Methods imported from SNMP::Info::CiscoStats
See documentation in SNMP::Info::CiscoStats for details.
=head2 Table Methods imported from SNMP::Info::CiscoImage
See documentation in SNMP::Info::CiscoImage for details.
=cut

View File

@@ -26,7 +26,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Foundry;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::HP;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::N2270;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::NAP222x;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Orinoco;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::ZyXEL_DSLAM;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;
@@ -51,6 +51,7 @@ use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
%SNMP::Info::Bridge::MIBS,
%SNMP::Info::EtherLike::MIBS,
%SNMP::Info::Entity::MIBS,
'IP-MIB' => 'ipNetToMediaIfIndex',
'OSPF-MIB' => 'ospfRouterId',
'BGP4-MIB' => 'bgpIdentifier',
);
@@ -75,10 +76,15 @@ use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
%SNMP::Info::Entity::FUNCS,
# IFMIB
'i_name2' => 'ifName',
# Address Translation Table (ARP Cache)
'at_index' => 'atIfIndex',
'at_paddr' => 'atPhysAddress',
'at_netaddr' => 'atNetAddress',
# Obsolete Address Translation Table (ARP Cache)
'old_at_index' => 'atIfIndex',
'old_at_paddr' => 'atPhysAddress',
'old_at_netaddr' => 'atNetAddress',
# IP-MIB IP Net to Media Table (ARP Cache)
'at_index' => 'ipNetToMediaIfIndex',
'at_paddr' => 'ipNetToMediaPhysAddress',
'at_netaddr' => 'ipNetToMediaNetAddress',
# OSPF
'ospf_ip' => 'ospfHostIpAddress',
# BGP Peer Table
'bgp_peers' => 'bgpPeerLocalAddr',
@@ -100,6 +106,7 @@ use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
%SNMP::Info::Bridge::MUNGE,
%SNMP::Info::EtherLike::MUNGE,
%SNMP::Info::Entity::MUNGE,
'old_at_paddr' => \&SNMP::Info::munge_mac,
'at_paddr' => \&SNMP::Info::munge_mac,
);
@@ -248,6 +255,25 @@ sub vendor {
}
sub at_index {
my $l3 = shift;
return $l3->orig_at_index() || $l3->old_at_index();
}
sub at_paddr {
my $l3 = shift;
return $l3->orig_at_paddr() || $l3->old_at_paddr();
}
sub at_netaddr {
my $l3 = shift;
return $l3->orig_at_netaddr() || $l3->old_at_netaddr();
}
1;
__END__
@@ -434,23 +460,59 @@ see SNMP::Info::Etherlike for the el_index() and el_duplex() methods.
=back
=head2 ARP Cache Entries
=head2 IP-MIB Arp Cache Table (B<ipNetToMediaTable>)
=over
=item $l3->at_index()
Returns reference to hash. Maps ARP table entries to Interface IIDs
(B<ipNetToMediaIfIndex>)
If the device doesn't support B<ipNetToMediaIfIndex>, this will try
the deprecated B<atIfIndex>.
=item $l3->at_paddr()
Returns reference to hash. Maps ARP table entries to MAC addresses.
(B<ipNetToMediaPhysAddress>)
If the device doesn't support B<ipNetToMediaPhysAddress>, this will try
the deprecated B<atPhysAddress>.
=item $l3->at_netaddr()
Returns reference to hash. Maps ARP table entries to IPs
(B<ipNetToMediaNetAddress>)
If the device doesn't support B<ipNetToMediaNetAddress>, this will try
the deprecated B<atNetAddress>.
=back
=head2 ARP Cache Entries
The B<atTable> has been deprecated since 1991. You should never need
to use these methods. See B<ipNetToMediaTable> above.
=over
=item $l3->old_at_index()
Returns reference to map of IID to Arp Cache Entry
(B<atIfIndex>)
=item $l3->at_paddr()
=item $l3->old_at_paddr()
Returns reference to hash of Arp Cache Entries to MAC address
(B<atPhysAddress>)
=item $l3->at_netaddr()
=item $l3->old_at_netaddr()
Returns reference to hash of Arp Cache Entries to IP Address

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::Aironet;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::AlteonAD;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;

View File

@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::BayRS;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
@@ -138,7 +138,7 @@ sub os_ver {
my $descr = $bayrs->description();
return undef unless defined $descr;
if ($descr =~ m/rel\/(\d+\.\d+\.\d+\.\d+)/){
if ($descr =~ m/^\s*Image:\s+re[lv]\/((\d+\.){1,3}\d+)/){
return $1;
}
return undef;

View File

@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::C3550;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;

View File

@@ -35,15 +35,14 @@ use strict;
use Exporter;
use SNMP::Info::Layer3;
use SNMP::Info::CiscoVTP;
use SNMP::Info::CiscoStack;
use SNMP::Info::CDP;
use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
use SNMP::Info::MAU;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE $INIT/ ;
$VERSION = 1.0;
@SNMP::Info::Layer3::C4000::ISA = qw/ SNMP::Info::Layer3 SNMP::Info::CiscoStack SNMP::Info::CiscoVTP
$VERSION = '1.04';
@SNMP::Info::Layer3::C4000::ISA = qw/ SNMP::Info::Layer3 SNMP::Info::CiscoVTP
SNMP::Info::CiscoStats SNMP::Info::CDP
SNMP::Info::CiscoImage SNMP::Info::MAU Exporter/;
@SNMP::Info::Layer3::C4000::EXPORT_OK = qw//;
@@ -51,7 +50,6 @@ $VERSION = 1.0;
%MIBS = (
%SNMP::Info::Layer3::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
%SNMP::Info::CiscoStack::MIBS,
%SNMP::Info::CDP::MIBS,
%SNMP::Info::CiscoStats::MIBS,
%SNMP::Info::CiscoImage::MIBS,
@@ -62,7 +60,6 @@ $VERSION = 1.0;
%GLOBALS = (
%SNMP::Info::Layer3::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
%SNMP::Info::CiscoStack::GLOBALS,
%SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS,
%SNMP::Info::CiscoImage::GLOBALS,
@@ -76,7 +73,6 @@ $VERSION = 1.0;
%FUNCS = (
%SNMP::Info::Layer3::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
%SNMP::Info::CiscoStack::FUNCS,
%SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoStats::FUNCS,
%SNMP::Info::CiscoImage::FUNCS,
@@ -88,7 +84,6 @@ $VERSION = 1.0;
%MUNGE = (
%SNMP::Info::Layer3::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
%SNMP::Info::CiscoStack::MUNGE,
%SNMP::Info::CDP::MUNGE,
%SNMP::Info::CiscoStats::MUNGE,
%SNMP::Info::CiscoImage::MUNGE,
@@ -159,8 +154,6 @@ a more specific class using the method above.
=item SNMP::Info::CiscoVTP
=item SNMP::Info::CiscoStack
=item SNMP::Info::CiscoStats
=item SNMP::Info::CDP
@@ -181,8 +174,6 @@ See SNMP::Info::Layer3 for its own MIB requirements.
See SNMP::Info::CiscoVTP for its own MIB requirements.
See SNMP::Info::CiscoStack for its own MIB requirements.
See SNMP::Info::CiscoStats for its own MIB requirements.
See SNMP::Info::CDP for its own MIB requirements.
@@ -205,10 +196,6 @@ See documentation in SNMP::Info::Layer3 for details.
See documentation in SNMP::Info::CiscoVTP for details.
=head2 Global Methods imported from SNMP::Info::CiscoStack
See documentation in SNMP::Info::CiscoStack for details.
=head2 Globals imported from SNMP::Info::CDP
See documentation in SNMP::Info::CDP for details.
@@ -238,10 +225,6 @@ See documentation in SNMP::Info::Layer3 for details.
See documentation in SNMP::Info::CiscoVTP for details.
=head2 Table Methods imported from SNMP::Info::CiscoStack
See documentation in SNMP::Info::CiscoStack for details.
=head2 Table Methods imported from SNMP::Info::CDP
See documentation in SNMP::Info::CDP for details.

View File

@@ -41,7 +41,7 @@ use SNMP::Info::CiscoStats;
use SNMP::Info::CiscoImage;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE $INIT/ ;
$VERSION = 1.0;
$VERSION = '1.04';
@SNMP::Info::Layer3::C6500::ISA = qw/ SNMP::Info::Layer3 SNMP::Info::CiscoStack SNMP::Info::CiscoVTP
SNMP::Info::CiscoStats SNMP::Info::CDP Exporter
SNMP::Info::CiscoImage/;

View File

@@ -41,7 +41,7 @@ use SNMP::Info::CiscoRTT;
use SNMP::Info::CiscoQOS;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE $INIT/ ;
$VERSION = 1.0;
$VERSION = '1.04';
@SNMP::Info::Layer3::Cisco::ISA = qw/SNMP::Info::Layer3 SNMP::Info::CiscoVTP
SNMP::Info::CDP SNMP::Info::CiscoStats
SNMP::Info::CiscoImage SNMP::Info::CiscoRTT

View File

@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::Contivity;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;

View File

@@ -40,7 +40,7 @@ use SNMP::Info::MAU;
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
$VERSION = 1.0;
$VERSION = '1.04';
@SNMP::Info::Layer3::Extreme::ISA = qw/SNMP::Info::Layer3 SNMP::Info::MAU Exporter/;
@SNMP::Info::Layer3::Extreme::EXPORT_OK = qw//;

View File

@@ -40,7 +40,7 @@ use SNMP::Info::FDP;
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
$VERSION = 1.0;
$VERSION = '1.04';
@SNMP::Info::Layer3::Foundry::ISA = qw/SNMP::Info::Layer3 SNMP::Info::FDP Exporter/;
@SNMP::Info::Layer3::Foundry::EXPORT_OK = qw//;

View File

@@ -31,6 +31,8 @@ package SNMP::Info::Layer3::Juniper;
use Exporter;
use SNMP::Info::Layer3;
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE $INIT/ ;
$VERSION = '1.04';
@SNMP::Info::Layer3::Juniper::ISA = qw/SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Juniper::EXPORT_OK = qw//;

View File

@@ -40,7 +40,7 @@ use SNMP::Info::SONMP;
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
$VERSION = 1.0;
$VERSION = '1.04';
@SNMP::Info::Layer3::N1600::ISA = qw/SNMP::Info::Layer3 SNMP::Info::SONMP Exporter/;
@SNMP::Info::Layer3::N1600::EXPORT_OK = qw//;

View File

@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::Passport;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;

View File

@@ -30,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::MAU;
$VERSION = 1.0;
$VERSION = '1.04';
# $Id$
use strict;
@@ -169,7 +169,11 @@ sub mau_i_duplex_admin {
# Older HP4000's don't implement ifMauDefaultType, but we can
# figure out from ifMauAutoNegCapAdvertised what we'd like.
if (!defined($mau_type_admin)) {
return mau_i_duplex_admin_old($mau,$mau_index,$mau_autostat);
if (defined($mau_index)) {
return mau_i_duplex_admin_old($mau,$mau_index,$mau_autostat);
} else {
return undef;
}
}
my %i_duplex_admin;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::NortelStack;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;

View File

@@ -27,7 +27,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::RapidCity;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;
use Exporter;

View File

@@ -28,7 +28,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::SONMP;
$VERSION = 1.0;
$VERSION = '1.04';
use strict;

View File

@@ -29,6 +29,7 @@ Info/Layer2/C1900.pm
Info/Layer2/C2900.pm
Info/Layer2/Catalyst.pm
Info/Layer2/Centillion.pm
Info/Layer2/Cisco.pm
Info/Layer2/Foundry.pm
Info/Layer2/HP.pm
Info/Layer2/N2270.pm

120
README
View File

@@ -1,15 +1,22 @@
NAME
SNMP::Info - Object Oriented Perl5 Interface to Network devices and MIBs
through SNMP.
VERSION
SNMP::Info - Version 1.0
SNMP::Info - Version 1.04
AUTHOR
SNMP::Info was created at UCSC for the netdisco project
(www.netdisco.org) and is written and maintained by Max Baker.
(www.netdisco.org) and was orginally written by Max Baker.
Currently being maintained by team of Open Source authors headed by Eric
Miller and Bill Fenner.
SYNOPSIS
use SNMP::Info;
my $info = new SNMP::Info(
@@ -44,26 +51,34 @@ SYNOPSIS
# Print out physical port name, not snmp iid
my $port = $interfaces->{$iid};
print "$port: ";
print "$duplex duplex" if defined $duplex;
# The CDP Table has table entries different than the interface tables.
# So we use c_if to get the map from cdp table to interface table.
my %c_map = reverse %$c_if;
my $c_key = $c_map{$iid};
unless (defined $c_key) {
print "\n\n";
next;
}
my $neighbor_ip = $c_ip->{$c_key};
my $neighbor_port = $c_port->{$c_key};
print "$port: $duplex duplex";
print " connected to $neighbor_ip / $neighbor_port\n" if defined $remote_ip;
print " connected to $neighbor_ip / $neighbor_port\n" if defined $neighbor_ip;
print "\n";
}
SUPPORT
Please direct all support, help, and bug requests to the snmp-info-users
Mailing List at
<http://lists.sourceforge.net/lists/listinfo/snmp-info-users>.
DESCRIPTION
SNMP::Info gives an object oriented interface to information obtained
through SNMP.
@@ -93,6 +108,7 @@ DESCRIPTION
a couple hashes. See EXTENDING SNMP::INFO.
REQUIREMENTS
1. Net-SNMP
To use this module, you must have Net-SNMP installed on your system.
More specifically you need the Perl modules that come with it.
@@ -130,6 +146,7 @@ REQUIREMENTS
directory and that the MIBs are world-readable.
DESIGN GOALS
1. Use of textual MIB leaf identifier and enumerated values
* All values are retrieved via MIB Leaf node names
@@ -157,12 +174,14 @@ DESIGN GOALS
inclusion in the next version.
SUBCLASSES
These are the subclasses that implement MIBs and support devices:
Required MIBs not included in the install instructions above are noted
here.
MIB Subclasses
These subclasses implement method to access one or more MIBs. These are
not used directly, but rather inherited from device subclasses.
@@ -178,7 +197,7 @@ SUBCLASSES
SNMP::Info::CDP
CISCO-CDP-MIB. Cisco Discovery Protocol (CDP) Support. Inherited by
devices serving Layer2 or Layer3.
Cisco and HP devices.
SNMP::Info::CiscoImage
CISCO-IMAGE-MIB. A collection of OIDs providing IOS image
@@ -231,6 +250,7 @@ SUBCLASSES
by Nortel/Bay/Synoptics switches and hubs.
Device Subclasses
These subclasses inherit from one or more classes to provide a common
interface to data obtainable from network devices.
@@ -275,9 +295,9 @@ SUBCLASSES
Depreciated. Use BayStack.
SNMP::Info::Layer2::Baystack
Subclass for Nortel/Bay Baystack switches. This includes 303,
304, 350, 380, 410, 420, 425, 450, 460, 470, 5510, 5520, 5530,
Business Policy Switch (BPS) and probably others.
Subclass for Nortel/Bay Ethernet Switch/Baystack switches. This
includes 303, 304, 350, 380, 410, 420, 425, 450, 460, 470, 5510,
5520, 5530, Business Policy Switch (BPS) and probably others.
SNMP::Info::Layer2::C1900
Subclass for Cisco Catalyst 1900 and 1900c Devices running
@@ -296,6 +316,10 @@ SUBCLASSES
SNMP::Info::Layer2::Centillion
Subclass for Nortel/Bay Centillion and 5000BH ATM switches.
SNMP::Info::Layer2::Cisco
Generic Cisco subclass for layer2 devices that are not yet
supported in more specific subclasses.
SNMP::Info::Layer2::Foundry
Subclass for Foundry Switches. Tested on EdgeIron 24G.
@@ -334,13 +358,16 @@ SUBCLASSES
Subclass for Nortel Alteon Ace Director series L2-7 switches.
SNMP::Info::Layer3::BayRS
Subclass for Nortel BayRS routers. This includes BCN, BLN, ASN,
ARN, and AN routers.
Subclass for Nortel Multiprotocol/BayRS routers. This includes
BCN, BLN, ASN, ARN, AN, 2430, and 5430 routers.
SNMP::Info::Layer3::C3550
Subclass for Cisco Catalyst 3550,3540,3560 2/3 switches running
IOS.
SNMP::Info::Layer3::C4000
This class covers Catalyst 4000s and 4500s.
SNMP::Info::Layer3::C6500
This class covers Catalyst 6500s in native mode, hybrid mode.
Catalyst 4000's, 3750's, 2970's and probably others.
@@ -350,7 +377,7 @@ SUBCLASSES
on CiscoVTP.
SNMP::Info::Layer3::Contivity
Subclass for Nortel Contivity VPN concentrators.
Subclass for Nortel Contivity/VPN Routers.
SNMP::Info::Layer3::Extreme
Subclass for Extreme Networks switches.
@@ -365,20 +392,27 @@ SUBCLASSES
See SNMP::Info::Layer3::Foundry for more info.
SNMP::Info::Layer3::Passport
Subclass for Nortel Passport 8000 series and Accelar series
switches.
SNMP::Info::Layer3::Juniper
Subclass for Juniper devices.
SNMP::Info::Layer3::N1600
Subclass for Nortel 1600 series switches.
Subclass for Nortel Ethernet Routing Switch 1600 series.
SNMP::Info::Layer3::Passport
Subclass for Nortel Ethernet Routing Switch/Passport 8000 series
and Accelar series switches.
Thanks
Thanks for testing and coding help (in no particular order) to : Andy
Ford, Brian Wilson, Jean-Philippe Luiggi, D<>na Watanabe, Bradley Baetz,
Eric Miller, and people listed on the Netdisco README!
Mike Hunter, Justin Hunter, Brian Chow and people listed on the Netdisco
README!
USAGE
Constructor
new()
Creates a new object and connects via SNMP::Session.
@@ -475,6 +509,7 @@ USAGE
version 2 and then fallback to version 1.
Data is Cached
Methods and subroutines requesting data from a device will only load the
data once, and then return cached versions of that data.
@@ -485,6 +520,7 @@ USAGE
globals and table methods.
Object Scalar Methods
These are for package related data, not direcly supplied from SNMP.
$info->clear_cache()
@@ -519,22 +555,27 @@ USAGE
Aironet (BR500,AP340,350,1200) -> SNMP::Info::Layer3::Aironet
AP4800... All Non IOS
Catalyst 3550,3548,3560 -> SNMP::Info::Layer3::C3550
Catalyst 6500, 4000, 3750 -> SNMP::Info::Layer3::C6500
Catalyst 4000,4500 -> SNMP::Info::Layer3::C4000
Catalyst 6500, 3750 -> SNMP::Info::Layer3::C6500
Cisco Generic L3 IOS device -> SNMP::Info::Layer3::Cisco
Extreme -> SNMP::Info::Layer3::Extreme
Foundry -> SNMP::Info::Layer3::Foundry
Juniper -> SNMP::Info::Layer3::Juniper
Nortel Passport/Accelar LAN -> SNMP::Info::Layer3::Passport
Nortel/Bay Baystack -> SNMP::Info::Layer2::Baystack
Alteon Ace Director -> SNMP::Info::Layer3::AlteonAD
Nortel Contivity -> SNMP::Info::Layer3::Contivity
Nortel BayRS Router -> SNMP::Info::Layer3::BayRS
Elsif Layer2 (no Layer3) -> SNMP::Info::Layer2
Elsif Layer2 (no Layer3) -> SNMP::Info::Layer2
Aironet - IOS Devices -> SNMP::Info::Layer2::Aironet
Catalyst 1900 -> SNMP::Info::Layer2::C1900
Catalyst 2900XL,2950,3500XL -> SNMP::Info::Layer2::C2900
Catalyst 2970 -> SNMP::Info::Layer3::C6500
Catalyst 2900XL,2940,2950,
3500XL -> SNMP::Info::Layer2::C2900
Catalyst 2960, 2970 -> SNMP::Info::Layer3::C6500
Catalyst 3550/3548 -> SNMP::Info::Layer3::C3550
Cisco 3400 w/ MetroBase -> SNMP::Info::Layer3::C3550
Catalyst WS-C 2926,5xxx -> SNMP::Info::Layer2::Catalyst
Cisco (not covered by above) -> SNMP::Info::Layer2::Cisco
Extreme -> SNMP::Info::Layer3::Extreme
Foundry (EdgeIron,????) -> SNMP::Info::Layer2::Foundry
HP Procurve -> SNMP::Info::Layer2::HP
@@ -592,6 +633,7 @@ USAGE
Indexing.html>
Globals (Scalar Methods)
These are methods to return scalar data from RFC1213.
Some subset of these is probably available for any network device that
@@ -640,6 +682,7 @@ USAGE
(ipForwarding)
Table Methods
Each of these methods returns a hash_reference to a hash keyed on the
interface index in SNMP.
@@ -654,6 +697,7 @@ USAGE
cases changes between reboots of the network device.
Partial Table Fetches
If you want to get only a part of an SNMP table and you know the IID for
the part of the table that you want, you can specify it in the call:
@@ -667,6 +711,7 @@ USAGE
Partial table results are not cached.
Interface Information
$info->interfaces()
This methods is overriden in each subclass to provide a mapping
between the Interface Table Index (iid) and the physical port name.
@@ -704,7 +749,14 @@ USAGE
Speed of the link, human format. See munge_speed() later in document
for details.
(ifSpeed)
(ifSpeed, ifHighSpeed if necessary)
$info->i_speed_high()
Speed of a high-speed link, human format. See munge_highspeed()
later in document for details. You should not need to call this
directly, as i_speed() will call it if it needs to.
(ifHighSpeed)
$info->i_mac()
MAC address of the interface. Note this is just the MAC of the port,
@@ -726,7 +778,7 @@ USAGE
$info->i_lastchange()
The value of sysUpTime when this port last changed states (up,down).
(IfLastChange)
(ifLastChange)
$info->i_name()
Interface Name field. Supported by a smaller subset of devices, this
@@ -742,6 +794,7 @@ USAGE
(ifAlias)
Interface Statistics
$info->i_octet_in(), $info->i_octets_out(), $info->i_octet_in64(),
$info->i_octets_out64()
Bandwidth.
@@ -800,6 +853,7 @@ USAGE
(ifHCOutBroadcastPkts)
IP Address Table
Each entry in this table is an IP address in use on this device. Usually
this is implemented in Layer3 Devices.
@@ -824,6 +878,7 @@ USAGE
(ipAdEntBcastAddr)
IP Routing Table
$info->ipr_route()
The route in question. A value of 0.0.0.0 is the default gateway
route.
@@ -939,6 +994,7 @@ USAGE
("ipRouteInfo")
SETTING DATA VIA SNMP
This section explains how to use SNMP::Info to do SNMP Set operations.
$info->set_METHOD($value)
@@ -968,6 +1024,7 @@ SETTING DATA VIA SNMP
subroutines will need to be added if they haven't been already.
Quiet Mode
SNMP::Info will not chirp anything to STDOUT unless there is a serious
error (in which case it will probably die).
@@ -982,7 +1039,9 @@ Quiet Mode
my $name = $info->name() or die "Couldn't get sysName!" . $name->error();
EXTENDING SNMP::INFO
Data Structures required in new Subclass
A class inheriting this class must implement these data structures :
$INIT
@@ -1025,6 +1084,7 @@ EXTENDING SNMP::INFO
)
Sample Subclass
Let's make a sample Layer 2 Device subclass. This class will inherit the
Cisco Vlan module as an example.
@@ -1116,7 +1176,9 @@ EXTENDING SNMP::INFO
of SNMP::Info.
SNMP::INFO INTERNALS
Object Namespace
Internal data is stored with bareword keys. For example $info->{debug}
SNMP Data is stored or marked cached with keys starting with an
@@ -1126,6 +1188,7 @@ SNMP::INFO INTERNALS
above.
Package Globals
These set the default value for an object upon creation.
$DEBUG
@@ -1147,12 +1210,14 @@ SNMP::INFO INTERNALS
for more info. Can change by passing BulkRepeaters option in new()
Data Munging Callback Subroutines
munge_speed()
Makes human friendly speed ratings using %SPEED_MAP
%SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps',
'115000' => '115 kpbs',
'1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1',
@@ -1171,6 +1236,8 @@ SNMP::INFO INTERNALS
'45000000' => '45 Mbps',
'45045000' => 'DS3',
'46359642' => 'DS3',
'51850000' => 'OC-1',
'54000000' => '54 Mbps',
'64000000' => '64 Mbps',
'100000000' => '100 Mbps',
'149760000' => 'ATM on OC-3',
@@ -1184,6 +1251,9 @@ SNMP::INFO INTERNALS
'1000000000' => '1.0 Gbps',
)
munge_highspeed()
Makes human friendly speed ratings for ifHighSpeed
munge_ip()
Takes a binary IP and makes it dotted ASCII
@@ -1213,6 +1283,7 @@ SNMP::INFO INTERNALS
Net-SNMP figured out. Heirarchy/precendence of MIBS in SNMP::Info.
Internaly Used Functions
$info->init()
Used internally. Loads all entries in %MIBS.
@@ -1298,7 +1369,11 @@ SNMP::INFO INTERNALS
The first time ran, it will call $info->load_METHOD(). Every time
after it will return cached data.
$info->snmp_connect_ip()
Returns true or false based upon snmp connectivity to an IP.
AUTOLOAD
Each entry in either %FUNCS or %GLOBALS is used by AUTOLOAD() to create
dynamic methods.
@@ -1321,6 +1396,7 @@ SNMP::INFO INTERNALS
subclass.
COPYRIGHT AND LICENCE
Changes from SNMP::Info Version 0.7 and on are: Copyright (c)2003, 2004
Max Baker - All rights reserved.

View File

@@ -13,7 +13,7 @@ use lib '/usr/local/netdisco';
use SNMP::Info;
use Getopt::Long;
use strict;
use vars qw/$Class $Dev $Comm $Ver @Dump %Dumped/;
use vars qw/$Class $Dev $Comm $Ver @Dump %Dumped $Debug/;
# Default Values
$Class = '';
@@ -21,6 +21,7 @@ $Dev = '';
$Comm = '';
$Ver = 2;
@Dump = ();
$Debug = 0;
GetOptions ('c|class=s' => \$Class,
'd|dev=s' => \$Dev,
@@ -28,6 +29,7 @@ GetOptions ('c|class=s' => \$Class,
'v|ver=i' => \$Ver,
'h|help' => \&usage,
'p|print=s' => \@Dump,
'x|debug' => \$Debug,
);
&usage unless ($Dev and $Comm);
@@ -45,7 +47,7 @@ print "Dumping : ",join(',',@Dump),"\n" if scalar @Dump;
my $dev = new $Class( 'AutoSpecify' => 0,
'AutoVerBack' => 0,
'Version' => $Ver,
'Debug' => 0,
'Debug' => $Debug,
'DestHost' => $Dev,
'Community' => $Comm
) or die "\n";