New configuration option 'IgnoreNetSNMPConf' will ignore Net-SNMP configuration files on object initialization
This commit is contained in:
		@@ -19,6 +19,8 @@ version 3.00
 | 
				
			|||||||
    * Support for newer Radware Alteon ADC switches 4408/4416/5412/5224 and
 | 
					    * Support for newer Radware Alteon ADC switches 4408/4416/5412/5224 and
 | 
				
			||||||
      older AWS 2000/3000 series in existing L3::AlteonAD
 | 
					      older AWS 2000/3000 series in existing L3::AlteonAD
 | 
				
			||||||
    * Support for H3C & HP A-series in new class L3::H3C
 | 
					    * Support for H3C & HP A-series in new class L3::H3C
 | 
				
			||||||
 | 
					    * New configuration option IgnoreNetSNMPConf will ignore Net-SNMP
 | 
				
			||||||
 | 
					      configuration files on object initialization
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    [ENHANCEMENTS]
 | 
					    [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										53
									
								
								Info.pm
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								Info.pm
									
									
									
									
									
								
							@@ -24,7 +24,7 @@ use vars
 | 
				
			|||||||
    qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
 | 
					    qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
 | 
				
			||||||
    $NOSUCH $BIGINT $REPEATERS/;
 | 
					    $NOSUCH $BIGINT $REPEATERS/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '2.09';
 | 
					$VERSION = '3.00_001';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 NAME
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,7 +32,7 @@ SNMP::Info - Object Oriented Perl5 Interface to Network devices and MIBs through
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=head1 VERSION
 | 
					=head1 VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP::Info - Version 2.09
 | 
					SNMP::Info - Version 3.00_001
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 AUTHOR
 | 
					=head1 AUTHOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -870,6 +870,7 @@ Creates a new object and connects via SNMP::Session.
 | 
				
			|||||||
                            'BigInt'           => 1,
 | 
					                            'BigInt'           => 1,
 | 
				
			||||||
                            'BulkWalk'         => 1,
 | 
					                            'BulkWalk'         => 1,
 | 
				
			||||||
                            'BulkRepeaters'    => 20,
 | 
					                            'BulkRepeaters'    => 20,
 | 
				
			||||||
 | 
					                            'IgnoreNetSNMPConf => 1,
 | 
				
			||||||
                            'LoopDetect'       => 1,
 | 
					                            'LoopDetect'       => 1,
 | 
				
			||||||
                            'DestHost'         => 'myrouter',
 | 
					                            'DestHost'         => 'myrouter',
 | 
				
			||||||
                            'Community'        => 'public',
 | 
					                            'Community'        => 'public',
 | 
				
			||||||
@@ -918,7 +919,20 @@ operation, Net-SNMP's internal bulkwalk function must detect the loop.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Set to C<0> to turn off loop detection.
 | 
					Set to C<0> to turn off loop detection.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(default 1, which measn "on")
 | 
					(default 1, which means "on")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item IgnoreNetSNMPConf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Net-SNMP version 5.0 and higher read configuration files, snmp.conf or
 | 
				
			||||||
 | 
					snmp.local.conf, from /etc/snmp, /usr/share/snmp, /usr/lib(64)/snmp, or
 | 
				
			||||||
 | 
					$HOME/.snmp and uses those settings to automatically parse MIB files, etc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Set to C<1> "on" to ignore Net-SNMP configuration files by overriding the
 | 
				
			||||||
 | 
					C<SNMPCONFPATH> environmental varible during object initialization. Note:
 | 
				
			||||||
 | 
					MibDirs must be defined or Net-SNMP will not be able to load MIB's and
 | 
				
			||||||
 | 
					initalize the object.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(default 0, which means "off")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item Debug
 | 
					=item Debug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1039,6 +1053,11 @@ sub new {
 | 
				
			|||||||
        delete $sess_args{LoopDetect};
 | 
					        delete $sess_args{LoopDetect};
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( defined $args{IgnoreNetSNMPConf} ) {
 | 
				
			||||||
 | 
					        $new_obj->{IgnoreNetSNMPConf} = $args{IgnoreNetSNMPConf} || 0;
 | 
				
			||||||
 | 
					        delete $sess_args{IgnoreNetSNMPConf};
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $sess = undef;
 | 
					    my $sess = undef;
 | 
				
			||||||
    if ( defined $args{Session} ) {
 | 
					    if ( defined $args{Session} ) {
 | 
				
			||||||
        $sess = $args{Session};
 | 
					        $sess = $args{Session};
 | 
				
			||||||
@@ -1124,6 +1143,7 @@ sub update {
 | 
				
			|||||||
    delete $sess_args{BulkRepeaters};
 | 
					    delete $sess_args{BulkRepeaters};
 | 
				
			||||||
    delete $sess_args{BulkWalk};
 | 
					    delete $sess_args{BulkWalk};
 | 
				
			||||||
    delete $sess_args{LoopDetect};
 | 
					    delete $sess_args{LoopDetect};
 | 
				
			||||||
 | 
					    delete $sess_args{IgnoreNetSNMPConf};
 | 
				
			||||||
    delete $sess_args{BigInt};
 | 
					    delete $sess_args{BigInt};
 | 
				
			||||||
    delete $sess_args{MibDirs};
 | 
					    delete $sess_args{MibDirs};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1316,7 +1336,6 @@ sub device_type {
 | 
				
			|||||||
        9303 => 'SNMP::Info::Layer3::PacketFront',
 | 
					        9303 => 'SNMP::Info::Layer3::PacketFront',
 | 
				
			||||||
        12325 => 'SNMP::Info::Layer3::Pf',
 | 
					        12325 => 'SNMP::Info::Layer3::Pf',
 | 
				
			||||||
        14988 => 'SNMP::Info::Layer3::Mikrotik',
 | 
					        14988 => 'SNMP::Info::Layer3::Mikrotik',
 | 
				
			||||||
        25506 => 'SNMP::Info::Layer3::H3C',
 | 
					 | 
				
			||||||
        30065 => 'SNMP::Info::Layer3::Arista',
 | 
					        30065 => 'SNMP::Info::Layer3::Arista',
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3236,7 +3255,22 @@ Used internally.  Loads all entries in %MIBS.
 | 
				
			|||||||
sub init {
 | 
					sub init {
 | 
				
			||||||
    my $self = shift;
 | 
					    my $self = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    &SNMP::initMib;
 | 
					    # Get MibDirs if provided
 | 
				
			||||||
 | 
					    my $mibdirs = $self->{mibdirs} || [];
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # SNMP::initMib and SNMP::addMibDirs both look for some inital MIBs
 | 
				
			||||||
 | 
					    # so if we are not using Net-SNMP configuration files we need to
 | 
				
			||||||
 | 
					    # specify where the MIBs are before those calls.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Ignore snmp.conf and snmp.local.conf files if IgnoreNetSNMPConf
 | 
				
			||||||
 | 
					    # specified
 | 
				
			||||||
 | 
					    local $ENV{'SNMPCONFPATH'} = '' if $self->{IgnoreNetSNMPConf};
 | 
				
			||||||
 | 
					    # We need to provide MIBDIRS if we are not getting them from a
 | 
				
			||||||
 | 
					    # configuration file
 | 
				
			||||||
 | 
					    my $mibdir = join (':', @$mibdirs);
 | 
				
			||||||
 | 
					    local $ENV{'MIBDIRS'} = "$mibdir" if $self->{IgnoreNetSNMPConf};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SNMP::initMib;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $version = $SNMP::VERSION;
 | 
					    my $version = $SNMP::VERSION;
 | 
				
			||||||
    my ( $major, $minor, $rev ) = split( '\.', $version );
 | 
					    my ( $major, $minor, $rev ) = split( '\.', $version );
 | 
				
			||||||
@@ -3250,16 +3284,13 @@ sub init {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        # This is a bug in net-snmp 5.0.1 perl module
 | 
					        # This is a bug in net-snmp 5.0.1 perl module
 | 
				
			||||||
        # see http://groups.google.com/groups?th=47aed6bf7be6a0f5
 | 
					        # see http://groups.google.com/groups?th=47aed6bf7be6a0f5
 | 
				
			||||||
        &SNMP::init_snmp("perl");
 | 
					        SNMP::init_snmp("perl");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Add MibDirs
 | 
					 | 
				
			||||||
    my $mibdirs = $self->{mibdirs} || [];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    foreach my $d (@$mibdirs) {
 | 
					    foreach my $d (@$mibdirs) {
 | 
				
			||||||
        next unless -d $d;
 | 
					        next unless -d $d;
 | 
				
			||||||
        print "SNMP::Info::init() - Adding new mibdir:$d\n" if $self->debug();
 | 
					        print "SNMP::Info::init() - Adding new mibdir:$d\n" if $self->debug();
 | 
				
			||||||
        &SNMP::addMibDirs($d);
 | 
					        SNMP::addMibDirs($d);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $mibs = $self->mibs();
 | 
					    my $mibs = $self->mibs();
 | 
				
			||||||
@@ -3267,7 +3298,7 @@ sub init {
 | 
				
			|||||||
    foreach my $mib ( keys %$mibs ) {
 | 
					    foreach my $mib ( keys %$mibs ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #print "SNMP::Info::init() - Loading mib:$mib\n" if $self->debug();
 | 
					        #print "SNMP::Info::init() - Loading mib:$mib\n" if $self->debug();
 | 
				
			||||||
        &SNMP::loadModules("$mib");
 | 
					        SNMP::loadModules("$mib");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        unless ( defined $SNMP::MIB{ $mibs->{$mib} } ) {
 | 
					        unless ( defined $SNMP::MIB{ $mibs->{$mib} } ) {
 | 
				
			||||||
            croak "The $mib did not load. See README for $self->{class}\n";
 | 
					            croak "The $mib did not load. See README for $self->{class}\n";
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user