From cde34cfc995ac9404042d4972758c64c347545e2 Mon Sep 17 00:00:00 2001 From: Eric Miller <> Date: Thu, 25 Jan 2007 03:59:38 +0000 Subject: [PATCH] Cisco Airespace wireless controller support --- ChangeLog | 3 + Info.pm | 6 ++ Info/Layer2/Airespace.pm | 211 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 220 insertions(+) create mode 100644 Info/Layer2/Airespace.pm diff --git a/ChangeLog b/ChangeLog index 0bda0e19..bc3c133e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,9 @@ version 1.05 + Added basic support for Sun routers as new class L3::Sun (begemot) + Added basic support for Juniper NetScreen devices as new class L3::Netscreen (Kent Hamilton) + + Added support for Cyclades terminal servers as new class L1::Cyclades + + Added support for Cisco (Airespace) wireless controllers as new class + L2::Airespace + Added generic device type detection using IANA assigned enterpise number extracted from sysObjectID + Added ifDiscards and other missing entries from IF-MIB::ifEntry (Greg King) diff --git a/Info.pm b/Info.pm index 6e2d3c80..397fed15 100644 --- a/Info.pm +++ b/Info.pm @@ -355,6 +355,10 @@ Generic Layer2 Device subclass. =over +=item SNMP::Info::Layer2::Airespace + +Subclass for Cisco (Airespace) wireless controllers. + =item SNMP::Info::Layer2::Aironet Class for Cisco Aironet wireless devices that run IOS. See also @@ -898,6 +902,7 @@ Algorithm for Subclass Detection: 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 (Airespace) Wireless -> SNMP::Info::Layer2::Airespace Cisco (not covered by above) -> SNMP::Info::Layer2::Cisco Cyclades terminal server -> SNMP::Info::Layer1::Cyclades Dell PowerConnect -> SNMP::Info::Layer3::Dell @@ -961,6 +966,7 @@ sub device_type { 2272 => 'SNMP::Info::Layer3::Passport', 2925 => 'SNMP::Info::Layer1::Cyclades', 4526 => 'SNMP::Info::Layer2::Netgear', + 14179 => 'SNMP::Info::Layer2::Airespace', 14823 => 'SNMP::Info::Layer2::Aruba', ); diff --git a/Info/Layer2/Airespace.pm b/Info/Layer2/Airespace.pm new file mode 100644 index 00000000..56ea7852 --- /dev/null +++ b/Info/Layer2/Airespace.pm @@ -0,0 +1,211 @@ +# SNMP::Info::Layer2::Airespace +# Eric Miller +# $Id$ +# +# Copyright (c) 2007 Eric Miller +# +# 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::Airespace; +$VERSION = '1.05'; +use strict; + +use Exporter; +use SNMP::Info::Bridge; +use SNMP::Info::CDP; +use SNMP::Info::Airespace; + +@SNMP::Info::Layer2::Airespace::ISA = qw/SNMP::Info::Airespace SNMP::Info::CDP SNMP::Info::Bridge Exporter/; +@SNMP::Info::Layer2::Airespace::EXPORT_OK = qw//; + +use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/; + +%MIBS = ( + %SNMP::Info::MIBS, + %SNMP::Info::Bridge::MIBS, + %SNMP::Info::CDP::MIBS, + %SNMP::Info::Airespace::MIBS, + ); + +%GLOBALS = ( + %SNMP::Info::GLOBALS, + %SNMP::Info::Bridge::GLOBALS, + %SNMP::Info::CDP::GLOBALS, + %SNMP::Info::Airespace::GLOBALS, + ); + +%FUNCS = ( + %SNMP::Info::FUNCS, + %SNMP::Info::Bridge::FUNCS, + %SNMP::Info::CDP::FUNCS, + %SNMP::Info::Airespace::FUNCS, + ); + +%MUNGE = ( + %SNMP::Info::MUNGE, + %SNMP::Info::Bridge::MUNGE, + %SNMP::Info::CDP::MUNGE, + %SNMP::Info::Airespace::MUNGE, + ); + +sub os { + return 'cisco'; +} + +sub vendor { + return 'cisco'; +} + +sub model { + my $airespace = shift; + my $model = $airespace->airespace_model(); + return undef unless defined $model; + + return $model; +} + +1; +__END__ + +=head1 NAME + +SNMP::Info::Layer2::Airespace - SNMP Interface to Cisco (Airespace) Wireless +Controllers + +=head1 AUTHOR + +Eric Miller + +=head1 SYNOPSIS + + #Let SNMP::Info determine the correct subclass for you. + + my $airespace = 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 = $airespace->class(); + print " Using device sub class : $class\n"; + +=head1 DESCRIPTION + +Provides abstraction to the configuration information obtainable from +Cisco (Airespace) Wireless Controllers through SNMP. + +For speed or debugging purposes you can call the subclass directly, but not after +determining a more specific class using the method above. + +my $airespace = new SNMP::Info::Layer2::Airespace(...); + +=head2 Inherited Classes + +=over + +=item SNMP::Info::Airespace + +=item SNMP::Info::CDP + +=item SNMP::Info::Bridge + +=back + +=head2 Required MIBs + +=over + +=item Inherited Classes' MIBs + +See L for its own MIB requirements. + +See L for its own MIB requirements. + +See L for its own MIB requirements. + +=back + +=head1 GLOBALS + +These are methods that return scalar value from SNMP + +=over + +=item $airespace->vendor() + +Returns 'cisco' + +=item $airespace->os() + +Returns 'cisco' + +=item $airespace->model() + +(B) + +=back + +=head2 Global Methods imported from SNMP::Info::Airespace + +See documentation in L for details. + +=head2 Global Methods imported from SNMP::Info::CDP + +See documentation in L for details. + +=head2 Globals imported from SNMP::Info::Bridge + +See documentation in L for details. + +=head1 TABLE METHODS + +These are methods that return tables of information in the form of a reference +to a hash. + +=head2 Overrides + +=over + +=item None + +=back + +=head2 Table Methods imported from SNMP::Info::Airespace + +See documentation in L for details. + +=head2 Table Methods imported from SNMP::Info::CDP + +See documentation in L for details. + +=head2 Table Methods imported from SNMP::Info::Bridge + +See documentation in L for details. + +=cut