#142 Sixnet Switch Support
This commit is contained in:
1
Changes
1
Changes
@@ -2,6 +2,7 @@ Version 3.55
|
|||||||
|
|
||||||
[NEW FEATURES]
|
[NEW FEATURES]
|
||||||
* #253 Nexans switch support (paecker)
|
* #253 Nexans switch support (paecker)
|
||||||
|
* #142 Sixnet Switch Support
|
||||||
|
|
||||||
[ENHANCEMENTS]
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
|||||||
2
MANIFEST
2
MANIFEST
@@ -61,6 +61,7 @@ lib/SNMP/Info/Layer2/Netgear.pm
|
|||||||
lib/SNMP/Info/Layer2/Nexans.pm
|
lib/SNMP/Info/Layer2/Nexans.pm
|
||||||
lib/SNMP/Info/Layer2/NWSS2300.pm
|
lib/SNMP/Info/Layer2/NWSS2300.pm
|
||||||
lib/SNMP/Info/Layer2/Orinoco.pm
|
lib/SNMP/Info/Layer2/Orinoco.pm
|
||||||
|
lib/SNMP/Info/Layer2/Sixnet.pm
|
||||||
lib/SNMP/Info/Layer2/Trapeze.pm
|
lib/SNMP/Info/Layer2/Trapeze.pm
|
||||||
lib/SNMP/Info/Layer2/Ubiquiti.pm
|
lib/SNMP/Info/Layer2/Ubiquiti.pm
|
||||||
lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
|
lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
|
||||||
@@ -198,6 +199,7 @@ xt/lib/Test/SNMP/Info/Layer2/Netgear.pm
|
|||||||
xt/lib/Test/SNMP/Info/Layer2/Nexans.pm
|
xt/lib/Test/SNMP/Info/Layer2/Nexans.pm
|
||||||
xt/lib/Test/SNMP/Info/Layer2/NWSS2300.pm
|
xt/lib/Test/SNMP/Info/Layer2/NWSS2300.pm
|
||||||
xt/lib/Test/SNMP/Info/Layer2/Orinoco.pm
|
xt/lib/Test/SNMP/Info/Layer2/Orinoco.pm
|
||||||
|
xt/lib/Test/SNMP/Info/Layer2/Sixnet.pm
|
||||||
xt/lib/Test/SNMP/Info/Layer2/Trapeze.pm
|
xt/lib/Test/SNMP/Info/Layer2/Trapeze.pm
|
||||||
xt/lib/Test/SNMP/Info/Layer2/Ubiquiti.pm
|
xt/lib/Test/SNMP/Info/Layer2/Ubiquiti.pm
|
||||||
xt/lib/Test/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
|
xt/lib/Test/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
|
||||||
|
|||||||
@@ -644,6 +644,12 @@ SNMP Interface to Juniper (Trapeze) Wireless Controllers
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer2::Trapeze> for details.
|
See documentation in L<SNMP::Info::Layer2::Trapeze> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer2::Sixnet
|
||||||
|
|
||||||
|
SNMP Interface to Sixnet industrial switches
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer2::Sixnet> for details.
|
||||||
|
|
||||||
=item SNMP::Info::Layer2::Ubiquiti
|
=item SNMP::Info::Layer2::Ubiquiti
|
||||||
|
|
||||||
SNMP Interface to Ubiquiti Access Points and other devices
|
SNMP Interface to Ubiquiti Access Points and other devices
|
||||||
@@ -1635,6 +1641,7 @@ sub device_type {
|
|||||||
14525 => 'SNMP::Info::Layer2::Trapeze',
|
14525 => 'SNMP::Info::Layer2::Trapeze',
|
||||||
14823 => 'SNMP::Info::Layer3::Aruba',
|
14823 => 'SNMP::Info::Layer3::Aruba',
|
||||||
17163 => 'SNMP::Info::Layer3::Steelhead',
|
17163 => 'SNMP::Info::Layer3::Steelhead',
|
||||||
|
20540 => 'SNMP::Info::Layer2::Sixnet',
|
||||||
26543 => 'SNMP::Info::Layer3::IBMGbTor',
|
26543 => 'SNMP::Info::Layer3::IBMGbTor',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
182
lib/SNMP/Info/Layer2/Sixnet.pm
Normal file
182
lib/SNMP/Info/Layer2/Sixnet.pm
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
# SNMP::Info::Layer2::Sixnet
|
||||||
|
#
|
||||||
|
# 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::Layer2::Sixnet;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Exporter;
|
||||||
|
use SNMP::Info::Layer2;
|
||||||
|
|
||||||
|
@SNMP::Info::Layer2::Sixnet::ISA = qw/SNMP::Info::Layer2 Exporter/;
|
||||||
|
@SNMP::Info::Layer2::Sixnet::EXPORT_OK = qw//;
|
||||||
|
|
||||||
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
|
$VERSION = '3.54';
|
||||||
|
|
||||||
|
%MIBS = (%SNMP::Info::Layer2::MIBS, 'SIXNET-MIB' => 'sxid',);
|
||||||
|
|
||||||
|
%GLOBALS = (
|
||||||
|
%SNMP::Info::Layer2::GLOBALS,
|
||||||
|
'os_ver' => 'firmwareRevision',
|
||||||
|
's_model' => 'sxid',
|
||||||
|
'ps1_status' => 'p1status',
|
||||||
|
'ps2_status' => 'p2status',
|
||||||
|
);
|
||||||
|
|
||||||
|
%FUNCS = (%SNMP::Info::Layer2::FUNCS,);
|
||||||
|
|
||||||
|
%MUNGE = (%SNMP::Info::Layer2::MUNGE,);
|
||||||
|
|
||||||
|
|
||||||
|
sub vendor {
|
||||||
|
return 'sixnet';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os {
|
||||||
|
return 'sixnet';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub model {
|
||||||
|
my $sixnet = shift;
|
||||||
|
|
||||||
|
my $s_model = $sixnet->s_model();
|
||||||
|
return $s_model if defined $s_model;
|
||||||
|
|
||||||
|
my $id = $sixnet->id();
|
||||||
|
return unless defined $id;
|
||||||
|
|
||||||
|
my $model = SNMP::translateObj($id);
|
||||||
|
return $model ? $model : $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SNMP::Info::Layer2::Sixnet - SNMP Interface to Sixnet industrial switches
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Eric Miller
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
my $sixnet = new SNMP::Info(
|
||||||
|
AutoSpecify => 1,
|
||||||
|
Debug => 1,
|
||||||
|
DestHost => 'myswitch',
|
||||||
|
Community => 'public',
|
||||||
|
Version => 2
|
||||||
|
)
|
||||||
|
|
||||||
|
or die "Can't connect to DestHost.\n";
|
||||||
|
|
||||||
|
my $class = $sixnet->class();
|
||||||
|
print " Using device sub class : $class\n";
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
SNMP::Info::Layer2::Sixnet is a subclass of SNMP::Info that provides an
|
||||||
|
interface to Sixnet industrial switches.
|
||||||
|
|
||||||
|
For speed or debugging purposes you can call the subclass directly, but not
|
||||||
|
after determining a more specific class using the method above.
|
||||||
|
|
||||||
|
my $sixnet = new SNMP::Info::Layer2::Sixnet(...);
|
||||||
|
|
||||||
|
=head2 Inherited Classes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer2
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Required MIBs
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item F<SIXNET-MIB>
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Inherited MIBs
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
|
||||||
|
|
||||||
|
=head1 GLOBALS
|
||||||
|
|
||||||
|
These are methods that return scalar value from SNMP
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $sixnet->vendor()
|
||||||
|
|
||||||
|
Returns 'sixnet'
|
||||||
|
|
||||||
|
=item $sixnet->os()
|
||||||
|
|
||||||
|
Returns 'sixnet'
|
||||||
|
|
||||||
|
=item $sixnet->os_ver()
|
||||||
|
|
||||||
|
Returns the software version returned by C<firmwareRevision>
|
||||||
|
|
||||||
|
=item $sixnet->model()
|
||||||
|
|
||||||
|
Returns model type. Returns C<sxid> if it exists, otherwise cross references
|
||||||
|
$sixnet->id() with the F<SIXNET-MIB>.
|
||||||
|
|
||||||
|
=item $sixnet->ps1_status()
|
||||||
|
|
||||||
|
(C<p1status>)
|
||||||
|
|
||||||
|
=item $sixnet->ps2_status()
|
||||||
|
|
||||||
|
(C<p2status>)
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::Layer2
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
|
||||||
|
|
||||||
|
=head1 TABLE METHODS
|
||||||
|
|
||||||
|
These are methods that return tables of information in the form of a reference
|
||||||
|
to a hash.
|
||||||
|
|
||||||
|
=head2 Table Methods imported from SNMP::Info::Layer2
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
=cut
|
||||||
86
xt/lib/Test/SNMP/Info/Layer2/Sixnet.pm
Normal file
86
xt/lib/Test/SNMP/Info/Layer2/Sixnet.pm
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Test::SNMP::Info::Layer2::Sixnet
|
||||||
|
#
|
||||||
|
# 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 Test::SNMP::Info::Layer2::Sixnet;
|
||||||
|
|
||||||
|
use Test::Class::Most parent => 'My::Test::Class';
|
||||||
|
|
||||||
|
use SNMP::Info::Layer2::Sixnet;
|
||||||
|
|
||||||
|
sub setup : Tests(setup) {
|
||||||
|
my $test = shift;
|
||||||
|
$test->SUPER::setup;
|
||||||
|
|
||||||
|
# Start with a common cache that will serve most tests
|
||||||
|
my $cache_data = {
|
||||||
|
'_layers' => 2,
|
||||||
|
|
||||||
|
# This is made up as no snmpwalk of device
|
||||||
|
'_description' => 'SLX-18MG - Industrial Ethernet Managed Switch',
|
||||||
|
|
||||||
|
# SIXNET-MIB::etms
|
||||||
|
'_id' => '.1.3.6.1.4.1.20540.2.1',
|
||||||
|
'_s_model' => '01180S_18MG-x',
|
||||||
|
'store' => {},
|
||||||
|
};
|
||||||
|
$test->{info}->cache($cache_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os : Tests(2) {
|
||||||
|
my $test = shift;
|
||||||
|
|
||||||
|
can_ok($test->{info}, 'os');
|
||||||
|
is($test->{info}->os(), 'sixnet', q(OS returns 'sixnet'));
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vendor : Tests(2) {
|
||||||
|
my $test = shift;
|
||||||
|
|
||||||
|
can_ok($test->{info}, 'vendor');
|
||||||
|
is($test->{info}->vendor(), 'sixnet', q(Vendor returns 'sixnet'));
|
||||||
|
}
|
||||||
|
|
||||||
|
sub model : Tests(5) {
|
||||||
|
my $test = shift;
|
||||||
|
|
||||||
|
can_ok($test->{info}, 'model');
|
||||||
|
is($test->{info}->model(), '01180S_18MG-x', q(Model is expected value));
|
||||||
|
|
||||||
|
$test->{info}{_s_model} = undef;
|
||||||
|
is($test->{info}->model(), 'etms', q(Model is expected value using id));
|
||||||
|
|
||||||
|
$test->{info}{_id} = '.100.3.6.1.4.1.20540.2.1';
|
||||||
|
is($test->{info}->model(), '.100.3.6.1.4.1.20540.2.1',
|
||||||
|
q(Model is expected value when id doesn't translate));
|
||||||
|
|
||||||
|
$test->{info}->clear_cache();
|
||||||
|
is($test->{info}->model(), undef, q(No data returns undef model));
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
Reference in New Issue
Block a user