Compare commits

..

37 Commits

Author SHA1 Message Date
Max Baker
440bb002b6 doc changes 2004-03-22 04:22:00 +00:00
Max Baker
6dd3f4b21a a little undef checking gets rid of warnings 2004-03-14 17:31:20 +00:00
Max Baker
1278117b05 added c6sup1 to l3:c6500 2004-03-14 17:30:26 +00:00
Max Baker
5c6c75b42e Fixed Bug [ 911235 ] -- added sub os() by accident.. Cut and paste happy.
Reported by Bradley Baetz - bbaetz
2004-03-07 19:53:34 +00:00
Max Baker
d78e5d6656 added cisco_comm_indexing() method for clarification/customization purposed. 2004-03-02 05:46:14 +00:00
Max Baker
094c2d548d added device_type() debugging info. 2004-03-02 05:22:35 +00:00
Max Baker
4913ac6cdd added q-bridge-mib stuff. and some docs 2004-03-02 05:15:40 +00:00
Max Baker
ac9efcf8ba added q-bridge mib stuff 2004-03-02 04:57:04 +00:00
Max Baker
6b4444d97a version and copyright change for 0.8 prep 2004-02-13 06:30:31 +00:00
Max Baker
607d5f04bd graph changes 2004-02-13 06:19:20 +00:00
Max Baker
b46aa416a0 order of precedence on serial no. entry 2004-02-13 06:18:57 +00:00
Max Baker
800aa0b4f0 Added device matrix graphing fun 2004-02-13 05:15:32 +00:00
Max Baker
a0e0be2d68 added more serial() support for L2 and L3 2004-02-12 21:16:37 +00:00
Max Baker
3fa47dc2e6 added HP-VLAN 2004-02-10 17:29:26 +00:00
Max Baker
25141d3c8e Added C1900 to ::CiscoVTP 2004-02-10 17:28:34 +00:00
Max Baker
1f02aeaec4 added support for CISCO-VLAN-MEMBERSHIP and all the i_vlan* funcs. 2004-02-10 17:24:22 +00:00
Max Baker
5d4aada8f5 added Q-BRIDGE 2004-02-10 17:23:45 +00:00
Max Baker
3bd7f78277 added weird description for c6500's 2004-02-10 17:23:11 +00:00
Max Baker
3994706465 fix by dana watanabe to support C3500xl in description string. Added new T3 to speed map 2004-02-06 03:25:10 +00:00
Max Baker
12bf18ac02 added more devices to model map 2004-01-28 06:41:40 +00:00
Max Baker
5c6a8f3c45 checked for empty id in model() 2004-01-28 06:41:19 +00:00
Max Baker
ddddb703aa *** empty log message *** 2004-01-28 06:19:56 +00:00
Max Baker
5ef4c78f8a Added ap4800 to l3:aironet class 2004-01-28 06:14:18 +00:00
Max Baker
05a7f104a4 *** empty log message *** 2004-01-28 06:13:58 +00:00
Max Baker
da1183b4fa fixed up os_ver to parse old AP4800's 2004-01-28 06:13:23 +00:00
Max Baker
a51ad7ee88 added Cisco 2970 to l3:c6500 class 2004-01-28 06:06:03 +00:00
Max Baker
df3e0e3b3a *** empty log message *** 2004-01-21 07:13:39 +00:00
Max Baker
c156584417 *** empty log message *** 2004-01-20 16:47:48 +00:00
Max Baker
74e649a033 removed warning about non numeric port line 199 2004-01-20 16:44:20 +00:00
Max Baker
342a45a424 added check for os() and descr() in model() 2004-01-20 16:39:23 +00:00
Max Baker
7076c236ea *** empty log message *** 2004-01-07 00:11:39 +00:00
Max Baker
0d90383ea3 case on model/os 2004-01-07 00:10:26 +00:00
Max Baker
fe59f88dd3 added older aironet, l2:allied, l2:zyxel 2004-01-06 23:56:17 +00:00
Max Baker
2f4704b18d *** empty log message *** 2004-01-06 23:55:47 +00:00
Max Baker
c8c94bbd8b added cat4000 and 3750s to l3:c6500 class 2004-01-05 00:16:07 +00:00
Max Baker
054e27e827 added C3500XL support 2003-09-23 02:56:51 +00:00
Max Baker
766f14d2bf ver 0.7 prep 2003-08-14 18:24:56 +00:00
33 changed files with 1160 additions and 154 deletions

View File

@@ -1,3 +1,8 @@
All code from version 0.7 on
Copyright (c) 2003,2004 Max Baker
All rights reserved.
Original Code
Copyright (c) 2002,2003 Regents of the University of California Copyright (c) 2002,2003 Regents of the University of California
All rights reserved. All rights reserved.

View File

@@ -1,7 +1,24 @@
SNMP::Info - Perl5 OO Interface to Network Devices and SNMP MIBs SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
ChangeLog $Id$ ChangeLog $Id$
version 0.7 () version 0.8 (03/21/04)
+ Added Q-BRIDGE-MIB support to SNMP::Info::Bridge
+ Added Aironet AP4800 to Layer3::Aironet class
+ Added C3500XL devices to the Layer2::C2900 class
+ Added Cisco 3750 (37xxstack) to Layer3::C6500 class
+ Added Cisco Catalyst 4000 to Layer3::C6500 class
+ Added Cisco Catalyst 2970 to Layer3::C6500 Class
* Made Cisco Commuinty string indexing a boolean method for clarification
* Added VLAN info for HP devices using Q-BRIDGE-MIB
* Fixed warning about uninitialized value in CiscoStats line 92
* Added for more serial# checking for L2 and L3
* Fixed warning in Layer2::Bay about non numeric port line 199
Contributions from Dmitry Sergienko:
+ Added Cisco Aironet BR500 and AP1200 to L2::Aironet Class
* Fixed the Port name alias for Catalyst 2900 devices
+ Added Support For ZiLEX DSLAMs and Allied Telesys Switches
version 0.7 (08/14/03)
* Added Class for Catalyst 6500 Series - Layer3::C6500 * Added Class for Catalyst 6500 Series - Layer3::C6500
* Added CiscoVTP support to 3550,2900, and Catalyst classes * Added CiscoVTP support to 3550,2900, and Catalyst classes
* Extracted VLAN stuff from Layer2::Catalyst to SNMP::Info::CiscoVTP * Extracted VLAN stuff from Layer2::Catalyst to SNMP::Info::CiscoVTP

View File

@@ -1,5 +1,5 @@
# SNMP Device Compatibility Matrix # SNMP Device Compatibility Matrix
# SNMP::Info - Max Baker # SNMP::Info - (C) 2004 Max Baker
# This file is meant to detail the cababilities # This file is meant to detail the cababilities
# of network devices to supply data via SNMP. # of network devices to supply data via SNMP.
@@ -8,8 +8,9 @@
# Allied # Allied
device-vendor: Allied Telesyn device-vendor: Allied Telesyn
cdp:no
device-family: Hubs device-family: Allied Hubs
class: Layer1::Allied class: Layer1::Allied
ver: 1 ver: 1
arpnip: no arpnip: no
@@ -18,10 +19,15 @@ duplex: no
device: AT-3624T device: AT-3624T
device-family: AT-8000 Switches
class: Layer2::Allied
ver: 2
macsuck: yes
# Asante # Asante
device-vendor: Asante device-vendor: Asante
device-family: Hubs device-family: Asante Hubs
class: Layer1::Asante class: Layer1::Asante
ver: 1 ver: 1
arpnip: no arpnip: no
@@ -55,14 +61,14 @@ device-family: Aironet
note: IOS and Aironet OS versions note: IOS and Aironet OS versions
class: Layer3::Aironet class: Layer3::Aironet
device: AIRAP1100 device: AIRAP1100, AP1200, C1100
note: IOS based device note: IOS based device
class: Layer2::Aironet class: Layer2::Aironet
device: AP1200 device: BR500
note: Aironet based device note: Aironet based device
device: AP350, AP340 device: AP350, AP340, CAP350, CAP340, 1200, AP4800
note: Aironet based device note: Aironet based device
device-family: 1000 device-family: 1000
@@ -103,20 +109,14 @@ arpnip: yes
macsuck: yes macsuck: yes
class: Layer3 class: Layer3
device:2610 device:2610,2610XM,2611,2620,2620XM,2621
device:2611
device:2620
device:2620XM
device:2621
device:2621XM device:2621XM
device:2651XM device:2651XM
device:2691
device-family: 3600 device-family: 3600
class: Layer3 class: Layer3
@@ -172,17 +172,33 @@ device: 2924CXL
device: 2924CXLv device: 2924CXLv
device-family: Catlayst 2940
device: 2940-8TT
device-family: Catalyst 2950
device: 2950-t24
device-family: Catalyst 2970
macsuck:vlan
note: Acts just like IOS Catalyst 6500 series
class: Layer3::C6500
device: 2970G-24T-E
device-family: Catalyst 3500 XL device-family: Catalyst 3500 XL
portmac: yes portmac: yes
note: L2 only IOS devices macsuck: vlan
class: Layer2 note: L2 only IOS devices - Just like Catalyst 2900 series from SNMP
note: IOS Version 12.0(5)XP is buggy and doesn't do VLAN Community indexing correctly.
class: Layer2::C2900
device: 3508GXL device: 3508GXL
device: 3524XL device: 3524XL
device: 3548XL device: 3548XL
macsuck: no
device-family: Catalyst 3550 device-family: Catalyst 3550
macsuck: vlan macsuck: vlan
@@ -200,14 +216,15 @@ note: L2/L3 Switch
arpnip: yes arpnip: yes
device: 3550-24, 3550-48 device: 3550-24, 3550-48
note: L2 only switch macsuck: vlan
macsuck: no
note: !BRIDGE-MIB not implemented. device-family: Catalyst 3750
class: Layer3::C6500
device-family: Catalyst 4000 device-family: Catalyst 4000
duplex: both duplex: both
macsuck: vlan macsuck: vlan
class: Layer2::Catalyst class: Layer3::C6500
note: Comes in IOS and CatOS versions like the 6k series. note: Comes in IOS and CatOS versions like the 6k series.
note: CatOS versions like L2::Catalyst just fine. note: CatOS versions like L2::Catalyst just fine.
note: !Reported problems with SNMP taking up all the CPU. Requests take significantly longer. note: !Reported problems with SNMP taking up all the CPU. Requests take significantly longer.
@@ -297,7 +314,7 @@ device-vendor: HP
class: Layer2::HP class: Layer2::HP
ver: 2 ver: 2
device-family: ProCurve device-family: HP ProCurve
duplex: both duplex: both
macsuck: yes macsuck: yes
arpnip: no arpnip: no
@@ -311,10 +328,18 @@ device: 2524
ver: 1 ver: 1
device: 4000 device: 4000
note: duplex issues?
device: 4104GL device: 4104GL
duplex: link duplex: link
device: 4108GL device: 4108GL,8000,2626,2650,8000
note: VLAN info in Q-BRIDGE-MIB
device: 8000 device-vendor: Zyxel
class: Layer2::ZyXEL_DSLAM
note: Doesn't report sysServices (layers)
device-family: Zyxel DSLAM
device:AAM10008-61, AAM1008-63

170
Info.pm
View File

@@ -1,13 +1,15 @@
# SNMP::Info - Max Baker <max@warped.org> # SNMP::Info - Max Baker
# $Id$ # $Id$
# #
# Portions Copyright (c) 2003,2004 Max Baker
# All rights reserved.
# Copyright (c) 2002-3, Regents of the University of California # Copyright (c) 2002-3, Regents of the University of California
# All rights reserved. # All rights reserved.
# #
# See COPYRIGHT at bottom # See COPYRIGHT at bottom
package SNMP::Info; package SNMP::Info;
$VERSION = 0.7; $VERSION = 0.8;
use strict; use strict;
use Exporter; use Exporter;
@@ -27,13 +29,14 @@ SNMP::Info - Object Oriented Perl5 Interface to Network devices and MIBs through
=head1 VERSION =head1 VERSION
SNMP::Info - Version 0.6 SNMP::Info - Version 0.8
=head1 AUTHOR =head1 AUTHOR
Max Baker (C<max@warped.org>) Max Baker
SNMP::Info was created at UCSC for the netdisco project (www.netdisco.org) SNMP::Info was created at UCSC for the netdisco project (www.netdisco.org)
and is written and maintained by Max Baker.
=head1 SYNOPSIS =head1 SYNOPSIS
@@ -47,13 +50,13 @@ SNMP::Info was created at UCSC for the netdisco project (www.netdisco.org)
DestHost => 'router', DestHost => 'router',
Community => 'public', Community => 'public',
Version => 2 Version => 2
) or die "Can't connect to device.\n" ) or die "Can't connect to device.\n";
my $err = $info->error(); my $err = $info->error();
die "SNMP Community or Version probably wrong connecting to device. $err\n" if defined $err; die "SNMP Community or Version probably wrong connecting to device. $err\n" if defined $err;
$name = $info->name(); $name = $info->name();
$class = $info->class() $class = $info->class();
print "SNMP::Info is using this device class : $class\n"; print "SNMP::Info is using this device class : $class\n";
# Find out the Duplex status for the ports # Find out the Duplex status for the ports
@@ -135,9 +138,7 @@ of the net-snmp distribution.
Net-SNMP can be found at http://net-snmp.sourceforge.net Net-SNMP can be found at http://net-snmp.sourceforge.net
Version 5.0.2 or greater is recommended. Various version 4's will work, and 5.0.1 is kinda flaky Version 5.0.2 or greater is recommended. Various version 4's will work, and 5.0.1 is kinda flaky
on the Perl side. on the Perl side. 5.1.x isn't tested but should work fine.
Note: Net-SNMP was previously called ucd-snmp.
=item 2. MIBS =item 2. MIBS
@@ -178,13 +179,37 @@ Extract
=item STAND-ALONE-ETHERNET-SWITCH-MIB (ESSWITCH-MIB) =item STAND-ALONE-ETHERNET-SWITCH-MIB (ESSWITCH-MIB)
=item TOKEN-RING-RMON-MIB
=back =back
by running by running
mkdir -p /usr/local/share/snmp/mibs mkdir -p /usr/local/share/snmp/mibs
cd /usr/local/share/snmp/mibs cd /usr/local/share/snmp/mibs
tar xvfz /path/to/v1.tar.gz BRIDGE-MIB.my SNMP-REPEATER-MIB.my ESSWITCH-MIB.my tar xvfz /path/to/v1.tar.gz BRIDGE-MIB.my SNMP-REPEATER-MIB.my ESSWITCH-MIB.my TOKEN-RING-RMON-MIB.my
=item Fix CISCO-TC-MIB
There is a problem with the Cisco file F<CISCO-TC.my> which
is included from lots of other MIBs. Make the following changes
if you run into errors about C<Unsigned32> in this file.
Edit F</usr/local/share/snmp/mibs/CISCO-TC.my>
Comment out line 192 that says C<SMI Unsigned32> with two dashes.
-- SMI Unsigned32
Add C<Unsigned32> to the imports after line 19:
IMPORTS
MODULE-IDENTITY,
Gauge32,
Integer32,
Counter64,
Unsigned32,
FROM SNMPv2-SMI
=item More Specific MIBs =item More Specific MIBs
@@ -226,8 +251,9 @@ Or you can override any existing methods from a parent class by making a short s
See the section EXTENDING SNMP::INFO for more details. See the section EXTENDING SNMP::INFO for more details.
When you make a new subclass for a device, please be sure to send it When you make a new subclass for a device, please be sure to send it back to
back to the developers at snmp@warped.org for inclusion in the next version. the developers (via Source Forge or the mailing list) for inclusion in the next
version.
=back =back
@@ -246,12 +272,16 @@ used directly, but rather inherited from device subclasses.
=item SNMP::Info::Bridge =item SNMP::Info::Bridge
BRIDGE-MIB (RFC1286). Inherited by devices with Layer2 service. BRIDGE-MIB (RFC1286). QBRIDGE-MIB. Inherited by devices with Layer2 support.
=item SNMP::Info::CDP =item SNMP::Info::CDP
CISCO-CDP-MIB. Cisco Discovery Protocol (CDP) Support. Inherited by devices serving Layer2 or Layer3. CISCO-CDP-MIB. Cisco Discovery Protocol (CDP) Support. Inherited by devices serving Layer2 or Layer3.
=item SNMP::Info::CiscoStack
CISCO-STACK-MIB.
=item SNMP::Info::CiscoStats =item SNMP::Info::CiscoStats
Provides common interfaces for memory, cpu, and os statistics for Cisco devices. Provides methods for Provides common interfaces for memory, cpu, and os statistics for Cisco devices. Provides methods for
@@ -308,6 +338,15 @@ Generic Layer2 Device subclass.
=over =over
=item SNMP::Info::Layer2::Aironet
Class for Cisco Aironet wireless devices that run IOS. See also
Layer3::Aironet for Aironet devices that don't run IOS.
=item SNMP::Info::Layer2::Allied
Allied Telesys switches.
=item SNMP::Info::Layer2::Bay =item SNMP::Info::Layer2::Bay
Bay Networks BayStack switch Support. Provides translation from Bay Network Topology Table Bay Networks BayStack switch Support. Provides translation from Bay Network Topology Table
@@ -323,12 +362,12 @@ Subclass for Cisco Catalyst 1900 and 1900c Devices running CatOS.
=item SNMP::Info::Layer2::C2900 =item SNMP::Info::Layer2::C2900
Subclass for Cisco Catalyst 2900 devices running IOS. Subclass for Cisco Catalyst 2900, 2950, 3500XL, and 3548 devices running IOS.
=item SNMP::Info::Layer2::Catalyst =item SNMP::Info::Layer2::Catalyst
Subclass for Cisco Catalyst switches running CatOS. These switches usually Subclass for Cisco Catalyst switches running CatOS. These switches usually
report a model number that starts with ''wsc''. Note that this class report a model number that starts with C<wsc>. Note that this class
does not support everything that has the name Catalyst. does not support everything that has the name Catalyst.
=item SNMP::Info::Layer2::HP =item SNMP::Info::Layer2::HP
@@ -339,6 +378,10 @@ Requires HP-ICF-OID and ENTITY-MIB downloaded from HP.
See SNMP::Info::Layer2::HP for more info. See SNMP::Info::Layer2::HP for more info.
=item SNMP::Info::Layer2::ZyXEL_DSLAM
Zyxel DSLAMs. Need I say more?
=back =back
=item SNMP::Info::Layer3 =item SNMP::Info::Layer3
@@ -349,15 +392,16 @@ Generic Layer3 and Layer2+3 Device subclass.
=item SNMP::Info::Layer3::Aironet =item SNMP::Info::Layer3::Aironet
Subclass for Cisco Aironet wireless access points (AP). Subclass for Cisco Aironet wireless access points (AP) not running IOS. These are usually older
devices.
MIBs for these devices now included in v2.tar.gz available from ftp.cisco.com. MIBs for these devices now included in v2.tar.gz available from ftp.cisco.com.
Note Layer2::Aironet
=item SNMP::Info::Layer3::Foundry =item SNMP::Info::Layer3::Foundry
No longer supported. Subclass for older Foundry Network devices. Outdated, but being updated for newer devices.
Subclass for older Foundry Network devices.
Requires FOUNDRY-SN-ROOT-MIB. Requires FOUNDRY-SN-ROOT-MIB.
@@ -365,7 +409,12 @@ See SNMP::Info::Layer3::Foundry for more info.
=item SNMP::Info::Layer3::C3550 =item SNMP::Info::Layer3::C3550
Subclass for Cisco Catalyst 3550 2/3 switches running IOS. Subclass for Cisco Catalyst 3550,354 2/3 switches running IOS.
=item SNMP::Info::Layer3::C6500
This class covers Catalyst 6500s in native mode, hybrid mode. Catalyst 4000's, 3750's, 2970's
and probably others.
=back =back
@@ -374,7 +423,8 @@ Subclass for Cisco Catalyst 3550 2/3 switches running IOS.
=head2 Thanks =head2 Thanks
Thanks for testing and coding help (in no particular order) to : Thanks for testing and coding help (in no particular order) to :
Andy Ford, Brian Wilson, Jean-Philippe Luiggi, D<>na Watanabe Andy Ford, Brian Wilson, Jean-Philippe Luiggi, D<>na Watanabe, Bradley Baetz, and
people listed on the Netdisco README!
=head1 USAGE =head1 USAGE
@@ -577,15 +627,17 @@ SNMP::Info is returned.
Algorithm for Subclass Detection: Algorithm for Subclass Detection:
Layer3 Support -> SNMP::Info::Layer3 Layer3 Support -> SNMP::Info::Layer3
Aironet (non IOS) -> SNMP::Info::Layer3::Aironet Aironet (BR500,AP340,350,1200) -> SNMP::Info::Layer3::Aironet
Catalyst 3550 -> SNMP::Info::Layer3::C3550 AP4800... All Non IOS
Catalyst 6500 -> SNMP::Info::Layer3::C6500 Catalyst 3550,3548 -> SNMP::Info::Layer3::C3550
Catalyst 6500, 4000, 3750 -> SNMP::Info::Layer3::C6500
Foundry -> SNMP::Info::Layer3::Foundry Foundry -> SNMP::Info::Layer3::Foundry
Elsif Layer2 (no Layer3) -> SNMP::Info::Layer2 Elsif Layer2 (no Layer3) -> SNMP::Info::Layer2
Aironet (Cisco) AP1100 -> SNMP::Info::Layer2::Aironet Aironet - IOS Devices -> SNMP::Info::Layer2::Aironet
Bay Networks -> SNMP::Info::Layer2::Bay Bay Networks -> SNMP::Info::Layer2::Bay
Catalyst 1900 -> SNMP::Info::Layer2::C1900 Catalyst 1900 -> SNMP::Info::Layer2::C1900
Catalyst 2900XL/2950(IOS) -> SNMP::Info::Layer2::C2900 Catalyst 2900XL,2950,3500XL -> SNMP::Info::Layer2::C2900
Catalyst 2970 -> SNMP::Info::Layer3::C6500
Catalyst 3550/3548 -> SNMP::Info::Layer3::C3550 Catalyst 3550/3548 -> SNMP::Info::Layer3::C3550
Catalyst WS-C 2926,5xxx -> SNMP::Info::Layer2::Catalyst Catalyst WS-C 2926,5xxx -> SNMP::Info::Layer2::Catalyst
HP Procurve -> SNMP::Info::Layer2::HP HP Procurve -> SNMP::Info::Layer2::HP
@@ -593,6 +645,7 @@ Algorithm for Subclass Detection:
Allied -> SNMP::Info::Layer1::Allied Allied -> SNMP::Info::Layer1::Allied
Asante -> SNMP::Info::Layer1::Asante Asante -> SNMP::Info::Layer1::Asante
Else -> SNMP::Info Else -> SNMP::Info
ZyXEL_DSLAM -> SNMP::Info::Layer2::ZyXEL_DSLAM
=cut =cut
sub device_type { sub device_type {
@@ -604,7 +657,9 @@ sub device_type {
# if we dont have sysServices, we dont have anything else either probably. # if we dont have sysServices, we dont have anything else either probably.
return undef unless (defined $layers and length($layers)); return undef unless (defined $layers and length($layers));
my $desc = $info->description(); my $desc = $info->description() || 'undef';
$desc =~ s/[\r\n\l]+/ /g;
$info->debug() and print "SNMP::Info::device_type() layers:$layers sysDescr: \"$desc\".\n";
# Layer 3 Supported # Layer 3 Supported
# (usually has layer2 as well, so we check for 3 first) # (usually has layer2 as well, so we check for 3 first)
@@ -619,7 +674,15 @@ sub device_type {
$objtype = 'SNMP::Info::Layer3::Foundry' if $desc =~ /foundry/i ; $objtype = 'SNMP::Info::Layer3::Foundry' if $desc =~ /foundry/i ;
# Aironet - older non-IOS # Aironet - older non-IOS
$objtype = 'SNMP::Info::Layer3::Aironet' if ($desc =~ /Cisco/ and $desc =~ /\D(CAP340|AP340|CAP350|350|1200)\D/) ; $objtype = 'SNMP::Info::Layer3::Aironet' if ($desc =~ /Cisco/ and $desc =~ /\D(CAP340|AP340|CAP350|350|1200)\D/) ;
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /c6sup2/; $objtype = 'SNMP::Info::Layer3::Aironet' if ($desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/) ;
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/;
# Next two untested. Reported working by DA
$objtype = 'SNMP::Info::Layer3::C6500' if ($desc =~ /cisco/i and $desc =~ /3750/);
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /Catalyst 4000/;
$objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /s72033_rp/;
# 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);
# Layer 2 Supported # Layer 2 Supported
} elsif ($info->has_layer(2)) { } elsif ($info->has_layer(2)) {
@@ -632,8 +695,8 @@ sub device_type {
# Catalyst 1900 series override # Catalyst 1900 series override
$objtype = 'SNMP::Info::Layer2::C1900' if ($desc =~ /catalyst/i and $desc =~ /\D19\d{2}/); $objtype = 'SNMP::Info::Layer2::C1900' if ($desc =~ /catalyst/i and $desc =~ /\D19\d{2}/);
# Catalyst 2900 (IOS) series override # Catalyst 2900 and 3500XL (IOS) series override
$objtype = 'SNMP::Info::Layer2::C2900' if ($desc =~ /(C2900XL|C2950)/ ); $objtype = 'SNMP::Info::Layer2::C2900' if ($desc =~ /(C2900XL|C2950|C3500XL)/i );
# Catalyst WS-C series override 2926,4k,5k,6k in Hybrid # Catalyst WS-C series override 2926,4k,5k,6k in Hybrid
$objtype = 'SNMP::Info::Layer2::Catalyst' if ($desc =~ /WS-C\d{4}/); $objtype = 'SNMP::Info::Layer2::Catalyst' if ($desc =~ /WS-C\d{4}/);
@@ -641,6 +704,9 @@ sub device_type {
# Catalyst 3550 / 3548 Layer2 only switches # Catalyst 3550 / 3548 Layer2 only switches
$objtype = 'SNMP::Info::Layer3::C3550' if ($desc =~ /C3550/); $objtype = 'SNMP::Info::Layer3::C3550' if ($desc =~ /C3550/);
# Cisco 2970
$objtype = 'SNMP::Info::Layer3::C6500' if ($desc =~ /C2970/);
# HP # HP
$objtype = 'SNMP::Info::Layer2::HP' if ($desc =~ /HP.*ProCurve/); $objtype = 'SNMP::Info::Layer2::HP' if ($desc =~ /HP.*ProCurve/);
@@ -648,13 +714,20 @@ sub device_type {
$objtype = 'SNMP::Info::Layer2::Bay' if ($desc =~ /BayStack/); $objtype = 'SNMP::Info::Layer2::Bay' if ($desc =~ /BayStack/);
# Aironet - IOS # Aironet - IOS
$objtype = 'SNMP::Info::Layer2::Aironet' if ($desc =~ /C1100/); $objtype = 'SNMP::Info::Layer2::Aironet' if ($desc =~ /(C1100|AP1200)/);
# Aironet - non IOS
$objtype = 'SNMP::Info::Layer3::Aironet' if ($desc =~ /Cisco/ and $desc =~ /\D(BR500)\D/) ;
} elsif ($info->has_layer(1)) { } elsif ($info->has_layer(1)) {
$objtype = 'SNMP::Info::Layer1'; $objtype = 'SNMP::Info::Layer1';
# Allied crap-o-hub # Allied crap-o-hub
$objtype = 'SNMP::Info::Layer1::Allied' if ($desc =~ /allied/i); $objtype = 'SNMP::Info::Layer1::Allied' if ($desc =~ /allied/i);
$objtype = 'SNMP::Info::Layer1::Asante' if ($desc =~ /asante/i); $objtype = 'SNMP::Info::Layer1::Asante' if ($desc =~ /asante/i);
# These devices don't claim to have Layer1-3 but we like em anyways.
} else {
$objtype = 'SNMP::Info::Layer2::ZyXEL_DSLAM' if ($desc =~ /8-port .DSL Module\(Annex .\)/i);
} }
return $objtype; return $objtype;
@@ -695,7 +768,7 @@ sub has_layer {
=item $info->snmp_comm() =item $info->snmp_comm()
Returns SNMP Community string used in conncetion Returns SNMP Community string used in connection.
=cut =cut
sub snmp_comm { sub snmp_comm {
@@ -725,7 +798,6 @@ Usually this method is called internally from new(AutoSpecify => 1)
See device_type() entry for how a subclass is chosen. See device_type() entry for how a subclass is chosen.
=back
=cut =cut
sub specify { sub specify {
@@ -759,6 +831,20 @@ sub specify {
return $sub_obj; return $sub_obj;
} }
=item $info->cisco_comm_indexing()
Returns 0. Is an overridable method used for vlan indexing for
snmp calls on certain Cisco devices.
See L<ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-communityIndexing.html>
=cut
sub cisco_comm_indexing{
0;
}
=back
=head2 Globals (Scalar Methods) =head2 Globals (Scalar Methods)
These are methods to return scalar data from RFC1213. These are methods to return scalar data from RFC1213.
@@ -769,7 +855,7 @@ Some subset of these is probably available for any network device that speaks SN
=item $info->uptime() =item $info->uptime()
Uptime in hundreths of seconds since device became available. Uptime in hundredths of seconds since device became available.
(B<sysUpTime>) (B<sysUpTime>)
@@ -1181,17 +1267,17 @@ Table Methods. Set iid of method to value.
Returns undef if failed, or the return value from SNMP::Session::set() (snmp_errno) Returns undef if failed, or the return value from SNMP::Session::set() (snmp_errno)
# Disable a port administratvely # Disable a port administratively
my %if_map = reverse %{$info->interfaces()} my %if_map = reverse %{$info->interfaces()}
$info->set_i_up_admin('down', $if_map{'FastEthernet0/0') $info->set_i_up_admin('down', $if_map{'FastEthernet0/0')
or die "Couldn't disable the port. ",$info->error(1); or die "Couldn't disable the port. ",$info->error(1);
=back =back
NOTE: You must be connected to your device with a ReadWrite community string in order NOTE: You must be connected to your device with a C<ReadWrite> community string in order
for set operations to work. for set operations to work.
NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data aquired from NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data acquired from
overriden methods (subroutines) specific set_METHOD() subroutines will need to be overriden methods (subroutines) specific set_METHOD() subroutines will need to be
added. added.
@@ -1435,7 +1521,7 @@ Let's make a sample Layer 2 Device subclass :
1; # don't forget this line 1; # don't forget this line
----------------------- snip -------------------------------- ----------------------- snip --------------------------------
Be sure and send the debugged version to snmp@warped.org to be Be sure and send the debugged version to snmp-info-users@lists.sourceforge.net to be
included in the next version of SNMP::Info. included in the next version of SNMP::Info.
=head1 SNMP::INFO INTERNALS =head1 SNMP::INFO INTERNALS
@@ -1505,6 +1591,7 @@ Makes human friendly speed ratings using %SPEED_MAP
'11000000' => '11 Mbps', '11000000' => '11 Mbps',
'20000000' => '20 Mbps', '20000000' => '20 Mbps',
'16000000' => '16 Mbps', '16000000' => '16 Mbps',
'44210000' => 'T3',
'44736000' => 'T3', '44736000' => 'T3',
'45000000' => '45 Mbps', '45000000' => '45 Mbps',
'45045000' => 'DS3', '45045000' => 'DS3',
@@ -1538,6 +1625,7 @@ Makes human friendly speed ratings using %SPEED_MAP
'11000000' => '11 Mbps', '11000000' => '11 Mbps',
'20000000' => '20 Mbps', '20000000' => '20 Mbps',
'16000000' => '16 Mbps', '16000000' => '16 Mbps',
'44210000' => 'T3',
'44736000' => 'T3', '44736000' => 'T3',
'45000000' => '45 Mbps', '45000000' => '45 Mbps',
'45045000' => 'DS3', '45045000' => 'DS3',
@@ -1797,7 +1885,7 @@ sub store {
=item $info->_global() =item $info->_global()
Used internally by AUTOLOAD to load dynmaic methods from %GLOBALS. Used internally by AUTOLOAD to load dynamic methods from %GLOBALS.
Example: $info->name() calls autoload which calls $info->_global('name'). Example: $info->name() calls autoload which calls $info->_global('name').
@@ -2151,6 +2239,10 @@ sub AUTOLOAD {
=head1 COPYRIGHT AND LICENCE =head1 COPYRIGHT AND LICENCE
Changes from SNMP::Info Version 0.7 and on are:
Copyright (c)2003, 2004 Max Baker - All rights reserved.
Original Code is:
Copyright (c) 2002-3, Regents of the University of California Copyright (c) 2002-3, Regents of the University of California
All rights reserved. All rights reserved.

View File

@@ -1,9 +1,13 @@
# SNMP::Info::Bridge # SNMP::Info::Bridge
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Changes since Version 0.7 Copyright (c) 2004 Max Baker
# All rights reserved.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
#
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met: # modification, are permitted provided that the following conditions are met:
# #
@@ -28,7 +32,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Bridge; package SNMP::Info::Bridge;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -45,16 +49,21 @@ $SNMP::debugging=$DEBUG;
$INIT = 0; $INIT = 0;
%MIBS = ('BRIDGE-MIB' => 'dot1dBaseBridgeAddress'); %MIBS = ('BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
'Q-BRIDGE-MIB' => 'dot1qPvid',
);
%GLOBALS = ( %GLOBALS = (
'b_mac' => 'dot1dBaseBridgeAddress', 'b_mac' => 'dot1dBaseBridgeAddress',
'b_ports' => 'dot1dBaseNumPorts', 'b_ports' => 'dot1dBaseNumPorts',
'b_type' => 'dot1dBaseType', 'b_type' => 'dot1dBaseType',
# Spanning Tree Protocol # Spanning Tree Protocol
'stp_ver' => 'dot1dStpProtocolSpecification', 'stp_ver' => 'dot1dStpProtocolSpecification',
'stp_time' => 'dot1dStpTimeSinceTopologyChange', 'stp_time' => 'dot1dStpTimeSinceTopologyChange',
'stp_root' => 'dot1dStpDesignatedRoot', 'stp_root' => 'dot1dStpDesignatedRoot',
# Q-BRIDGE-MIB
'qb_vlans_max' => 'dot1qMaxSupportedVlans',
'qb_vlans' => 'dot1qNumVlans',
); );
%FUNCS = ( %FUNCS = (
@@ -78,6 +87,11 @@ $INIT = 0;
'stp_p_root' => 'dot1dStpPortDesignatedRoot', 'stp_p_root' => 'dot1dStpPortDesignatedRoot',
'stp_p_bridge' => 'dot1dStpPortDesignatedBridge', 'stp_p_bridge' => 'dot1dStpPortDesignatedBridge',
'stp_p_port' => 'dot1dStpPortDesignatedPort', 'stp_p_port' => 'dot1dStpPortDesignatedPort',
# Q-BRIDGE-MIB :
'qb_i_vlan' => 'dot1qPvid',
'qb_i_vlan_type' => 'dot1qPortAcceptableFrameTypes',
'qb_v_name' => 'dot1qVlanStaticName',
'qb_v_stat' => 'dot1qVlanStaticRowStatus',
); );
%MUNGE = ( %MUNGE = (
@@ -156,6 +170,9 @@ Max Baker (C<max@warped.org>)
BRIDGE-MIB is used by most Layer 2 devices, and holds information like the MAC Forwarding Table and Spanning Tree Protocol info. BRIDGE-MIB is used by most Layer 2 devices, and holds information like the MAC Forwarding Table and Spanning Tree Protocol info.
Q-BRIDGE-MIB holds 802.11q information -- VLANs and Trunking. Cisco tends not to use this MIB, but some
proprietary ones. HP and some nicer vendors use this. This is from C<RFC2674_q>.
Create or use a subclass of SNMP::Info that inherits this class. Do not use directly. Create or use a subclass of SNMP::Info that inherits this class. Do not use directly.
For debugging you can call new() directly as you would in SNMP::Info For debugging you can call new() directly as you would in SNMP::Info
@@ -172,6 +189,10 @@ None.
=item BRIDGE-MIB =item BRIDGE-MIB
=item Q-BRIDGE-MIB
f<rfc2674_q.mib>
=back =back
BRIDGE-MIB needs to be extracted from ftp://ftp.cisco.com/pub/mibs/v1/v1.tar.gz BRIDGE-MIB needs to be extracted from ftp://ftp.cisco.com/pub/mibs/v1/v1.tar.gz
@@ -218,6 +239,16 @@ Returns root of STP.
(B<dot1dStpDesignatedRoot>) (B<dot1dStpDesignatedRoot>)
=item $bridge->qb_vlans_max()
(B<dot1qMaxSupportedVlans>)
=item $bridge->qb_vlans()
Number of VLANS on this device.
(B<dot1qNumVlans>)
=back =back
=head1 TABLE METHODS =head1 TABLE METHODS
@@ -334,4 +365,35 @@ this port's segment."
=back =back
=head2 Q-BRIDGE Data
=over
=item $bridge->qb_i_vlan()
Gives the vlan used by interfaces
(B<dot1qPvid>)
=item $bridge->qb_i_vlan_type()
Either C<admitAll> or C<admitOnlyVlanTagged>. This is a good spot to find
trunk ports.
(B<dot1qPortAcceptableFrameTypes>)
=item $bridge->qb_v_name()
Human-entered name for vlans.
(B<dot1qVlanStaticName>)
=item $bridge->qb_v_stat()
uhh. C<active> !
(B<dot1qVlanStaticRowStatus>)
=back
=cut =cut

View File

@@ -1,6 +1,9 @@
# SNMP::Info::CDP # SNMP::Info::CDP
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Changes since Version 0.7 Copyright (c) 2004 Max Baker
# All rights reserved.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +31,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CDP; package SNMP::Info::CDP;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,7 +1,7 @@
# SNMP::Info::CiscoStack # SNMP::Info::CiscoStack
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2003 Max Baker # Copyright (c)2003,2004 Max Baker
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # 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. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoStack; package SNMP::Info::CiscoStack;
$VERSION = 0.7; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,6 +1,9 @@
# SNMP::Info::CiscoStats # SNMP::Info::CiscoStats
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Changes since Version 0.7 Copyright (c) 2004 Max Baker
# All rights reserved.
#
# Copyright (c) 2003 Regents of the University of California # Copyright (c) 2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +31,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoStats; package SNMP::Info::CiscoStats;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -89,12 +92,12 @@ sub os_ver {
my $descr = $l2->description(); my $descr = $l2->description();
# Older Catalysts # Older Catalysts
if ($os eq 'catalyst' and $descr =~ m/V(\d{1}\.\d{2}\.\d{2})/){ if (defined $os and $os eq 'catalyst' and defined $descr and $descr =~ m/V(\d{1}\.\d{2}\.\d{2})/){
return $1; return $1;
} }
# Newer Catalysts and IOS devices # Newer Catalysts and IOS devices
if ($descr =~ m/Version (\d+\.\d+\([^)]+\)[^,\s]*)(,|\s)+/ ){ if (defined $descr and $descr =~ m/Version (\d+\.\d+\([^)]+\)[^,\s]*)(,|\s)+/ ){
return $1; return $1;
} }
return undef; return undef;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::CiscoVTP # SNMP::Info::CiscoVTP
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2003 Regents of the University of California # Copyright (c) 2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::CiscoVTP; package SNMP::Info::CiscoVTP;
$VERSION = 0.7; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -45,7 +47,8 @@ $SNMP::debugging=$DEBUG;
$INIT = 0; $INIT = 0;
%MIBS = ( %MIBS = (
'CISCO-VTP-MIB' => 'vtpVlanName', 'CISCO-VTP-MIB' => 'vtpVlanName',
'CISCO-VLAN-MEMBERSHIP-MIB' => 'vmMembershipEntry',
); );
%GLOBALS = ( %GLOBALS = (
@@ -88,6 +91,16 @@ $INIT = 0;
'v_crf' => 'vtpVlanIsCRFBackup', 'v_crf' => 'vtpVlanIsCRFBackup',
'v_type_ext' => 'vtpVlanTypeExt', 'v_type_ext' => 'vtpVlanTypeExt',
'v_if' => 'vtpVlanIfIndex', 'v_if' => 'vtpVlanIfIndex',
# CISCO-VLAN-MEMBERSHIP-MIB
# VmMembershipTable
'i_vlan_type' => 'vmVlanType',
'i_vlan' => 'vmVlan',
'i_vlan_stat' => 'vmPortStatus',
'i_vlan_1' => 'vmVlans',
'i_vlan_2' => 'vmVlans2k',
'i_vlan_3' => 'vmVlans3k',
'i_vlan_4' => 'vmVlans4k',
# TODO Add these tables if someone wants them.. # TODO Add these tables if someone wants them..
# vtpEditControlTable # vtpEditControlTable
# vtpVlanEditTable # vtpVlanEditTable
@@ -181,6 +194,8 @@ You device will only implement a subset of these methods.
See ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-communityIndexing.html See ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-communityIndexing.html
for a good treaty of how to connect to the VLANs for a good treaty of how to connect to the VLANs
This table is from CISCO-VTP-MIB::vtpVlanTable
=over =over
=item $vtp->v_index() =item $vtp->v_index()
@@ -257,6 +272,58 @@ C<vtpVlanIfIndex>
=back =back
=head2 VLAN Interface Table
This table is from CISCO-VLAN-MEMBERSHIP-MIB::VmMembershipTable
=over
=item $vtp->i_vlan_type()
Static, Dynamic, or multiVlan.
C<vmVlanType>
=item $vtp->i_vlan()
The VLAN that a port is assigned to.
0 for no VLAN assigned.
C<vmVlan>
=item $vtp->i_vlan_stat()
Inactive, active, shutdown.
C<vmPortStatus>
=item $vtp->i_vlan_1()
Each bit represents a VLAN. This is 0 through 1023
C<vmVlans>
=item $vtp->i_vlan_2()
Each bit represents a VLAN. This is 1024 through 2047
C<vmVlans2k>
=item $vtp->i_vlan_3()
Each bit represents a VLAN. This is 2048 through 3071
C<vmVlans3k>
=item $vtp->i_vlan_4()
Each bit represents a VLAN. This is 3072 through 4095
C<vmVlans4k>
=back
=head2 Managment Domain Table =head2 Managment Domain Table
=over =over

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Entity # SNMP::Info::Entity
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2003 Regents of the University of California # Copyright (c) 2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Entity; package SNMP::Info::Entity;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::EtherLike # SNMP::Info::EtherLike
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::EtherLike; package SNMP::Info::EtherLike;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer1 - SNMP Interface to Layer1 Devices # SNMP::Info::Layer1 - SNMP Interface to Layer1 Devices
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1; package SNMP::Info::Layer1;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer1::Allied # SNMP::Info::Layer1::Allied
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1::Allied; package SNMP::Info::Layer1::Allied;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer1::Asante # SNMP::Info::Layer1::Asante
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer1::Asante; package SNMP::Info::Layer1::Asante;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer2 - SNMP Interface to Layer2 Devices # SNMP::Info::Layer2 - SNMP Interface to Layer2 Devices
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker -- All changes from Version 0.7 on
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2; package SNMP::Info::Layer2;
$VERSION = 0.7; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -57,6 +59,7 @@ $INIT = 0;
%SNMP::Info::CiscoStats::MIBS, %SNMP::Info::CiscoStats::MIBS,
'CISCO-PRODUCTS-MIB' => 'sysName', # for model() 'CISCO-PRODUCTS-MIB' => 'sysName', # for model()
'CISCO-STACK-MIB' => 'wsc1900sysID', # some older catalysts live here 'CISCO-STACK-MIB' => 'wsc1900sysID', # some older catalysts live here
'ENTITY-MIB' => 'entPhysicalName', # for serial stuff
); );
%GLOBALS = ( %GLOBALS = (
@@ -64,6 +67,7 @@ $INIT = 0;
%SNMP::Info::Bridge::GLOBALS, %SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::CDP::GLOBALS, %SNMP::Info::CDP::GLOBALS,
%SNMP::Info::CiscoStats::GLOBALS, %SNMP::Info::CiscoStats::GLOBALS,
'serial1' => '.1.3.6.1.4.1.9.3.6.3.0', # OLD-CISCO-CHASSIS-MIB::chassisId.0
); );
%FUNCS = ( %FUNCS = (
@@ -71,6 +75,8 @@ $INIT = 0;
%SNMP::Info::Bridge::FUNCS, %SNMP::Info::Bridge::FUNCS,
%SNMP::Info::CDP::FUNCS, %SNMP::Info::CDP::FUNCS,
%SNMP::Info::CiscoStats::FUNCS, %SNMP::Info::CiscoStats::FUNCS,
'ent_serial' => 'entPhysicalSerialNum',
'ent_chassis'=> 'entPhysicalDescr',
); );
%MUNGE = ( %MUNGE = (
@@ -116,6 +122,25 @@ sub vendor {
} }
sub serial {
my $l2 = shift;
my $serial1 = $l2->serial1();
my $ent_chassis = $l2->ent_chassis() || {};
my $ent_serial = $l2->ent_serial() || {};
my $serial2 = $ent_serial->{1} || undef;
my $chassis = $ent_chassis->{1} || undef;
# precedence
# serial2,chassis parse,serial1
return $serial2 if (defined $serial2 and $serial2 !~ /^\s*$/);
return $1 if (defined $chassis and $chassis =~ /serial#?:\s*([a-z0-9]+)/i);
return $serial1 if (defined $serial1 and $serial1 !~ /^\s*$/);
return undef;
}
sub i_ignore { sub i_ignore {
my $l2 = shift; my $l2 = shift;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer2::Aironet # SNMP::Info::Layer2::Aironet
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2003 Regents of the University of California # Copyright (c) 2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Aironet; package SNMP::Info::Layer2::Aironet;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

246
Info/Layer2/Allied.pm Normal file
View File

@@ -0,0 +1,246 @@
# SNMP::Info::Layer2::Allied
# Max Baker <max@warped.org>, Dmitry Sergienko <dmitry@trifle.net>
#
# Copyright (c) 2004 Max Baker
# 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 Netdisco 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::Allied;
$VERSION = 0.8;
# $Id$
use strict;
use Exporter;
use SNMP::Info::Layer2;
use SNMP::Info::Layer1;
@SNMP::Info::Layer2::Allied::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::Allied::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS
);
%FUNCS = (%SNMP::Info::Layer2::FUNCS,
'ip_adresses'=> 'atNetAddress',
'ip_mac' => 'atPhysAddress',
'i_name' => 'ifName',
'i_up2' => 'ifOperStatus',
);
%MIBS = (
%SNMP::Info::Layer2::MIBS,
'AtiSwitch-MIB' => 'atiswitchProductType',
'AtiStackInfo-MIB' => 'atiswitchEnhancedStacking',
);
%MUNGE = (%SNMP::Info::Layer2::MUNGE,
);
sub vendor {
return 'allied';
}
sub os {
return 'allied';
}
sub os_ver {
my $allied = shift;
my $descr = $allied->description();
if ($descr =~ m/version (\d+\.\d+)/){
return $1;
}
}
sub model {
my $allied = shift;
my $desc = $allied->description();
if ($desc =~ /(AT-80\d{2}\S*)/){
return $1;
}
return undef;
}
sub ip {
my $allied = shift;
my $ip_hash = $allied->ip_addresses();
my $ip;
my $found_ip;
foreach $ip (values %{$ip_hash}) {
my $found_ip = SNMP::Info::munge_ip($ip) if (defined $ip);
last; # this is only one IP address
}
return $found_ip;
}
sub mac{
my $allied = shift;
my $mac_hash = $allied->ip_mac();
my $mac;
my $found_mac;
foreach $mac (values %{$mac_hash}) {
$found_mac = SNMP::Info::munge_mac($mac);
last; # this is only one MAC address
}
return $found_mac;
}
sub i_up {
my $allied = shift;
my $i_up = SNMP::Info::Layer1::i_up($allied);
my $i_up2 = $allied->i_up2();
foreach my $port (keys %$ati_up){
my $up = $ati_up->{$port};
$i_up->{$port} = 'down' if $up eq 'linktesterror';
$i_up->{$port} = 'up' if $up eq 'nolinktesterror';
}
return $i_up;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::Allied - SNMP Interface to Allied Telesyn switches
=head1 AUTHOR
Max Baker (C<max@warped.org>)
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $allied = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly on to SNMP::Session
DestHost => 'myhub',
Community => 'public',
Version => 1
)
or die "Can't connect to DestHost.\n";
my $class = $l1->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
Allied device through SNMP. See inherited classes' documentation for
inherited methods.
=head2 Inherited Classes
=over
=item SNMP::Info::Layer1
=back
=head2 Required MIBs
=over
=item ATI-MIB
Download for your device from http://www.allied-telesyn.com/allied/support/
=item Inherited Classes
MIBs listed in SNMP::Info::Layer1 and its inherited classes.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=head2 Overrides
=over
=item $allied->vendor()
Returns 'allied' :)
=item $allied->os()
Returns 'allied'
=item $allied->os_ver()
Culls Version from description()
=item $allied->root_ip()
Returns IP Address of Managed Hub.
(B<actualIpAddr>)
=item $allied->model()
Trys to cull out AT-nnnnX out of the description field.
=back
=head2 Global Methods imported from SNMP::Info::Layer1
See documentation in SNMP::Info::Layer1 for details.
=head1 TABLE ENTRIES
=head2 Overrides
=over
=item $allied->i_name()
Returns reference to map of IIDs to human-set port name.
=item $allied->i_up()
Returns reference to map of IIDs to link status. Changes
the values of ati_up() to 'up' and 'down'.
=back
=head2 Allied MIB
=over
=back
=cut

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer2::Bay # SNMP::Info::Layer2::Bay
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Bay; package SNMP::Info::Layer2::Bay;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -196,7 +198,7 @@ sub c_ip {
foreach my $entry (keys %$bay_topo_ip){ foreach my $entry (keys %$bay_topo_ip){
my $port = $bay_topo_port->{$entry}; my $port = $bay_topo_port->{$entry};
next unless defined $port; next unless defined $port;
next if $port == 0; next if ($port =~ /^[\d\.]+$/ and $port == 0);
my $ip = $bay_topo_ip->{$entry}; my $ip = $bay_topo_ip->{$entry};
push(@{$ip_port{$port}},$ip); push(@{$ip_port{$port}},$ip);
} }

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer2::C1900 # SNMP::Info::Layer2::C1900
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,14 +30,15 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::C1900; package SNMP::Info::Layer2::C1900;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
use Exporter; use Exporter;
use SNMP::Info::Layer2; use SNMP::Info::Layer2;
use SNMP::Info::CiscoVTP;
@SNMP::Info::Layer2::C1900::ISA = qw/SNMP::Info::Layer2 Exporter/; @SNMP::Info::Layer2::C1900::ISA = qw/SNMP::Info::Layer2 SNMP::Info::CiscoVTP Exporter/;
@SNMP::Info::Layer2::C1900::EXPORT_OK = qw//; @SNMP::Info::Layer2::C1900::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/; use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
@@ -43,10 +46,12 @@ use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
# Set for No CDP # Set for No CDP
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::CiscoVTP::GLOBALS,
'c1900_flash_status' => 'upgradeFlashBankStatus', 'c1900_flash_status' => 'upgradeFlashBankStatus',
); );
%FUNCS = (%SNMP::Info::Layer2::FUNCS, %FUNCS = (%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS,
'i_type2' => 'ifType', 'i_type2' => 'ifType',
'i_name2' => 'ifName', 'i_name2' => 'ifName',
# ESSWITCH-MIB # ESSWITCH-MIB
@@ -62,11 +67,13 @@ use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
%MIBS = ( %MIBS = (
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer2::MIBS,
%SNMP::Info::CiscoVTP::MIBS,
# Also known as the ESSWITCH-MIB # Also known as the ESSWITCH-MIB
'STAND-ALONE-ETHERNET-SWITCH-MIB' => 'series2000' 'STAND-ALONE-ETHERNET-SWITCH-MIB' => 'series2000'
); );
%MUNGE = (%SNMP::Info::Layer2::MUNGE, %MUNGE = (%SNMP::Info::Layer2::MUNGE,
%SNMP::Info::CiscoVTP::MUNGE,
); );
sub vendor { sub vendor {
@@ -92,6 +99,10 @@ sub os_ver {
return undef; return undef;
} }
sub cisco_comm_indexing {
1;
}
sub interfaces { sub interfaces {
my $c1900 = shift; my $c1900 = shift;
my $i_descr = $c1900->i_description(); my $i_descr = $c1900->i_description();

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer2::C2900 # SNMP::Info::Layer2::C2900
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::C2900; package SNMP::Info::Layer2::C2900;
$VERSION = 0.7; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -49,6 +51,7 @@ use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
%FUNCS = (%SNMP::Info::Layer2::FUNCS, %FUNCS = (%SNMP::Info::Layer2::FUNCS,
%SNMP::Info::CiscoVTP::FUNCS, %SNMP::Info::CiscoVTP::FUNCS,
'i_name' => 'ifAlias',
# C2900PortEntry # C2900PortEntry
'c2900_p_index' => 'c2900PortIfIndex', 'c2900_p_index' => 'c2900PortIfIndex',
'c2900_p_duplex' => 'c2900PortDuplexStatus', 'c2900_p_duplex' => 'c2900PortDuplexStatus',
@@ -69,6 +72,10 @@ sub vendor {
return 'cisco'; return 'cisco';
} }
sub cisco_comm_indexing {
1;
}
sub i_duplex { sub i_duplex {
my $c2900 = shift; my $c2900 = shift;

View File

@@ -2,7 +2,7 @@
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# Copyright (c) 2003 Max Baker # Copyright (c) 2003,2004 Max Baker changes from version 0.8 and beyond
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::Catalyst; package SNMP::Info::Layer2::Catalyst;
$VERSION = 0.7; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -110,6 +110,10 @@ sub os_ver {
return undef; return undef;
} }
sub cisco_comm_indexing {
1;
}
1; 1;
__END__ __END__

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer2::HP - SNMP Interface to HP ProCurve Switches # SNMP::Info::Layer2::HP - SNMP Interface to HP ProCurve Switches
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer2::HP; package SNMP::Info::Layer2::HP;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -51,22 +53,24 @@ $INIT = 0;
%SNMP::Info::Entity::MIBS, %SNMP::Info::Entity::MIBS,
'RFC1271-MIB' => 'logDescription', 'RFC1271-MIB' => 'logDescription',
'HP-ICF-OID' => 'hpSwitch4000', 'HP-ICF-OID' => 'hpSwitch4000',
'HP-VLAN' => 'hpVlanMemberIndex',
'STATISTICS-MIB' => 'hpSwitchCpuStat', 'STATISTICS-MIB' => 'hpSwitchCpuStat',
'NETSWITCH-MIB' => 'hpMsgBufFree' 'NETSWITCH-MIB' => 'hpMsgBufFree',
); );
%GLOBALS = ( %GLOBALS = (
%SNMP::Info::Layer2::GLOBALS, %SNMP::Info::Layer2::GLOBALS,
%SNMP::Info::MAU::GLOBALS, %SNMP::Info::MAU::GLOBALS,
%SNMP::Info::Entity::GLOBALS, %SNMP::Info::Entity::GLOBALS,
'serial1' => 'entPhysicalSerialNum.1', 'serial1' => 'entPhysicalSerialNum.1',
'hp_cpu' => 'hpSwitchCpuStat.0', 'hp_cpu' => 'hpSwitchCpuStat.0',
'hp_mem_total' => 'hpGlobalMemTotalBytes.1', 'hp_mem_total' => 'hpGlobalMemTotalBytes.1',
'mem_free' => 'hpGlobalMemFreeBytes.1', 'mem_free' => 'hpGlobalMemFreeBytes.1',
'mem_used' => 'hpGlobalMemAllocBytes.1', 'mem_used' => 'hpGlobalMemAllocBytes.1',
'os_version' => 'hpSwitchOsVersion.0', 'os_version' => 'hpSwitchOsVersion.0',
'os_bin' => 'hpSwitchRomVersion.0', 'os_bin' => 'hpSwitchRomVersion.0',
'mac' => 'hpSwitchBaseMACAddress.0' 'mac' => 'hpSwitchBaseMACAddress.0',
'hp_vlans' => 'hpVlanNumber',
); );
%FUNCS = ( %FUNCS = (
@@ -75,7 +79,16 @@ $INIT = 0;
%SNMP::Info::Entity::FUNCS, %SNMP::Info::Entity::FUNCS,
'i_type2' => 'ifType', 'i_type2' => 'ifType',
# RFC1271 # RFC1271
'l_descr' => 'logDescription' 'l_descr' => 'logDescription',
# HP-VLAN-MIB
'hp_v_index' => 'hpVlanDot1QID',
'hp_v_name' => 'hpVlanIdentName',
'hp_v_state' => 'hpVlanIdentState',
'hp_v_type' => 'hpVlanIdentType',
'hp_v_status' => 'hpVlanIdentStatus',
'hp_v_mac' => 'hpVlanAddrPhysAddress',
'hp_v_if_index'=> 'hpVlanMemberIndex',
'hp_v_if_tag' => 'hpVlanMemberTagged2',
); );
%MUNGE = ( %MUNGE = (
@@ -86,15 +99,32 @@ $INIT = 0;
); );
%MODEL_MAP = ( %MODEL_MAP = (
'J4812A' => '2512', 'J4093A' => '2424M',
'J4819A' => '5308XL', 'J4110A' => '8000M',
'J4813A' => '2524', 'J4120A' => '1600M',
'J4805A' => '5304XL', 'J4121A' => '4000M',
'J4815A' => '3324XL', 'J4122A' => '2400M',
'J4865A' => '4108GL', 'J4138A' => '9308M',
'J4887A' => '4104GL', 'J4139A' => '9304M',
'J4874A' => '9315', 'J4812A' => '2512',
); 'J4813A' => '2524',
'J4819A' => '5308XL',
'J4840A' => '6308M-SX',
'J4841A' => '6208M-SX',
'J4850A' => '5304XL',
'J4865A' => '4108GL',
'J4874A' => '9315M',
'J4887A' => '4104GL',
'J4899A' => '2650',
'J4900A' => '2626',
'J4902A' => '6108',
'J4903A' => '2824',
'J4904A' => '2848',
'J8130A' => 'WAP-420-NA',
'J8131A' => 'WAP-420-WW',
'J8164A' => '2626-PWR',
'J8165A' => '2650-PWR',
);
# Method Overrides # Method Overrides
@@ -326,6 +356,57 @@ sub i_duplex_admin {
return \%i_duplex_admin; return \%i_duplex_admin;
} }
=item $hp->i_vlan()
Looks in Q-BRIDGE-MIB -- see SNMP::Info::Bridge
and for older devices looks in HP-VLAN.
=cut
sub i_vlan {
my $hp = shift;
my $interfaces = $hp->interfaces();
# Newer devices use Q-BRIDGE-MIB
my $qb_i_vlan = $hp->qb_i_vlan();
my $qb_i_vlan_type = $hp->qb_i_vlan_type();
my $i_vlan = {};
foreach my $if (keys %$qb_i_vlan){
my $vlan = $qb_i_vlan->{$if};
my $tagged = $qb_i_vlan_type->{$if};
$tagged = (defined $tagged and $tagged eq 'admitOnlyVlanTagged') ? 1 : 0;
next unless defined $vlan;
$i_vlan->{$if}= $tagged ? 'trunk' : $vlan;
}
# HP4000 ... get it from HP-VLAN
# the hpvlanmembertagged2 table has an entry in the form of
# vlan.interface = /untagged/no/tagged/auto
unless (defined $qb_i_vlan and scalar(keys %$qb_i_vlan)){
my $hp_v_index = $hp->hp_v_index();
my $hp_v_if_tag = $hp->hp_v_if_tag();
foreach my $row (keys %$hp_v_if_tag){
my ($index,$if) = split(/\./,$row);
my $tag = $hp_v_if_tag->{$row};
my $vlan = $hp_v_index->{$index};
next unless defined $tag;
$vlan = 'Trunk' if $tag eq 'tagged';
$vlan = 'Auto' if $tag eq 'auto';
undef $vlan if $tag eq 'no';
$i_vlan->{$if} = $vlan if defined $vlan;
}
}
return $i_vlan;
}
1; 1;
__END__ __END__
@@ -389,13 +470,18 @@ Included in V2 mibs from Cisco
=item HP-ICF-OID =item HP-ICF-OID
=item HP-VLAN
(this MIB new with SNMP::Info 0.8)
=item STATISTICS-MIB =item STATISTICS-MIB
=item NETSWITCH-MIB =item NETSWITCH-MIB
=back =back
The last three MIBs listed are from HP and can be found at http://www.hp.com/rnd/software The last three MIBs listed are from HP and can be found at L<http://www.hp.com/rnd/software>
or L<http://www.hp.com/rnd/software/MIBs.htm>
=head1 ChangeLog =head1 ChangeLog

224
Info/Layer2/ZyXEL_DSLAM.pm Normal file
View File

@@ -0,0 +1,224 @@
# SNMP::Info::Layer2::ZyXEL_DSLAM
# Dmitry Sergienko <dmitry@trifle.net>
#
# Copyright (c) 2004 Max Baker <max@warped.org>
# 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 Netdisco 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::ZyXEL_DSLAM;
$VERSION = 0.8;
# $Id$
use strict;
use Exporter;
use SNMP::Info::Layer2;
@SNMP::Info::Layer2::ZyXEL_DSLAM::ISA = qw/SNMP::Info::Layer2 Exporter/;
@SNMP::Info::Layer2::ZyXEL_DSLAM::EXPORT_OK = qw//;
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
# Set for No CDP
%GLOBALS = (
%SNMP::Info::Layer2::GLOBALS
);
%FUNCS = (%SNMP::Info::Layer2::FUNCS,
'ip_adresses' => 'ipAdEntAddr',
'i_name' => 'ifDescr',
'i_description' => 'adslLineConfProfile',
);
%MIBS = (
%SNMP::Info::Layer2::MIBS,
'ADSL-LINE-MIB' => 'adslLineConfProfile'
);
%MUNGE = (%SNMP::Info::Layer2::MUNGE
);
sub layers {
my $zyxel = shift;
my $layers = $zyxel->layers();
return $layers if defined $layers;
# If these don't claim to have any layers, so we'll give them 1+2
return '00000011';
}
sub vendor {
return 'zyxel';
}
sub os {
return 'zyxel';
}
sub os_ver {
my $zyxel = shift;
my $descr = $zyxel->description();
if ($descr =~ m/version (\S+) /){
return $1;
}
return undef;
}
sub model {
my $zyxel = shift;
my $desc = $zyxel->description();
if ($desc =~ /8-port ADSL Module\(Annex A\)/){
return "AAM1008-61";
} elsif ($desc =~ /8-port ADSL Module\(Annex B\)/){
return "AAM1008-63";
}
return undef;
}
sub ip{
my $zyxel = shift;
my $ip_hash = $zyxel->ip_addresses();
my $ip;
foreach $ip (keys %{$ip_hash}) {
my $found_ip = $ip if (defined $ip and $ip =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/);
}
return $ip;
}
1;
__END__
=head1 NAME
SNMP::Info::Layer2::ZyXEL_DSLAM - SNMP Interface to ZyXEL DSLAM
=head1 AUTHOR
Dmitry Sergienko (C<dmitry@trifle.net>)
=head1 SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $zyxel = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
# These arguments are passed directly on to SNMP::Session
DestHost => 'myhub',
Community => 'public',
Version => 1
)
or die "Can't connect to DestHost.\n";
my $class = $l2->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
=head1 DESCRIPTION
Provides abstraction to the configuration information obtainable from a
ZyXEL device through SNMP. See inherited classes' documentation for
inherited methods.
=head2 Inherited Classes
=over
=item SNMP::Info::Layer2
=back
=head2 Required MIBs
=over
=item ADSL-LINE-MIB
This MIB assumedly obtainable through ZyXEL or possibly included with your device.
=item Inherited Classes
MIBs listed in SNMP::Info::Layer2 and their inherited classes.
=back
=head1 GLOBALS
These are methods that return scalar value from SNMP
=head2 Overrides
=over
=item $zyxel->vendor()
Returns 'ZyXEL' :)
=item $zyxel->os()
Returns 'ZyXEL'
=item $zyxel->os_ver()
Culls Version from description()
=item $zyxel->ip()
Returns IP Address of DSLAM.
(B<ipAdEntAddr>)
=item $zyxel->model()
Trys to cull out model out of the description field.
=back
=head2 Global Methods imported from SNMP::Info::Layer2
See documentation in SNMP::Info::Layer2 for details.
=head1 TABLE ENTRIES
=head2 Overrides
=over
=item $zyxel->i_name()
Returns reference to map of IIDs to port name (B<ifDescr>).
=item $zyxel->i_description()
Returns reference to map of IIDs to human-set port description (profile name).
=back
=head2 Table Methods imported from SNMP::Info::Layer2
See documentation in SNMP::Info::Layer2 for details.
=cut

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer3 - SNMP Interface to Layer3 devices # SNMP::Info::Layer3 - SNMP Interface to Layer3 devices
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker -- All changes from Version 0.7 on
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3; package SNMP::Info::Layer3;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -69,7 +71,7 @@ $INIT = 0;
%SNMP::Info::Bridge::GLOBALS, %SNMP::Info::Bridge::GLOBALS,
%SNMP::Info::EtherLike::GLOBALS, %SNMP::Info::EtherLike::GLOBALS,
'mac' => 'ifPhysAddress.1', 'mac' => 'ifPhysAddress.1',
'chassis' => 'entPhysicalDescr.1', 'serial1' => '.1.3.6.1.4.1.9.3.6.3.0', # OLD-CISCO-CHASSIS-MIB::chassisId.0
'router_ip' => 'ospfRouterId.0', 'router_ip' => 'ospfRouterId.0',
); );
@@ -85,7 +87,9 @@ $INIT = 0;
'at_index' => 'atIfIndex', 'at_index' => 'atIfIndex',
'at_paddr' => 'atPhysAddress', 'at_paddr' => 'atPhysAddress',
'at_netaddr' => 'atNetAddress', 'at_netaddr' => 'atNetAddress',
'ospf_ip' => 'ospfHostIpAddress' 'ospf_ip' => 'ospfHostIpAddress',
'ent_serial' => 'entPhysicalSerialNum',
'ent_chassis'=> 'entPhysicalDescr',
); );
%MUNGE = ( %MUNGE = (
@@ -138,10 +142,20 @@ sub i_ignore {
sub serial { sub serial {
my $l3 = shift; my $l3 = shift;
my $chassis = $l3->chassis(); my $serial1 = $l3->serial1();
my $ent_chassis = $l3->ent_chassis() || {};
my $ent_serial = $l3->ent_serial() || {};
my $serial2 = $ent_serial->{1} || undef;
my $chassis = $ent_chassis->{1} || undef;
# precedence
# serial2,chassis parse,serial1
return $serial2 if (defined $serial2 and $serial2 !~ /^\s*$/);
return $1 if (defined $chassis and $chassis =~ /serial#?:\s*([a-z0-9]+)/i); return $1 if (defined $chassis and $chassis =~ /serial#?:\s*([a-z0-9]+)/i);
return $serial1 if (defined $serial1 and $serial1 !~ /^\s*$/);
return undef;
} }
# $l3->model() - the sysObjectID returns an IID to an entry in # $l3->model() - the sysObjectID returns an IID to an entry in
@@ -149,8 +163,16 @@ sub serial {
sub model { sub model {
my $l3 = shift; my $l3 = shift;
my $id = $l3->id(); my $id = $l3->id();
unless (defined $id){
print " SNMP::Info::Layer3::model() - Device does not support sysObjectID\n" if $DEBUG;
return undef;
}
my $model = &SNMP::translateObj($id); my $model = &SNMP::translateObj($id);
return $id unless defined $model;
$model =~ s/^cisco//i; $model =~ s/^cisco//i;
$model =~ s/^catalyst//; $model =~ s/^catalyst//;
$model =~ s/^cat//; $model =~ s/^cat//;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer3::Aironet # SNMP::Info::Layer3::Aironet
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::Aironet; package SNMP::Info::Layer3::Aironet;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -90,9 +92,9 @@ sub os_ver {
my $aironet = shift; my $aironet = shift;
my $descr = $aironet->description(); my $descr = $aironet->description();
# CAP340 11.21 # CAP340 11.21, AP4800-E 11.21
if ($descr =~ /AP\d{3}\s+(\d{2}\.\d{2})/){ if ($descr =~ /AP\d{3,4}(-\D+)?\s+(\d{2}\.\d{2})/){
return $1; return $2;
} }
if ($descr =~ /Series\s*AP\s+(\d{2}\.\d{2})/){ if ($descr =~ /Series\s*AP\s+(\d{2}\.\d{2})/){

View File

@@ -1,8 +1,8 @@
# SNMP::Info::Layer3::C3550 # SNMP::Info::Layer3::C3550
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
# Copyright (c) 2003, Regents of the University of California # Copyright (c) 2003, Regents of the University of California
# Copyright (c) 2003 Max Baker
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@@ -29,7 +29,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::C3550; package SNMP::Info::Layer3::C3550;
$VERSION = 0.7; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -115,6 +115,10 @@ sub ports {
return $ports2; return $ports2;
} }
sub cisco_comm_indexing {
1;
}
1; 1;
__END__ __END__

View File

@@ -1,7 +1,7 @@
# SNMP::Info::Layer3::C6500 # SNMP::Info::Layer3::C6500
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2003 Max Baker # Copyright (c) 2003,2004 Max Baker
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # 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. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::C6500; package SNMP::Info::Layer3::C6500;
$VERSION = 0.7; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;
@@ -93,6 +93,11 @@ sub vendor {
return 'cisco'; return 'cisco';
} }
sub cisco_comm_indexing {
1;
}
1; 1;
__END__ __END__

View File

@@ -1,6 +1,8 @@
# SNMP::Info::Layer3::Foundry - SNMP Interface to Foundry devices # SNMP::Info::Layer3::Foundry - SNMP Interface to Foundry devices
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::Layer3::Foundry; package SNMP::Info::Layer3::Foundry;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -1,6 +1,8 @@
# SNMP::Info::MAU - Media Access Unit - RFC2668 # SNMP::Info::MAU - Media Access Unit - RFC2668
# Max Baker <max@warped.org> # Max Baker <max@warped.org>
# #
# Copyright (c) 2004 Max Baker changes from version 0.8 and beyond.
#
# Copyright (c) 2002,2003 Regents of the University of California # Copyright (c) 2002,2003 Regents of the University of California
# All rights reserved. # All rights reserved.
# #
@@ -28,7 +30,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package SNMP::Info::MAU; package SNMP::Info::MAU;
$VERSION = 0.6; $VERSION = 0.8;
# $Id$ # $Id$
use strict; use strict;

View File

@@ -4,12 +4,15 @@ Info.pm
Info/Bridge.pm Info/Bridge.pm
Info/CDP.pm Info/CDP.pm
Info/CiscoStats.pm Info/CiscoStats.pm
Info/CiscoStack.pm
Info/CiscoVTP.pm
Info/Entity.pm Info/Entity.pm
Info/EtherLike.pm Info/EtherLike.pm
Info/Layer1.pm Info/Layer1.pm
Info/Layer1/Allied.pm Info/Layer1/Allied.pm
Info/Layer1/Asante.pm Info/Layer1/Asante.pm
Info/Layer2.pm Info/Layer2.pm
Info/Layer2/Aironet.pm
Info/Layer2/Bay.pm Info/Layer2/Bay.pm
Info/Layer2/C1900.pm Info/Layer2/C1900.pm
Info/Layer2/C2900.pm Info/Layer2/C2900.pm
@@ -18,6 +21,7 @@ Info/Layer2/HP.pm
Info/Layer3.pm Info/Layer3.pm
Info/Layer3/Aironet.pm Info/Layer3/Aironet.pm
Info/Layer3/C3550.pm Info/Layer3/C3550.pm
Info/Layer3/C6500.pm
Info/Layer3/Foundry.pm Info/Layer3/Foundry.pm
Info/MAU.pm Info/MAU.pm
MANIFEST MANIFEST
@@ -25,3 +29,5 @@ Makefile.PL
README README
t/prereq.t t/prereq.t
t/test_class.pl t/test_class.pl
t/make_dev_matrix.pl
DeviceMatrix.txt

View File

@@ -21,5 +21,6 @@ WriteMakefile(
sub MY::postamble { " sub MY::postamble { "
.PHONY: readme .PHONY: readme
readme: readme: README
README: Info.pm
pod2text -l Info.pm > README" } pod2text -l Info.pm > README" }

76
README
View File

@@ -5,14 +5,14 @@ NAME
VERSION VERSION
SNMP::Info - Version 0.6 SNMP::Info - Version 0.8
AUTHOR AUTHOR
Max Baker ("max@warped.org") Max Baker
SNMP::Info was created at UCSC for the netdisco project SNMP::Info was created at UCSC for the netdisco project
(www.netdisco.org) (www.netdisco.org) and is now maintained by Max Baker.
SYNOPSIS SYNOPSIS
@@ -68,7 +68,7 @@ SUPPORT
Please direct all support, help, and bug requests to the snmp-info-users Please direct all support, help, and bug requests to the snmp-info-users
Mailing List at Mailing List at
http://lists.sourceforge.net/lists/listinfo/snmp-info-users <http://lists.sourceforge.net/lists/listinfo/snmp-info-users>
DESCRIPTION DESCRIPTION
@@ -154,12 +154,34 @@ DESCRIPTION
BRIDGE-MIB BRIDGE-MIB
SNMP-REPEATER-MIB SNMP-REPEATER-MIB
STAND-ALONE-ETHERNET-SWITCH-MIB (ESSWITCH-MIB) STAND-ALONE-ETHERNET-SWITCH-MIB (ESSWITCH-MIB)
by running by running
mkdir -p /usr/local/share/snmp/mibs mkdir -p /usr/local/share/snmp/mibs
cd /usr/local/share/snmp/mibs cd /usr/local/share/snmp/mibs
tar xvfz /path/to/v1.tar.gz BRIDGE-MIB.my SNMP-REPEATER-MIB.my ESSWITCH-MIB.my tar xvfz /path/to/v1.tar.gz BRIDGE-MIB.my SNMP-REPEATER-MIB.my ESSWITCH-MIB.my
Fix CISCO-TC-MIB
There is a problem with the Cisco file CISCO-TC.my which is
included from lots of other MIBs. Make the following changes if
you run into errors about "Unsigned32" in this file.
Edit /usr/local/share/snmp/mibs/CISCO-TC.my
Comment out line 192 that says "SMI Unsigned32" with two dashes.
-- SMI Unsigned32
Add "Unsigned32" to the imports after line 19:
IMPORTS
MODULE-IDENTITY,
Gauge32,
Integer32,
Counter64,
Unsigned32,
FROM SNMPv2-SMI
More Specific MIBs More Specific MIBs
Some non-cisco subclasses will need MIBs other than the basic Some non-cisco subclasses will need MIBs other than the basic
one available from Cisco. one available from Cisco.
@@ -169,13 +191,14 @@ DESCRIPTION
Design Goals Design Goals
1. Use of textual MIB leaf identifier and enumerated values 1. Use of textual MIB leaf identifier and enumerated values
* All values are retrieved via MIB Leaf node names * All values are retrieved via MIB Leaf node names
For example SNMP::Info has an entry in its %GLOBALS hash for For example SNMP::Info has an entry in its %GLOBALS hash for
``sysName'' instead of 1.3.6.1.2.1.1.5. ``sysName'' instead of 1.3.6.1.2.1.1.5.
* Data returned is in the enumerated value form. * Data returned is in the enumerated value form.
For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and
getting back "23" getting back 23
SNMP::Info will ask for "RFC1213-MIB::ifType" and will get back SNMP::Info will ask for "RFC1213-MIB::ifType" and will get back
"ppp". "ppp".
@@ -266,7 +289,7 @@ DESCRIPTION
CatOS. CatOS.
SNMP::Info::Layer2::C2900 SNMP::Info::Layer2::C2900
Subclass for Cisco Catalyst 2900 devices running IOS. Subclass for Cisco Catalyst 2900 and 3500XL devices running IOS.
SNMP::Info::Layer2::Catalyst SNMP::Info::Layer2::Catalyst
Subclass for Cisco Catalyst switches running CatOS. These Subclass for Cisco Catalyst switches running CatOS. These
@@ -302,6 +325,11 @@ DESCRIPTION
SNMP::Info::Layer3::C3550 SNMP::Info::Layer3::C3550
Subclass for Cisco Catalyst 3550 2/3 switches running IOS. Subclass for Cisco Catalyst 3550 2/3 switches running IOS.
Thanks
Thanks for testing and coding help (in no particular order) to : Andy
Ford, Brian Wilson, Jean-Philippe Luiggi, D<>na Watanabe
USAGE USAGE
Constructor Constructor
@@ -393,13 +421,16 @@ USAGE
Layer3 Support -> SNMP::Info::Layer3 Layer3 Support -> SNMP::Info::Layer3
Aironet (non IOS) -> SNMP::Info::Layer3::Aironet Aironet (non IOS) -> SNMP::Info::Layer3::Aironet
Catalyst 3550 -> SNMP::Info::Layer3::C3550 Catalyst 3550 -> SNMP::Info::Layer3::C3550
Catalyst 6500 -> SNMP::Info::Layer3::C6500
Foundry -> SNMP::Info::Layer3::Foundry Foundry -> SNMP::Info::Layer3::Foundry
Elsif Layer2 (no Layer3) -> SNMP::Info::Layer2 Elsif Layer2 (no Layer3) -> SNMP::Info::Layer2
Aironet (Cisco) AP1100 -> SNMP::Info::Layer2::Aironet Aironet (Cisco) AP1100 -> SNMP::Info::Layer2::Aironet
Bay Networks -> SNMP::Info::Layer2::Bay Bay Networks -> SNMP::Info::Layer2::Bay
Catalyst 1900 -> SNMP::Info::Layer2::C1900 Catalyst 1900 -> SNMP::Info::Layer2::C1900
Catalyst 2900XL (IOS) -> SNMP::Info::Layer2::C2900 Catalyst 2900XL/2950(IOS) -> SNMP::Info::Layer2::C2900
Catalyst WS-C (2926,5xxx,6xxx) -> SNMP::Info::Layer2::Catalyst Catalyst 3500XL (3548) IOS -> SNMP::Info::Layer2::C2900
Catalyst 3550/3548 -> SNMP::Info::Layer3::C3550
Catalyst WS-C 2926,5xxx -> SNMP::Info::Layer2::Catalyst
HP Procurve -> SNMP::Info::Layer2::HP HP Procurve -> SNMP::Info::Layer2::HP
Elsif Layer1 Support -> SNMP::Info::Layer1 Elsif Layer1 Support -> SNMP::Info::Layer1
Allied -> SNMP::Info::Layer1::Allied Allied -> SNMP::Info::Layer1::Allied
@@ -500,7 +531,7 @@ USAGE
$local_routes = $info->ipr_route('192.168.0'); $local_routes = $info->ipr_route('192.168.0');
This will only fetch entries in the table that start with "192.168.0", This will only fetch entries in the table that start with 192.168.0,
which in this case are routes on the local network. which in this case are routes on the local network.
Remember that you must supply the partial IID (a numeric OID). Remember that you must supply the partial IID (a numeric OID).
@@ -988,27 +1019,36 @@ SNMP::INFO INTERNALS
Makes human friendly speed ratings using %SPEED_MAP Makes human friendly speed ratings using %SPEED_MAP
%SPEED_MAP = ( %SPEED_MAP = (
'56000' => '56 kbps',
'64000' => '64 kbps', '64000' => '64 kbps',
'1500000' => '1.5 Mbps', '1500000' => '1.5 Mbps',
'1536000' => 'T1',
'1544000' => 'T1', '1544000' => 'T1',
'2000000' => '2.0 Mbps', '2000000' => '2.0 Mbps',
'2048000' => '2.048 Mbps', '2048000' => '2.048 Mbps',
'3072000' => 'Dual T1',
'3088000' => 'Dual T1',
'4000000' => '4.0 Mbps', '4000000' => '4.0 Mbps',
'10000000' => '10 Mbps', '10000000' => '10 Mbps',
'11000000' => '11 Mbps', '11000000' => '11 Mbps',
'20000000' => '20 Mbps', '20000000' => '20 Mbps',
'16000000' => '16 Mbps', '16000000' => '16 Mbps',
'45000000' => 'DS3', '44210000' => 'T3',
'44736000' => 'T3',
'45000000' => '45 Mbps',
'45045000' => 'DS3', '45045000' => 'DS3',
'64000000' => '64 Mbps', '64000000' => '64 Mbps',
'100000000' => '100 Mbps', '100000000' => '100 Mbps',
'149760000' => 'OC-1' '149760000' => 'ATM on OC-3',
'155000000' => 'OC-1' '155000000' => 'OC-3',
'155519000' => 'OC-3',
'155520000' => 'OC-3',
'400000000' => '400 Mbps', '400000000' => '400 Mbps',
'599040000' => 'ATM on OC-12',
'622000000' => 'OC-12', '622000000' => 'OC-12',
'599040000' => 'OC-12', '622080000' => 'OC-12',
'1000000000' => '1.0 Gbps', '1000000000' => '1.0 Gbps',
); )
munge_ip() munge_ip()
Takes a binary IP and makes it dotted ASCII Takes a binary IP and makes it dotted ASCII
@@ -1133,6 +1173,7 @@ SNMP::INFO INTERNALS
3. Method is in %FUNCS 3. Method is in %FUNCS
4. Run $info->_load_attr(method) if not cached 4. Run $info->_load_attr(method) if not cached
5. Return $info->_show_attr(method). 5. Return $info->_show_attr(method).
Override any dynamic method listed in one of these hashes by creating a Override any dynamic method listed in one of these hashes by creating a
subroutine with the same name. subroutine with the same name.
@@ -1141,8 +1182,11 @@ SNMP::INFO INTERNALS
COPYRIGHT AND LICENCE COPYRIGHT AND LICENCE
Copyright (c) 2002-3, Regents of the University of California All rights Changes from SNMP::Info Version 0.7 and on are: Copyright (c)2003, 2004
reserved. Max Baker - All rights reserved.
Original Code is: Copyright (c) 2002-3, Regents of the University of
California All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are modification, are permitted provided that the following conditions are

View File

@@ -12,10 +12,31 @@ $matrix = parse_data($DevMatrix);
# Graph it for fun # Graph it for fun
eval "use GraphViz::Data::Structure;"; eval "use GraphViz::Data::Structure;";
if ($@ or 1) { if ($@) {
print "GraphViz::Data::Structure not installed.\n"; print "GraphViz::Data::Structure not installed. $@\n";
} else { } else {
my $gvds = GraphViz::Data::Structure->new($matrix); my %graph = ();
foreach my $vendor (sort sort_nocase keys %$matrix){
$graph{$vendor} = {};
foreach my $family (sort sort_nocase keys %{$matrix->{$vendor}->{families}} ){
my @models;
foreach my $mod (keys %{$matrix->{$vendor}->{families}->{$family}->{models}}){
push(@models,split(/\s*,\s*/,$mod));
}
if (scalar @models){
$graph{$vendor}->{$family}=\@models;
} else {
$graph{$vendor}->{$family}=[];
}
}
}
my $now = scalar localtime;
my $gvds = GraphViz::Data::Structure->new(\%graph,Orientation=>'vertical',
Colors=> 'Deep',
graph => {label=>"SNMP::Info and Netdisco Supported Devices \n $now",'fontpath'=>'/usr/local/netdisco','fontname'=>'lucon',concentrate=>'true','overlap'=>'false',spline=>'true',bgcolor=>'wheat'},
node => {fontname=>'lucon'},
);
$gvds->graph()->as_png($DevPNG); $gvds->graph()->as_png($DevPNG);
} }
@@ -94,6 +115,7 @@ close (HTML) or die "Can't write $DevHTML. $!\n";
# ( defaults => { cmd => [values] } ) # ( defaults => { cmd => [values] } )
sub parse_data { sub parse_data {
my $file = shift; my $file = shift;
my %ignore = map { $_ => 1 } @_;
my $Matrix; my $Matrix;
my @Lines; my @Lines;
@@ -124,6 +146,9 @@ sub parse_data {
next; next;
} }
if (exists $ignore{$cmd}){
print "Ignoring $cmd\n";
}
# Set Class {vendor,family,device} # Set Class {vendor,family,device}
if ($cmd eq 'device-vendor'){ if ($cmd eq 'device-vendor'){
$vendor = $value; $vendor = $value;
@@ -225,6 +250,8 @@ sub html_tail {
[<SPAN CLASS="family">Family Attribute</SPAN>] [<SPAN CLASS="family">Family Attribute</SPAN>]
[<SPAN CLASS="vendor">Vendor Attribute</SPAN>] [<SPAN CLASS="vendor">Vendor Attribute</SPAN>]
<h1>Attribute Key</h1> <h1>Attribute Key</h1>
A value of <B>-</B> signifies the information is not specified and can
be assumed working.
<TABLE BORDER=1> <TABLE BORDER=1>
<TR> <TR>
<TD>Arpnip</TD> <TD>Arpnip</TD>