From 24a84cdc254fc08c1fd0284399c9173db93f0898 Mon Sep 17 00:00:00 2001 From: "Eric A. Miller" Date: Wed, 14 Mar 2018 15:59:23 -0400 Subject: [PATCH] #198 Add Support for Gigamon devices --- Changes | 4 + MANIFEST | 1 + MANIFEST.SKIP | 3 + lib/SNMP/Info.pm | 15 ++- lib/SNMP/Info/Layer7/Gigamon.pm | 176 ++++++++++++++++++++++++++++++++ 5 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 lib/SNMP/Info/Layer7/Gigamon.pm diff --git a/Changes b/Changes index 38ae8059..4b6b3c2e 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,9 @@ version 3.50 + [ENHANCEMENTS] + + * #198 Add Support for Gigamon devices + [BUG FIXES] * #226 Avaya VSP devices - no ifAlias diff --git a/MANIFEST b/MANIFEST index d64a413c..ac385fc1 100644 --- a/MANIFEST +++ b/MANIFEST @@ -117,6 +117,7 @@ lib/SNMP/Info/Layer3/VyOS.pm lib/SNMP/Info/Layer7.pm lib/SNMP/Info/Layer7/APC.pm lib/SNMP/Info/Layer7/CiscoIPS.pm +lib/SNMP/Info/Layer7/Gigamon.pm lib/SNMP/Info/Layer7/Neoteris.pm lib/SNMP/Info/Layer7/Netscaler.pm lib/SNMP/Info/LLDP.pm diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP index 16f9f655..f6ecd282 100644 --- a/MANIFEST.SKIP +++ b/MANIFEST.SKIP @@ -65,3 +65,6 @@ .github .travis README.md + +# Avoid Komodo project file +\.komodoproject$ diff --git a/lib/SNMP/Info.pm b/lib/SNMP/Info.pm index fcee04c9..f3e89046 100644 --- a/lib/SNMP/Info.pm +++ b/lib/SNMP/Info.pm @@ -983,25 +983,31 @@ See documentation in L for details. =item SNMP::Info::Layer7::APC -SNMP Interface to APC UPS devices +Subclass for APC UPS devices See documentation in L for details. =item SNMP::Info::Layer7::CiscoIPS -SNMP Interface to Cisco IPS devices +Subclass for Cisco IPS devices See documentation in L for details. +=item SNMP::Info::Layer7::Gigamon + +Subclass for Gigamon devices + +See documentation in L for details. + =item SNMP::Info::Layer7::Netscaler -SNMP Interface to Citrix Netscaler appliances +Subclass for Citrix Netscaler appliances See documentation in L for details. =item SNMP::Info::Layer7::Neoteris -SNMP Interface to Juniper SSL VPN appliances +Subclass for Juniper SSL VPN appliances See documentation in L for details. @@ -1632,6 +1638,7 @@ sub device_type { 5951 => 'SNMP::Info::Layer7::Netscaler', 14525 => 'SNMP::Info::Layer2::Trapeze', 12532 => 'SNMP::Info::Layer7::Neoteris', + 26866 => 'SNMP::Info::Layer7::Gigamon', ); # Get just the enterprise number for generic mapping diff --git a/lib/SNMP/Info/Layer7/Gigamon.pm b/lib/SNMP/Info/Layer7/Gigamon.pm new file mode 100644 index 00000000..147c0ce4 --- /dev/null +++ b/lib/SNMP/Info/Layer7/Gigamon.pm @@ -0,0 +1,176 @@ +# SNMP::Info::Layer7::Gigamon +# +# Copyright (c) 2018 Eric Miller +# 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::Layer7::Gigamon; + +use strict; +use Exporter; +use SNMP::Info::Layer7; + +@SNMP::Info::Layer7::Gigamon::ISA = qw/SNMP::Info::Layer7 Exporter/; +@SNMP::Info::Layer7::Gigamon::EXPORT_OK = qw//; + +use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/; + +$VERSION = '3.49'; + +%MIBS = ( + %SNMP::Info::Layer7::MIBS, + 'GIGAMON-SNMP-MIB' => 'gigamonSystem', +); + +%GLOBALS = ( + %SNMP::Info::Layer7::GLOBALS, + # Such generic names fully qualify to prevent collisions + 'serial' => 'GIGAMON_SNMP_MIB__serialNumber', + 'g_model' => 'GIGAMON_SNMP_MIB__model', + 'os_ver' => 'GIGAMON_SNMP_MIB__version', + 'fan' => 'GIGAMON_SNMP_MIB__fans', + 'ps1_status' => 'GIGAMON_SNMP_MIB__powerSupply', +); + +%FUNCS = ( %SNMP::Info::Layer7::FUNCS, ); + +%MUNGE = ( %SNMP::Info::Layer7::MUNGE, ); + +sub vendor { + return 'gigamon'; +} + +sub os { + return 'gigamon'; +} + +sub model { + my $g = shift; + + return $g->g_model(); +} + + +1; +__END__ + +=head1 NAME + +SNMP::Info::Layer7::Gigamon - SNMP Interface to Gigamon devices + +=head1 AUTHORS + +Eric Miller + +=head1 SYNOPSIS + + # Let SNMP::Info determine the correct subclass for you. + my $g = new SNMP::Info( + AutoSpecify => 1, + Debug => 1, + DestHost => 'myrouter', + Community => 'public', + Version => 2 + ) + or die "Can't connect to DestHost.\n"; + + my $class = $g->class(); + print "SNMP::Info determined this device to fall under subclass : $class\n"; + +=head1 DESCRIPTION + +Subclass for Gigamon devices + +=head2 Inherited Classes + +=over + +=item SNMP::Info::Layer7 + +=back + +=head2 Required MIBs + +=over + +=item F + +=item Inherited Classes' MIBs + +See L for its own MIB requirements. + +=back + +=head1 GLOBALS + +These are methods that return scalar value from SNMP + +=over + +=item $g->vendor() + +Returns 'gigamon'. + +=item $g->os() + +Returns 'gigamon'. + +=item $g->os_ver() + +Returns C. + +=item $g->model() + +Returns C. + +=item $g->serial() + +Returns C. + +=item $g->fan() + +Returns C. + +=item $g->ps1_status() + +Returns C. + +=back + +=head2 Globals imported from SNMP::Info::Layer7 + +See documentation in L for details. + +=head1 TABLE ENTRIES + +These are methods that return tables of information in the form of a reference +to a hash. + +=head2 Table Methods imported from SNMP::Info::Layer7 + +See documentation in L for details. + +=cut