Initial Import.
This commit is contained in:
		
							
								
								
									
										210
									
								
								Info/Layer3/Netscreen.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										210
									
								
								Info/Layer3/Netscreen.pm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,210 @@ | ||||
| # SNMP::Info::Layer3::Netscreen | ||||
| # Kent Hamilton | ||||
| # $Id$ | ||||
| # | ||||
| # 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::Layer3::Netscreen; | ||||
| $VERSION = 1.05; | ||||
| use strict; | ||||
|  | ||||
| use Exporter; | ||||
| use SNMP::Info::Layer3; | ||||
|  | ||||
| @SNMP::Info::Layer3::Netscreen::ISA = qw/SNMP::Info::Layer3 Exporter/; | ||||
| @SNMP::Info::Layer3::Netscreen::EXPORT_OK = qw//; | ||||
|  | ||||
| use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/; | ||||
|   | ||||
| %MIBS    = (  | ||||
| 	     %SNMP::Info::Layer3::MIBS, | ||||
| 	     'NETSCREEN-SMI'             => 'netscreenSetting', | ||||
|              'NETSCREEN-PRODUCTS-MIB'    => 'netscreenGeneric', | ||||
| 	     'NETSCREEN-INTERFACE-MIB'   => 'nsIfIndex', | ||||
|              'NETSCREEN-SET-GEN-MIB'     => 'nsSetGenSwVer', | ||||
|            ); | ||||
|  | ||||
| %GLOBALS = ( | ||||
|              %SNMP::Info::Layer3::GLOBALS, | ||||
| 	     'os_version'   =>  'nsSetGenSwVer', | ||||
|            ); | ||||
|  | ||||
| %FUNCS   = ( | ||||
|              %SNMP::Info::Layer3::FUNCS, | ||||
|            ); | ||||
|  | ||||
| %MUNGE   = ( | ||||
|              %SNMP::Info::Layer3::MUNGE, | ||||
|            ); | ||||
|  | ||||
| sub layers { | ||||
| 	return '01001100'; | ||||
| } | ||||
|  | ||||
| sub vendor { | ||||
|     return 'netscreen'; | ||||
| } | ||||
|  | ||||
| sub os { | ||||
|     return 'screenos'; | ||||
| } | ||||
|  | ||||
| sub os_ver { | ||||
|     my $netscreen = shift; | ||||
|  | ||||
|     my $descr = $netscreen->description(); | ||||
|     if ( $descr =~ m/version (\d\S*) \(SN: /) { | ||||
|       return $1; | ||||
|     } | ||||
|     return undef; | ||||
| } | ||||
|  | ||||
| sub serial { | ||||
|     my $netscreen = shift; | ||||
|  | ||||
|     my $e_serial = $netscreen->e_serial() || {}; | ||||
|  | ||||
|     my $serial = $e_serial->{1} || undef; | ||||
|  | ||||
|     return $1 if (defined $serial and $serial =~ /(\d+)/); | ||||
|     my $descr = $netscreen->description(); | ||||
|     if ( $descr =~ m/version .*\(SN: (\d\S*),/) { | ||||
|         return $1; | ||||
|     } | ||||
|     return undef; | ||||
| } | ||||
|  | ||||
| 1; | ||||
|  | ||||
| __END__ | ||||
|  | ||||
| =head1 NAME | ||||
|  | ||||
| SNMP::Info::Layer3::Netscreen - SNMP Interface to Juniper Netscreen Devices | ||||
|  | ||||
| =head1 AUTHOR | ||||
|  | ||||
| Kent Hamilton | ||||
|  | ||||
| =head1 SYNOPSIS | ||||
|  | ||||
|     #Let SNMP::Info determine the correct subclass for you. | ||||
|  | ||||
|     my $netscreen = new SNMP::Info( | ||||
|                           AutoSpecify => 1, | ||||
|                           Debug       => 1, | ||||
|                           # These arguments are passed directly on to SNMP::Session | ||||
|                           DestHost    => 'myswitch', | ||||
|                           Community   => 'public', | ||||
|                           Version     => 2 | ||||
|                         )  | ||||
|  | ||||
|     or die "Can't connect to DestHost.\n"; | ||||
|  | ||||
|     my $class = $netscreen->class(); | ||||
|     print "SNMP::Info determined this device to fall under subclass : $class\n"; | ||||
|  | ||||
| =head1 DESCRIPTION | ||||
|  | ||||
| Provides abstraction to the configuration information obtainable from a  | ||||
| Netscreen device through SNMP. See inherited classes' documentation for  | ||||
| inherited methods. | ||||
|  | ||||
| my $netscreen = new SNMP::Info::Layer3::Netscreen(...); | ||||
|  | ||||
| =head2 Inherited Classes | ||||
|  | ||||
| =over | ||||
|  | ||||
| =item SNMP::Info::Layer2 | ||||
|  | ||||
| =back | ||||
|  | ||||
| =head2 Required MIBs | ||||
|  | ||||
| =over | ||||
|  | ||||
| =item NETSCREEN-SMI | ||||
|  | ||||
| =item NETSCREEN-PRODUCTS-MIB | ||||
|  | ||||
| =item NETSCREEN-INTERFACE-MIB | ||||
|  | ||||
| =item NETSCREEN-SET-GEN-MIB | ||||
|  | ||||
| =item Inherited Classes | ||||
|  | ||||
| See L<SNMP::Info::Layer3/"Required MIBs"> and its inherited classes. | ||||
|  | ||||
| =back | ||||
|  | ||||
| =head1 GLOBALS | ||||
|  | ||||
| These are methods that return scalar value from SNMP | ||||
|  | ||||
| =over | ||||
|  | ||||
| =item $netscreen->vendor() | ||||
|  | ||||
| Returns 'netscreen' | ||||
|  | ||||
| =item $netscreen->os() | ||||
|  | ||||
| Returns 'screenos' | ||||
|  | ||||
| =item $netscreen->os_ver() | ||||
|  | ||||
| Extracts the OS version from the description string. | ||||
|  | ||||
| =item $netscreen->serial() | ||||
|  | ||||
| Returns serial number.. | ||||
|  | ||||
| =back | ||||
|  | ||||
| =head2 Overrides | ||||
|  | ||||
| =over | ||||
|  | ||||
| =item $netscreen->layers() | ||||
|  | ||||
| Returns 00000011.  Class emulates Layer 2 functionality through proprietary MIBs. | ||||
|  | ||||
| =back | ||||
|  | ||||
| =head2 Globals imported from SNMP::Info::Layer2 | ||||
|  | ||||
| See L<SNMP::Info::Layer3/"GLOBALS"> 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::Layer2 | ||||
|  | ||||
| See L<SNMP::Info::Layer3/"TABLE ENTRIES"> for details. | ||||
|  | ||||
| =cut | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Eric Miller
					Eric Miller