Tue Mar 16 16:28:14 1999  David L. Levine  <levine@cs.wustl.edu>

        * address.cpp, address.h, asn1.cpp, asn1.h, counter.cpp, ctr64.cpp,
          gauge.cpp, integer.cpp, octet.cpp, oid.cpp, pdu.cpp, sagent.cpp,
          snmp.cpp, target.cpp, timetick.cpp, transaction.cpp, vb.cpp,
          wpdu.cpp:
          replaced TRUE with 1, and FALSE and NULL with 0.  Thanks to
          Achint Sandhu <sandhu@nortelnetworks.com> for reporting that
          TRUE and FALSE weren't define on his Linux platform.

        * wpdu.cpp (set_trap_info): wrapped condition with () to
          avoid g++ warning about using result of an assignment as
          the condition.

        * ctr64.cpp: made MAX64 unsigned, to avoid warning about it
          being to big to be signed.

Wed Jul 15 20:27:23 1998  Mike MacFaden  <mrm@tango.cs.wustl.edu>
    * asn1.cpp - Hien Nguyen <hnguyen@apexgrp.com> fixed these bugs:

    Problem: The V1 trap agent-addr field tag value is OCTET STRING
    instead of IPADDRESS, and the time stamp field tag value is INTEGER
    instead of TIME TICKS.

    Fix: Change cmu_snmp::build() to pass in the correct type for agent-addr
    and time stamp.

    2.  Problem: The V1 trap enterprise OID is corrupted after is was set in
    wpdu constructor.

    Fix: In wpdu::set_trap_info(), the raw_pdu enterprise OID pointer was
    assigned to the raw data of an enterprise Oid object on the stack.
    Changed to perform an ACE_NEW_RETURN on the raw_pdu->enterprise and
    perform a memcpy to copy the OID.  The allocated memory is freed in
    cmu_snmp::free_pdu() as currently implemented.

    3.  The V1 trap agent-addr field is currently initialized to "0.0.0.0".
    I changed wpdu::set_trap_info to initialize it to the local host IP
    Address.

    4.  I noticed that the memory allocation for OID in asn1.cpp using
    ACE_NEW consistently use (OID length * size(oid)) as the size.
    Shouldn't it be simply OID length ?  Since there are numerous instances
    of this usage in asn1.cpp, I have not fixed those.  If you can double
    check and fix these, I appreciate it.


Wed Aug 20 15:11:23 1997  Mike MacFaden  <mrm@tango.cs.wustl.edu>

        * rebuilt Makefile using g++dep

        *  pdu.h pdu.cpp initialization errors fixed

        * address.h address.cpp IpAddress::to_octet() added

Fri Aug  1 19:23:52 1997  Mike MacFaden  (mrm@mrm-ss20)

      * NOTES: This first version only tested on Solaris 2.5

      * review classes for thread safety. Current thread design only
        allows for one thread to safely access any ASNMP object created.

      * run purify test of get routine no -memory leaks.

      * verify both shared archive/static archive types work with
        example programs

      * << Globals Changes >>

        * tested only archiver library version

        * reformat code to use one brace style.

        * changed all manifest constants defined as _XX to XX_ to stay out
        of compiler namespace

        * change all OS calls to use ACE_OS:: portability layer, #include
        <ace/OS.h>

        * reformat code to use one consistent brace layout and redo
        header using ACE

        * remove semicolons on member functions foo{}; - not necessary

        * make get() methods const member functions

        * removed unnecessary casts that looked like this: and revamped
          all memory allocations via ACE_NEW macro

          new_oid = (SmiLPUINT32) new unsigned long [ smival.value.oid.len

          To

          ACE_NEW(new_oid, SmiUINT32[ smival.value.oid.len])

        * Collapsed default constructors with constructors to constructors
          with default arguments.

        * removed unused #include <iostream.h>

        * Added ACE_TRACE() to classes

        * change get_printable() to to_string() - there will be more java
          programmers in the future so this should be the first step...

        * removed ASYNC interface till it can be rebuilt using ACE patterns

        * Attempt to make interface more type strict but leaving generic
          interfaces as escape hatch. Example: CTarget becomes UdpTarget
          for UDP/IP based agents.

      * << Class Specific Changes >>

        * Oid class:
          - remove char * routines, simplify class
          - added suboid method and removed get_printable() overloads

        * CTarget class:
          - renamed to UdpTarget. Stay out of Microsoft Namespace per MSJ
          Article by Allen Hollub.

        * Varbind class:
          - remove generic set_value for char,int, etc. Too easy to get
          this wrong. Allow just types defined.
          - added overload for equality operator (==)
          - added new constructor to allow setting full vb state oid,value, exception
          - add to_string()

        * Address class:
          - change manifest constants to enums for address lengths, add IP V6 lens

          - add a netbios name class, still pretty worthless since I don't have spec
            in front of me yet...

          - rewrite resolver calls to be thread safe and cleaner by moving to two
            class (static) member functions:

            // thread safe routine to lookup ip address given hostname
            // return <> 0 on error
            static int resolve_to_addr(const char *hostname, in_addr& quad_addr);

            // thread safe routine to lookup name given ip address
            // return <> 0 on error
            static int resolve_to_hostname(const in_addr& quad_addr, char *hostname)

        * added some interrogation routines to class IpAddress:
          is_loopback() const;

        * Ctr64 class:
          - added constructor using long long datatype (needs to be made
          portable to NT

        * Pdu class: add to_string()

        * Classes added wpdu class:
          - a new adpater class between CMU and HP pdu, varbind data structures

        * transaction class:
          - implement get/getnext timeout and retry logic using ACE
          Reactor class, ACE_Time_Value

