SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
ChangeLog $Id: ChangeLog,v 1.99 2011/01/04 15:00:21 jeroenvi Exp $

version 2.02 ()
    + Support for older HP switch models moved to new L2::HP4000 class
    + Fix VLAN changing in L2::HP and L2::HP4000 classes
    * Updated model lists in HP classes
    + [2980782] Added L3::CiscoFWSM for Cisco Firewall Services Modules
      (Brian De Wolf)
    + Added L3::Pf for FreeBSD PFSense Firewalls (max)
    * Added specific functions for neighbor mgmt addresses to CDP class
    * Implemented os_bin() method in CiscoStats 
    + [2980787] Fix for C1900 bp_index not containing interfaces.
      (Brian De Wolf)
    + [2599795] Added vendor_i_type() method to HP and HP4000 clases
    + [2688801] Minor modification for obscure Proxim/Orinoco device
    + [3051443] Add PoE measured power per port to Cisco, Extrme and HP 
      classes (jeroenvi)
    * Minor tweaks to support devices without sysServices
    * Added Cisco CBS3xxx blade switches to L3::C6500
    * Fix for FWSMs not being detected properly.  Special thanks goes to
      Jukka Pirhonen for pointing it out. (Brian De Wolf)
    + Added support for IPv6 to physical address mapping
    * Added ME340x to L3::C3550
    * Added new ProCurve models to HP class

version 2.01 (06/12/09)
    + Added CiscoStpExtensions Class (Carlos Vicente)
    + Added Layer3::Arista (fenner)
    + [2020353] Added L3::Altiga for Cisco (Altiga) VPN3000 Concentrators
                (Jeroen van Ingen)

    * Fixed RFC1213-MIB vs IF-MIB collision in ifOperStatus
    * Updated for better debug info and relative path
    * Add cisco vendor detection by OID in (Sam Stickland)
    * Fix CaSe of EtherLike-MIB in (Alexander Hartmaier)
    * Added Cisco FWSM to L3::Cisco
    * Added s222_rp to L3::C6500
    * Added CIGESM to L2::C2900
    * Added Airespace WLC to L2::Airespace
    * Updated POD and DeviceMatrix quite a bit
    * Added ENTITY-MIB to CiscoStats for better model handling above
    * Fix networkaddress handling in LLDP-MIB
    * Added CiscoConfig to L2::Aironet, L3::C3550  classes
    * Better SSID capabilities for L2::Aironet
    * Fix CDP vs LLDP in c_id() for HP Class
    * improvements

version 2.00 (08/01/08)
    + Support for Alcatel-Lucent OmniSwitch via L3::AlcatelLucent
    + Support for Alcatel-Lucent Service Router via L3::Timetra
    + Support for Alcatel-Lucent OmniAccess via L2::Aruba

    * Silence warnings in MAU due to uninitialized variables 

version 1.09 (07/22/08) - Beta/developer release
    + Added support for HP ProCurve Foundry OEM switches, such as the 9300
      series, in new class L3::HP9300 (contributions from Douglas McKeown and
      Ivan Auger)
    + Added support for CISCO-PAE-MIB in CiscoPortSecurity (Kesy)
    + Support for D-Link devices through L3::Dell
    + Support for Linksys SRW2048 through L3::Dell
    + Support for IBM BladeCenter 4-Port GB Ethernet Switch Module through
      L3::Dell (Alex Kramarov)
    + Support for newer Nortel Alteon switches and Nortel BladeCenter Switch
      Modules in L3::AlteonAD
    + Support for Cisco 1250 series through L2::Aironet
    + Updates to fan, power supply, and serial number methods in
      L2::HP (Jeroen van Ingen)
    + Use Cisco Client Association MIBs for Aironet client reporting
      via fw_mac
    + Support VLANs on Aironet
    + Get the proper radio MAC address from aironet in MBSS mode
    + Additional wireless statistics from Aironet
    + Add support to specify MIB to resolve leaf names conflicts in
      %GLOBALS and %FUNCS.
    + Added munge_port_list() and modify_port_list() methods to assist in
      working with PortList objects. 
    + Added set_multi() method to enable a SNMP set command on several new
      values in one request.  Required for complex set operations
      on some agents.
    + Infrastructure for SNMPv3 support:
        + Save the SecName passed into the constructor
        + Create an update() function, which replaces the underlying
          SNMP session using different parameters.
        + Return the SecName instead of community from snmp_comm() when using

    * L2::HP now isa Layer3 instead of Layer2 to support arpnip
      (Dudley Freeman)
    * Silence warnings from Cisco devices which don't return values for
      extended VLAN range (1024-4096)
    * Documentation coverage, spelling, and syntax updates
    * set_i_pvid(), set_i_vlan(), set_add_i_vlan_tagged(),
      set_remove_i_vlan_tagged() removed from Bridge and HP classes due to
      incompatibility across devices.

version 1.07 (11/26/07) - Beta/developer release

version 1.05 (11/25/07) - CVS only. No official release
    + Added support for LLDP in new class LLDP (contributions from Bernhard
    + Added device specific support for LLDP in L2::HP, L2::Baystack,
      L3::Enterasys and L3::Foundry
    + Added support for Enterasys devices as new class L3::Enterasys 
    + Added support for Dell PowerConnect switches as new class L3::Dell
    + Added basic support for generic routers running Microsoft Windows OS
      as new class L3::Microsoft (begemot)
    + Added basic support for Sun routers as new class L3::Sun (begemot)
    + Added basic support for Juniper NetScreen devices as new class
      L3::Netscreen (Kent Hamilton)
    + Added support for Cyclades terminal servers as new class L1::Cyclades
    + Added support for Cisco (Airespace) wireless controllers as new class
    + Added support for Nortel Ethernet Routing Switch 2500 series and
      Business Ethernet Switches (David Siebörger)
    + Update of L3::Foundry to support all Foundry devices including newer
      switches.  Depreciate L2::Foundry.
    + Added generic device type detection using IANA assigned enterpise
      number extracted from sysObjectID
    + Added ifDiscards and other missing entries from IF-MIB::ifEntry (Greg King)
    + Added CGESM devices to L2::C2900 class (Alexander Hartmaier)
    + Added support for dual speed 10/100 hubs and i_speed() in L1::Bayhub
    + Added i_ssidlist(), i_ssidbcast(), and i_80211channel() methods to
      L2::Aruba, Airespace, and L2::NAP222x classes
    + New class IEEE802dot11 class for generic standards based wireless AP
      support to include i_ssidlist()and i_80211channel() methods.
    + L2::Orinoco inherits from new IEEE802dot11 for i_ssidlist()and
      i_80211channel() support. 
    + Added new VLAN methods i_pvid(), i_vlan_membership(), set_i_pvid(),
      set_i_vlan(), set_add_i_vlan_tagged(), set_remove_i_vlan_tagged() to
      Bridge, CiscoVTP, Extreme, HP, and RapidCity classes.
    + Added set_i_speed_admin() method to RapidCity class,
    + Added set_i_duplex_admin() method to RapidCity class,
    + Added OSPF Neighbor Tables, SF Patch 1577918 to Layer 3 (Andrew Herrick)
    + Added CiscoConfig class, SF Patch 1555001 (Justin Hunter)
    + Enable load_ methods for %GLOBALS and MIB Leaf node names.
    + Enable dynamic methods in AUTOLOAD with MIB Leaf node names for loaded
      MIBs without definition in %FUNCS or %GLOBALS.  Single instance mib leafs
      will be treated as a GLOBAL and returna scalar while mib leafs which
      reside in a table will be treated as a FUNC and return a reference to a
    + Enable load_ methods for %GLOBALS and MIB Leaf node names.
    + Add loop detect option and code for getnext table column walks.
    + Add Layer3::NetSNMP for Net-SNMP-based hosts, part of
      SF patch 1557529 (Bradley Baetz).
    + Add EIGRP Neighbor Tables to L3::Cisco SF Patch 1577927 (Andrew Herrick)
    + Additions to CiscoQOS and CiscoStats (Alexander Hartmaier)
    + Emulate ENTITY-MIB Physical Table methods for devices which don't
      have ENTITY-MIB support in Airespace, Bayhub, Baystack, BayRS,
      NortelStack, and Passport classes.
    + Enable use of MIB Leaf node names in SNMP sets.

    * Fix for bug where an SNMP error in any operation would cause subsequent
      table get operations to fail while using the same session, originally
      identified by Nicolai Petri.
    * Enable single instance partial table fetches (Alexander Hartmaier)
    * Enable partial table fetches in overriden table methods (Justin Hunter)
    * Allow partial table fetches with load_ methods.
    * Fixed vlan trunk port handling bug in L2:HP (Michael Robbert)
    * Correct bp_port() definition in Bridge class (Reported by Nicolai Petri)
    * Remove port security definitions from CiscoStack and move into new class
      CiscoPortSecurity.  Needed to support devices such a L3::C4000 which
      (Reported by Prakash RudraRaju)
    * Correct port numbering for Nortel 8110, 1100, 1150 in L3:Passport
      (Reported by David Pinkoski)
    * Documentation updates
    * Translate OIDs returned by Entity MIB e_type
    * Modify inheritance to use Cisco classes before generic classes
    * Create e_index method in ENTITY-MIB to facilitate emulation methods in
      other classes as entPhysicalIndex is not-accessible.
    * Only return MAC from munge_mac() if it actually is a MAC. Fix for
      netdisco where device would not be inserted in DB due to malformed MAC.
    * Enable SUPER class calls to find autoloaded methods (Bernhard Augenstein)
    * Clear attribute cache on sucessful SNMP set.
    * Improve accuracy of operational and administrative duplex reporting on
      devices using CiscoStack.
    * All i_type() methods now use standard IANAifType values.
    * Report bridge groups (VLANs) in L2::C1900.
    * Turn on bulkwalk for C6500.  Users with buggy OS versions can turn
      it off when creating the object.
    * c_ip() now attempts to return only IPV4 addresses, use c_addr() for all
      address types.

version 1.04 (07/08/06)
    +  Added C1130 and C1240 to L2::Aironet (Ralf Gross)
    +  Added detection for Cisco 2960, 2940, 3400 w/ MetroBase
    +  Added generic L2::Cisco Class
    *  Corrected detection for Cisco Supervisor Engine 2 and 32 (IOS).  
    *  Fixed warnings in CiscoStack
    *  Updated ProCurve HP device detection for newer firmwares

version 1.03 (04/14/06) - Beta/developer release
    * Use ipNetToMedia table instead of atTable for ARP
    * Remove CiscoStack from Layer3::C4000
    * Fixed bug in MAU class when polling devices without MAU-MIB support 

version 1.01 (04/08/06) - Beta/developer release
    + Change version numbers to X.XX format.  Odd releases are beta
      or developer only releases.  Even are official releases.

version 1.0 (04/07/06) - CVS only. No official release
    + Added Interface FlowControl status to CiscoStack (Nicolai Petri)
    + Added CiscoImage class (Matthew Tuttle)
    + Added C1200 and C350 IOS devices to L2::Aironet (Matthew Tuttle)
    + Added support for Foundry IronWare and gave L3::Foundry CPR
    + Added support for Foundry EdgeIrons as new class L2::Foundry
    + Added BulkWalk and BulkRepeaters options to new()
    + Added DebugSNMP option to new()
      to for model()
    + Check for bulkwalk_no() method
    + Added to L3 and L2 classes per N. Petri's suggestion.
    + Added support for Passport/Accelar 1100 and 1200 series in L3::Passport
    + Added support for Passport/Accelar 8100 series in L3::Passport
    + Added support for Passport 1600 series as new class, L3::N1600
    + Added support for Extreme Alpine and Summit switches as new class
      L3:Extreme (Mike Hunter and Eric Miller)
    + Added support for Aruba wireless switches (Eric Miller and Brian Chow)
    + Added support for Nortel 2700 series (Airespace) wireless switches
    + Added support for Synoptics hubs as new class L1:S3000
    + Added Cisco QOS and RTT classes (Alexander Hartmaier)
    + Added BGP Peer Table to L3 class (Carlos Vicente)
    + Added ipforwarding status to Info base class (Carlos Vicente)
    + Added STP port state to Bridge class (Alexander Barthel)
    + Added L3 support (arpnip) to Baystack class for routing capable switches
    + Added set_i_duplex_admin() and set_i_speed_admin() to C2900 class
      (Justin Hunter)
    + Added set_i_duplex_admin() and set_i_speed_admin() to CiscoStack class
    + CDP added to Aironet class
    + Added Juniper class
    + Added support for Catalyst 4000 and 4500, get admin. duplex
      and speed properly
    + Added i_speed_high(), which i_speed() uses if needed to support
      interfaces >4Gbps

    * More error checking in  _load_attr() around bulkwalk code
    * Minor warning fix in L3::Aironet::os_ver()
    * Abstracted remaining Cisco stuff from L3 to L3::Cisco
    * Removed all Cisco stuff from L2
    * Expanded to cover the whole ENTITY-MIB and improved docs.
    * changed all refs to $DEBUG to $self->debug() for reentrant code
    * [ 1111284 ] Parameters not being set with AutoSpecify - fixed.
    * Turned off BULKWALK for C1900 and C6500 classes.
    * Added exception handling for V2 ENDOFMIBVIEW
    * Fix in SONMP when topology not enabled
    * Fix in L3::Passport root_ip()
    * Fix in L3::Passport bp_index() some devices not returning complete index.
    * Enable set_i_up_admin() in Bayhub
    * Recognize new Nortel model names in Baystack and Passport classes
    * Orinoco class should now recognize more models
    * Cleanup model recognition in Baystack class, recognize more models
    * Modify Catalyst class to use CISCO-STACK-MIB for brige port index mapping
      some devices having problems returning complete index from BRIDGE-MIB
    * Check root ip for reachability before assignment
    * HP class should recognize more models
    * Fix in HP class for models not returning full bp_index
    * [ 1436103 ] L2::Aironet devices weren't getting their model
      translated properly

verison 0.9 (11/15/04)
    + ** Added full Nortel/Bay/BayStack support 
        by new developer Eric Miller.  
        L2::Bay now depricated.
    + Added Alteon Ace support (Eric Miller)
    + Added Nortel Cotivity support (Eric Miller)
    + Added Nortel BayRS support (Eric Miller)
    + Added Nortel Centillion support (Eric Miller)
    + Added Nortel AP 222x support (Eric Miller)
    + Added Orinco AP support (Eric Miller) 
    + Added i_lastchange() per suggestion of Nicolai Petri
    + Added BULKWALK patch by Bradley Baetz - This should
          greatly speed up requests on SNMPv2c devices.
    + Added MibDirs option to new() to allow specifying non-system MIB

    * Added C3560s to the C3550 class. Thanks to Nicolai.
    * Fixed Bug where older Cisco's would append nulls to certain
      CDP information.  Would come up a 'DBD::Pg parser' error in Netdisco
    * Changed so a failed _global() call is cached so it won't retry
      an error over and over again if the same global is used.
    * Added check in _set() to see if data came from sub or FUNCS/GLOBALS
      Fails if came from sub.

version 0.8 (03/21/04)
    + Added Q-BRIDGE-MIB support to SNMP::Info::Bridge
    + Added Aironet AP4800 to Layer3::Aironet class
    + Added C3500XL devices to the Layer2::C2900 class
    + Added Cisco 3750 (37xxstack) to Layer3::C6500 class
    + Added Cisco Catalyst 4000 to Layer3::C6500 class
    + Added Cisco Catalyst 2970 to Layer3::C6500 Class
    * Made Cisco Commuinty string indexing a boolean method for clarification
    * Added VLAN info for HP devices using Q-BRIDGE-MIB
    * Fixed warning about uninitialized value in CiscoStats line 92
    * Added for more serial# checking for L2 and L3
    * Fixed warning in Layer2::Bay about non numeric port line 199
    Contributions from Dmitry Sergienko:
    + Added Cisco Aironet BR500 and AP1200 to L2::Aironet Class
    * Fixed the Port name alias for Catalyst 2900 devices
    + Added Support For ZyXEL DSLAMs and Allied Telesys Switches

version 0.7 (08/14/03)
    * Added Class for Catalyst 6500 Series - Layer3::C6500
    * Added CiscoVTP support to 3550,2900, and Catalyst classes
    * Extracted VLAN stuff from Layer2::Catalyst to SNMP::Info::CiscoVTP
    * Extracted CISCO-STACK-MIB from Layer2::Catalyst to SNMP::Info::CiscoStack
    * Added 2950's to the Layer2::C2900 class
    * Added 3548's and 350x's to the Layer3::C3550 class
    * Broke out 3550's into separate device types (3550-24, 3550-48)
    * Added T1,dual T1, and T3 , ATM over OC-12 ... to the SPEED_MAP
    * Fixed speed map -- OC-1 -> OC-3
    * Fixed Bug where Catalyst Switch running IOS would report CatOS as os()

version 0.6 (06/18/03)
    * Minor Bug Fix.  SNMP::Info::Layer2::Bay and SNMP::Info::Layer2::C1900
      didn't return 1 and failed to load on some versions of Perl.

version 0.5 (06/10/03)
    * Added ability to get paritial tables.  For example to get the
      IP routing table for 128.114.*  you can do 
      $ipr = $dev->ipr_dest('128.114');
    * Added IP Routing Table entries from RFC1213 to SNMP::Info
    * minor bug fixes

version 0.4 (04/29/03)
    * BIG CHANGE ! Internal Data structure has changed.  
    * Added clear_cache() method
    * Added NO_SUCH support for snmpget (TABLE) calls to get SNMP MIB II data 
      from SNMP Version 1 devices.
    * Methods load_all() and all() have changed their return value. Sorry but
      the API had to change.
    * New object methods snmp_comm(), snmp_ver(), store(), class(), nosuch()
      to make it more OO happy.
    * Globals are now cached
    * Added new argument 'AutoSpecify' to new() to auto-connect with subclass 
      detected in device_type()
    * New method specify() returns a new subclass object
    * Subclasses are automatically loaded when specify or autospecify is used!
    * Added methods for Interface statistics (ifInOctets ...)
    * Added methods for Memory and CPU statistics 
    * Added SNMP::Info::Entity, moved out of L2-HP
    * Added SNMP::Info::Layer2::Aironet

version 0.3 (03/06/03)
    * Fixed HP model() warning
    * Added error checking for responses of NOSUCHOBJECT and NOSUCHINSTANCE
      in _global and _load_attr
    * Added more debugging
    * Added info and munging for c_capabilities in SNMP::Info::CD
      Thanks to Martin Lorensen <martin /at->
    * Removed requirement for SNMP in the Makefile.PL and moved it to t/prereq.t
      so that the Module will install via CPAN without trying to install the old
      4.2.0 version of SNMP on CPAN.  Will now fail in the test phase. 
      Thanks again to Martin Lorensen <martin /at->
    * Moved tests from to t/*

version 0.2 (02/19/03)
    * Added put_() methods and support for SNMP put commands
    * Added SNMP::Info::Layer3::C3550 class for Cisco Catalyst 3550
    * Fixed HP Detection in device_type()
    * Added Spanning Tree Protocol (STP) methods to SNMP::Info::Bridge
    * Removed HP Specific MIBS in SNMP::Info::Layer2 and cleaned up model()
    * Added poke for Bay 450 Switches 
    * Mapped HP Part Numbers to model numbers J4812A => 2512 in
version 0.1 (12/30/02)
    * Initial Release
    * SubClasses Included:
        * SNMP::Info::Bridge
        * SNMP::Info::CDP
        * SNMP::Info::EtherLike
        * SNMP::Info::MAU
        * SNMP::Info::Layer1
              o SNMP::Info::Layer1::Allied
              o SNMP::Info::Layer1::Asante 
        * SNMP::Info::Layer2
              o SNMP::Info::Layer2::Bay
              o SNMP::Info::Layer2::C1900
              o SNMP::Info::Layer2::C2900
              o SNMP::Info::Layer2::Catalyst
              o SNMP::Info::Layer2::HP 
        * SNMP::Info::Layer3
              o SNMP::Info::Layer3::Aironet
              o SNMP::Info::Layer3::Foundry