Compare commits
	
		
			9 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					bd457307ff | ||
| 
						 | 
					f988cecc4d | ||
| 
						 | 
					d2f67b2db2 | ||
| 
						 | 
					c4a4c3d5e6 | ||
| 
						 | 
					fa38fdbc2b | ||
| 
						 | 
					2e03e3faca | ||
| 
						 | 
					e448915e0b | ||
| 
						 | 
					37836bedac | ||
| 
						 | 
					a60663b238 | 
							
								
								
									
										11
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -1,6 +1,13 @@
 | 
				
			|||||||
SNMP::Info - Perl5 OO Interface to Network Devices and SNMP MIBs
 | 
					SNMP::Info - Perl5 OO Interface to Network Devices and SNMP MIBs
 | 
				
			||||||
ChangeLog $Id$
 | 
					ChangeLog $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 0.5 (06/10/03)
 | 
				
			||||||
 | 
					    * Added ability to get paritial tables.  For example to get the
 | 
				
			||||||
 | 
					      IP routing table for 128.114.*  you can do 
 | 
				
			||||||
 | 
					      $ipr = $dev->ipr_dest('128.114');
 | 
				
			||||||
 | 
					    * Added IP Routing Table entries from RFC1213 to SNMP::Info
 | 
				
			||||||
 | 
					    * minor bug fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 0.4 (04/29/03)
 | 
					version 0.4 (04/29/03)
 | 
				
			||||||
    * BIG CHANGE ! Internal Data structure has changed.  
 | 
					    * BIG CHANGE ! Internal Data structure has changed.  
 | 
				
			||||||
    * Added clear_cache() method
 | 
					    * Added clear_cache() method
 | 
				
			||||||
@@ -24,11 +31,11 @@ version 0.3 (03/06/03)
 | 
				
			|||||||
      and _load_attr
 | 
					      and _load_attr
 | 
				
			||||||
    * Added more debugging
 | 
					    * Added more debugging
 | 
				
			||||||
    * Added info and munging for c_capabilities in SNMP::Info::CD
 | 
					    * Added info and munging for c_capabilities in SNMP::Info::CD
 | 
				
			||||||
      Thanks to Martin Lorensen <martin@lorensen.dk>
 | 
					      Thanks to Martin Lorensen <martin /at- lorensen.dk>
 | 
				
			||||||
    * Removed requirement for SNMP in the Makefile.PL and moved it to t/prereq.t
 | 
					    * Removed requirement for SNMP in the Makefile.PL and moved it to t/prereq.t
 | 
				
			||||||
      so that the Module will install via CPAN without trying to install the old
 | 
					      so that the Module will install via CPAN without trying to install the old
 | 
				
			||||||
      4.2.0 version of SNMP on CPAN.  Will now fail in the test phase. 
 | 
					      4.2.0 version of SNMP on CPAN.  Will now fail in the test phase. 
 | 
				
			||||||
      Thanks again to Martin Lorensen <martin@lorensen.dk>
 | 
					      Thanks again to Martin Lorensen <martin /at- lorensen.dk>
 | 
				
			||||||
    * Moved tests from test.pl to t/*
 | 
					    * Moved tests from test.pl to t/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 0.2 (02/19/03)
 | 
					version 0.2 (02/19/03)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										228
									
								
								Info.pm
									
									
									
									
									
								
							
							
						
						
									
										228
									
								
								Info.pm
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
				
			|||||||
# See COPYRIGHT at bottom
 | 
					# See COPYRIGHT at bottom
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info;
 | 
					package SNMP::Info;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Exporter;
 | 
					use Exporter;
 | 
				
			||||||
@@ -27,7 +27,7 @@ SNMP::Info - Object Oriented Perl5 Interface to Network devices and MIBs through
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=head1 VERSION
 | 
					=head1 VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP::Info - Version 0.4
 | 
					SNMP::Info - Version 0.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 AUTHOR
 | 
					=head1 AUTHOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -85,6 +85,11 @@ SNMP::Info was created at UCSC for the netdisco project (www.netdisco.org)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SUPPORT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please direct all support, help, and bug requests to the snmp-info-users Mailing List
 | 
				
			||||||
 | 
					at L<http://lists.sourceforge.net/lists/listinfo/snmp-info-users>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 DESCRIPTION 
 | 
					=head1 DESCRIPTION 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP::Info gives an object oriented interface to information obtained through SNMP.
 | 
					SNMP::Info gives an object oriented interface to information obtained through SNMP.
 | 
				
			||||||
@@ -799,6 +804,7 @@ correspond with the number of physical ports
 | 
				
			|||||||
Each of these methods returns a hash_reference to a hash keyed on the interface index in SNMP.
 | 
					Each of these methods returns a hash_reference to a hash keyed on the interface index in SNMP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Example : $info->interfaces() might return  
 | 
					Example : $info->interfaces() might return  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    { '1.12' => 'FastEthernet/0',
 | 
					    { '1.12' => 'FastEthernet/0',
 | 
				
			||||||
      '2.15' => 'FastEthernet/1',
 | 
					      '2.15' => 'FastEthernet/1',
 | 
				
			||||||
      '9.99' => 'FastEthernet/2'
 | 
					      '9.99' => 'FastEthernet/2'
 | 
				
			||||||
@@ -807,6 +813,20 @@ Example : $info->interfaces() might return
 | 
				
			|||||||
The key is what you would see if you were to do an snmpwalk, and in some cases changes between reboots of
 | 
					The key is what you would see if you were to do an snmpwalk, and in some cases changes between reboots of
 | 
				
			||||||
the network device.
 | 
					the network device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Partial Table Fetches
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you want to get only a part of an SNMP table and you know the IID for the part of the table that you
 | 
				
			||||||
 | 
					want, you can specify it in the call:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $local_routes = $info->ipr_route('192.168.0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will only fetch entries in the table that start with C<192.168.0>, which in this case are routes on the local
 | 
				
			||||||
 | 
					network. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Remember that you must supply the partial IID (a numeric OID).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Partial table results are not cached.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head3 Interface Information
 | 
					=head3 Interface Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=over
 | 
					=over
 | 
				
			||||||
@@ -996,6 +1016,139 @@ Gives broadcast address for IP table entry.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head3 IP Routing Table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_route()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The route in question.  A value of 0.0.0.0 is the default gateway route.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteDest>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_if()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The interface (IID) that the route is on.  Use interfaces() to map.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteIfIndex>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_1()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Primary routing metric for this route. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteMetric1>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_2()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If metrics are not used, they should be set to -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteMetric2>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_3()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteMetric3>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_4()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteMetric4>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_5()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteMetric5>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_dest()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From RFC1213:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  "The IP address of the next hop of this route.
 | 
				
			||||||
 | 
					  (In the case of a route bound to an interface
 | 
				
			||||||
 | 
					  which is realized via a broadcast media, the value
 | 
				
			||||||
 | 
					  of this field is the agent's IP address on that
 | 
				
			||||||
 | 
					  interface.)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteNextHop>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_type()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From RFC1213:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    other(1),        -- none of the following
 | 
				
			||||||
 | 
					    invalid(2),      -- an invalidated route
 | 
				
			||||||
 | 
					                     -- route to directly
 | 
				
			||||||
 | 
					    direct(3),       -- connected (sub-)network
 | 
				
			||||||
 | 
					                     -- route to a non-local
 | 
				
			||||||
 | 
					    indirect(4)      -- host/network/sub-network
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "The type of route.  Note that the values
 | 
				
			||||||
 | 
					      direct(3) and indirect(4) refer to the notion of
 | 
				
			||||||
 | 
					      direct and indirect routing in the IP
 | 
				
			||||||
 | 
					      architecture.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      Setting this object to the value invalid(2) has
 | 
				
			||||||
 | 
					      the effect of invalidating the corresponding entry
 | 
				
			||||||
 | 
					      in the ipRouteTable object.  That is, it
 | 
				
			||||||
 | 
					      effectively disassociates the destination
 | 
				
			||||||
 | 
					      identified with said entry from the route
 | 
				
			||||||
 | 
					      identified with said entry.  It is an
 | 
				
			||||||
 | 
					      implementation-specific matter as to whether the
 | 
				
			||||||
 | 
					      agent removes an invalidated entry from the table.
 | 
				
			||||||
 | 
					      Accordingly, management stations must be prepared
 | 
				
			||||||
 | 
					      to receive tabular information from agents that
 | 
				
			||||||
 | 
					      corresponds to entries not currently in use.
 | 
				
			||||||
 | 
					      Proper interpretation of such entries requires
 | 
				
			||||||
 | 
					      examination of the relevant ipRouteType object."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteType>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_proto()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From RFC1213:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    other(1),       -- none of the following
 | 
				
			||||||
 | 
					                    -- non-protocol information,
 | 
				
			||||||
 | 
					                    -- e.g., manually configured
 | 
				
			||||||
 | 
					    local(2),       -- entries
 | 
				
			||||||
 | 
					                    -- set via a network
 | 
				
			||||||
 | 
					    netmgmt(3),     -- management protocol
 | 
				
			||||||
 | 
					                    -- obtained via ICMP,
 | 
				
			||||||
 | 
					    icmp(4),        -- e.g., Redirect
 | 
				
			||||||
 | 
					                    -- the remaining values are
 | 
				
			||||||
 | 
					                    -- all gateway routing
 | 
				
			||||||
 | 
					                    -- protocols
 | 
				
			||||||
 | 
					    egp(5),
 | 
				
			||||||
 | 
					    ggp(6),
 | 
				
			||||||
 | 
					    hello(7),
 | 
				
			||||||
 | 
					    rip(8),
 | 
				
			||||||
 | 
					    is-is(9),
 | 
				
			||||||
 | 
					    es-is(10),
 | 
				
			||||||
 | 
					    ciscoIgrp(11),
 | 
				
			||||||
 | 
					    bbnSpfIgp(12),
 | 
				
			||||||
 | 
					    ospf(13),
 | 
				
			||||||
 | 
					    bgp(14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteProto>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_age()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Seconds since route was last updated or validated.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteAge>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_mask()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subnet Mask of route. 0.0.0.0 for default gateway.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteMask>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipr_info()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Reference to MIB definition specific to routing protocol.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<ipRouteInfo>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Setting data via SNMP
 | 
					=head2 Setting data via SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This section explains how to use SNMP::Info to do SNMP Set operations.
 | 
					This section explains how to use SNMP::Info to do SNMP Set operations.
 | 
				
			||||||
@@ -1126,7 +1279,21 @@ These are table entries, such as the IfIndex
 | 
				
			|||||||
            'i_pkts_multi_out64' => 'ifHCOutMulticastPkts',
 | 
					            'i_pkts_multi_out64' => 'ifHCOutMulticastPkts',
 | 
				
			||||||
            'i_pkts_bcast_in64'  => 'ifHCInBroadcastPkts',
 | 
					            'i_pkts_bcast_in64'  => 'ifHCInBroadcastPkts',
 | 
				
			||||||
            'i_pkts_bcast_out64' => 'ifHCOutBroadcastPkts',
 | 
					            'i_pkts_bcast_out64' => 'ifHCOutBroadcastPkts',
 | 
				
			||||||
            'i_alias'            => 'ifAlias'
 | 
					            'i_alias'            => 'ifAlias',
 | 
				
			||||||
 | 
					            # IP Routing Table
 | 
				
			||||||
 | 
					            'ipr_route'=> 'ipRouteDest',
 | 
				
			||||||
 | 
					            'ipr_if'   => 'ipRouteIfIndex',
 | 
				
			||||||
 | 
					            'ipr_1'    => 'ipRouteMetric1',
 | 
				
			||||||
 | 
					            'ipr_2'    => 'ipRouteMetric2',
 | 
				
			||||||
 | 
					            'ipr_3'    => 'ipRouteMetric3',
 | 
				
			||||||
 | 
					            'ipr_4'    => 'ipRouteMetric4',
 | 
				
			||||||
 | 
					            'ipr_5'    => 'ipRouteMetric5',
 | 
				
			||||||
 | 
					            'ipr_dest' => 'ipRouteNextHop',
 | 
				
			||||||
 | 
					            'ipr_type' => 'ipRouteType',
 | 
				
			||||||
 | 
					            'ipr_proto'=> 'ipRouteProto',
 | 
				
			||||||
 | 
					            'ipr_age'  => 'ipRouteAge',
 | 
				
			||||||
 | 
					            'ipr_mask' => 'ipRouteMask',
 | 
				
			||||||
 | 
					            'ipr_info' => 'ipRouteInfo',
 | 
				
			||||||
           );
 | 
					           );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item %MIBS
 | 
					=item %MIBS
 | 
				
			||||||
@@ -1751,20 +1918,37 @@ Called from $info->load_METHOD();
 | 
				
			|||||||
=cut
 | 
					=cut
 | 
				
			||||||
sub _load_attr {
 | 
					sub _load_attr {
 | 
				
			||||||
    my $self = shift;
 | 
					    my $self = shift;
 | 
				
			||||||
    my ($attr,$leaf) = @_;
 | 
					    my ($attr,$leaf,$partial) = @_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $ver    = $self->snmp_ver();
 | 
					    my $ver    = $self->snmp_ver();
 | 
				
			||||||
    my $nosuch = $self->nosuch();
 | 
					    my $nosuch = $self->nosuch();
 | 
				
			||||||
    my $sess   = $self->session();
 | 
					    my $sess   = $self->session();
 | 
				
			||||||
    my $store  = $self->store();
 | 
					    my $store  = $self->store();
 | 
				
			||||||
 | 
					    my $munge  = $self->munge();
 | 
				
			||||||
    return undef unless defined $sess;
 | 
					    return undef unless defined $sess;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Get the callback hash for data munging
 | 
					    # Deal with partial entries.
 | 
				
			||||||
    my $munge = $self->munge();
 | 
					    my $varleaf = $leaf;
 | 
				
			||||||
 | 
					    if (defined $partial) {
 | 
				
			||||||
 | 
					        # If we aren't supplied an OID translate
 | 
				
			||||||
 | 
					        if ($leaf !~ /^[.\d]*$/) {
 | 
				
			||||||
 | 
					            # VarBind will not resolve mixed OID and leaf entries like
 | 
				
			||||||
 | 
					            #   "ipRouteMask.255.255".  So we convert to full OID
 | 
				
			||||||
 | 
					            my $oid = &SNMP::translateObj($leaf);
 | 
				
			||||||
 | 
					            unless (defined $oid) {
 | 
				
			||||||
 | 
					                $self->error_throw("SNMP::Info::_load_attr: Can't translate $leaf.$partial.  Missing MIB?\n");
 | 
				
			||||||
 | 
					                return undef;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            $varleaf = "$oid.$partial";
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $varleaf = "$leaf.$partial";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $self->debug() and print "SNMP::Info::_load_attr $attr : $leaf\n";
 | 
					    $self->debug() and print "SNMP::Info::_load_attr $attr : $leaf", 
 | 
				
			||||||
 | 
					        defined $partial ? "($partial)" : '', "\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $var = new SNMP::Varbind([$leaf]);
 | 
					    my $var = new SNMP::Varbind([$varleaf]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # So devices speaking SNMP v.1 are not supposed to give out 
 | 
					    # So devices speaking SNMP v.1 are not supposed to give out 
 | 
				
			||||||
    # data from SNMP2, but most do.  Net-SNMP, being very precise 
 | 
					    # data from SNMP2, but most do.  Net-SNMP, being very precise 
 | 
				
			||||||
@@ -1776,11 +1960,13 @@ sub _load_attr {
 | 
				
			|||||||
    if ($ver == 1 and $nosuch and $errornum and $sess->{ErrorStr} =~ /nosuch/i){
 | 
					    if ($ver == 1 and $nosuch and $errornum and $sess->{ErrorStr} =~ /nosuch/i){
 | 
				
			||||||
        $errornum = 0; 
 | 
					        $errornum = 0; 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    my $localstore = undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (! $errornum ){
 | 
					    while (! $errornum ){
 | 
				
			||||||
        $sess->getnext($var);
 | 
					        $sess->getnext($var);
 | 
				
			||||||
        $errornum = $sess->{ErrorNum};
 | 
					        $errornum = $sess->{ErrorNum};
 | 
				
			||||||
 | 
					        #print "$var->[0] $var->[1] $var->[2] $var->[3]\n";
 | 
				
			||||||
        last if $var->[0] ne $leaf;
 | 
					        last if $var->[0] ne $leaf;
 | 
				
			||||||
 | 
					 | 
				
			||||||
        my $iid = $var->[1];
 | 
					        my $iid = $var->[1];
 | 
				
			||||||
        my $val = $var->[2];
 | 
					        my $val = $var->[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1788,6 +1974,13 @@ sub _load_attr {
 | 
				
			|||||||
            $self->error_throw("SNMP::Info::_load_attr: $attr not here");
 | 
					            $self->error_throw("SNMP::Info::_load_attr: $attr not here");
 | 
				
			||||||
            next;
 | 
					            next;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Check to make sure we are still in partial land
 | 
				
			||||||
 | 
					        if (defined $partial and $iid !~ /^$partial$/ and $iid !~ /^$partial\./){
 | 
				
			||||||
 | 
					            #print "$iid makes us leave partial land.\n";
 | 
				
			||||||
 | 
					            last;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($val eq 'NOSUCHOBJECT'){
 | 
					        if ($val eq 'NOSUCHOBJECT'){
 | 
				
			||||||
            $self->error_throw("SNMP::Info::_load_atr: $attr :  NOSUCHOBJECT");
 | 
					            $self->error_throw("SNMP::Info::_load_atr: $attr :  NOSUCHOBJECT");
 | 
				
			||||||
            next;
 | 
					            next;
 | 
				
			||||||
@@ -1804,13 +1997,16 @@ sub _load_attr {
 | 
				
			|||||||
            $val = &$subref($val);
 | 
					            $val = &$subref($val);
 | 
				
			||||||
        } 
 | 
					        } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $store->{$attr}->{$iid}=$val;
 | 
					        $localstore->{$iid}=$val;
 | 
				
			||||||
    } 
 | 
					    } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # mark data as loaded
 | 
					    # Cache data if we are not getting partial data:
 | 
				
			||||||
    $self->{"_${attr}"}++;
 | 
					    if (!defined $partial){
 | 
				
			||||||
 | 
					        $self->{"_${attr}"}++;
 | 
				
			||||||
 | 
					        $store->{$attr}=$localstore;
 | 
				
			||||||
 | 
					    } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $store->{$attr};
 | 
					    return $localstore;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $info->_show_attr()
 | 
					=item $info->_show_attr()
 | 
				
			||||||
@@ -1911,9 +2107,9 @@ sub AUTOLOAD {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Otherwise we must be listed in %FUNCS 
 | 
					    # Otherwise we must be listed in %FUNCS 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Load data if not already cached
 | 
					    # Load data if it both not cached and we are not requesting partial info.
 | 
				
			||||||
    $self->_load_attr( $attr, $funcs{$attr} )
 | 
					    return $self->_load_attr( $attr, $funcs{$attr},@_ )
 | 
				
			||||||
        unless defined $self->{"_${attr}"};
 | 
					        unless (defined $self->{"_${attr}"} and !scalar(@_));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $self->_show_attr($attr);
 | 
					    return $self->_show_attr($attr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Bridge;
 | 
					package SNMP::Info::Bridge;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::CDP;
 | 
					package SNMP::Info::CDP;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::CiscoStats;
 | 
					package SNMP::Info::CiscoStats;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Entity;
 | 
					package SNMP::Info::Entity;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::EtherLike;
 | 
					package SNMP::Info::EtherLike;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer1;
 | 
					package SNMP::Info::Layer1;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer1::Allied;
 | 
					package SNMP::Info::Layer1::Allied;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer1::Asante;
 | 
					package SNMP::Info::Layer1::Asante;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -208,7 +208,7 @@ Asante device through SNMP.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Download from http://www.mibdepot.com
 | 
					Download from http://www.mibdepot.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=items MIBs listed in SNMP::Info::Layer1
 | 
					=item MIBs listed in SNMP::Info::Layer1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer2;
 | 
					package SNMP::Info::Layer2;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer2::Aironet;
 | 
					package SNMP::Info::Layer2::Aironet;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer2::Bay;
 | 
					package SNMP::Info::Layer2::Bay;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.6;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -80,6 +80,7 @@ sub os {
 | 
				
			|||||||
sub os_ver {
 | 
					sub os_ver {
 | 
				
			||||||
    my $bay = shift;
 | 
					    my $bay = shift;
 | 
				
			||||||
    my $descr = $bay->description();
 | 
					    my $descr = $bay->description();
 | 
				
			||||||
 | 
					    return undef unless defined $descr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 303 / 304
 | 
					    # 303 / 304
 | 
				
			||||||
    if ($descr =~ m/Rev: \d+\.\d+\.\d+\.\d+-(\d+\.\d+\.\d+\.\d+)/){
 | 
					    if ($descr =~ m/Rev: \d+\.\d+\.\d+\.\d+-(\d+\.\d+\.\d+\.\d+)/){
 | 
				
			||||||
@@ -96,6 +97,7 @@ sub os_ver {
 | 
				
			|||||||
sub os_bin {
 | 
					sub os_bin {
 | 
				
			||||||
    my $bay = shift;
 | 
					    my $bay = shift;
 | 
				
			||||||
    my $descr = $bay->description();
 | 
					    my $descr = $bay->description();
 | 
				
			||||||
 | 
					    return undef unless defined $descr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 303 / 304
 | 
					    # 303 / 304
 | 
				
			||||||
    if ($descr =~ m/Rev: \d+\.(\d+\.\d+\.\d+)-\d+\.\d+\.\d+\.\d+/){
 | 
					    if ($descr =~ m/Rev: \d+\.(\d+\.\d+\.\d+)-\d+\.\d+\.\d+\.\d+/){
 | 
				
			||||||
@@ -152,7 +154,9 @@ sub i_mac {
 | 
				
			|||||||
sub model {
 | 
					sub model {
 | 
				
			||||||
    my $bay = shift;
 | 
					    my $bay = shift;
 | 
				
			||||||
    my $id = $bay->id();
 | 
					    my $id = $bay->id();
 | 
				
			||||||
 | 
					    return undef unless defined $id;
 | 
				
			||||||
    my $model = &SNMP::translateObj($id);
 | 
					    my $model = &SNMP::translateObj($id);
 | 
				
			||||||
 | 
					    return $id unless defined $model;
 | 
				
			||||||
    $model =~ s/^sreg-//i;
 | 
					    $model =~ s/^sreg-//i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $descr = $bay->description();
 | 
					    my $descr = $bay->description();
 | 
				
			||||||
@@ -257,7 +261,7 @@ sub c_platform {
 | 
				
			|||||||
    return \%c_platform;
 | 
					    return \%c_platform;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 NAME
 | 
					=head1 NAME
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer2::C1900;
 | 
					package SNMP::Info::Layer2::C1900;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.6;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -189,6 +189,8 @@ sub i_name {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    return $i_name;
 | 
					    return $i_name;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 NAME
 | 
					=head1 NAME
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer2::C2900;
 | 
					package SNMP::Info::Layer2::C2900;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer2::Catalyst;
 | 
					package SNMP::Info::Layer2::Catalyst;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer2::HP;
 | 
					package SNMP::Info::Layer2::HP;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer3;
 | 
					package SNMP::Info::Layer3;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer3::Aironet;
 | 
					package SNMP::Info::Layer3::Aironet;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer3::C3550;
 | 
					package SNMP::Info::Layer3::C3550;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::Layer3::Foundry;
 | 
					package SNMP::Info::Layer3::Foundry;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
					# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package SNMP::Info::MAU;
 | 
					package SNMP::Info::MAU;
 | 
				
			||||||
$VERSION = 0.4;
 | 
					$VERSION = 0.5;
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										146
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								README
									
									
									
									
									
								
							@@ -5,7 +5,7 @@ NAME
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
VERSION
 | 
					VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP::Info - Version 0.4
 | 
					    SNMP::Info - Version 0.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AUTHOR
 | 
					AUTHOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,6 +64,12 @@ SYNOPSIS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
     }
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SUPPORT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Please direct all support, help, and bug requests to the snmp-info-users
 | 
				
			||||||
 | 
					    Mailing List at
 | 
				
			||||||
 | 
					    http://lists.sourceforge.net/lists/listinfo/snmp-info-users
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DESCRIPTION
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP::Info gives an object oriented interface to information obtained
 | 
					    SNMP::Info gives an object oriented interface to information obtained
 | 
				
			||||||
@@ -477,12 +483,30 @@ USAGE
 | 
				
			|||||||
    Each of these methods returns a hash_reference to a hash keyed on the
 | 
					    Each of these methods returns a hash_reference to a hash keyed on the
 | 
				
			||||||
    interface index in SNMP.
 | 
					    interface index in SNMP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Example : $info->interfaces() might return { '1.12' => 'FastEthernet/0',
 | 
					    Example : $info->interfaces() might return
 | 
				
			||||||
    '2.15' => 'FastEthernet/1', '9.99' => 'FastEthernet/2' }
 | 
					
 | 
				
			||||||
 | 
					        { '1.12' => 'FastEthernet/0',
 | 
				
			||||||
 | 
					          '2.15' => 'FastEthernet/1',
 | 
				
			||||||
 | 
					          '9.99' => 'FastEthernet/2'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    The key is what you would see if you were to do an snmpwalk, and in some
 | 
					    The key is what you would see if you were to do an snmpwalk, and in some
 | 
				
			||||||
    cases changes between reboots of the network device.
 | 
					    cases changes between reboots of the network device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Partial Table Fetches
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    If you want to get only a part of an SNMP table and you know the IID for
 | 
				
			||||||
 | 
					    the part of the table that you want, you can specify it in the call:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $local_routes = $info->ipr_route('192.168.0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    This will only fetch entries in the table that start with "192.168.0",
 | 
				
			||||||
 | 
					    which in this case are routes on the local network.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Remember that you must supply the partial IID (a numeric OID).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Partial table results are not cached.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Interface Information
 | 
					   Interface Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->interfaces()
 | 
					    $info->interfaces()
 | 
				
			||||||
@@ -638,6 +662,122 @@ USAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        (ipAdEntBcastAddr)
 | 
					        (ipAdEntBcastAddr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   IP Routing Table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_route()
 | 
				
			||||||
 | 
					        The route in question. A value of 0.0.0.0 is the default gateway
 | 
				
			||||||
 | 
					        route.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteDest")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_if()
 | 
				
			||||||
 | 
					        The interface (IID) that the route is on. Use interfaces() to map.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteIfIndex")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_1()
 | 
				
			||||||
 | 
					        Primary routing metric for this route.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteMetric1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_2()
 | 
				
			||||||
 | 
					        If metrics are not used, they should be set to -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteMetric2")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_3()
 | 
				
			||||||
 | 
					        ("ipRouteMetric3")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_4()
 | 
				
			||||||
 | 
					        ("ipRouteMetric4")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_5()
 | 
				
			||||||
 | 
					        ("ipRouteMetric5")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_dest()
 | 
				
			||||||
 | 
					        From RFC1213:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          "The IP address of the next hop of this route.
 | 
				
			||||||
 | 
					          (In the case of a route bound to an interface
 | 
				
			||||||
 | 
					          which is realized via a broadcast media, the value
 | 
				
			||||||
 | 
					          of this field is the agent's IP address on that
 | 
				
			||||||
 | 
					          interface.)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteNextHop")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_type()
 | 
				
			||||||
 | 
					        From RFC1213:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            other(1),        -- none of the following
 | 
				
			||||||
 | 
					            invalid(2),      -- an invalidated route
 | 
				
			||||||
 | 
					                             -- route to directly
 | 
				
			||||||
 | 
					            direct(3),       -- connected (sub-)network
 | 
				
			||||||
 | 
					                             -- route to a non-local
 | 
				
			||||||
 | 
					            indirect(4)      -- host/network/sub-network
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              "The type of route.  Note that the values
 | 
				
			||||||
 | 
					              direct(3) and indirect(4) refer to the notion of
 | 
				
			||||||
 | 
					              direct and indirect routing in the IP
 | 
				
			||||||
 | 
					              architecture.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              Setting this object to the value invalid(2) has
 | 
				
			||||||
 | 
					              the effect of invalidating the corresponding entry
 | 
				
			||||||
 | 
					              in the ipRouteTable object.  That is, it
 | 
				
			||||||
 | 
					              effectively disassociates the destination
 | 
				
			||||||
 | 
					              identified with said entry from the route
 | 
				
			||||||
 | 
					              identified with said entry.  It is an
 | 
				
			||||||
 | 
					              implementation-specific matter as to whether the
 | 
				
			||||||
 | 
					              agent removes an invalidated entry from the table.
 | 
				
			||||||
 | 
					              Accordingly, management stations must be prepared
 | 
				
			||||||
 | 
					              to receive tabular information from agents that
 | 
				
			||||||
 | 
					              corresponds to entries not currently in use.
 | 
				
			||||||
 | 
					              Proper interpretation of such entries requires
 | 
				
			||||||
 | 
					              examination of the relevant ipRouteType object."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteType")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_proto()
 | 
				
			||||||
 | 
					        From RFC1213:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            other(1),       -- none of the following
 | 
				
			||||||
 | 
					                            -- non-protocol information,
 | 
				
			||||||
 | 
					                            -- e.g., manually configured
 | 
				
			||||||
 | 
					            local(2),       -- entries
 | 
				
			||||||
 | 
					                            -- set via a network
 | 
				
			||||||
 | 
					            netmgmt(3),     -- management protocol
 | 
				
			||||||
 | 
					                            -- obtained via ICMP,
 | 
				
			||||||
 | 
					            icmp(4),        -- e.g., Redirect
 | 
				
			||||||
 | 
					                            -- the remaining values are
 | 
				
			||||||
 | 
					                            -- all gateway routing
 | 
				
			||||||
 | 
					                            -- protocols
 | 
				
			||||||
 | 
					            egp(5),
 | 
				
			||||||
 | 
					            ggp(6),
 | 
				
			||||||
 | 
					            hello(7),
 | 
				
			||||||
 | 
					            rip(8),
 | 
				
			||||||
 | 
					            is-is(9),
 | 
				
			||||||
 | 
					            es-is(10),
 | 
				
			||||||
 | 
					            ciscoIgrp(11),
 | 
				
			||||||
 | 
					            bbnSpfIgp(12),
 | 
				
			||||||
 | 
					            ospf(13),
 | 
				
			||||||
 | 
					            bgp(14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteProto")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_age()
 | 
				
			||||||
 | 
					        Seconds since route was last updated or validated.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteAge")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_mask()
 | 
				
			||||||
 | 
					        Subnet Mask of route. 0.0.0.0 for default gateway.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteMask")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $info->ipr_info()
 | 
				
			||||||
 | 
					        Reference to MIB definition specific to routing protocol.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ("ipRouteInfo")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Setting data via SNMP
 | 
					  Setting data via SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    This section explains how to use SNMP::Info to do SNMP Set operations.
 | 
					    This section explains how to use SNMP::Info to do SNMP Set operations.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user