Compare commits
	
		
			10 Commits
		
	
	
		
			159ab659cb
			...
			db3a764d49
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					db3a764d49 | ||
| 
						 | 
					62c7719186 | ||
| 
						 | 
					daee793df6 | ||
| 
						 | 
					36e8f9be61 | ||
| 
						 | 
					91ce23ce4a | ||
| 
						 | 
					535379b3a1 | ||
| 
						 | 
					b9313c2ec0 | ||
| 
						 | 
					a46f27792b | ||
| 
						 | 
					43ca61299e | ||
| 
						 | 
					a3f0109f06 | 
@@ -25,7 +25,7 @@ our
 | 
				
			|||||||
    ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG, %SPEED_MAP,
 | 
					    ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG, %SPEED_MAP,
 | 
				
			||||||
     $NOSUCH, $BIGINT, $REPEATERS);
 | 
					     $NOSUCH, $BIGINT, $REPEATERS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.70-135-20.5.6';
 | 
					$VERSION = '3.70-135-20.5.7';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 NAME
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1681,6 +1681,7 @@ sub device_type {
 | 
				
			|||||||
        890   => 'SNMP::Info::Layer2::Zyxel',
 | 
					        890   => 'SNMP::Info::Layer2::Zyxel',
 | 
				
			||||||
        1286  => 'SNMP::Info::Layer2::ECI',
 | 
					        1286  => 'SNMP::Info::Layer2::ECI',
 | 
				
			||||||
        1588  => 'SNMP::Info::Layer3::Foundry',
 | 
					        1588  => 'SNMP::Info::Layer3::Foundry',
 | 
				
			||||||
 | 
					        1795  => 'SNMP::Info::Layer2::Paradyne',
 | 
				
			||||||
        1872  => 'SNMP::Info::Layer3::AlteonAD',
 | 
					        1872  => 'SNMP::Info::Layer3::AlteonAD',
 | 
				
			||||||
        1890  => 'SNMP::Info::Layer3::Redlion',
 | 
					        1890  => 'SNMP::Info::Layer3::Redlion',
 | 
				
			||||||
        1916  => 'SNMP::Info::Layer3::Extreme',
 | 
					        1916  => 'SNMP::Info::Layer3::Extreme',
 | 
				
			||||||
@@ -1729,7 +1730,7 @@ sub device_type {
 | 
				
			|||||||
        27514 => 'SNMP::Info::Layer3::Qtech',
 | 
					        27514 => 'SNMP::Info::Layer3::Qtech',
 | 
				
			||||||
        30065 => 'SNMP::Info::Layer3::Arista',
 | 
					        30065 => 'SNMP::Info::Layer3::Arista',
 | 
				
			||||||
        30803 => 'SNMP::Info::Layer3::VyOS',
 | 
					        30803 => 'SNMP::Info::Layer3::VyOS',
 | 
				
			||||||
        32761 => 'SNMP::Info::Layer3::Rotek',
 | 
					        32761 => 'SNMP::Info::Layer3::Deliberant',
 | 
				
			||||||
        34300 => 'SNMP::Info::Layer3::Eltex',
 | 
					        34300 => 'SNMP::Info::Layer3::Eltex',
 | 
				
			||||||
        35098 => 'SNMP::Info::Layer3::Pica8',
 | 
					        35098 => 'SNMP::Info::Layer3::Pica8',
 | 
				
			||||||
        35265 => 'SNMP::Info::Layer3::Eltex',
 | 
					        35265 => 'SNMP::Info::Layer3::Eltex',
 | 
				
			||||||
@@ -1737,7 +1738,8 @@ sub device_type {
 | 
				
			|||||||
        40418 => 'SNMP::Info::Layer3::Nag',
 | 
					        40418 => 'SNMP::Info::Layer3::Nag',
 | 
				
			||||||
        41112 => 'SNMP::Info::Layer2::Ubiquiti',
 | 
					        41112 => 'SNMP::Info::Layer2::Ubiquiti',
 | 
				
			||||||
        44641 => 'SNMP::Info::Layer3::VyOS',
 | 
					        44641 => 'SNMP::Info::Layer3::VyOS',
 | 
				
			||||||
        41752 => 'SNMP::Info::Layer3::Raisecom',
 | 
					        41752 => 'SNMP::Info::Layer3::Rotek',
 | 
				
			||||||
 | 
					        42926 => 'SNMP::Info::Layer2::NSC',
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my %l2sysoidmap = (
 | 
					    my %l2sysoidmap = (
 | 
				
			||||||
@@ -1756,6 +1758,7 @@ sub device_type {
 | 
				
			|||||||
        776   => 'SNMP::Info::Layer2::Telindus',
 | 
					        776   => 'SNMP::Info::Layer2::Telindus',
 | 
				
			||||||
        890   => 'SNMP::Info::Layer2::Zyxel',
 | 
					        890   => 'SNMP::Info::Layer2::Zyxel',
 | 
				
			||||||
        1286  => 'SNMP::Info::Layer2::ECI',
 | 
					        1286  => 'SNMP::Info::Layer2::ECI',
 | 
				
			||||||
 | 
					        1795  => 'SNMP::Info::Layer2::Paradyne',
 | 
				
			||||||
        1872  => 'SNMP::Info::Layer3::AlteonAD',
 | 
					        1872  => 'SNMP::Info::Layer3::AlteonAD',
 | 
				
			||||||
        1890  => 'SNMP::Info::Layer3::Redlion',
 | 
					        1890  => 'SNMP::Info::Layer3::Redlion',
 | 
				
			||||||
        1916  => 'SNMP::Info::Layer3::Extreme',
 | 
					        1916  => 'SNMP::Info::Layer3::Extreme',
 | 
				
			||||||
@@ -1785,11 +1788,12 @@ sub device_type {
 | 
				
			|||||||
        26543 => 'SNMP::Info::Layer3::IBMGbTor',
 | 
					        26543 => 'SNMP::Info::Layer3::IBMGbTor',
 | 
				
			||||||
        26928 => 'SNMP::Info::Layer2::Aerohive',
 | 
					        26928 => 'SNMP::Info::Layer2::Aerohive',
 | 
				
			||||||
        27514 => 'SNMP::Info::Layer3::Qtech',
 | 
					        27514 => 'SNMP::Info::Layer3::Qtech',
 | 
				
			||||||
        32761 => 'SNMP::Info::Layer3::Rotek',
 | 
					        32761 => 'SNMP::Info::Layer3::Deliberant',
 | 
				
			||||||
        34300 => 'SNMP::Info::Layer3::Eltex',
 | 
					        34300 => 'SNMP::Info::Layer3::Eltex',
 | 
				
			||||||
        35265 => 'SNMP::Info::Layer3::Eltex',
 | 
					        35265 => 'SNMP::Info::Layer3::Eltex',
 | 
				
			||||||
        40418 => 'SNMP::Info::Layer3::Nag',
 | 
					        40418 => 'SNMP::Info::Layer3::Nag',
 | 
				
			||||||
        41752 => 'SNMP::Info::Layer3::Raisecom',
 | 
					        41752 => 'SNMP::Info::Layer3::Rotek',
 | 
				
			||||||
 | 
					        42926 => 'SNMP::Info::Layer2::NSC',
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my %l1sysoidmap = (
 | 
					    my %l1sysoidmap = (
 | 
				
			||||||
@@ -1805,6 +1809,7 @@ sub device_type {
 | 
				
			|||||||
        12532 => 'SNMP::Info::Layer7::Neoteris',
 | 
					        12532 => 'SNMP::Info::Layer7::Neoteris',
 | 
				
			||||||
        14525 => 'SNMP::Info::Layer2::Trapeze',
 | 
					        14525 => 'SNMP::Info::Layer2::Trapeze',
 | 
				
			||||||
        26866 => 'SNMP::Info::Layer7::Gigamon',
 | 
					        26866 => 'SNMP::Info::Layer7::Gigamon',
 | 
				
			||||||
 | 
					        41752 => 'SNMP::Info::Layer3::Rotek', #Rotek and Raisecom fucking crap -(
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Get just the enterprise number for generic mapping
 | 
					    # Get just the enterprise number for generic mapping
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										144
									
								
								lib/SNMP/Info/Layer2/NSC.pm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										144
									
								
								lib/SNMP/Info/Layer2/NSC.pm
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,144 @@
 | 
				
			|||||||
 | 
					# SNMP::Info::Layer2::NSC - SNMP Interface to NSC Devices
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (c) 2020 by 135.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package SNMP::Info::Layer2::NSC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use warnings;
 | 
				
			||||||
 | 
					use Exporter;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::NSC::ISA       = qw/SNMP::Info::Layer2 Exporter/;
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::NSC::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$VERSION = '3.70-135';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MIBS = ( %SNMP::Info::Layer2::MIBS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%GLOBALS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer2::GLOBALS,
 | 
				
			||||||
 | 
					    'model_oid'  => 'enterprises.42926.2.3.1.3.0',
 | 
				
			||||||
 | 
					    'serial_oid' => 'enterprises.42926.2.3.1.8.0',
 | 
				
			||||||
 | 
					    'hw_oid'     => 'enterprises.42926.2.3.1.1.0',
 | 
				
			||||||
 | 
					    'os_ver_oid' => 'enterprises.42926.2.3.1.2.0',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub vendor {
 | 
				
			||||||
 | 
					    return 'nsc';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os {
 | 
				
			||||||
 | 
					    return 'nsc-os';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os_ver {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $os_ver = $obj->os_ver_oid || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $os_ver
 | 
				
			||||||
 | 
					        if defined $os_ver;
 | 
				
			||||||
 | 
					    return 'unknown';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sub model {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $model = $obj->model_oid || undef;
 | 
				
			||||||
 | 
					    my $hwver = $obj->hwver || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $model . ' HW:' . $hwver
 | 
				
			||||||
 | 
					        if defined $model and defined $hwver;
 | 
				
			||||||
 | 
					    return $model
 | 
				
			||||||
 | 
					        if defined $model;
 | 
				
			||||||
 | 
					    return $obj->SUPER::model();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub hwver {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $hwver = $obj->hw_oid || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $hwver
 | 
				
			||||||
 | 
					        if defined $hwver;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub serial {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $serial = $obj->serial_oid || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $serial
 | 
				
			||||||
 | 
					        if defined $serial;
 | 
				
			||||||
 | 
					    return $obj->SUPER::serial();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP::Info::Layer2::NSC - SNMP Interface to NSC Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Let SNMP::Info determine the correct subclass for you.
 | 
				
			||||||
 | 
					 my $obj = new SNMP::Info(
 | 
				
			||||||
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
 | 
					                          Debug       => 1,
 | 
				
			||||||
 | 
					                          DestHost    => 'myrouter',
 | 
				
			||||||
 | 
					                          Community   => 'public',
 | 
				
			||||||
 | 
					                          Version     => 2
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $class      = $obj->class();
 | 
				
			||||||
 | 
					 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for NSC Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes' MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'nsc-oem'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'nsc-oem'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the software version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the model extracted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns serial number.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
							
								
								
									
										116
									
								
								lib/SNMP/Info/Layer2/Paradyne.pm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										116
									
								
								lib/SNMP/Info/Layer2/Paradyne.pm
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,116 @@
 | 
				
			|||||||
 | 
					# SNMP::Info::Layer2::Paradyne - SNMP Interface to Paradyne Devices
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (c) 2020 by 135.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package SNMP::Info::Layer2::Paradyne;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use warnings;
 | 
				
			||||||
 | 
					use Exporter;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::Paradyne::ISA       = qw/SNMP::Info::Layer2 Exporter/;
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::Paradyne::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$VERSION = '3.70-135';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MIBS = ( %SNMP::Info::Layer2::MIBS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%GLOBALS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer2::GLOBALS,
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub vendor {
 | 
				
			||||||
 | 
					    return 'paradyne';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os {
 | 
				
			||||||
 | 
					    return 'prdn-os';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os_ver {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    $obj->description =~ /S\/W\sRelease\:\s+(.*)\;/;
 | 
				
			||||||
 | 
					    return $1 if defined($1);
 | 
				
			||||||
 | 
					    return 'unknown';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub model {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    $obj->description =~ /PARADYNE\s+(.*)\;.*\;/;
 | 
				
			||||||
 | 
					    return $1 if defined($1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP::Info::Layer2::Paradyne - SNMP Interface to Paradyne Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Let SNMP::Info determine the correct subclass for you.
 | 
				
			||||||
 | 
					 my $obj = new SNMP::Info(
 | 
				
			||||||
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
 | 
					                          Debug       => 1,
 | 
				
			||||||
 | 
					                          DestHost    => 'myrouter',
 | 
				
			||||||
 | 
					                          Community   => 'public',
 | 
				
			||||||
 | 
					                          Version     => 2
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $class      = $obj->class();
 | 
				
			||||||
 | 
					 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for Paradyne Devices running IOS-like software
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'rapadyne'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'prdn-os'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->layers()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ensures that layer two is reported, at least.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the software version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->model
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the model extracted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns serial number.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
@@ -110,7 +110,7 @@ sub os {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub vendor {
 | 
					sub vendor {
 | 
				
			||||||
    return 'alcatel-lucent';
 | 
					    return 'alcatel';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub os_ver {
 | 
					sub os_ver {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,10 +74,22 @@ $VERSION = '3.70-135';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
 | 
					%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub norm($) {
 | 
				
			||||||
 | 
					    my $var = shift;
 | 
				
			||||||
 | 
					    return norm_hash($var) if ref $var eq 'HASH';
 | 
				
			||||||
 | 
					    return $var if defined $var and $var !~ /^\s*$/ and $var !~ 'NOSUCHOBJECT';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub norm_hash {
 | 
				
			||||||
 | 
					    my $hash = shift;
 | 
				
			||||||
 | 
					    return $hash->{0} if $hash->{0} !~ /^\s*$/ and $hash->{0} !~ 'NOSUCHOBJECT';
 | 
				
			||||||
 | 
					    print "norm_hash return undef\n";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub model {
 | 
					sub model {
 | 
				
			||||||
    my $dlink=shift;
 | 
					    my $dlink=shift;
 | 
				
			||||||
    my $hw = $dlink->hwver() || undef;
 | 
					    my $hw = norm($dlink->hwver()) || undef;
 | 
				
			||||||
    return $dlink->description() . ' HW:' . $hw if defined($hw);
 | 
					    return $dlink->description() . ' HW:' . $hw if norm($hw);
 | 
				
			||||||
    return $dlink->description();
 | 
					    return $dlink->description();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,54 +114,74 @@ sub os {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
sub os_ver {
 | 
					sub os_ver {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    return $obj->fwver();
 | 
					    my $os_ver = undef;
 | 
				
			||||||
 | 
					    my $model = $obj->model();
 | 
				
			||||||
 | 
					    my $id = $obj->id();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#Due to the zoo of MIB from DLink by 1210 series
 | 
				
			||||||
 | 
						$os_ver = norm($obj->session()->get($id.'.1.3.0')) if $model =~ /1210/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (not defined $os_ver) {
 | 
				
			||||||
 | 
					        $os_ver = norm($obj->dlink_fw());
 | 
				
			||||||
 | 
					        last if norm($os_ver);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $os_ver = norm($obj->session()->get('enterprises.171.10.94.89.89.2.4.0'));
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $brom = $obj->brom();
 | 
				
			||||||
 | 
					    $os_ver .= ' bootrom:' . $brom if norm($brom) and norm($os_ver);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $os_ver if norm($os_ver);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub serial {
 | 
					sub serial {
 | 
				
			||||||
    my $dlink = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    my $model = $dlink->model();
 | 
					    my $model = $obj->model();
 | 
				
			||||||
    my $id = $dlink->id();
 | 
					    my $id = $obj->id();
 | 
				
			||||||
    my $serial;
 | 
					    my $serial;
 | 
				
			||||||
    if ($model =~ /1210/) {
 | 
					    if ($model =~ /1210/) {
 | 
				
			||||||
	#Due to the zoo of MIB from DLink by 1210 series
 | 
						#Due to the zoo of MIB from DLink by 1210 series
 | 
				
			||||||
	$serial->{0} = $dlink->session()->get($id.'.1.30.0');
 | 
						$serial = norm($obj->session()->get($id.'.1.30.0'));
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
	$serial = $dlink->dlink_serial_no();
 | 
						$serial = norm($obj->dlink_serial_no());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $serial->{0} if ( defined $serial->{0} and $serial->{0} !~ /^\s*$/ and $serial->{0} !~ 'NOSUCHOBJECT' );
 | 
					    return $serial if norm($serial);
 | 
				
			||||||
    return $dlink->SUPER::serial();
 | 
					    return $obj->SUPER::serial();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub fwver {
 | 
					sub brom {
 | 
				
			||||||
    my $dlink=shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    my $model = $dlink->model();
 | 
					    my $brom = undef;
 | 
				
			||||||
    my $id = $dlink->id();
 | 
					
 | 
				
			||||||
    my $fw;
 | 
					    $brom = norm($obj->session()->get('enterprises.171.10.94.89.89.2.10.0'));
 | 
				
			||||||
    if ($model =~ /1210/) {
 | 
					
 | 
				
			||||||
	#Due to the zoo of MIB from DLink by 1210 series
 | 
					    return $brom if norm($brom);
 | 
				
			||||||
	$fw->{0} = $dlink->session()->get($id.'.1.3.0');
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
	$fw = $dlink->dlink_fw();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return $fw->{0} if ( defined $fw->{0} and $fw->{0} !~ /^\s*$/ and $fw->{0} !~ 'NOSUCHOBJECT');
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub hwver {
 | 
					sub hwver {
 | 
				
			||||||
    my $dlink=shift;
 | 
					    my $obj=shift;
 | 
				
			||||||
    my $id = $dlink->id();
 | 
					    my $id = $obj->id();
 | 
				
			||||||
    my $model = &SNMP::translateObj($id);
 | 
					    my $model = &SNMP::translateObj($id);
 | 
				
			||||||
    my $hw;
 | 
					    my $hw = undef;
 | 
				
			||||||
    if ($model =~ /1210/) {
 | 
					 | 
				
			||||||
	#Due to the zoo of MIB from DLink by 1210 series
 | 
					 | 
				
			||||||
	$hw->{0} = $dlink->session()->get($id.'.1.2.0');
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
	$hw = $dlink->dlink_hw();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return $hw->{0} if ( defined $hw->{0} and $hw->{0} !~ /^\s*$/ and $hw->{0} !~ 'NOSUCHOBJECT');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $hw = $dlink->session()->get('rmon.19.3.0');
 | 
						#Due to the zoo of MIB from DLink by 1210 series
 | 
				
			||||||
    return $hw if defined($hw);
 | 
						$hw = norm($obj->session()->get($id.'.1.2.0')) if $model =~ /1210/;
 | 
				
			||||||
 | 
					    $hw = undef if norm($hw);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while(! defined $hw){
 | 
				
			||||||
 | 
					        $hw = norm($obj->dlink_hw());
 | 
				
			||||||
 | 
					        last if norm($hw);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $hw = norm($obj->session()->get('rmon.19.3.0'));
 | 
				
			||||||
 | 
					        last if norm($hw);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $hw = norm($obj->session()->get('enterprises.171.10.94.89.89.2.10.0'));
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $hw if norm($hw);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub stp_i_root_port {
 | 
					sub stp_i_root_port {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										133
									
								
								lib/SNMP/Info/Layer3/Deliberant.pm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										133
									
								
								lib/SNMP/Info/Layer3/Deliberant.pm
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,133 @@
 | 
				
			|||||||
 | 
					# SNMP::Info::Layer3::Deliberant - SNMP Interface to Deliberant Devices
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (c) 2020 by 135.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package SNMP::Info::Layer3::Deliberant;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use warnings;
 | 
				
			||||||
 | 
					use Exporter;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SNMP::Info::Layer3::Deliberant::ISA       = qw/SNMP::Info::Layer3 Exporter/;
 | 
				
			||||||
 | 
					@SNMP::Info::Layer3::Deliberant::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$VERSION = '3.70-135';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MIBS = ( %SNMP::Info::Layer3::MIBS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%GLOBALS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::GLOBALS,
 | 
				
			||||||
 | 
					    'model_oid' => 'enterprises.32761.3.1.1.1.3.0',
 | 
				
			||||||
 | 
					    'submodel'    => 'enterprises.32761.3.1.1.1.2.0',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub vendor {
 | 
				
			||||||
 | 
					    return 'deliberant';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os {
 | 
				
			||||||
 | 
					    return 'deliberant-os';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os_ver {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $os_ver;
 | 
				
			||||||
 | 
					    my $os_ver_oid = $obj->description;
 | 
				
			||||||
 | 
					        $os_ver_oid =~ /\,\s(.*)/;
 | 
				
			||||||
 | 
					        $os_ver = $1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (defined $os_ver) {
 | 
				
			||||||
 | 
					        return $os_ver;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return 'unknown';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sub model {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $id = $obj->id();
 | 
				
			||||||
 | 
					    my $model = $obj->model_oid || undef;
 | 
				
			||||||
 | 
					    my $submodel = $obj->submodel || undef;
 | 
				
			||||||
 | 
					    $model .= ' (' . $obj->submodel . ')' if defined($submodel);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $model if defined $model;
 | 
				
			||||||
 | 
					    return $obj->SUPER::model();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub serial {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    return $obj->SUPER::serial();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP::Info::Layer3::Deliberant - SNMP Interface to Deliberant Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Let SNMP::Info determine the correct subclass for you.
 | 
				
			||||||
 | 
					 my $obj = new SNMP::Info(
 | 
				
			||||||
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
 | 
					                          Debug       => 1,
 | 
				
			||||||
 | 
					                          DestHost    => 'myrouter',
 | 
				
			||||||
 | 
					                          Community   => 'public',
 | 
				
			||||||
 | 
					                          Version     => 2
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $class      = $obj->class();
 | 
				
			||||||
 | 
					 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for Deliberant Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes' MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'deliberant-oem'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'rotek-os'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the software version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the model extracted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $obj->serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns serial number.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
@@ -23,22 +23,15 @@ $VERSION = '3.70-135';
 | 
				
			|||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::GLOBALS,
 | 
					    %SNMP::Info::Layer3::GLOBALS,
 | 
				
			||||||
    'model_oid'             => 'mib-2.47.1.1.1.1.13.1',
 | 
					    'model_oid'             => 'mib-2.47.1.1.1.1.13.1',
 | 
				
			||||||
    'model_oid_41752'       => 'enterprises.41752.6.1.1.1.19.0',
 | 
					 | 
				
			||||||
    'model_oid_8886_6_140'  => 'enterprises.8886.6.1.1.1.19.0',
 | 
					    'model_oid_8886_6_140'  => 'enterprises.8886.6.1.1.1.19.0',
 | 
				
			||||||
    'serial_oid'            => 'mib-2.47.1.1.1.1.11.1',
 | 
					    'serial_oid'            => 'mib-2.47.1.1.1.1.11.1',
 | 
				
			||||||
    'serial_oid_41752'      => 'enterprises.41752.6.1.1.1.14.0',
 | 
					 | 
				
			||||||
    'serial_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.14.0',
 | 
					    'serial_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.14.0',
 | 
				
			||||||
    'os_ver_oid'            => 'mib-2.47.1.1.1.1.10.1',
 | 
					    'os_ver_oid'            => 'mib-2.47.1.1.1.1.10.1',
 | 
				
			||||||
    'os_ver_oid_41752'      => 'enterprises.41752.6.1.1.1.1.0',
 | 
					 | 
				
			||||||
    'os_ver_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.1.0',
 | 
					    'os_ver_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.1.0',
 | 
				
			||||||
    'brom_oid'              => 'mib-2.47.1.1.1.1.9.1',
 | 
					    'brom_oid'              => 'mib-2.47.1.1.1.1.9.1',
 | 
				
			||||||
    'brom_oid_41752'        => 'enterprises.41752.6.1.1.1.13.0',
 | 
					 | 
				
			||||||
    'brom_oid_8886_6_140'   => 'enterprises.8886.6.1.1.1.13.0',
 | 
					    'brom_oid_8886_6_140'   => 'enterprises.8886.6.1.1.1.13.0',
 | 
				
			||||||
    'hw_oid'                => 'mib-2.47.1.1.1.1.8.1',
 | 
					    'hw_oid'                => 'mib-2.47.1.1.1.1.8.1',
 | 
				
			||||||
    'hw_oid_41752'          => 'enterprises.41752.6.1.1.1.2.0',
 | 
					 | 
				
			||||||
    'hw_oid_8886_6_140'     => 'enterprises.8886.6.1.1.1.2.0',
 | 
					    'hw_oid_8886_6_140'     => 'enterprises.8886.6.1.1.1.2.0',
 | 
				
			||||||
    'model_rotek'           => 'enterprises.41752.3.1.1.1.3.0',
 | 
					 | 
				
			||||||
    'model_41752' => 'enterprises.41752.3.1.1.1.3.0',
 | 
					 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
 | 
					%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
 | 
				
			||||||
@@ -47,45 +40,20 @@ $VERSION = '3.70-135';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
sub vendor {
 | 
					sub vendor {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    return main($obj)->{vendor};
 | 
					    return 'raisecom';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub os {
 | 
					sub os {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    return main($obj)->{os};
 | 
					    return 'raisecom-os';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub main {
 | 
					sub main {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    my $response = undef; my $serial = undef; my $model = undef; my $hw = undef; my $os_ver = undef; my $brom = undef;
 | 
					    my $response = undef; my $serial = undef; my $model = undef; my $hw = undef; my $os_ver = undef; my $brom = undef;
 | 
				
			||||||
    my $vendor = 'raisecom'; my $os = 'rcios';
 | 
					 | 
				
			||||||
    my $id = $obj->id;
 | 
					    my $id = $obj->id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #Rotek kostilyng
 | 
					    if ($id =~ /8886\.6\.(140|191|150|21[3,4])$/) {
 | 
				
			||||||
    if ($id =~ /41752$/) {
 | 
					 | 
				
			||||||
        my %rotek = ();#undef;#('vendor', 'os', 'model', 'os_ver', 'serial');
 | 
					 | 
				
			||||||
        for my $key ('vendor', 'os', 'model', 'os_ver', 'serial') {
 | 
					 | 
				
			||||||
            no strict 'refs';
 | 
					 | 
				
			||||||
            my $sub = *{'SNMP::Info::Layer3::Rotek::'.$key};
 | 
					 | 
				
			||||||
            $rotek{$key} = &$sub($obj);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return %rotek;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if ( $id =~ /41752\.26\.502/ ) {
 | 
					 | 
				
			||||||
        $model = $obj->model_oid_41752 || undef;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $hw = ($obj->hw_oid_41752 =~ /.*\sversion\s(.*)/)[0];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $obj->os_ver_oid_41752 =~ /ROS_(.*)\.(\d+)/;
 | 
					 | 
				
			||||||
        $os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $obj->brom_oid_41752 =~ /.*_BOOT_(.*)_(\d+)/;
 | 
					 | 
				
			||||||
        $brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $serial = $obj->serial_oid_41752 || undef;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    elsif ($id =~ /8886\.6\.(140|191|150|21[3,4])$/) {
 | 
					 | 
				
			||||||
        $model = $obj->model_oid_8886_6_140 || undef;
 | 
					        $model = $obj->model_oid_8886_6_140 || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $obj->os_ver_oid_8886_6_140 =~ /ROS_(.*)\.ISCOM.*\.(\d*\.+\d*)/;
 | 
					        $obj->os_ver_oid_8886_6_140 =~ /ROS_(.*)\.ISCOM.*\.(\d*\.+\d*)/;
 | 
				
			||||||
@@ -100,7 +68,7 @@ sub main {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    #All another known ways to HW
 | 
					    #All another known ways to HW
 | 
				
			||||||
    while (not defined($hw)) {
 | 
					    while (not defined($hw)) {
 | 
				
			||||||
        $obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/;
 | 
					        $obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/ if defined $obj->hw_oid_8886_6_140;
 | 
				
			||||||
        $hw = $1 if defined $1;
 | 
					        $hw = $1 if defined $1;
 | 
				
			||||||
        last;
 | 
					        last;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -122,36 +90,71 @@ sub main {
 | 
				
			|||||||
        last;
 | 
					        last;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #All another known ways to Bootrom
 | 
					 | 
				
			||||||
    $obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/;
 | 
					 | 
				
			||||||
    $brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $brom = $obj->brom_oid || undef if not defined($brom);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #Serial
 | 
					    #Serial
 | 
				
			||||||
    $serial = $obj->serial_oid_8886_6_140 || undef;
 | 
					    $serial = $obj->serial_oid_8886_6_140 || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ####
 | 
					    ####
 | 
				
			||||||
    #final formatting before output.
 | 
					    #final formatting before output.
 | 
				
			||||||
    ####
 | 
					    ####
 | 
				
			||||||
    $model .= ' HW:' . $hw if defined($model) and defined($hw);
 | 
					    #$model .= ' HW:' . $hw if defined($model) and defined($hw);
 | 
				
			||||||
    $os_ver .= ' bootrom:' . $brom if defined($os_ver) and defined($brom);
 | 
					    #$os_ver .= ' bootrom:' . $brom if defined($os_ver) and defined($brom);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return { 'vendor' => $vendor, 'os' => $os, 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial };
 | 
					    return { 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub os_ver {
 | 
					sub os_ver {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    return main($obj)->{os_ver};
 | 
					    my $os_ver = $obj->main()->{os_ver};
 | 
				
			||||||
 | 
					    my $brom = $obj->brom() || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $os_ver .= ' Bootrom:' . $brom if defined $brom;
 | 
				
			||||||
 | 
					    return $os_ver if defined $os_ver;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
sub model {
 | 
					sub model {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    return main($obj)->{model};
 | 
					    my $model = $obj->main()->{model} || undef;
 | 
				
			||||||
 | 
					    my $hw = $obj->hw() || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (not defined $model or $model eq 'NOSUCHOBJECT') {
 | 
				
			||||||
 | 
					        $model = $obj->session()->get('enterprises.8886.22.2.1.2.0') || undef;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $model .= ' HW:' . $hw if defined $hw;
 | 
				
			||||||
 | 
					    return $model if defined $model;
 | 
				
			||||||
 | 
					    return $obj->id();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub serial {
 | 
					sub serial {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    return main($obj)->{serial};
 | 
					    my $serial = $obj->main()->{serial} || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while(not defined $serial) {
 | 
				
			||||||
 | 
					        $serial = $obj->session()->get('mib-2.47.1.1.1.1.11.1') || undef;
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $serial if defined $serial;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub hwver {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $hw = $obj->session()->get('mib-2.47.1.1.1.1.8.1') || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (not defined($hw)) {
 | 
				
			||||||
 | 
					        $obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/ if defined $obj->hw_oid_8886_6_140;
 | 
				
			||||||
 | 
					        $hw = $1 if defined $1;
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $hw if defined $hw;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub brom {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $brom = undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/ if defined $obj->brom_oid_8886_6_140;
 | 
				
			||||||
 | 
					    $brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $brom = $obj->brom_oid || undef if not defined($brom);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,9 +20,7 @@ $VERSION = '3.70-135';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::GLOBALS,
 | 
					    %SNMP::Info::Layer3::GLOBALS,
 | 
				
			||||||
    'model_41752' => 'enterprises.41752.3.1.1.1.3.0',
 | 
					    'model_oid' => 'enterprises.41752.3.1.1.1.3.0',
 | 
				
			||||||
    'model_rotek' => 'enterprises.32761.3.1.1.1.3.0',
 | 
					 | 
				
			||||||
    'submodel'    => 'enterprises.32761.3.1.1.1.2.0',
 | 
					 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
 | 
					%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
 | 
				
			||||||
@@ -34,33 +32,91 @@ sub vendor {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub os {
 | 
					sub os {
 | 
				
			||||||
    return 'rotek';
 | 
					    return 'rotek-os';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub os_ver {
 | 
					sub os_ver {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    my $os_ver;
 | 
					    my $os_ver = undef;
 | 
				
			||||||
    my $os_ver_oid = $obj->description();
 | 
					 | 
				
			||||||
        $os_ver_oid =~ /\,\s(.*)/;
 | 
					 | 
				
			||||||
        $os_ver = $1;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (defined $os_ver) {
 | 
					    my $os_ver_oid = $obj->os_ver_oid_41752 || undef;
 | 
				
			||||||
        return $os_ver;
 | 
					    $os_ver_oid =~ /ROS_(.*)\.(\d+)/ || undef $_ if defined $os_ver_oid;
 | 
				
			||||||
 | 
					    $os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while(not defined $os_ver) {
 | 
				
			||||||
 | 
					        $obj->description =~ /\,\s(.*)/;
 | 
				
			||||||
 | 
					        $os_ver = $1 if defined $1;
 | 
				
			||||||
 | 
					        last if defined $os_ver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $obj->description() =~ /[\w,\W,\d,\-]+v\d+rev\d+\s+([\d,\.]+)\s+[\w,\-,\d]+$/;
 | 
				
			||||||
 | 
					        $os_ver = $1 if defined $1;
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $os_ver if defined $os_ver;
 | 
				
			||||||
    return 'unknown';
 | 
					    return 'unknown';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub brom {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $brom = undef;
 | 
				
			||||||
 | 
					    $obj->brom_oid_41752 =~ /.*_BOOT_(.*)_(\d+)/;
 | 
				
			||||||
 | 
					    $brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $brom if defined $brom;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub model {
 | 
					sub model {
 | 
				
			||||||
    my $obj = shift;
 | 
					    my $obj = shift;
 | 
				
			||||||
    my $id = $obj->id();
 | 
					    my $id = $obj->id();
 | 
				
			||||||
    if ($id =~ /32761$/) {
 | 
					    my $hw = $obj->hwver() || undef;
 | 
				
			||||||
        return $obj->model_rotek . ' (' . $obj->submodel . ')';
 | 
					    my $model = $obj->model_oid || undef;
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
    elsif ($id =~ /41752$/) {
 | 
					    while (not defined $model) {
 | 
				
			||||||
        return $obj->model_41752;
 | 
					        $model = $obj->model_oid_41752 || undef;
 | 
				
			||||||
 | 
					        last if defined $model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $obj->description() =~ /([\w,\W,\d,\-]+)v\d+rev\d+\s+[\d,\.]+\s+[\w,\-,\d]+$/;
 | 
				
			||||||
 | 
					        $model = $1 if defined $1;
 | 
				
			||||||
 | 
					        last if defined $model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $model .= ' HW:' . $hw if defined $hw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $model if defined $model;
 | 
				
			||||||
    return $obj->SUPER::model();
 | 
					    return $obj->SUPER::model();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub serial {
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $serial = $obj->serial_oid_41752 || undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (not defined $serial) {
 | 
				
			||||||
 | 
					        $obj->description() =~ /[\w,\W,\d,\-]+v\d+rev\d+\s+[\d,\.]+\s+([\w,\-,\d]+)$/;
 | 
				
			||||||
 | 
					        $serial = $1 if defined $1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $serial if defined $serial;
 | 
				
			||||||
 | 
					    return $obj->SUPER::serial();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub hwver{
 | 
				
			||||||
 | 
					    my $obj = shift;
 | 
				
			||||||
 | 
					    my $hw = ($obj->hw_oid_41752 =~ /.*\sversion\s(.*)/)[0] || undef if defined $obj->hw_oid_41752;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (not defined $hw) {
 | 
				
			||||||
 | 
					        $obj->description() =~ /[\w,\W,\d,\-]+(v\d+rev\d+)\s+[\d,\.]+\s+[\w,\-,\d]+$/;
 | 
				
			||||||
 | 
					        $hw = $1 if defined $1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        last;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $hw if defined $hw;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -111,7 +167,7 @@ Returns 'rotek'
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item $obj->os()
 | 
					=item $obj->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns 'rotek'
 | 
					Returns 'rotek-os'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $obj->os_ver()
 | 
					=item $obj->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user