2668 lines
		
	
	
		
			78 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			2668 lines
		
	
	
		
			78 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
NAME
 | 
						|
 | 
						|
    SNMP::Info - OO Interface to Network devices and MIBs through SNMP
 | 
						|
 | 
						|
VERSION
 | 
						|
 | 
						|
    SNMP::Info - Version 3.95
 | 
						|
 | 
						|
AUTHOR
 | 
						|
 | 
						|
    SNMP::Info is maintained by team of Open Source authors headed by Eric
 | 
						|
    Miller, Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
 | 
						|
 | 
						|
    Please visit https://github.com/netdisco/snmp-info/ for the most
 | 
						|
    up-to-date list of developers.
 | 
						|
 | 
						|
    SNMP::Info was originally created at UCSC for the Netdisco project
 | 
						|
    http://netdisco.org by Max Baker.
 | 
						|
 | 
						|
DEVICES SUPPORTED
 | 
						|
 | 
						|
    There are now generic classes for most types of device and so the
 | 
						|
    authors recommend loading SNMP::Info with AutoSpecify, and then
 | 
						|
    reporting to the mail list any missing functionality (such as neighbor
 | 
						|
    discovery tables).
 | 
						|
 | 
						|
SYNOPSIS
 | 
						|
 | 
						|
     use SNMP::Info;
 | 
						|
    
 | 
						|
     my $info = SNMP::Info->new({
 | 
						|
                                # Auto Discover your Device Class (Cisco, Juniper, etc ...)
 | 
						|
                                AutoSpecify => 1,
 | 
						|
                                Debug       => 1,
 | 
						|
    
 | 
						|
                                # The rest is passed to SNMP::Session
 | 
						|
                                DestHost    => 'router',
 | 
						|
                                Community   => 'public',
 | 
						|
                                Version     => 2
 | 
						|
    
 | 
						|
                                # Parameter reference for SNMPv3
 | 
						|
                                # Version   => 3
 | 
						|
                                # SecLevel  => 'authPriv', # authPriv|authNoPriv|noAuthNoPriv
 | 
						|
                                # SecName   => 'myuser',
 | 
						|
                                # AuthProto => 'MD5',      # MD5|SHA
 | 
						|
                                # AuthPass  => 'authp4ss',
 | 
						|
                                # PrivProto => 'DES',      # DES|AES
 | 
						|
                                # PrivPass  => 'pr1vp4ss',
 | 
						|
                               });
 | 
						|
    
 | 
						|
     my $err = $info->error();
 | 
						|
     die $err if defined $err;
 | 
						|
     # usually a wrong DestHost or Community or Version if you have trouble here
 | 
						|
    
 | 
						|
     my $name  = $info->name();
 | 
						|
     my $class = $info->class();
 | 
						|
     print "SNMP::Info is using this device class : $class\n";
 | 
						|
    
 | 
						|
     # Find out the Duplex status for the ports
 | 
						|
     my $interfaces = $info->interfaces();
 | 
						|
     my $i_duplex   = $info->i_duplex();
 | 
						|
    
 | 
						|
     # Get CDP Neighbor info
 | 
						|
     my $c_if       = $info->c_if();
 | 
						|
     my $c_ip       = $info->c_ip();
 | 
						|
     my $c_port     = $info->c_port();
 | 
						|
    
 | 
						|
     # Print out data per port
 | 
						|
     foreach my $iid (keys %$interfaces){
 | 
						|
        my $duplex = $i_duplex->{$iid};
 | 
						|
        # Print out physical port name, not snmp iid
 | 
						|
        my $port  = $interfaces->{$iid};
 | 
						|
    
 | 
						|
        print "$port: ";
 | 
						|
        print "$duplex duplex" if defined $duplex;
 | 
						|
    
 | 
						|
        # The CDP Table has table entries different than the interface tables.
 | 
						|
        # So we use c_if to get the map from cdp table to interface table.
 | 
						|
    
 | 
						|
        my %c_map = reverse %$c_if;
 | 
						|
        my $c_key = $c_map{$iid};
 | 
						|
        unless (defined $c_key) {
 | 
						|
             print "\n\n";
 | 
						|
             next;
 | 
						|
         }
 | 
						|
        my $neighbor_ip   = $c_ip->{$c_key};
 | 
						|
        my $neighbor_port = $c_port->{$c_key};
 | 
						|
    
 | 
						|
        print " connected to $neighbor_ip / $neighbor_port\n" if defined $neighbor_ip;
 | 
						|
        print "\n";
 | 
						|
    
 | 
						|
     }
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
    SNMP::Info gives an object oriented interface to information obtained
 | 
						|
    through SNMP.
 | 
						|
 | 
						|
    This module is geared towards network devices. Subclasses exist for a
 | 
						|
    number of network devices and common MIBs.
 | 
						|
 | 
						|
    The idea behind this module is to give a common interface to data from
 | 
						|
    network devices, leaving the device-specific hacks behind the scenes in
 | 
						|
    subclasses.
 | 
						|
 | 
						|
    In the SYNOPSIS example we fetch the name of all the ports on the
 | 
						|
    device and the duplex setting for that port with two methods --
 | 
						|
    interfaces() and i_duplex().
 | 
						|
 | 
						|
    The information may be coming from any number of MIB files and is very
 | 
						|
    vendor specific. SNMP::Info provides you a common method for all
 | 
						|
    supported devices.
 | 
						|
 | 
						|
    Adding support for your own device is easy, and takes little SNMP
 | 
						|
    knowledge.
 | 
						|
 | 
						|
    The module is not limited to network devices. Any MIB or device can be
 | 
						|
    given an objected oriented front-end by making a module that consists
 | 
						|
    of a couple hashes. See EXTENDING SNMP::INFO.
 | 
						|
 | 
						|
REQUIREMENTS
 | 
						|
 | 
						|
    1. Net-SNMP
 | 
						|
 | 
						|
      To use this module, you must have Net-SNMP installed on your system.
 | 
						|
      More specifically you need the Perl modules that come with it.
 | 
						|
 | 
						|
      DO NOT INSTALL SNMP:: or Net::SNMP from CPAN!
 | 
						|
 | 
						|
      The SNMP module is matched to an install of net-snmp, and must be
 | 
						|
      installed from the net-snmp source tree.
 | 
						|
 | 
						|
      The Perl module SNMP is found inside the net-snmp distribution. Go to
 | 
						|
      the perl/ directory of the distribution to install it, or run
 | 
						|
      ./configure --with-perl-modules from the top directory of the
 | 
						|
      net-snmp distribution.
 | 
						|
 | 
						|
      Net-SNMP can be found at http://net-snmp.sourceforge.net
 | 
						|
 | 
						|
      Version 5.3.2 or greater is recommended.
 | 
						|
 | 
						|
      Versions 5.0.1, 5.0301 and 5.0203 have issues with bulkwalk and are
 | 
						|
      not supported.
 | 
						|
 | 
						|
      Redhat Users: Some versions that come with certain versions of
 | 
						|
      Redhat/Fedora don't have the Perl library installed. Uninstall the
 | 
						|
      RPM and install by hand.
 | 
						|
 | 
						|
    2. MIBS
 | 
						|
 | 
						|
      SNMP::Info operates on textual descriptors found in MIBs.
 | 
						|
 | 
						|
      If you are using SNMP::Info separate from Netdisco, download the
 | 
						|
      Netdisco MIB package at
 | 
						|
      https://github.com/netdisco/netdisco-mibs/releases/latest/
 | 
						|
 | 
						|
      Make sure that your snmp.conf is updated to point to your MIB
 | 
						|
      directory and that the MIBs are world-readable.
 | 
						|
 | 
						|
DESIGN GOALS
 | 
						|
 | 
						|
    1. Use of textual MIB leaf identifier and enumerated values
 | 
						|
 | 
						|
	* All values are retrieved via MIB Leaf node names
 | 
						|
 | 
						|
	For example SNMP::Info has an entry in its %GLOBALS hash for
 | 
						|
	``sysName'' instead of 1.3.6.1.2.1.1.5.
 | 
						|
 | 
						|
	* Data returned is in the enumerated value form.
 | 
						|
 | 
						|
	For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and getting
 | 
						|
	back 23
 | 
						|
 | 
						|
	SNMP::Info will ask for RFC1213-MIB::ifType and will get back ppp.
 | 
						|
 | 
						|
    2. SNMP::Info is easily extended to new devices
 | 
						|
 | 
						|
      You can create a new subclass for a device by providing four hashes :
 | 
						|
      %GLOBALS, %MIBS, %FUNCS, and %MUNGE.
 | 
						|
 | 
						|
      Or you can override any existing methods from a parent class by
 | 
						|
      making a short subroutine.
 | 
						|
 | 
						|
      See the section EXTENDING SNMP::INFO for more details.
 | 
						|
 | 
						|
      When you make a new subclass for a device, please be sure to send it
 | 
						|
      back to the developers (via a github pull request or the mailing
 | 
						|
      list) for inclusion in the next version.
 | 
						|
 | 
						|
SUBCLASSES
 | 
						|
 | 
						|
    These are the subclasses that implement MIBs and support devices:
 | 
						|
 | 
						|
    Required MIBs not included in the install instructions above are noted
 | 
						|
    here.
 | 
						|
 | 
						|
 MIB Subclasses
 | 
						|
 | 
						|
    These subclasses implement method to access one or more MIBs. These are
 | 
						|
    not used directly, but rather inherited from device subclasses.
 | 
						|
 | 
						|
    For more info run perldoc on any of the following module names.
 | 
						|
 | 
						|
    SNMP::Info::AdslLine
 | 
						|
 | 
						|
      SNMP Interface to the ADSL-LINE-MIB for ADSL interfaces.
 | 
						|
 | 
						|
      Requires the ADSL-LINE-MIB, down loadable from Cisco.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::AdslLine for details.
 | 
						|
 | 
						|
    SNMP::Info::Aggregate
 | 
						|
 | 
						|
      SNMP Interface to IF-MIB ifStackTable Aggregated Links
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Aggregate for details.
 | 
						|
 | 
						|
    SNMP::Info::Airespace
 | 
						|
 | 
						|
      AIRESPACE-WIRELESS-MIB and AIRESPACE-SWITCHING-MIB. Inherited by
 | 
						|
      devices based on the Airespace wireless platform.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Airespace for details.
 | 
						|
 | 
						|
    SNMP::Info::AMAP
 | 
						|
 | 
						|
      ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB. Alcatel Mapping Adjacency
 | 
						|
      Protocol (AMAP) Support.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::AMAP for details.
 | 
						|
 | 
						|
    SNMP::Info::Bridge
 | 
						|
 | 
						|
      BRIDGE-MIB (RFC1286). Q-BRIDGE-MIB. Inherited by devices with Layer2
 | 
						|
      support.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Bridge for details.
 | 
						|
 | 
						|
    SNMP::Info::CDP
 | 
						|
 | 
						|
      CISCO-CDP-MIB. Cisco Discovery Protocol (CDP) Support. Inherited by
 | 
						|
      Cisco, Enterasys, and HP devices.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CDP for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoAgg
 | 
						|
 | 
						|
      SNMP Interface to Cisco Aggregated Links
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoAgg for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoBGP
 | 
						|
 | 
						|
      CISCO-BGP4-MIB. Cisco BGPv4 support. Inherited by Cisco devices with
 | 
						|
      Layer3 support.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoBGP for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoConfig
 | 
						|
 | 
						|
      CISCO-CONFIG-COPY-MIB, CISCO-FLASH-MIB, and OLD-CISCO-SYS-MIB. These
 | 
						|
      OIDs facilitate the writing of configuration files.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoConfig for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoPortSecurity
 | 
						|
 | 
						|
      CISCO-PORT-SECURITY-MIB and CISCO-PAE-MIB.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoPortSecurity for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoPower
 | 
						|
 | 
						|
      CISCO-POWER-ETHERNET-EXT-MIB.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoPower for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoQOS
 | 
						|
 | 
						|
      CISCO-CLASS-BASED-QOS-MIB. A collection of OIDs providing information
 | 
						|
      about a Cisco device's QOS config.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoQOS for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoRTT
 | 
						|
 | 
						|
      CISCO-RTTMON-MIB. A collection of OIDs providing information about a
 | 
						|
      Cisco device's RTT values.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoRTT for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoStack
 | 
						|
 | 
						|
      CISCO-STACK-MIB.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoStack for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoStats
 | 
						|
 | 
						|
      OLD-CISCO-CPU-MIB, CISCO-PROCESS-MIB, and CISCO-MEMORY-POOL-MIB.
 | 
						|
      Provides common interfaces for memory, cpu, and os statistics for
 | 
						|
      Cisco devices.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoStats for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoStpExtensions
 | 
						|
 | 
						|
      CISCO-STP-EXTENSIONS-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoStpExtensions for details.
 | 
						|
 | 
						|
    SNMP::Info::CiscoVTP
 | 
						|
 | 
						|
      CISCO-VTP-MIB, CISCO-VLAN-MEMBERSHIP-MIB,
 | 
						|
      CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::CiscoVTP for details.
 | 
						|
 | 
						|
    SNMP::Info::DocsisCM
 | 
						|
 | 
						|
      SNMP Interface for DOCSIS Cable Modems
 | 
						|
 | 
						|
      See documentation in SNMP::Info::DocsisCM for details.
 | 
						|
 | 
						|
    SNMP::Info::DocsisHE
 | 
						|
 | 
						|
      SNMP Interface for DOCSIS CMTS
 | 
						|
 | 
						|
      See documentation in SNMP::Info::DocsisHE for details.
 | 
						|
 | 
						|
    SNMP::Info::EDP
 | 
						|
 | 
						|
      Extreme Discovery Protocol. EXTREME-EDP-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::EDP for details.
 | 
						|
 | 
						|
    SNMP::Info::Entity
 | 
						|
 | 
						|
      ENTITY-MIB. Used for device info in Cisco and other vendors.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Entity for details.
 | 
						|
 | 
						|
    SNMP::Info::EtherLike
 | 
						|
 | 
						|
      EtherLike-MIB (RFC1398) - Some Layer3 devices implement this MIB, as
 | 
						|
      well as some Aironet Layer 2 devices (non Cisco).
 | 
						|
 | 
						|
      See documentation in SNMP::Info::EtherLike for details.
 | 
						|
 | 
						|
    SNMP::Info::FDP
 | 
						|
 | 
						|
      Foundry (Brocade) Discovery Protocol. FOUNDRY-SN-SWITCH-GROUP-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::FDP for details.
 | 
						|
 | 
						|
    SNMP::Info::IEEE802_Bridge
 | 
						|
 | 
						|
      SNMP Interface to data available through the IEEE8021-Q-BRIDGE-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::IEEE802_Bridge for details.
 | 
						|
 | 
						|
    SNMP::Info::IEEE802dot11
 | 
						|
 | 
						|
      IEEE802dot11-MIB. A collection of OIDs providing information about
 | 
						|
      standards based 802.11 wireless devices.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::IEEE802dot11 for details.
 | 
						|
 | 
						|
    SNMP::Info::IEEE802dot3ad
 | 
						|
 | 
						|
      SNMP Interface to IEEE Aggregated Links. IEEE8023-LAG-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::IEEE802dot3ad for details.
 | 
						|
 | 
						|
    SNMP::Info::IPv6
 | 
						|
 | 
						|
      SNMP Interface for obtaining configured IPv6 addresses and mapping
 | 
						|
      IPv6 addresses to MAC addresses and interfaces, using information
 | 
						|
      from IP-MIB, IPV6-MIB and/or CISCO-IETF-IP-MIB.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::IPv6 for details.
 | 
						|
 | 
						|
    SNMP::Info::LLDP
 | 
						|
 | 
						|
      LLDP-MIB, LLDP-EXT-DOT1-MIB, and LLDP-EXT-DOT3-MIB. Link Layer
 | 
						|
      Discovery Protocol (LLDP) Support.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::LLDP for details.
 | 
						|
 | 
						|
    SNMP::Info::MAU
 | 
						|
 | 
						|
      MAU-MIB (RFC2668). Some Layer2 devices use this for extended Ethernet
 | 
						|
      (Medium Attachment Unit) interface information.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::MAU for details.
 | 
						|
 | 
						|
    SNMP::Info::MRO
 | 
						|
 | 
						|
      Method resolution introspection for SNMP::Info
 | 
						|
 | 
						|
      See documentation in SNMP::Info::MRO for details.
 | 
						|
 | 
						|
    SNMP::Info::NortelStack
 | 
						|
 | 
						|
      S5-AGENT-MIB, S5-CHASSIS-MIB.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::NortelStack for details.
 | 
						|
 | 
						|
    SNMP::Info::PortAccessEntity
 | 
						|
 | 
						|
      IEEE8021-PAE-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::PortAccessEntity for details.
 | 
						|
 | 
						|
    SNMP::Info::PowerEthernet
 | 
						|
 | 
						|
      POWER-ETHERNET-MIB
 | 
						|
 | 
						|
      See documentation in SNMP::Info::PowerEthernet for details.
 | 
						|
 | 
						|
    SNMP::Info::RapidCity
 | 
						|
 | 
						|
      RAPID-CITY. Inherited by Avaya switches for duplex and VLAN
 | 
						|
      information.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::RapidCity for details.
 | 
						|
 | 
						|
    SNMP::Info::SONMP
 | 
						|
 | 
						|
      SynOptics Network Management Protocol (SONMP) SYNOPTICS-ROOT-MIB,
 | 
						|
      S5-ETH-MULTISEG-TOPOLOGY-MIB. Inherited by Avaya/Nortel/Bay/Synoptics
 | 
						|
      switches and hubs.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::SONMP for details.
 | 
						|
 | 
						|
 Device Subclasses
 | 
						|
 | 
						|
    These subclasses inherit from one or more classes to provide a common
 | 
						|
    interface to data obtainable from network devices.
 | 
						|
 | 
						|
    All the required MIB files are included in the netdisco-mib package.
 | 
						|
    (See Above).
 | 
						|
 | 
						|
    SNMP::Info::Layer1
 | 
						|
 | 
						|
      Generic Layer1 Device subclass.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Layer1 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer1::Allied
 | 
						|
 | 
						|
	Subclass for Allied Telesis Repeaters / Hubs.
 | 
						|
 | 
						|
	Requires ATI-MIB
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer1::Allied for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer1::Asante
 | 
						|
 | 
						|
	Subclass for Asante 1012 Hubs.
 | 
						|
 | 
						|
	Requires ASANTE-HUB1012-MIB
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer1::Asante for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer1::Bayhub
 | 
						|
 | 
						|
	Subclass for Nortel/Bay hubs. This includes System 5000, 100
 | 
						|
	series, 200 series, and probably more.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer1::Bayhub for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer1::Cyclades
 | 
						|
 | 
						|
	Subclass for Cyclades/Avocent terminal servers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer1::Cyclades for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer1::S3000
 | 
						|
 | 
						|
	Subclass for Bay/Synoptics hubs. This includes System 3000, 281X,
 | 
						|
	and probably more.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer1::S3000 for details.
 | 
						|
 | 
						|
    SNMP::Info::Layer2
 | 
						|
 | 
						|
      Generic Layer2 Device subclass.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Layer2 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::3Com
 | 
						|
 | 
						|
	Subclass for L2 3Com Switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::3Com for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Adtran
 | 
						|
 | 
						|
	Subclass for Adtran devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Adtran for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Aerohive
 | 
						|
 | 
						|
	Subclass for Aerohive / Extreme access points.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Aerohive for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Airespace
 | 
						|
 | 
						|
	Subclass for Cisco (Airespace) wireless controllers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Airespace for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Aironet
 | 
						|
 | 
						|
	Class for Cisco Aironet wireless devices that run IOS. See also
 | 
						|
	SNMP::Info::Layer3::Aironet for Aironet devices that don't run IOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Aironet for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Allied
 | 
						|
 | 
						|
	Allied Telesis switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Allied for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Atmedia
 | 
						|
 | 
						|
	Subclass for atmedia encryptors.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Atmedia for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Baystack
 | 
						|
 | 
						|
	Subclass for Avaya/Nortel/Bay Ethernet Switch/Baystack switches.
 | 
						|
	This includes 303, 304, 350, 380, 410, 420, 425, 450, 460, 470
 | 
						|
	series, 2500 series, 4000 series, 5000 series, Business Ethernet
 | 
						|
	Switch (BES), Business Policy Switch (BPS), VSP 7000 series, and
 | 
						|
	probably others.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Baystack for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::C1900
 | 
						|
 | 
						|
	Subclass for Cisco Catalyst 1900 and 1900c Devices running CatOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::C1900 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::C2900
 | 
						|
 | 
						|
	Subclass for Cisco Catalyst 2900, 2950, 3500XL, and 3548 devices
 | 
						|
	running IOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::C2900 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Catalyst
 | 
						|
 | 
						|
	Subclass for Cisco Catalyst switches running CatOS. These switches
 | 
						|
	usually report a model number that starts with wsc. Note that this
 | 
						|
	class does not support everything that has the name Catalyst.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Catalyst for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Centillion
 | 
						|
 | 
						|
	Subclass for Nortel/Bay Centillion and 5000BH ATM switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Centillion for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Cisco
 | 
						|
 | 
						|
	Generic Cisco subclass for layer 2 devices that are not yet
 | 
						|
	supported in more specific subclasses and the base layer 2 Cisco
 | 
						|
	class for other device specific layer 2 Cisco classes.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Cisco for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::CiscoSB
 | 
						|
 | 
						|
	Subclass for Cisco's "Small Business" product line, acquired from
 | 
						|
	Linksys. This currently comprises the Sx300/500 line of switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::CiscoSB for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Exinda
 | 
						|
 | 
						|
	Subclass for Exinda / GFI Network Orchestrator traffic shapers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Exinda for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Hirschmann
 | 
						|
 | 
						|
	Subclass for Hirschmann switches
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Hirschmann for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::HP
 | 
						|
 | 
						|
	Subclass for more recent HP Procurve Switches.
 | 
						|
 | 
						|
	Requires HP-ICF-OID and ENTITY-MIB downloaded from HP.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::HP for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::HP4000
 | 
						|
 | 
						|
	Subclass for older HP Procurve Switches
 | 
						|
 | 
						|
	Requires HP-ICF-OID and ENTITY-MIB downloaded from HP.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::HP4000 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::HPVC
 | 
						|
 | 
						|
	Subclass for HP Virtual Connect Switches
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::HPVC for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Kentrox
 | 
						|
 | 
						|
	Class for Kentrox DataSMART DSU/CSU.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Kentrox for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::N2270
 | 
						|
 | 
						|
	Subclass for Nortel 2270 wireless switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::N2270 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::NAP222x
 | 
						|
 | 
						|
	Subclass for Nortel 222x series wireless access points.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::NAP222x for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Netgear
 | 
						|
 | 
						|
	Subclass for Netgear switches
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Netgear for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Nexans
 | 
						|
 | 
						|
	Subclass for Nexans switches
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Nexans for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::NWSS2300
 | 
						|
 | 
						|
	SNMP Interface to Avaya (Trapeze) Wireless Controllers
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::NWSS2300 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Orinoco
 | 
						|
 | 
						|
	Subclass for Orinoco/Proxim wireless access points.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Orinoco for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Trapeze
 | 
						|
 | 
						|
	SNMP Interface to Juniper (Trapeze) Wireless Controllers
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Trapeze for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Sixnet
 | 
						|
 | 
						|
	SNMP Interface to Sixnet industrial switches
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Sixnet for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::Ubiquiti
 | 
						|
 | 
						|
	SNMP Interface to Ubiquiti Access Points and other devices
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::Ubiquiti for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer2::ZyXEL_DSLAM
 | 
						|
 | 
						|
	Zyxel DSLAMs. Need I say more?
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer2::ZyXEL_DSLAM for details.
 | 
						|
 | 
						|
    SNMP::Info::Layer3
 | 
						|
 | 
						|
      Generic Layer3 and Layer2+3 Device subclass.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Layer3 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Aironet
 | 
						|
 | 
						|
	Subclass for Cisco Aironet wireless access points (AP) not running
 | 
						|
	IOS. These are usually older devices.
 | 
						|
 | 
						|
	Note SNMP::Info::Layer2::Aironet
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Aironet for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::AlcatelLucent
 | 
						|
 | 
						|
	Alcatel-Lucent OmniSwitch Class.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::AlcatelLucent for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::AlteonAD
 | 
						|
 | 
						|
	Subclass for Radware Alteon Series ADC switches and Nortel
 | 
						|
	BladeCenter Layer2-3 GbE Switch Modules.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::AlteonAD for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Altiga
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Altiga for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Arista
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Arista for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Aruba
 | 
						|
 | 
						|
	Subclass for Aruba wireless switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Aruba for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::ArubaCX
 | 
						|
 | 
						|
	SNMP Interface to L3 Devices running ArubaOS-CX
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::ArubaCX for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::BayRS
 | 
						|
 | 
						|
	Subclass for Avaya/Nortel/Bay Multiprotocol/BayRS routers. This
 | 
						|
	includes BCN, BLN, ASN, ARN, AN, 2430, and 5430 routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::BayRS for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::BlueCoatSG
 | 
						|
 | 
						|
	Subclass for BlueCoat SG series proxy devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::BlueCoatSG for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::C3550
 | 
						|
 | 
						|
	Subclass for Cisco Catalyst 3550,3540,3560 2/3 switches running
 | 
						|
	IOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::C3550 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::C4000
 | 
						|
 | 
						|
	This class covers Catalyst 4000s and 4500s.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::C4000 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::C6500
 | 
						|
 | 
						|
	This class covers Catalyst 6500 series running CatOS or IOS, as
 | 
						|
	well as Catalyst 2960, 2970, 3750 and 3850 series, including blade
 | 
						|
	switches CBS30x0 and CBS31x0 series, all running IOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::C6500 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::CheckPoint
 | 
						|
 | 
						|
	Subclass for CheckPoint devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::CheckPoint for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Ciena
 | 
						|
 | 
						|
	Subclass for Ciena devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Ciena for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Cisco
 | 
						|
 | 
						|
	This is a simple wrapper around layer 3 for IOS devices and the
 | 
						|
	base layer 3 Cisco class for other device specific layer 3 Cisco
 | 
						|
	classes.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Cisco for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::CiscoASA
 | 
						|
 | 
						|
	Subclass for Cisco Adaptive Security Appliances.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::CiscoASA for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::CiscoFWSM
 | 
						|
 | 
						|
	Subclass for Cisco Firewall Services Modules.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::CiscoFWSM for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::CiscoSwitch
 | 
						|
 | 
						|
	Base class for L3 Cisco switches. See documentation in
 | 
						|
	SNMP::Info::Layer3::CiscoSwitch for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Contivity
 | 
						|
 | 
						|
	Subclass for Avaya/Nortel Contivity/VPN Routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Contivity for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Cumulus
 | 
						|
 | 
						|
	Subclass for Cumulus Networks Routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Cumulus for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Dell
 | 
						|
 | 
						|
	Subclass for Dell PowerConnect switches. The IBM BladeCenter
 | 
						|
	Gigabit Ethernet Switch Module and some Linksys switches also use
 | 
						|
	this module based upon MIB support.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Dell for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::DLink
 | 
						|
 | 
						|
	Subclass for DLink devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::DLink for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Enterasys
 | 
						|
 | 
						|
	Subclass for Enterasys devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Enterasys for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::ERX
 | 
						|
 | 
						|
	Subclass for Juniper ERX switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::ERX for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Extreme
 | 
						|
 | 
						|
	Subclass for Extreme Networks switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Extreme for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::F5
 | 
						|
 | 
						|
	Subclass for F5 devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::F5 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Force10
 | 
						|
 | 
						|
	Subclass for Force10 devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Force10 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Fortinet
 | 
						|
 | 
						|
	Subclass for Fortinet devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Fortinet for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Foundry
 | 
						|
 | 
						|
	Subclass for Brocade (Foundry) Network devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Foundry for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Genua
 | 
						|
 | 
						|
	Subclass for Genua security devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Genua for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::H3C
 | 
						|
 | 
						|
	SNMP Interface to Layer 3 Devices, H3C & HP A-series.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::H3C for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::HP9300
 | 
						|
 | 
						|
	Subclass for HP network devices which Foundry Networks was the
 | 
						|
	Original Equipment Manufacturer (OEM) such as the HP ProCurve 9300
 | 
						|
	and 6300 series.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::HP9300 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Huawei
 | 
						|
 | 
						|
	SNMP Interface to Huawei Layer 3 switches and routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Huawei for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::IBMGbTor
 | 
						|
 | 
						|
	SNMP Interface to IBM Rackswitch (formerly Blade Network
 | 
						|
	Technologies) network devices. Lenovo acquired these from IBM and
 | 
						|
	is now selling them under the Lenovo brand.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::IBMGbTor for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Juniper
 | 
						|
 | 
						|
	Subclass for Juniper devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Juniper for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Lantronix
 | 
						|
 | 
						|
	Subclass for Lantronix devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Lantronix for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Lenovo
 | 
						|
 | 
						|
	Subclass for Lenovo switches running CNOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Lenovo for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Microsoft
 | 
						|
 | 
						|
	Subclass for Generic Microsoft Routers running Microsoft Windows
 | 
						|
	OS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Microsoft for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Mikrotik
 | 
						|
 | 
						|
	Subclass for Mikrotik devices running RouterOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Mikrotik for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::N1600
 | 
						|
 | 
						|
	Subclass for Avaya/Nortel Ethernet Routing Switch 1600 series.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::N1600 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Netonix
 | 
						|
 | 
						|
	Subclass for Netonix switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Netonix for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::NetSNMP
 | 
						|
 | 
						|
	Subclass for host systems running Net-SNMP.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::NetSNMP for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Netscreen
 | 
						|
 | 
						|
	Subclass for Juniper NetScreen.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Netscreen for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Nexus
 | 
						|
 | 
						|
	Subclass for Cisco Nexus devices running NX-OS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Nexus for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::OneAccess
 | 
						|
 | 
						|
	Subclass for OneAccess routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::OneAccess for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::PacketFront
 | 
						|
 | 
						|
	Subclass for PacketFront DRG series CPE.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::PacketFront for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::PaloAlto
 | 
						|
 | 
						|
	Subclass for Palo Alto firewalls.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::PaloAlto for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Passport
 | 
						|
 | 
						|
	Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000
 | 
						|
	series, Accelar, and VSP 9000 series switches.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Passport for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Pf
 | 
						|
 | 
						|
	Subclass for FreeBSD-Based Firewalls using Pf /Pf Sense
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Pf for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Pica8
 | 
						|
 | 
						|
	Subclass for Pica8 devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Pica8 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Redlion
 | 
						|
 | 
						|
	Subclass for redlion routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Redlion for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Scalance
 | 
						|
 | 
						|
	Subclass for Siemens Scalance devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Scalance for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::SonicWALL
 | 
						|
 | 
						|
	Subclass for generic SonicWALL devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::SonicWALL for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Steelfusion
 | 
						|
 | 
						|
	Subclass for Riverbed Steelfusion WAN optimization appliances.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Steelfusion for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Steelhead
 | 
						|
 | 
						|
	Subclass for Riverbed Steelhead WAN optimization appliances.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Steelhead for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::SteelheadEx
 | 
						|
 | 
						|
	Subclass for Riverbed SteelheadEx WAN optimization appliances.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::SteelheadEx for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Sun
 | 
						|
 | 
						|
	Subclass for Generic Sun Routers running SunOS.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Sun for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Tasman
 | 
						|
 | 
						|
	Subclass for Avaya Secure Routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Tasman for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Teltonika
 | 
						|
 | 
						|
	Subclass for Teltonika RUT9xx series routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Teltonika for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Timetra
 | 
						|
 | 
						|
	Alcatel-Lucent SR Class.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Timetra for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::VyOS
 | 
						|
 | 
						|
	Subclass for VyOS routers.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::VyOS for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::VMware
 | 
						|
 | 
						|
	Subclass for VMware ESXi hosts.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::VMware for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer3::Whiterabbit
 | 
						|
 | 
						|
	Subclass for whiterabbit devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer3::Whiterabbit for details.
 | 
						|
 | 
						|
    SNMP::Info::Layer7
 | 
						|
 | 
						|
      Generic Layer7 Devices.
 | 
						|
 | 
						|
      See documentation in SNMP::Info::Layer7 for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::APC
 | 
						|
 | 
						|
	Subclass for APC UPS devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::APC for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::Arbor
 | 
						|
 | 
						|
	Subclass for Arbor appliances.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::Arbor for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::CiscoIPS
 | 
						|
 | 
						|
	Subclass for Cisco IPS devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::CiscoIPS for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::Gigamon
 | 
						|
 | 
						|
	Subclass for Gigamon devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::Gigamon for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::HWGroup
 | 
						|
 | 
						|
	Subclass for HW Group devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::HWGroup for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::Liebert
 | 
						|
 | 
						|
	Subclass for Liebert devices.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::Liebert for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::Neoteris
 | 
						|
 | 
						|
	Subclass for Pulse Secure / Juniper SSL VPN appliances.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::Neoteris for details.
 | 
						|
 | 
						|
      SNMP::Info::Layer7::Netscaler
 | 
						|
 | 
						|
	Subclass for Citrix Netscaler appliances.
 | 
						|
 | 
						|
	See documentation in SNMP::Info::Layer7::Netscaler for details.
 | 
						|
 | 
						|
Thanks
 | 
						|
 | 
						|
    Thanks for testing and coding help (in no particular order) to :
 | 
						|
    Alexander Barthel, Andy Ford, Alexander Hartmaier, Andrew Herrick, Alex
 | 
						|
    Kramarov, Bernhard Augenstein, Bradley Baetz, Brian Chow, Brian Wilson,
 | 
						|
    Carlos Vicente, Dana Watanabe, David Pinkoski, David Sieborger, Douglas
 | 
						|
    McKeown, Greg King, Ivan Auger, Jean-Philippe Luiggi, Jeroen van Ingen,
 | 
						|
    Justin Hunter, Kent Hamilton, Matthew Tuttle, Michael Robbert, Mike
 | 
						|
    Hunter, Nicolai Petri, Ralf Gross, Robert Kerr, Nick Nauwelaerts and
 | 
						|
    people listed on the Netdisco README!
 | 
						|
 | 
						|
USAGE
 | 
						|
 | 
						|
 Constructor
 | 
						|
 | 
						|
    new()
 | 
						|
 | 
						|
      Creates a new object and connects via SNMP::Session.
 | 
						|
 | 
						|
      Always returns an SNMP::Info instance, and you should always check
 | 
						|
      for error() as in SYNOPSIS above to be sure of success.
 | 
						|
 | 
						|
      Will take a bare list of key/value options but we recommend a HASH
 | 
						|
      ref as in the example below and SYNOPSIS, to catch syntax errors.
 | 
						|
 | 
						|
       my $info = SNMP::Info->({ 'Debug'             => 1,
 | 
						|
                                 'AutoSpecify'       => 1,
 | 
						|
                                 'BigInt'            => 1,
 | 
						|
                                 'BulkWalk'          => 1,
 | 
						|
                                 'BulkRepeaters'     => 20,
 | 
						|
                                 'LoopDetect'        => 1,
 | 
						|
                                 'IgnoreNetSNMPConf' => 1,
 | 
						|
                                 'DestHost'          => 'myrouter',
 | 
						|
                                 'Community'         => 'public',
 | 
						|
                                 'Version'           => 2,
 | 
						|
                                 'MibDirs'           => ['dir1','dir2','dir3'],
 | 
						|
                              });
 | 
						|
 | 
						|
      SNMP::Info Specific Arguments :
 | 
						|
 | 
						|
      AutoSpecify
 | 
						|
 | 
						|
	Returns an object of a more specific device class
 | 
						|
 | 
						|
	(default 0, which means "off")
 | 
						|
 | 
						|
      BigInt
 | 
						|
 | 
						|
	Return Math::BigInt objects for 64 bit counters. Sets on a global
 | 
						|
	scope, not object.
 | 
						|
 | 
						|
	(default 0, which means "off")
 | 
						|
 | 
						|
      BulkWalk
 | 
						|
 | 
						|
	Set to 0 to turn off BULKWALK commands for SNMPv2 connections.
 | 
						|
 | 
						|
	Note that BULKWALK is turned off for Net-SNMP versions 5.1.x
 | 
						|
	because of a bug.
 | 
						|
 | 
						|
	(default 1, which means "on")
 | 
						|
 | 
						|
      BulkRepeaters
 | 
						|
 | 
						|
	Set number of MaxRepeaters for BULKWALK operation. See perldoc SNMP
 | 
						|
	-> bulkwalk() for more info.
 | 
						|
 | 
						|
	(default 20)
 | 
						|
 | 
						|
      LoopDetect
 | 
						|
 | 
						|
	Detects looping during getnext table column walks by comparing IIDs
 | 
						|
	for each instance. A loop is detected if the same IID is seen more
 | 
						|
	than once and the walk is aborted. Note: This will not detect loops
 | 
						|
	during a bulkwalk operation, Net-SNMP's internal bulkwalk function
 | 
						|
	must detect the loop.
 | 
						|
 | 
						|
	Set to 0 to turn off loop detection.
 | 
						|
 | 
						|
	(default 1, which means "on")
 | 
						|
 | 
						|
      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 1 "on" to ignore Net-SNMP configuration files by overriding
 | 
						|
	the SNMPCONFPATH environmental variable during object
 | 
						|
	initialization. Note: MibDirs must be defined or Net-SNMP will not
 | 
						|
	be able to load MIBs and initialize the object.
 | 
						|
 | 
						|
	(default 0, which means "off")
 | 
						|
 | 
						|
      Debug
 | 
						|
 | 
						|
	Prints Lots of debugging messages. Pass 2 to print even more
 | 
						|
	debugging messages.
 | 
						|
 | 
						|
	(default 0, which means "off")
 | 
						|
 | 
						|
      DebugSNMP
 | 
						|
 | 
						|
	Set $SNMP::debugging level for Net-SNMP.
 | 
						|
 | 
						|
	See SNMP for more details.
 | 
						|
 | 
						|
      MibDirs
 | 
						|
 | 
						|
	Array ref to list of directories in which to look for MIBs. Note
 | 
						|
	this will be in addition to the ones setup in snmp.conf at the
 | 
						|
	system level.
 | 
						|
 | 
						|
	(default use net-snmp settings only)
 | 
						|
 | 
						|
      RetryNoSuch
 | 
						|
 | 
						|
	When using SNMP Version 1, try reading values even if they come
 | 
						|
	back as "no such variable in this MIB". Set to false if so desired.
 | 
						|
	This feature lets you read SNMPv2 data from an SNMP version 1
 | 
						|
	connection, and should probably be left on.
 | 
						|
 | 
						|
	(default 1, which means "on")
 | 
						|
 | 
						|
      Session
 | 
						|
 | 
						|
	SNMP::Session object to use instead of connecting on own.
 | 
						|
 | 
						|
	(default creates session automatically)
 | 
						|
 | 
						|
      Offline
 | 
						|
 | 
						|
	Causes SNMP::Info to avoid network activity and return data only
 | 
						|
	from its cache. If you ask for something not in the cache, an error
 | 
						|
	is thrown. See also the cache() and offline() methods.
 | 
						|
 | 
						|
	(default 0, which means "online")
 | 
						|
 | 
						|
      Cache
 | 
						|
 | 
						|
	Pass in a HashRef to prime the cache of retrieved data. Useful for
 | 
						|
	creating an instance in Offline mode from a previously dumped
 | 
						|
	cache. See also the cache() method to retrieve a cache after
 | 
						|
	running actial queries.
 | 
						|
 | 
						|
      OTHER
 | 
						|
 | 
						|
	All other arguments are passed to SNMP::Session.
 | 
						|
 | 
						|
	See SNMP::Session for a list of other possible arguments.
 | 
						|
 | 
						|
      A Note about the wrong Community string or wrong SNMP Version:
 | 
						|
 | 
						|
      If a connection is using the wrong community string or the wrong SNMP
 | 
						|
      version, the creation of the object will not fail. The device still
 | 
						|
      answers the call on the SNMP port, but will not return information.
 | 
						|
      Check the error() method after you create the device object to see if
 | 
						|
      there was a problem in connecting.
 | 
						|
 | 
						|
      A note about SNMP Versions :
 | 
						|
 | 
						|
      Some older devices don't support SNMP version 2, and will not return
 | 
						|
      anything when a connection under Version 2 is attempted.
 | 
						|
 | 
						|
      Some newer devices will support Version 1, but will not return all
 | 
						|
      the data they might have if you had connected under Version 1.
 | 
						|
 | 
						|
      When trying to get info from a new device, you may have to try
 | 
						|
      version 2 and then fallback to version 1.
 | 
						|
 | 
						|
    update()
 | 
						|
 | 
						|
      Replace the existing session with a new one with updated values,
 | 
						|
      without re-identifying the device. The only supported changes are to
 | 
						|
      Community or Context.
 | 
						|
 | 
						|
      Clears the object cache.
 | 
						|
 | 
						|
      This is useful, e.g., when a device supports multiple contexts (via
 | 
						|
      changes to the Community string, or via the SNMPv3 Context
 | 
						|
      parameter), but a context that you want to access does not support
 | 
						|
      the objects (e.g., sysObjectID, sysDescr) that we use to identify the
 | 
						|
      device.
 | 
						|
 | 
						|
 Data is Cached
 | 
						|
 | 
						|
    Methods and subroutines requesting data from a device will only load
 | 
						|
    the data once, and then return cached versions of that data.
 | 
						|
 | 
						|
    Run $info->load_METHOD() where method is something like 'i_name' to
 | 
						|
    reload data from a method.
 | 
						|
 | 
						|
    Run $info->clear_cache() to clear the cache to allow reload of both
 | 
						|
    globals and table methods.
 | 
						|
 | 
						|
    The cache can be retrieved or set using the $info->cache() method. This
 | 
						|
    works together with the Offline option.
 | 
						|
 | 
						|
 Object Scalar Methods
 | 
						|
 | 
						|
    These are for package related data, not directly supplied from SNMP.
 | 
						|
 | 
						|
    $info->clear_cache()
 | 
						|
 | 
						|
      Clears the cached data. This includes GLOBALS data and TABLE METHOD
 | 
						|
      data.
 | 
						|
 | 
						|
    $info->debug(1)
 | 
						|
 | 
						|
      Returns current debug status, and optionally toggles debugging info
 | 
						|
      for this object.
 | 
						|
 | 
						|
    $info->offline([1|0])
 | 
						|
 | 
						|
      Returns if offline mode is currently turned on for this object.
 | 
						|
 | 
						|
      Optionally sets the Offline parameter.
 | 
						|
 | 
						|
    $info->cache([new_cache])
 | 
						|
 | 
						|
      Returns a HashRef of all cached data in this object. There will be a
 | 
						|
      store key for table data and then one key for each leaf.
 | 
						|
 | 
						|
      Optionally sets the cache parameters if passed a HashRef.
 | 
						|
 | 
						|
    $info->bulkwalk([1|0])
 | 
						|
 | 
						|
      Returns if bulkwalk is currently turned on for this object.
 | 
						|
 | 
						|
      Optionally sets the bulkwalk parameter.
 | 
						|
 | 
						|
    $info->loopdetect([1|0])
 | 
						|
 | 
						|
      Returns if loopdetect is currently turned on for this object.
 | 
						|
 | 
						|
      Optionally sets the loopdetect parameter.
 | 
						|
 | 
						|
    $info->device_type()
 | 
						|
 | 
						|
      Returns the Subclass name for this device. SNMP::Info is returned if
 | 
						|
      no more specific class is available.
 | 
						|
 | 
						|
      First the device is checked for Layer 3 support and a specific
 | 
						|
      subclass, then Layer 2 support and subclasses are checked.
 | 
						|
 | 
						|
      This means that Layer 2 / 3 switches and routers will fall under the
 | 
						|
      SNMP::Info::Layer3 subclasses.
 | 
						|
 | 
						|
      If the device still can be connected to via SNMP::Info, then
 | 
						|
      SNMP::Info is returned.
 | 
						|
 | 
						|
    $info->error(no_clear)
 | 
						|
 | 
						|
      Returns Error message if there is an error, or undef if there is not.
 | 
						|
 | 
						|
      Reading the error will clear the error unless you set the no_clear
 | 
						|
      flag.
 | 
						|
 | 
						|
    $info->has_layer(3)
 | 
						|
 | 
						|
      Returns non-zero if the device has the supplied layer in the OSI
 | 
						|
      Model
 | 
						|
 | 
						|
      Returns if the device doesn't support the layers() call.
 | 
						|
 | 
						|
    $info->snmp_comm()
 | 
						|
 | 
						|
      Returns SNMP Community string used in connection.
 | 
						|
 | 
						|
    $info->snmp_ver()
 | 
						|
 | 
						|
      Returns SNMP Version used for this connection
 | 
						|
 | 
						|
    $info->specify()
 | 
						|
 | 
						|
      Returns an object of a more-specific subclass.
 | 
						|
 | 
						|
       my $info = new SNMP::Info(...);
 | 
						|
       # Returns more specific object type
 | 
						|
       my $specific = $info->specify();
 | 
						|
 | 
						|
      Usually this method is called internally from new(AutoSpecify => 1)
 | 
						|
 | 
						|
      See device_type() entry for how a subclass is chosen.
 | 
						|
 | 
						|
    $info->cisco_comm_indexing()
 | 
						|
 | 
						|
      Returns 0. Is an overridable method used for vlan indexing for snmp
 | 
						|
      calls on certain Cisco devices.
 | 
						|
 | 
						|
      See
 | 
						|
      ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-communityIndexing.html
 | 
						|
 | 
						|
 GLOBALS (Scalar Methods)
 | 
						|
 | 
						|
    These are methods to return scalar data from RFC1213.
 | 
						|
 | 
						|
    Some subset of these is probably available for any network device that
 | 
						|
    speaks SNMP.
 | 
						|
 | 
						|
    $info->uptime()
 | 
						|
 | 
						|
      Uptime in hundredths of seconds since device became available.
 | 
						|
 | 
						|
      (sysUpTime)
 | 
						|
 | 
						|
    $info->contact()
 | 
						|
 | 
						|
      (sysContact)
 | 
						|
 | 
						|
    $info->name()
 | 
						|
 | 
						|
      (sysName)
 | 
						|
 | 
						|
    $info->location()
 | 
						|
 | 
						|
      (sysLocation)
 | 
						|
 | 
						|
    $info->layers()
 | 
						|
 | 
						|
      This returns a binary encoded string where each digit represents a
 | 
						|
      layer of the OSI model served by the device.
 | 
						|
 | 
						|
          eg: 01000010  means layers 2 (physical) and 7 (Application)
 | 
						|
                        are served.
 | 
						|
 | 
						|
      Note: This string is 8 digits long.
 | 
						|
 | 
						|
      See $info->has_layer()
 | 
						|
 | 
						|
      (sysServices)
 | 
						|
 | 
						|
    $info->ports()
 | 
						|
 | 
						|
      Number of interfaces available on this device.
 | 
						|
 | 
						|
      Not too useful as the number of SNMP interfaces usually does not
 | 
						|
      correspond with the number of physical ports
 | 
						|
 | 
						|
      (ifNumber)
 | 
						|
 | 
						|
    $info->ipforwarding()
 | 
						|
 | 
						|
      The indication of whether the entity is acting as an IP gateway
 | 
						|
 | 
						|
      Returns either forwarding or not-forwarding
 | 
						|
 | 
						|
      (ipForwarding)
 | 
						|
 | 
						|
 Table Methods
 | 
						|
 | 
						|
    Each of these methods returns a hash_reference to a hash keyed on the
 | 
						|
    interface index in SNMP.
 | 
						|
 | 
						|
    Example : $info->interfaces() might return
 | 
						|
 | 
						|
        { '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 cases changes between reboots of the network device.
 | 
						|
 | 
						|
 Partial Table Fetches
 | 
						|
 | 
						|
    If you want to get only a part of an SNMP table or a single instance
 | 
						|
    from the 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
 | 
						|
 | 
						|
    $info->interfaces()
 | 
						|
 | 
						|
      This methods is overridden in each subclass to provide a mapping
 | 
						|
      between the Interface Table Index (iid) and the physical port name.
 | 
						|
 | 
						|
    $info->if_ignore()
 | 
						|
 | 
						|
      Returns a reference to a hash where key values that exist are
 | 
						|
      interfaces to ignore.
 | 
						|
 | 
						|
      Ignored interfaces are ones that are usually not physical ports or
 | 
						|
      Virtual Lans (VLANs) such as the Loopback interface, or the CPU
 | 
						|
      interface.
 | 
						|
 | 
						|
    $info->bulkwalk_no()
 | 
						|
 | 
						|
      Returns 0. Is an overridable method used for turn off bulkwalk for
 | 
						|
      the device class.
 | 
						|
 | 
						|
    $info->i_index()
 | 
						|
 | 
						|
      Default SNMP IID to Interface index.
 | 
						|
 | 
						|
      (ifIndex)
 | 
						|
 | 
						|
    $info->i_description()
 | 
						|
 | 
						|
      Description of the interface. Usually a little longer single word
 | 
						|
      name that is both human and machine friendly. Not always.
 | 
						|
 | 
						|
      (ifDescr)
 | 
						|
 | 
						|
    $info->i_type()
 | 
						|
 | 
						|
      Interface type, such as Vlan, Ethernet, Serial
 | 
						|
 | 
						|
      (ifType)
 | 
						|
 | 
						|
    $info->i_mtu()
 | 
						|
 | 
						|
      INTEGER. Interface MTU value.
 | 
						|
 | 
						|
      (ifMtu)
 | 
						|
 | 
						|
    $info->i_speed()
 | 
						|
 | 
						|
      Speed of the link, human format. See munge_speed() later in document
 | 
						|
      for details.
 | 
						|
 | 
						|
      (ifSpeed, ifHighSpeed if necessary)
 | 
						|
 | 
						|
    $info->i_speed_raw()
 | 
						|
 | 
						|
      Speed of the link in bits per second without munging. If i_speed_high
 | 
						|
      is available it will be used and multiplied by 1_000_000.
 | 
						|
 | 
						|
      (ifSpeed, ifHighSpeed if necessary)
 | 
						|
 | 
						|
    $info->i_speed_high()
 | 
						|
 | 
						|
      Speed of a high-speed link, human format. See munge_highspeed() later
 | 
						|
      in document for details. You should not need to call this directly,
 | 
						|
      as i_speed() will call it if it needs to.
 | 
						|
 | 
						|
      (ifHighSpeed)
 | 
						|
 | 
						|
    $info->i_mac()
 | 
						|
 | 
						|
      MAC address of the interface. Note this is just the MAC of the port,
 | 
						|
      not anything connected to it.
 | 
						|
 | 
						|
      (ifPhysAddress)
 | 
						|
 | 
						|
    $info->i_up()
 | 
						|
 | 
						|
      Link Status of the interface. Typical values are 'up' and 'down'.
 | 
						|
 | 
						|
      (ifOperStatus)
 | 
						|
 | 
						|
    $info->i_up_admin()
 | 
						|
 | 
						|
      Administrative status of the port. Typical values are 'enabled' and
 | 
						|
      'disabled'.
 | 
						|
 | 
						|
      (ifAdminStatus)
 | 
						|
 | 
						|
    $info->i_lastchange()
 | 
						|
 | 
						|
      The value of sysUpTime when this port last changed states (up,down).
 | 
						|
 | 
						|
      (ifLastChange)
 | 
						|
 | 
						|
    $info->i_name()
 | 
						|
 | 
						|
      Interface Name field. Supported by a smaller subset of devices, this
 | 
						|
      fields is often human set.
 | 
						|
 | 
						|
      (ifName)
 | 
						|
 | 
						|
    $info->i_alias()
 | 
						|
 | 
						|
      Interface Name field. For certain devices this is a more human
 | 
						|
      friendly form of i_description(). For others it is a human set field
 | 
						|
      like i_name().
 | 
						|
 | 
						|
      (ifAlias)
 | 
						|
 | 
						|
 Interface Statistics
 | 
						|
 | 
						|
    $info->i_octet_in(), $info->i_octets_out(), $info->i_octet_in64(),
 | 
						|
    $info->i_octets_out64()
 | 
						|
 | 
						|
      Bandwidth.
 | 
						|
 | 
						|
      Number of octets sent/received on the interface including framing
 | 
						|
      characters.
 | 
						|
 | 
						|
      64 bit version may not exist on all devices.
 | 
						|
 | 
						|
      NOTE: To manipulate 64 bit counters you need to use Math::BigInt,
 | 
						|
      since the values are too large for a normal Perl scalar. Set the
 | 
						|
      global $SNMP::Info::BIGINT to 1 , or pass the BigInt value to new()
 | 
						|
      if you want SNMP::Info to do it for you.
 | 
						|
 | 
						|
      (ifInOctets) (ifOutOctets) (ifHCInOctets) (ifHCOutOctets)
 | 
						|
 | 
						|
    $info->i_errors_in(), $info->i_errors_out()
 | 
						|
 | 
						|
      Number of packets that contained an error preventing delivery. See
 | 
						|
      IF-MIB for more info.
 | 
						|
 | 
						|
      (ifInErrors) (ifOutErrors)
 | 
						|
 | 
						|
    $info->i_pkts_ucast_in(), $info->i_pkts_ucast_out(),
 | 
						|
    $info->i_pkts_ucast_in64(), $info->i_pkts_ucast_out64()
 | 
						|
 | 
						|
      Number of packets not sent to a multicast or broadcast address.
 | 
						|
 | 
						|
      64 bit version may not exist on all devices.
 | 
						|
 | 
						|
      (ifInUcastPkts) (ifOutUcastPkts) (ifHCInUcastPkts) (ifHCOutUcastPkts)
 | 
						|
 | 
						|
    $info->i_pkts_nucast_in(), $info->i_pkts_nucast_out(),
 | 
						|
 | 
						|
      Number of packets sent to a multicast or broadcast address.
 | 
						|
 | 
						|
      These methods are deprecated by i_pkts_multi_in() and
 | 
						|
      i_pkts_bcast_in() according to IF-MIB. Actual device usage may vary.
 | 
						|
 | 
						|
      (ifInNUcastPkts) (ifOutNUcastPkts)
 | 
						|
 | 
						|
    $info->i_pkts_multi_in() $info->i_pkts_multi_out(),
 | 
						|
    $info->i_pkts_multi_in64(), $info->i_pkts_multi_out64()
 | 
						|
 | 
						|
      Number of packets sent to a multicast address.
 | 
						|
 | 
						|
      64 bit version may not exist on all devices.
 | 
						|
 | 
						|
      (ifInMulticastPkts) (ifOutMulticastPkts) (ifHCInMulticastPkts)
 | 
						|
      (ifHCOutMulticastPkts)
 | 
						|
 | 
						|
    $info->i_pkts_bcast_in() $info->i_pkts_bcast_out(),
 | 
						|
    $info->i_pkts_bcast_in64() $info->i_pkts_bcast_out64()
 | 
						|
 | 
						|
      Number of packets sent to a broadcast address on an interface.
 | 
						|
 | 
						|
      64 bit version may not exist on all devices.
 | 
						|
 | 
						|
      (ifInBroadcastPkts) (ifOutBroadcastPkts) (ifHCInBroadcastPkts)
 | 
						|
      (ifHCOutBroadcastPkts)
 | 
						|
 | 
						|
    $info->i_discards_in() $info->i_discards_out()
 | 
						|
 | 
						|
      "The number of inbound packets which were chosen to be discarded even
 | 
						|
      though no errors had been detected to prevent their being deliverable
 | 
						|
      to a higher-layer protocol. One possible reason for discarding such a
 | 
						|
      packet could be to free up buffer space." (IF-MIB)
 | 
						|
 | 
						|
      (ifInDiscards) (ifOutDiscards)
 | 
						|
 | 
						|
    $info->i_bad_proto_in()
 | 
						|
 | 
						|
      "For packet-oriented interfaces, the number of packets received via
 | 
						|
      the interface which were discarded because of an unknown or
 | 
						|
      unsupported protocol. For character-oriented or fixed-length
 | 
						|
      interfaces that support protocol multiplexing the number of
 | 
						|
      transmission units received via the interface which were discarded
 | 
						|
      because of an unknown or unsupported protocol. For any interface that
 | 
						|
      does not support protocol multiplexing, this counter will always be
 | 
						|
      0."
 | 
						|
 | 
						|
      (ifInUnknownProtos)
 | 
						|
 | 
						|
    $info->i_qlen_out()
 | 
						|
 | 
						|
      "The length of the output packet queue (in packets)."
 | 
						|
 | 
						|
      (ifOutQLen)
 | 
						|
 | 
						|
    $info->i_specific()
 | 
						|
 | 
						|
      See IF-MIB for full description
 | 
						|
 | 
						|
      (ifSpecific)
 | 
						|
 | 
						|
 IPv4 Address Table
 | 
						|
 | 
						|
    Each entry in this table is an IPv4 address in use on this device.
 | 
						|
    Usually this is implemented in Layer3 Devices. These methods try the
 | 
						|
    deprecated IPv4 address table IP-MIB::ipAddrTable first due to its
 | 
						|
    prevalence and will try the current IP-MIB::ipAddressTable if it
 | 
						|
    doesn't return any results. IP-MIB::ipAddressTable results are filtered
 | 
						|
    to only return IPv4 unicast addresses and modified to match the return
 | 
						|
    format of the older table for backwards compatibility.
 | 
						|
 | 
						|
    See documentation in SNMP::Info::IPv6 for IPv6 Address Table.
 | 
						|
 | 
						|
    $info->ip_index()
 | 
						|
 | 
						|
      Maps the IPv4 addresses to the interface index
 | 
						|
 | 
						|
      (ipAdEntIfIndex) or filtered and index modified (ipAddressIfIndex)
 | 
						|
 | 
						|
    $info->ip_table()
 | 
						|
 | 
						|
      Maps the Table to the IPv4 address
 | 
						|
 | 
						|
      (ipAdEntAddr) or address extracted from (ipAddressIfIndex)
 | 
						|
 | 
						|
    $info->ip_netmask()
 | 
						|
 | 
						|
      Gives netmask setting for IPv4 table entry.
 | 
						|
 | 
						|
      (ipAdEntNetMask) or netmask calculated from (ipAddressPrefix)
 | 
						|
 | 
						|
    $info->ip_broadcast()
 | 
						|
 | 
						|
      Gives the value of the least-significant bit in the IPv4 broadcast
 | 
						|
      address either 1 or 0.
 | 
						|
 | 
						|
      (ipAdEntBcastAddr), there is no equivalent from the
 | 
						|
      IP-MIB::ipAddressTable
 | 
						|
 | 
						|
 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)
 | 
						|
 | 
						|
 Topology Information
 | 
						|
 | 
						|
    Based upon the manufacturer and software version devices may support
 | 
						|
    some combination of Layer 2 topology protocol information. SNMP::Info
 | 
						|
    supports querying Link Layer Discovery Protocol (LLDP), Cisco Discovery
 | 
						|
    Protocol (CDP), SynOptics/Bay/Nortel/Avaya Network Management Protocol
 | 
						|
    (SONMP), Foundry/Brocade Discovery Protocol (FDP), Extreme Discovery
 | 
						|
    Protocol (EDP), and Alcatel Mapping Adjacency Protocol (AMAP).
 | 
						|
 | 
						|
    For protocol specific information and implementation:
 | 
						|
 | 
						|
    AMAP: See SNMP::Info::AMAP for details.
 | 
						|
 | 
						|
    CDP: See SNMP::Info::CDP for details.
 | 
						|
 | 
						|
    EDP: See SNMP::Info::EDP for details.
 | 
						|
 | 
						|
    FDP: See SNMP::Info::FDP for details.
 | 
						|
 | 
						|
    LLDP: See SNMP::Info::LLDP for details.
 | 
						|
 | 
						|
    SONMP: See SNMP::Info::SONMP for details.
 | 
						|
 | 
						|
  Topology Capabilities
 | 
						|
 | 
						|
    $info->has_topo()
 | 
						|
 | 
						|
      Reports Layer 2 topology protocols which are supported and running on
 | 
						|
      a device.
 | 
						|
 | 
						|
      Returns either a reference to an array of protocols, possible values
 | 
						|
      being: lldp, cdp, sonmp, fdp, edp, amap or undef if no protocols are
 | 
						|
      supported or running.
 | 
						|
 | 
						|
  Common Topology Table Information
 | 
						|
 | 
						|
    The common topology table methods below will query the device for
 | 
						|
    information from the specified topology protocols and return a single
 | 
						|
    hash combining all information. As a result, there may be identical
 | 
						|
    topology information returned from the two protocols causing duplicate
 | 
						|
    entries. It is the calling program's responsibility to identify any
 | 
						|
    duplicate entries and remove duplicates if necessary. If it is
 | 
						|
    necessary to understand which protocol provided the information,
 | 
						|
    utilize the protocol specific methods directly rather than the generic
 | 
						|
    methods.
 | 
						|
 | 
						|
    The methods support partial table fetches by providing a partial as the
 | 
						|
    first argument.
 | 
						|
 | 
						|
    If a reference to an array is provided as the second argument, those
 | 
						|
    protocols will be queried for information. The supported array values
 | 
						|
    are: lldp, cdp, sonmp, fdp, edp, amap.
 | 
						|
 | 
						|
    If nothing is passed in as the second argument, the methods will call
 | 
						|
    has_topo() to determine supported and running topology protocols on the
 | 
						|
    device.
 | 
						|
 | 
						|
    $info->c_ip(partial, topology_protocol_arrayref)
 | 
						|
 | 
						|
      Returns reference to hash. Key: iid, Value: remote IPv4 address
 | 
						|
 | 
						|
      If multiple entries exist with the same local port, c_if(), with the
 | 
						|
      same IPv4 address, c_ip(), it may be a duplicate entry.
 | 
						|
 | 
						|
      If multiple entries exist with the same local port, c_if(), with
 | 
						|
      different IPv4 addresses, c_ip(), there is either a device in between
 | 
						|
      two or more devices utilizing a different topology protocol or
 | 
						|
      multiple devices which are not directly connected.
 | 
						|
 | 
						|
      Use the protocol specific methods to dig deeper.
 | 
						|
 | 
						|
    $info->c_if(partial, topology_protocol_arrayref)
 | 
						|
 | 
						|
      Returns reference to hash. Key: iid, Value: local device port
 | 
						|
      (interfaces)
 | 
						|
 | 
						|
    $info->c_port(partial, topology_protocol_arrayref)
 | 
						|
 | 
						|
      Returns reference to hash. Key: iid, Value: remote port (interfaces)
 | 
						|
 | 
						|
    $info->c_id(partial, topology_protocol_arrayref)
 | 
						|
 | 
						|
      Returns reference to hash. Key: iid, Value: string value used to
 | 
						|
      identify the chassis component associated with the remote system.
 | 
						|
 | 
						|
      Note: SONMP does not return this information.
 | 
						|
 | 
						|
    $info->c_platform(partial, topology_protocol_arrayref)
 | 
						|
 | 
						|
      Returns reference to hash. Key: iid, Value: Remote Device Type
 | 
						|
 | 
						|
      Note: EDP does not provide this information. LLDP uses
 | 
						|
      (lldpRemSysDesc) or lldp_rem_sysname as the closest match.
 | 
						|
 | 
						|
    $info->c_cap(partial, topology_protocol_arrayref)
 | 
						|
 | 
						|
      Returns reference to hash of arrays. Key: iid, Value: Array of
 | 
						|
      capabilities supported by the device. See the specific protocol class
 | 
						|
      for string values which could be elements within the array.
 | 
						|
 | 
						|
      Note: Only CDP and LLDP support this method.
 | 
						|
 | 
						|
SETTING DATA VIA SNMP
 | 
						|
 | 
						|
    This section explains how to use SNMP::Info to do SNMP Set operations.
 | 
						|
 | 
						|
    $info->set_METHOD($value)
 | 
						|
 | 
						|
      Sets the global METHOD to value. Assumes that iid is .0
 | 
						|
 | 
						|
      Returns if failed, or the return value from SNMP::Session::set()
 | 
						|
      (snmp_errno)
 | 
						|
 | 
						|
       $info->set_location("Here!");
 | 
						|
 | 
						|
    $info->set_METHOD($value,$iid)
 | 
						|
 | 
						|
      Table Methods. Set iid of method to value.
 | 
						|
 | 
						|
      Returns if failed, or the return value from SNMP::Session::set()
 | 
						|
      (snmp_errno)
 | 
						|
 | 
						|
       # Disable a port administratively
 | 
						|
       my %if_map = reverse %{$info->interfaces()}
 | 
						|
       $info->set_i_up_admin('down', $if_map{'FastEthernet0/0'})
 | 
						|
          or die "Couldn't disable the port. ",$info->error(1);
 | 
						|
 | 
						|
    NOTE: You must be connected to your device with a ReadWrite community
 | 
						|
    string in order for set operations to work.
 | 
						|
 | 
						|
    NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data
 | 
						|
    acquired from overridden methods (subroutines) specific set_METHOD()
 | 
						|
    subroutines will need to be added if they haven't been already.
 | 
						|
 | 
						|
Quiet Mode
 | 
						|
 | 
						|
    SNMP::Info will not chirp anything to STDOUT unless there is a serious
 | 
						|
    error (in which case it will probably die).
 | 
						|
 | 
						|
    To get lots of debug info, set the Debug flag when calling new() or
 | 
						|
    call $info->debug(1);
 | 
						|
 | 
						|
    When calling a method check the return value. If the return value is
 | 
						|
    undef then check $info->error()
 | 
						|
 | 
						|
    Beware, calling $info->error() clears the error.
 | 
						|
 | 
						|
     my $name = $info->name() or die "Couldn't get sysName!" . $name->error();
 | 
						|
 | 
						|
EXTENDING SNMP::INFO
 | 
						|
 | 
						|
    To support a new class (vendor or platform) of device, add a Perl
 | 
						|
    package with the data structures and methods listed below.
 | 
						|
 | 
						|
    If this seems a little scary, then the SNMP::Info developers are
 | 
						|
    usually happy to accept the SNMP data from your device and make an
 | 
						|
    attempt at the class themselves. Usually a "beta" release will go to
 | 
						|
    CPAN for you to verify the implementation.
 | 
						|
 | 
						|
 Gathering MIB data for SNMP::Info Developers
 | 
						|
 | 
						|
    The preference is to open a pull request in the github project. This
 | 
						|
    allows all developers to have visibility into the request. Please
 | 
						|
    include pointers to the applicable platform MIBs. For development we
 | 
						|
    will need an snmpwalk of the device. There is a tool now included in
 | 
						|
    the SNMP::Info distribution to help with this task, although you'll
 | 
						|
    most likely need to download the distribution from CPAN as it's
 | 
						|
    included in the "contrib/util" directory.
 | 
						|
 | 
						|
    The utility is named make_snmpdata.pl. Run it with a command line like:
 | 
						|
 | 
						|
     ./make_snmpdata.pl -c community -i -d device_ip \
 | 
						|
      -m /home/netdisco-mibs/rfc:/home/netdisco-mibs/net-snmp:/home/netdisco-mibs/dir3 \
 | 
						|
      SNMPv2-MIB IF-MIB EtherLike-MIB BRIDGE-MIB Q-BRIDGE-MIB ENTITY-MIB \
 | 
						|
      POWER-ETHERNET-MIB IPV6-MIB LLDP-MIB DEVICE-SPECIFIC-MIB-NAME(s) > output.txt
 | 
						|
 | 
						|
    This will print to the file every MIB entry with data in a format that
 | 
						|
    the developers can use to emulate read operations without needing
 | 
						|
    access to the device. Preference would be to mask any sensitive data in
 | 
						|
    the output, zip the file, and attach it to the github pull request.
 | 
						|
    However, if you do not feel comfortable uploading the output to the
 | 
						|
    tracker you could e-mail it to the developer that has claimed the
 | 
						|
    ticket.
 | 
						|
 | 
						|
 Data Structures required in new Subclass
 | 
						|
 | 
						|
    A class inheriting this class must implement these data structures :
 | 
						|
 | 
						|
    $INIT
 | 
						|
 | 
						|
      Used to flag if the MIBs have been loaded yet.
 | 
						|
 | 
						|
    %GLOBALS
 | 
						|
 | 
						|
      Contains a hash in the form ( method_name => SNMP MIB leaf name )
 | 
						|
      These are scalar values such as name, uptime, etc.
 | 
						|
 | 
						|
      To resolve MIB leaf name conflicts between private MIBs, you may
 | 
						|
      prefix the leaf name with the MIB replacing each - (dash) and :
 | 
						|
      (colon) with an _ (underscore). For example,
 | 
						|
      ALTEON_TIGON_SWITCH_MIB__agSoftwareVersion would be used as the hash
 | 
						|
      value instead of the net-snmp notation
 | 
						|
      ALTEON-TIGON-SWITCH-MIB::agSoftwareVersion.
 | 
						|
 | 
						|
      When choosing the name for the methods, be aware that other new Sub
 | 
						|
      Modules might inherit this one to get it's features. Try to choose a
 | 
						|
      prefix for methods that will give it's own name space inside the
 | 
						|
      SNMP::Info methods.
 | 
						|
 | 
						|
    %FUNCS
 | 
						|
 | 
						|
      Contains a hash in the form ( method_name => SNMP MIB leaf name)
 | 
						|
      These are table entries, such as the ifIndex
 | 
						|
 | 
						|
      To resolve MIB leaf name conflicts between private MIBs, you may
 | 
						|
      prefix the leaf name with the MIB replacing each - (dash) and :
 | 
						|
      (colon) with an _ (underscore). For example,
 | 
						|
      ALTEON_TS_PHYSICAL_MIB__agPortCurCfgPortName would be used as the
 | 
						|
      hash value instead of the net-snmp notation
 | 
						|
      ALTEON-TS-PHYSICAL-MIB::agPortCurCfgPortName.
 | 
						|
 | 
						|
    %MIBS
 | 
						|
 | 
						|
      A list of each mib needed.
 | 
						|
 | 
						|
          ('MIB-NAME' => 'itemToTestForPresence')
 | 
						|
 | 
						|
      The value for each entry should be a MIB object to check for to make
 | 
						|
      sure that the MIB is present and has loaded correctly.
 | 
						|
 | 
						|
      $info->init() will throw an exception if a MIB does not load.
 | 
						|
 | 
						|
    %MUNGE
 | 
						|
 | 
						|
      A map between method calls (from %FUNCS or %GLOBALS) and subroutine
 | 
						|
      methods. The subroutine called will be passed the data as it gets it
 | 
						|
      from SNMP and it should return that same data in a more human
 | 
						|
      friendly format.
 | 
						|
 | 
						|
      Sample %MUNGE:
 | 
						|
 | 
						|
       (my_ip     => \&munge_ip,
 | 
						|
        my_mac    => \&munge_mac,
 | 
						|
        my_layers => \&munge_dec2bin
 | 
						|
       )
 | 
						|
 | 
						|
 Sample Subclass
 | 
						|
 | 
						|
    Let's make a sample Layer 2 Device subclass. This class will inherit
 | 
						|
    the Cisco Vlan module as an example.
 | 
						|
 | 
						|
    ----------------------- snip --------------------------------
 | 
						|
 | 
						|
     # SNMP::Info::Layer2::Sample
 | 
						|
    
 | 
						|
     package SNMP::Info::Layer2::Sample;
 | 
						|
    
 | 
						|
     $VERSION = 0.1;
 | 
						|
    
 | 
						|
     use strict;
 | 
						|
     use warnings;
 | 
						|
    
 | 
						|
     use Exporter;
 | 
						|
     use SNMP::Info::Layer2;
 | 
						|
     use SNMP::Info::CiscoVTP;
 | 
						|
    
 | 
						|
     @SNMP::Info::Layer2::Sample::ISA = qw/SNMP::Info::Layer2
 | 
						|
                                           SNMP::Info::CiscoVTP Exporter/;
 | 
						|
     @SNMP::Info::Layer2::Sample::EXPORT_OK = qw//;
 | 
						|
    
 | 
						|
     our ($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG);
 | 
						|
    
 | 
						|
     %MIBS    = (%SNMP::Info::Layer2::MIBS,
 | 
						|
                 %SNMP::Info::CiscoVTP::MIBS,
 | 
						|
                 'SUPER-DOOPER-MIB'  => 'supermibobject',
 | 
						|
                );
 | 
						|
    
 | 
						|
     %GLOBALS = (%SNMP::Info::Layer2::GLOBALS,
 | 
						|
                 %SNMP::Info::CiscoVTP::GLOBALS,
 | 
						|
                 'name'              => 'supermib_supername',
 | 
						|
                 'favorite_color'    => 'supermib_fav_color_object',
 | 
						|
                 'favorite_movie'    => 'supermib_fav_movie_val',
 | 
						|
                 );
 | 
						|
    
 | 
						|
     %FUNCS   = (%SNMP::Info::Layer2::FUNCS,
 | 
						|
                 %SNMP::Info::CiscoVTP::FUNCS,
 | 
						|
                 # Super Dooper MIB - Super Hero Table
 | 
						|
                 'super_hero_index'  => 'SuperHeroIfIndex',
 | 
						|
                 'super_hero_name'   => 'SuperHeroIfName',
 | 
						|
                 'super_hero_powers' => 'SuperHeroIfPowers',
 | 
						|
                );
 | 
						|
    
 | 
						|
    
 | 
						|
     %MUNGE   = (%SNMP::Info::Layer2::MUNGE,
 | 
						|
                 %SNMP::Info::CiscoVTP::MUNGE,
 | 
						|
                 'super_hero_powers' => \&munge_powers,
 | 
						|
                );
 | 
						|
    
 | 
						|
     # Override uptime() method from %SNMP::Info::GLOBALS
 | 
						|
     sub uptime {
 | 
						|
         my $sample = shift;
 | 
						|
    
 | 
						|
         my $name   = $sample->name();
 | 
						|
    
 | 
						|
         # this is silly but you get the idea
 | 
						|
         return '600' if defined $name ;
 | 
						|
     }
 | 
						|
    
 | 
						|
     # Create our own munge function
 | 
						|
     sub munge_powers {
 | 
						|
         my $power = shift;
 | 
						|
    
 | 
						|
         # Take the returned obscure value and return something useful.
 | 
						|
         return 'Fire' if $power =~ /reallyhot/i;
 | 
						|
         return 'Ice'  if $power =~ /reallycold/i;
 | 
						|
    
 | 
						|
         # Else
 | 
						|
         return $power;
 | 
						|
     }
 | 
						|
    
 | 
						|
     # Copious Documentation here!!!
 | 
						|
     =head1 NAME
 | 
						|
     =head1 AUTHOR
 | 
						|
     =head1 SYNOPSIS
 | 
						|
     =head1 DESCRIPTION
 | 
						|
     =head2 Inherited Classes
 | 
						|
     =head2 Required MIBs
 | 
						|
     =head1 GLOBALS
 | 
						|
     =head2 Overrides
 | 
						|
     =head1 TABLE METHODS
 | 
						|
     =head2 Overrides
 | 
						|
     =cut
 | 
						|
    
 | 
						|
     1; # don't forget this line
 | 
						|
    ----------------------- snip --------------------------------
 | 
						|
 | 
						|
SNMP::INFO INTERNALS
 | 
						|
 | 
						|
 Object Namespace
 | 
						|
 | 
						|
    Internal data is stored with bareword keys. For example $info->{debug}
 | 
						|
 | 
						|
    SNMP Data is stored or marked cached with keys starting with an
 | 
						|
    underscore. For example $info->{_name} is the cache for $info->name().
 | 
						|
 | 
						|
    Cached Table data is stored in $info->store() and marked cached per
 | 
						|
    above.
 | 
						|
 | 
						|
 Package Globals
 | 
						|
 | 
						|
    These set the default value for an object upon creation.
 | 
						|
 | 
						|
    $DEBUG
 | 
						|
 | 
						|
      Default 0. Sends copious debug info to stdout. This global sets the
 | 
						|
      object's debug status in new() unless 'Debug' argument passed in
 | 
						|
      new(). Change objects' debug status with $info->debug().
 | 
						|
 | 
						|
    $BIGINT
 | 
						|
 | 
						|
      Default 0. Set to true to have 64 bit counters return Math::BigInt
 | 
						|
      objects instead of scalar string values. See note under Interface
 | 
						|
      Statistics about 64 bit values.
 | 
						|
 | 
						|
    $NOSUCH
 | 
						|
 | 
						|
      Default 1. Set to false to disable RetryNoSuch option for
 | 
						|
      SNMP::Session. Or see method in new() to do it on an object scope.
 | 
						|
 | 
						|
    $REPEATERS
 | 
						|
 | 
						|
      Default 20. MaxRepeaters for BULKWALK operations. See perldoc SNMP
 | 
						|
      for more info. Can change by passing "BulkRepeaters" option in new()
 | 
						|
 | 
						|
 Data Munging Callback Subroutines
 | 
						|
 | 
						|
    munge_speed()
 | 
						|
 | 
						|
      Makes human friendly speed ratings using %SPEED_MAP.
 | 
						|
 | 
						|
       %SPEED_MAP = (
 | 
						|
                      '56000'      => '56 kbps',
 | 
						|
                      '64000'      => '64 kbps',
 | 
						|
                      '115000'     => '115 kbps',
 | 
						|
                      '1500000'    => '1.5 Mbps',
 | 
						|
                      '1536000'    => 'T1',
 | 
						|
                      '1544000'    => 'T1',
 | 
						|
                      '2000000'    => '2.0 Mbps',
 | 
						|
                      '2048000'    => '2.048 Mbps',
 | 
						|
                      '3072000'    => 'Dual T1',
 | 
						|
                      '3088000'    => 'Dual T1',
 | 
						|
                      '4000000'    => '4.0 Mbps',
 | 
						|
                      '10000000'   => '10 Mbps',
 | 
						|
                      '11000000'   => '11 Mbps',
 | 
						|
                      '16000000'   => '16 Mbps',
 | 
						|
                      '16777216'   => '16 Mbps',
 | 
						|
                      '20000000'   => '20 Mbps',
 | 
						|
                      '44210000'   => 'T3',
 | 
						|
                      '44736000'   => 'T3',
 | 
						|
                      '45000000'   => '45 Mbps',
 | 
						|
                      '45045000'   => 'DS3',
 | 
						|
                      '46359642'   => 'DS3',
 | 
						|
                      '51850000'   => 'OC-1',
 | 
						|
                      '54000000'   => '54 Mbps',
 | 
						|
                      '64000000'   => '64 Mbps',
 | 
						|
                      '100000000'  => '100 Mbps',
 | 
						|
                      '149760000'  => 'ATM on OC-3',
 | 
						|
                      '155000000'  => 'OC-3',
 | 
						|
                      '155519000'  => 'OC-3',
 | 
						|
                      '155520000'  => 'OC-3',
 | 
						|
                      '200000000'  => '200 Mbps',
 | 
						|
                      '400000000'  => '400 Mbps',
 | 
						|
                      '599040000'  => 'ATM on OC-12',
 | 
						|
                      '622000000'  => 'OC-12',
 | 
						|
                      '622080000'  => 'OC-12',
 | 
						|
                      '1000000000' => '1.0 Gbps',
 | 
						|
                      '2000000000' => '2.0 Gbps',
 | 
						|
                      '2488000000' => 'OC-48',
 | 
						|
                      '2500000000' => '2.5 Gbps',
 | 
						|
                   )
 | 
						|
 | 
						|
      Note: high speed interfaces (usually 1 Gbps or faster) have their
 | 
						|
      link speed in ifHighSpeed. i_speed() automatically determines whether
 | 
						|
      to use ifSpeed or ifHighSpeed; if the latter is used, the value is
 | 
						|
      munged by munge_highspeed(). SNMP::Info can return speeds up to
 | 
						|
      terabit levels this way.
 | 
						|
 | 
						|
    munge_highspeed()
 | 
						|
 | 
						|
      Makes human friendly speed ratings for ifHighSpeed.
 | 
						|
 | 
						|
    munge_ip()
 | 
						|
 | 
						|
      Takes a binary IP and makes it dotted ASCII.
 | 
						|
 | 
						|
    munge_inetaddress
 | 
						|
 | 
						|
      Takes a binary IP address as defined by the SNMP InetAddress type and
 | 
						|
      returns it as human readable string;
 | 
						|
 | 
						|
    munge_mac()
 | 
						|
 | 
						|
      Takes an octet stream (HEX-STRING) and returns a colon separated
 | 
						|
      ASCII hex string.
 | 
						|
 | 
						|
    munge_prio_mac()
 | 
						|
 | 
						|
      Takes an 8-byte octet stream (HEX-STRING) and returns a colon
 | 
						|
      separated ASCII hex string.
 | 
						|
 | 
						|
    munge_prio_port()
 | 
						|
 | 
						|
      Takes an 2-byte octet stream (HEX-STRING) and returns a colon
 | 
						|
      separated ASCII hex string.
 | 
						|
 | 
						|
    munge_octet2hex()
 | 
						|
 | 
						|
      Takes a binary octet stream and returns an ASCII hex string.
 | 
						|
 | 
						|
    munge_dec2bin()
 | 
						|
 | 
						|
      Takes a binary char and returns its ASCII binary representation.
 | 
						|
 | 
						|
    munge_bits()
 | 
						|
 | 
						|
      Takes a SNMP2 'BITS' field and returns the ASCII bit string.
 | 
						|
 | 
						|
    munge_counter64()
 | 
						|
 | 
						|
      If $BIGINT is set to true, then a Math::BigInt object is returned.
 | 
						|
      See Math::BigInt for details.
 | 
						|
 | 
						|
    munge_i_up()
 | 
						|
 | 
						|
      Net-SNMP tends to load RFC1213-MIB first, and so ignores the updated
 | 
						|
      enumeration for ifOperStatus in IF-MIB. This munge handles the
 | 
						|
      "newer" definitions for the enumeration in IF-MIB.
 | 
						|
 | 
						|
      TODO: Get the precedence of MIBs and overriding of MIB data in
 | 
						|
      Net-SNMP figured out. Hierarchy/precedence of MIBS in SNMP::Info.
 | 
						|
 | 
						|
    munge_port_list()
 | 
						|
 | 
						|
      Takes an octet string representing a set of ports and returns a
 | 
						|
      reference to an array of binary values each array element
 | 
						|
      representing a port.
 | 
						|
 | 
						|
      If the element has a value of '1', then that port is included in the
 | 
						|
      set of ports; the port is not included if it has a value of '0'.
 | 
						|
 | 
						|
    munge_null()
 | 
						|
 | 
						|
      Removes control characters from a string.
 | 
						|
 | 
						|
    munge_e_type()
 | 
						|
 | 
						|
      Takes an OID and return the object name if the right MIB is loaded.
 | 
						|
 | 
						|
 Internally Used Functions
 | 
						|
 | 
						|
    resolve_desthost()
 | 
						|
 | 
						|
      Takes the SNMP::Session DestHost argument and determines if it is an
 | 
						|
      'IPv4' or 'IPv6' host. 'IPv6' hosts are prefixed with the udp6:
 | 
						|
      transport-specifier as required by the underlying Net-SNMP library.
 | 
						|
      If unable to determine the type of address or resolve a DNS name,
 | 
						|
      dies with croak.
 | 
						|
 | 
						|
    $info->init()
 | 
						|
 | 
						|
      Used internally. Loads all entries in %MIBS.
 | 
						|
 | 
						|
    $info->args()
 | 
						|
 | 
						|
      Returns a reference to the argument hash supplied to SNMP::Session
 | 
						|
 | 
						|
    $info->class()
 | 
						|
 | 
						|
      Returns the class name of the object.
 | 
						|
 | 
						|
    $info->error_throw(error message)
 | 
						|
 | 
						|
      Stores the error message for use by $info->error()
 | 
						|
 | 
						|
      If $info->debug() is true, then the error message is carped too.
 | 
						|
 | 
						|
    $info->funcs()
 | 
						|
 | 
						|
      Returns a reference to the %FUNCS hash.
 | 
						|
 | 
						|
    $info->globals()
 | 
						|
 | 
						|
      Returns a reference to the %GLOBALS hash.
 | 
						|
 | 
						|
    $info->mibs()
 | 
						|
 | 
						|
      Returns a reference to the %MIBS hash.
 | 
						|
 | 
						|
    $info->munge()
 | 
						|
 | 
						|
      Returns a reference of the %MUNGE hash.
 | 
						|
 | 
						|
    $info->nosuch()
 | 
						|
 | 
						|
      Returns NoSuch value set or not in new()
 | 
						|
 | 
						|
    $info->session()
 | 
						|
 | 
						|
      Gets or Sets the SNMP::Session object.
 | 
						|
 | 
						|
    $info->store(new_store)
 | 
						|
 | 
						|
      Returns or sets hash store for Table functions.
 | 
						|
 | 
						|
      Store is a hash reference in this format :
 | 
						|
 | 
						|
      $info->store = { attribute => { iid => value , iid2 => value2, ... }
 | 
						|
      };
 | 
						|
 | 
						|
    $info->_global()
 | 
						|
 | 
						|
      Used internally by AUTOLOAD to create dynamic methods from %GLOBALS
 | 
						|
      or a single instance MIB Leaf node name from a loaded MIB.
 | 
						|
 | 
						|
      Example: $info->name() on the first call dispatches to AUTOLOAD()
 | 
						|
      which calls $info->_global('name') creating the method name().
 | 
						|
 | 
						|
      These methods return data as a scalar.
 | 
						|
 | 
						|
    $info->_set(attr,val,iid,type)
 | 
						|
 | 
						|
      Used internally by set_multi() to run an SNMP set command. When run
 | 
						|
      clears attr cache.
 | 
						|
 | 
						|
      Attr can be passed as either a scalar or a reference to an array or
 | 
						|
      array of arrays when used with set_multi().
 | 
						|
 | 
						|
      Example: $info->set_name('dog',3) uses autoload to resolve to
 | 
						|
      $info->_set('name','dog',3);
 | 
						|
 | 
						|
    $info->_make_setter(val,iid)
 | 
						|
 | 
						|
      Used internally by AUTOLOAD to create dynamic methods from either
 | 
						|
      %GLOBALS, %FUNCS, or a valid mib leaf from a loaded MIB which runs an
 | 
						|
      SNMP set command. When run clears the attribute cache.
 | 
						|
 | 
						|
      Example: $info->set_name('dog',3) dispatches to autoload to resolve
 | 
						|
      to $info->_set('name','dog',3) and _make_setter creates the
 | 
						|
      set_name() method.
 | 
						|
 | 
						|
    $info->set_multi(arrayref)
 | 
						|
 | 
						|
      Used to run an SNMP set command on several new values in the one
 | 
						|
      request. Returns the result of $info->_set(method).
 | 
						|
 | 
						|
      Pass either a reference to a 4 element array [<obj>, <iid>, <val>,
 | 
						|
      <type>] or a reference to an array of 4 element arrays to specify
 | 
						|
      multiple values.
 | 
						|
 | 
						|
          <obj> - One of the following forms:
 | 
						|
              1) leaf identifier (e.g., C<'sysContact'>)
 | 
						|
              2) An entry in either %FUNCS, %GLOBALS (e.g., 'contact')
 | 
						|
          <iid> - The dotted-decimal, instance identifier. For scalar MIB objects
 | 
						|
                   use '0'
 | 
						|
          <val>  - The SNMP data value being set (e.g., 'netdisco')
 | 
						|
          <type> - Optional as the MIB should be loaded.
 | 
						|
 | 
						|
      If one of the set assignments is invalid, then the request will be
 | 
						|
      rejected without applying any of the new values - regardless of the
 | 
						|
      order they appear in the list.
 | 
						|
 | 
						|
      Example: my $vlan_set = [
 | 
						|
      ['qb_v_untagged',"$old_vlan_id","$old_untagged_portlist"],
 | 
						|
      ['qb_v_egress',"$new_vlan_id","$new_egress_portlist"],
 | 
						|
      ['qb_v_egress',"$old_vlan_id","$old_egress_portlist"],
 | 
						|
      ['qb_v_untagged',"$new_vlan_id","$new_untagged_portlist"],
 | 
						|
      ['qb_i_vlan',"$port","$new_vlan_id"], ];
 | 
						|
 | 
						|
          $info->set_multi($vlan_set);
 | 
						|
 | 
						|
    $info->load_all()
 | 
						|
 | 
						|
      Debugging routine. This does not include any overridden method or
 | 
						|
      method implemented by subroutine.
 | 
						|
 | 
						|
      Runs $info->load_METHOD() for each entry in $info->funcs();
 | 
						|
 | 
						|
      Returns $info->store() -- See store() entry.
 | 
						|
 | 
						|
      Note return value has changed since version 0.3
 | 
						|
 | 
						|
    $info->all()
 | 
						|
 | 
						|
      Runs $info->load_all() once then returns $info->store();
 | 
						|
 | 
						|
      Use $info->load_all() to reload the data.
 | 
						|
 | 
						|
      Note return value has changed since version 0.3
 | 
						|
 | 
						|
    $info->_load_attr()
 | 
						|
 | 
						|
      Used internally by AUTOLOAD to create dynamic methods from %FUNCS or
 | 
						|
      a MIB Leaf node name contained within a table of a loaded MIB.
 | 
						|
 | 
						|
      Supports partial table fetches and single instance table fetches. See
 | 
						|
      "Partial Table Fetches" in SNMP::Info.
 | 
						|
 | 
						|
      These methods return data as a reference to a hash.
 | 
						|
 | 
						|
    $info->_show_attr()
 | 
						|
 | 
						|
      Used internally by AUTOLOAD to return data called by methods listed
 | 
						|
      in %FUNCS.
 | 
						|
 | 
						|
    $info->snmp_connect_ip(ip)
 | 
						|
 | 
						|
      Returns true or false based upon snmp connectivity to an IP.
 | 
						|
 | 
						|
    modify_port_list(portlist,offset,replacement)
 | 
						|
 | 
						|
      Replaces the specified bit in a port_list array and returns the
 | 
						|
      packed bitmask
 | 
						|
 | 
						|
    $info->_cache(attr, data)
 | 
						|
 | 
						|
      Cache retrieved data so that if it's asked for again, we use the
 | 
						|
      cache instead of going back to Net-SNMP. Data is cached inside the
 | 
						|
      blessed hashref $self.
 | 
						|
 | 
						|
      Accepts the leaf and value (scalar, or hashref for a table). Does not
 | 
						|
      return anything useful.
 | 
						|
 | 
						|
    $info->_munge(attr, data)
 | 
						|
 | 
						|
      Raw data returned from Net-SNMP might not be formatted correctly or
 | 
						|
      might have platform-specific bugs or mistakes. The MUNGE feature of
 | 
						|
      SNMP::Info allows for fixups to take place.
 | 
						|
 | 
						|
      Accepts the leaf and value (scalar, or hashref for a table) and
 | 
						|
      returns the raw or the munged data, as appropriate. That is, you do
 | 
						|
      not need to know whether MUNGE is installed, and it's safe to call
 | 
						|
      this method regardless.
 | 
						|
 | 
						|
    _validate_autoload_method(method)
 | 
						|
 | 
						|
      Used internally by AUTOLOAD to validate that a dynamic method should
 | 
						|
      be created. Returns the OID of the MIB leaf node the method will get
 | 
						|
      or set.
 | 
						|
 | 
						|
      1. Returns unless method is listed in %FUNCS, %GLOBALS, or is MIB
 | 
						|
      Leaf node name in a loaded MIB for given class.
 | 
						|
 | 
						|
      2. Translates the MIB Leaf node name to an OID.
 | 
						|
 | 
						|
      3. Checks to see if the method access type is allowed for the
 | 
						|
      resolved OID. Write access for set_ methods, read access for others.
 | 
						|
 | 
						|
    $info->can()
 | 
						|
 | 
						|
      Overrides UNIVERSAL::can() so that objects will correctly report
 | 
						|
      their capabilities to include dynamic methods generated at run time
 | 
						|
      via AUTOLOAD.
 | 
						|
 | 
						|
      Calls parent can() first to see if method exists, if not validates
 | 
						|
      that a method should be created then dispatches to the appropriate
 | 
						|
      internal method for creation.
 | 
						|
 | 
						|
      Returns undef if the method does not exist and can not be created.
 | 
						|
 | 
						|
 AUTOLOAD
 | 
						|
 | 
						|
    Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present
 | 
						|
    in loaded MIBs are used by AUTOLOAD() to create dynamic methods.
 | 
						|
 | 
						|
    1. Returns unless method is listed in %FUNCS, %GLOBALS, or is a MIB
 | 
						|
    Leaf node name in a loaded MIB for given class.
 | 
						|
 | 
						|
    2. If the method exists in %GLOBALS or is a single instance MIB Leaf
 | 
						|
    node name from a loaded MIB, _global() generates the method.
 | 
						|
 | 
						|
    3. If a set_ prefix is present _make_setter() generates the method.
 | 
						|
 | 
						|
    4. If the method exists in %FUNCS or is a MIB Leaf node name contained
 | 
						|
    within a table from a loaded MIB, _load_attr() generates the method.
 | 
						|
 | 
						|
    5. A load_ prefix forces reloading of data and does not use cached
 | 
						|
    data.
 | 
						|
 | 
						|
    6. A _raw suffix returns data ignoring any munge routines.
 | 
						|
 | 
						|
    Override any dynamic method listed in %GLOBALS, %FUNCS, or MIB Leaf
 | 
						|
    node name a by creating a subroutine with the same name.
 | 
						|
 | 
						|
    For example to override $info->name() create `` sub name {...}'' in
 | 
						|
    your subclass.
 | 
						|
 | 
						|
COPYRIGHT AND LICENSE
 | 
						|
 | 
						|
    Changes from SNMP::Info Version 0.7 and on are: Copyright (c) 2003-2010
 | 
						|
    Max Baker and SNMP::Info Developers All rights reserved.
 | 
						|
 | 
						|
    Original Code is: Copyright (c) 2002-2003, Regents of the University of
 | 
						|
    California All rights reserved.
 | 
						|
 | 
						|
    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.
 | 
						|
 |