diff --git a/Info/Layer2/3Com.pm b/Info/Layer2/3Com.pm new file mode 100644 index 00000000..7af3f263 --- /dev/null +++ b/Info/Layer2/3Com.pm @@ -0,0 +1,166 @@ +package SNMP::Info::Layer2::3Com; + +use strict; +use Exporter; +use SNMP::Info::Layer2; +use SNMP::Info::LLDP; +use SNMP::Info::CDP; + +@SNMP::Info::Layer2::3Com::ISA = qw/SNMP::Info::LLDP SNMP::Info::Layer2 Exporter/; +@SNMP::Info::Layer2::3Com::EXPORT_OK = qw//; + +use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/; + +$VERSION = '3.18'; + +%MIBS = ( + %SNMP::Info::LLDP::MIBS, + %SNMP::Info::Layer2::MIBS, +); + +%GLOBALS = ( + %SNMP::Info::Layer2::GLOBALS, + %SNMP::Info::LLDP::GLOBALS, +); + +%FUNCS = ( + %SNMP::Info::Layer2::FUNCS, + %SNMP::Info::LLDP::FUNCS, +); + +%MUNGE = ( + %SNMP::Info::Layer2::MUNGE, + %SNMP::Info::LLDP::MUNGE, +); + + +sub os { + return '3Com'; +} + +sub serial { + my $dev = shift; + my $e_serial = $dev->e_serial(); + + # Find entity table entry for this unit + foreach my $e ( sort keys %$e_serial ) { + if (defined $e_serial->{$e} and $e_serial->{$e} !~ /^\s*$/) { + return $e_serial->{$e}; + } + } +} + +sub os_ver { + + my $dev = shift; + my $e_swver = $dev->e_swver(); + # Find entity table entry for this unit + foreach my $e ( sort keys %$e_swver ) { + if (defined $e_swver->{$e} and $e_swver->{$e} !~ /^\s*$/) { + return $e_swver->{$e}; + } + } +} + +sub vendor { + return '3Com'; +} + +sub model { + + my $dsmodel = shift; + my $descr = $dsmodel->description(); + if ( $descr =~ /^([\S ]+) Software.*/){ + return $1; + } +} + +1; +__END__ + +=head1 NAME + +SNMP::Info::Layer2::3Com - SNMP Interface to L2 3Com Switches + +=head1 AUTHOR + +Max Kosmach + +=head1 SYNOPSIS + + # Let SNMP::Info determine the correct subclass for you. + my $router = new SNMP::Info( + AutoSpecify => 1, + Debug => 1, + DestHost => 'myrouter', + Community => 'public', + Version => 1 + ) + or die "Can't connect to DestHost.\n"; + + my $class = $router->class(); + print "SNMP::Info determined this device to fall under subclass : $class\n"; + +=head1 DESCRIPTION + +Subclass for 3Com L2 devices + +=head2 Inherited Classes + +=over + +=item SNMP::Info::Layer2 + +=back + +=head2 Required MIBs + +=over + +=item Inherited Classes' MIBs + +See L for its own MIB requirements. + +=back + +=head1 GLOBALS + +These are methods that return scalar value from SNMP + +=head2 Overrides + +=over + +=item $device->vendor() + +=item $device->os() + +=item $device->os_ver() + +=item $device->model() + +=item $device->serial() + +=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. + +=cut +