From 52275e92af34b2024a6b49d4c16e2e38c226c41f Mon Sep 17 00:00:00 2001 From: Jeroen van Ingen Date: Fri, 9 Sep 2011 17:49:52 +0200 Subject: [PATCH] New class L2::HPVC for VirtualConnect blade switches HP VirtualConnect product family includes ethernet-switch-like products with their own MIBs. This new class adds basic support for these devices. --- ChangeLog | 1 + Info.pm | 14 ++- Info/Layer2/HPVC.pm | 211 ++++++++++++++++++++++++++++++++++++++++++++ MANIFEST | 1 + 4 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 Info/Layer2/HPVC.pm diff --git a/ChangeLog b/ChangeLog index 3e26e73a..32403ad7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ ChangeLog $Id$ version 2.06 () + Support for PacketFront devices in new class L3::PacketFront + Support for Mikrotik devices in new class L3::Mikrotik + + Support for HP VirtualConnect switches in new class L2::HPVC * [3344843] Fix returning serial() and os_ver() for web-managable HP switches, introduced by HP/HP4000 class split, reported by J R Binks diff --git a/Info.pm b/Info.pm index 5599b5a4..831ce2a8 100644 --- a/Info.pm +++ b/Info.pm @@ -1332,6 +1332,10 @@ sub device_type { $objtype = 'SNMP::Info::Layer3::CiscoFWSM' if ( $desc =~ /Cisco Firewall Services Module/i ); + # HP VirtualConnect blade switches + $objtype = 'SNMP::Info::Layer2::HPVC' + if ( $desc =~ /HP\sVC\s/ ); + # Generic device classification based upon sysObjectID if ( ( $objtype eq 'SNMP::Info::Layer3' ) and ( defined($id) ) @@ -1433,6 +1437,10 @@ sub device_type { if ( $desc =~ /Nortel\s+(Networks\s+)??WLAN\s+-\s+Security\s+Switch/ ); + # HP VirtualConnect blade switches + $objtype = 'SNMP::Info::Layer2::HPVC' + if ( $desc =~ /HP\sVC\s/ ); + # Generic device classification based upon sysObjectID if ( ( $objtype eq 'SNMP::Info::Layer2' ) and ( defined($id) ) @@ -1486,8 +1494,12 @@ sub device_type { $objtype = 'SNMP::Info::Layer3::Cisco' if ( $desc =~ /Cisco Adaptive Security Appliance/i ); + # HP VirtualConnect blade switches + $objtype = 'SNMP::Info::Layer2::HPVC' + if ( $desc =~ /HP\sVC\s/ ); + # Generic device classification based upon sysObjectID - if ( defined($id) ) { + if ( defined($id) and !defined $objtype ) { if ( defined $l3sysoidmap{$id} ) { $objtype = $l3sysoidmap{$id}; } elsif ( defined $l2sysoidmap{$id}) { diff --git a/Info/Layer2/HPVC.pm b/Info/Layer2/HPVC.pm new file mode 100644 index 00000000..c1b6ff1e --- /dev/null +++ b/Info/Layer2/HPVC.pm @@ -0,0 +1,211 @@ +# SNMP::Info::Layer2::HPVC - SNMP Interface to HP VirtualConnect Switches +# +# Copyright (c) 2011 Jeroen van Ingen +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the University of California, Santa Cruz nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +package SNMP::Info::Layer2::HPVC; + +use strict; +use Exporter; +use SNMP::Info::Layer2; + +@SNMP::Info::Layer2::HPVC::ISA + = qw/SNMP::Info::Layer2 Exporter/; +@SNMP::Info::Layer2::HPVC::EXPORT_OK = qw//; + +use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/; + +$VERSION = '2.05'; + +%MIBS = ( + %SNMP::Info::Layer2::MIBS, + 'HPVC-MIB' => 'vcDomainName', + 'CPQSINFO-MIB' => 'cpqSiSysSerialNum', + 'HPVCMODULE-MIB' => 'vcModuleDomainName', +); + +%GLOBALS = ( + %SNMP::Info::Layer2::GLOBALS, + 'serial1' => 'cpqSiSysSerialNum.0', + 'os_ver' => 'cpqHoSWRunningVersion.1', + 'os_bin' => 'cpqHoFwVerVersion.1', + 'productname' => 'cpqSiProductName.0', +); + +%FUNCS = ( + %SNMP::Info::Layer2::FUNCS, + +); + +%MUNGE = ( + # Inherit all the built in munging + %SNMP::Info::Layer2::MUNGE, +); + + +# Method Overrides + +sub os { + return 'hpvc'; +} + +sub vendor { + return 'hp'; +} + +sub model { + my $hp = shift; + return $hp->productname(); +} + + +1; +__END__ + +=head1 NAME + +SNMP::Info::Layer2::HPVC - SNMP Interface to HP VirtualConnect Switches + +=head1 AUTHOR + +Jeroen van Ingen + +=head1 SYNOPSIS + + # Let SNMP::Info determine the correct subclass for you. + my $hp = new SNMP::Info( + AutoSpecify => 1, + Debug => 1, + DestHost => 'myswitch', + Community => 'public', + Version => 2 + ) + or die "Can't connect to DestHost.\n"; + + my $class = $hp->class(); + print "SNMP::Info determined this device to fall under subclass : $class\n"; + +=head1 DESCRIPTION + +Provides abstraction to the configuration information obtainable from a +HP VirtualConnect Switch via 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 $hp = new SNMP::Info::Layer2::HPVC(...); + +=head2 Inherited Classes + +=over + +=item SNMP::Info::Layer2 + +=back + +=head2 Required MIBs + +=over + +=item F + +=item F + +=item F + +=back + +All required MIBs can be found in the netdisco-mibs package. + +=head1 GLOBALS + +These are methods that return scalar value from SNMP + +=over + +=item $hp->os() + +Returns hpvc + +=item $hp->os_bin() + +C + +=item $hp->os_ver() + +C + +=item $hp->serial() + +C + +=item $hp->vendor() + +hp + +=item $hp->model() + +C + +=back + +=head2 Globals imported from SNMP::Info::Layer2 + +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 + +=back + +=head2 Table Methods imported from SNMP::Info::Layer2 + +See documentation in L for details. + +=head1 MUNGES + +=over + +=back + +=head1 SET METHODS + +These are methods that provide SNMP set functionality for overridden methods +or provide a simpler interface to complex set operations. See +L for general information on set +operations. + +=over + +=cut diff --git a/MANIFEST b/MANIFEST index e618a475..b37e749e 100644 --- a/MANIFEST +++ b/MANIFEST @@ -41,6 +41,7 @@ Info/Layer2/Cisco.pm Info/Layer2/Foundry.pm Info/Layer2/HP.pm Info/Layer2/HP4000.pm +Info/Layer2/HPVC.pm Info/Layer2/N2270.pm Info/Layer2/NAP222x.pm Info/Layer2/Netgear.pm