<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE chapter SYSTEM "chapter.dtd">

<chapter>
  <header>
    <copyright>
      <year>2004</year><year>2022</year>
      <holder>Ericsson AB. All Rights Reserved.</holder>
    </copyright>
    <legalnotice>
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
 
          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.

    </legalnotice>

    <title>SNMP Release Notes history</title>
    <prepared></prepared>
    <responsible></responsible>
    <docno></docno>
    <approved></approved>
    <checked></checked>
    <date></date>
    <rev></rev>
    <file>notes_history.xml</file>
  </header>

  <section>
    <title>SNMP Development Toolkit 4.17.1</title>
    <p>Version 4.17.1 supports code replacement in runtime from/to
      version 4.17, 4.16.2, 4.16.1, 4.16, 4.15, 4.14 and 4.13.5.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>When the function FilterMod:accept_recv/2
	  returned false the SNMP agent stopped collecting 
	  messages from UDP.</p>
          <p>Own Id: OTP-8761</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.17.1 -->


  <section>
    <title>SNMP Development Toolkit 4.17</title>
    <p>Version 4.17 supports code replacement in runtime from/to
      version 4.16.2, 4.16.1, 4.16, 4.15, 4.14 and 4.13.5.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[agent] Added very basic support for multiple SNMPv3 
            EngineIDs in a single agent. See 
            <seeerl marker="snmpa#send_notification">send_notification/7</seeerl>, 
            <seeerl marker="snmpa_mpd#process_packet">process_packet/7</seeerl>, 
            <seeerl marker="snmpa_mpd#generate_response_msg">generate_response_msg/6</seeerl> or 
            <seeerl marker="snmpa_mpd#generate_msg">generate_msg/6</seeerl> 
            for more info. </p> 

          <p>Own Id: OTP-8478</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <p>-</p>

      <!-- 
      <list type="bulleted">
        <item>
          <p>The config utility 
            (<seeerl marker="snmp#config">snmp:config/0</seeerl>)
            generated a default notify.conf 
            with a bad name for the standard trap entry (was "stadard trap", 
            but should have been "standard trap"). This has been corrected. </p>
          <p>Kenji Rikitake</p>
          <p>Own Id: OTP-8433</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.17 -->


  <section>
    <title>SNMP Development Toolkit 4.16.2</title>
    <p>Version 4.16.2 supports code replacement in runtime from/to
      version 4.16.1, 4.16, 4.15, 4.14 and 4.13.5.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[compiler] The SMI specifies that a table row OID should be 
            named: { &lt;tableIdentifier&gt; "1" }. </p>
	  <p>A new option has been introduced, 
            <seeerl marker="snmpc#compiler_opts">relaxed_row_name_assign_check</seeerl>, 
            that allows for a more liberal numbering scheme</p>
          <p>Own Id: OTP-8574</p>
        </item>

        <item>
          <p>[agent|manager] Changes to make snmp (forward) compatible with 
            the new version of the crypto application (released in R14).
            As of R14, crypto is implemented using NIFs. Also,
            the API is more strict. </p> 
          <p>Own Id: OTP-8594</p>
        </item>

        <item>
          <p>Auto [agent] Changed default value for the MIB server cache. 
            GC is now on by default. </p>
          <p>Own Id: OTP-8648</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->

      <list type="bulleted">
        <item>
          <p>Encode/decode of Counter64 values larger than 
	    16#7fffffffffffffff (9223372036854775807) failed. </p>
          <p>Own Id: OTP-8563</p>
        </item>

        <item>
          <p>[compiler] Fails to compile non-contiguous BITS. </p>
	  <p>Per Hedeland</p>
          <p>Own Id: OTP-8595</p>
        </item>

        <item>
          <p>[manager] Raise condition causing the manager server process to 
            crash. Unregistering an agent while traffic (set/get-operations) 
            is ongoing could cause a crash in the manager server process 
            (raise condition). </p>
          <p>Own Id: OTP-8646</p>
	  <p>Aux Id: Seq 11585</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.16.2 -->


  <section>
    <title>SNMP Development Toolkit 4.16.1</title>
    <p>Version 4.16.1 supports code replacement in runtime from/to
      version 4.16, 4.15, 4.14 and 4.13.5.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 
      <!-- 
      <list type="bulleted">
        <item>
          <p>[agent|manager] Entries in the audit trail log can now be 
            augmented by a sequence number. </p>
          <p>This is enabled by the <c>seqno</c> option, which is part of the 
            <seeerl marker="snmp_config#audit_trail_log">Audit Trail Log</seeerl> 
            config option. </p>
          <p>See the 
            <seeerl marker="snmp_config#configuration_params">Configuring the application</seeerl> 
            chapter of the User's Guide for further info. </p> 

          <p>Own Id: OTP-8395</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->

      <list type="bulleted">
        <item>
          <p>[manager] Fixed an upgrade/downgrade problem. </p>
          <p>Upgrade/downgrade from/to 4.13.5 did not work for the net-if 
            process. This has now been fixed. </p>
          <p>Own Id: OTP-8481</p>
        </item>

        <item>
          <p>[agent] A minor mnesia related performance improvement. </p>
          <p>Own Id: OTP-8480</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.16.1 -->


  <section>
    <title>SNMP Development Toolkit 4.16</title>
    <p>Version 4.16 supports code replacement in runtime from/to
      version 4.15, 4.14 and 4.13.5.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[agent|manager] Entries in the audit trail log can now be 
            augmented by a sequence number. </p>
          <p>This is enabled by the <c>seqno</c> option, which is part of the 
            <seeerl marker="snmp_config#audit_trail_log">Audit Trail Log</seeerl> 
            config option. </p>
          <p>See the 
            <seeerl marker="snmp_config#configuration_params">Configuring the application</seeerl> 
            chapter of the User's Guide for further info. </p> 

          <p>Own Id: OTP-8395</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->

      <list type="bulleted">
        <item>
          <p>[manager] Registration of agents using the config file, 
            <seeguide marker="snmp_manager_config_files#agents">agents.conf</seeguide>, 
            does not work. This has now been corrected. </p>
          <p>Per Hedeland</p>
          <p>Own Id: OTP-8442</p>
        </item>

        <item>
          <p>The config utility 
            (<seeerl marker="snmp#config">snmp:config/0</seeerl>)
            generated a default notify.conf 
            with a bad name for the standard trap entry (was "stadard trap", 
            but should have been "standard trap"). This has been corrected. </p>
          <p>Kenji Rikitake</p>
          <p>Own Id: OTP-8433</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.16 -->


  <section>
    <title>SNMP Development Toolkit 4.15</title>

    <p>Version 4.15 supports code replacement in runtime from/to
      version 4.14 and 4.13.5.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->

      <list type="bulleted">
        <item>
          <p>The documentation is now built with open source tools 
            (<em>xsltproc</em> and <em>fop</em>) that exists on most 
            platforms. One visible change is that the frames are removed.</p>
          <p>Own Id: OTP-8249</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[manager] When information from an unknown agent is received,
            it was previously delivered to the default user via calls to all
            the functions of the callback API depending on the info type
            (<c>pdu</c>, <c>trap</c>, <c>report</c> or <c>inform</c>). 
            The problem was that the <c>TargetName</c> argument was useless 
            in this case (only an already known agent has a known/valid 
            <c>TargetName</c>, but the <c>TargetName</c> used in these calls
            was generated "on the fly"). </p>
          <p>This has now been changed so that when a message is received 
            from an unknown agent, then only 
            <seeerl marker="snmpm_user#handle_agent">handle_agent</seeerl>
            (for the default user) is called, but now this call also has a 
            <c>Type</c> argument, which is 
            <c>pdu | trap | report | inform</c>, depending on what kind of 
            message was actually received, thus making it possible for the 
            user to properly analyze the data received. </p>
	  <p>To handle this, the 
            <seeerl marker="snmpm_user">snmpm_user</seeerl> behaviour has 
            been updated. </p>
	  <p>*** POTENTIAL INCOMPATIBILITY ***</p>
          <p>Own Id: OTP-8229</p>
	  <!-- <p>Aux Id: Seq 11312</p> -->
        </item>

      </list>

    </section>

  </section> <!-- 4.15 -->


  <section>
    <title>SNMP Development Toolkit 4.14</title>

    <p>Version 4.14 supports code replacement in runtime from/to
      version 4.13.5, 4.13.4, 4.13.3, 4.13.2, 4.13.1 and 4.13.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->

      <list type="bulleted">
        <item>
          <p>[compiler] Include object- and notification groups in the 
            compiled mib.
            This will make it possible to import groups from other mibs. </p>
          <p>Also the SNMPv2-MIB-file has been updated to a more
            up-to-date version. </p>
          <p>Own Id: OTP-8223</p>
	  <!-- <p>Aux Id: Seq 11383</p> -->
        </item>

        <item>
          <p>[manager] Added support for message filtering in the
            network interface module provided with the application.
            The component that actually make the filter decisions
            is the network interface filter module. This module
            must implement the 
            <seeerl marker="snmpm_network_interface_filter">network interface filter behaviour</seeerl>
            for message filtering.
            See also the Configuring chapter of
            the User's Guide to see how to configure this feature. </p>
          <p>See the 
            <seeerl marker="snmp_config#configuration_params">configuration</seeerl> 
            chapter for more info about the filter options.</p>
          <p>Own Id: OTP-8228</p>
	  <p>Aux Id: Seq 11411</p>
        </item>

        <item>
          <p>The MIBs delivered as part of the application is now
            also available as man pages, section 7. </p>
          <p>Own Id: OTP-8237</p>
	  <!-- <p>Aux Id: Seq 11383</p> -->
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <p>-</p>

      <!-- 
      <list type="bulleted">
        <item>
          <p>[agent] The main agent type header file contained some miss-information 
            regarding the type of the entrytype field of the me-record, causing 
            unnecessary confusion.</p>
          <p>Own Id: OTP-8116</p>
	  <p>Aux Id: Seq 11312</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.14 -->


  <section>
    <title>SNMP Development Toolkit 4.13.5</title>

    <p>Version 4.13.5 supports code replacement in runtime from/to
      version 4.13.4, 4.13.3, 4.13.2, 4.13.1 and 4.13.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->

      <list type="bulleted">
        <item>
          <p>[agent] Improved the cache handling of the mib server. </p>
          <p>A number of new functions and config options for the mib server
            cache has been added. </p>
          <p>See 
            <seeerl marker="snmpa#invalidate_mibs_cache">invalidate_mibs_cache/0,1</seeerl>, 
            <seeerl marker="snmpa#enable_mibs_cache">enable_mibs_cache/0,1</seeerl>, 
            <seeerl marker="snmpa#disable_mibs_cache">disable_mibs_cache/0,1</seeerl>, 
            <seeerl marker="snmpa#gc_mibs_cache">gc_mibs_cache/0,1,2,3</seeerl>, 
            <seeerl marker="snmpa#enable_mibs_cache_autogc">enable_mibs_cache_autogc/0,1</seeerl>, 
            <seeerl marker="snmpa#disable_mibs_cache_autogc">disable_mibs_cache_autogc/0,1</seeerl>, 
            <seeerl marker="snmpa#update_mibs_cache_age">update_mibs_cache_age/1,2</seeerl> and 
            <seeerl marker="snmpa#update_mibs_cache_gclimit">update_mibs_cache_gclimit/1,2</seeerl> for more info. </p>
          <p>See also the 
            <seeerl marker="snmp_config#configuration_params">configuration</seeerl> 
            chapter for more info about the mib server cache options.</p>
          <p>Own Id: OTP-8182</p>
	  <p>Aux Id: Seq 11383</p>
        </item>

        <item>
          <p>[agent] A manager could no longer use the SNMPv3 user "initial" 
            as this was interpreted as the first step of the discovery. </p>
          <p>Introduced a new terminating option, <c>trigger_username</c> to
            make it possible to configure the username the agent reacts to. 
            Default is <c>""</c>. </p>
          <p>See the 
            <seeerl marker="snmp_config#configuration_params">configuration</seeerl> 
            chapter for more info about the discovery options.</p>
          <p>Own Id: OTP-8120</p>
	  <p>Aux Id: Seq 11361</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[agent] The main agent type header file contained some miss-information 
            regarding the type of the entrytype field of the me-record, causing 
            unnecessary confusion.</p>
          <p>Own Id: OTP-8116</p>
	  <p>Aux Id: Seq 11312</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.13.5 -->


  <section>
    <title>SNMP Development Toolkit 4.13.4</title>

    <p>Version 4.13.4 supports code replacement in runtime from/to
      version 4.13.3, 4.13.2, 4.13.1 and 4.13.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 

      <!-- 
      <list type="bulleted">
        <item>
          <p>[agent] Support for the discovery process. </p>
          <p>The agent can both initiate discovery itself (see the
            <seeguide marker="snmp_agent_funct_descr#discovery">discovery</seeguide> chapter
            for more info) and respond to discovery initiated by a manager.</p>
          <p>Own Id: OTP-7571</p>
	  <p>Aux Id: Seq 11053</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[agent] Originating discovery problems. </p>
          <p>Invalid state variable update during second stage of 
            discovery causes master agent crash. </p>
          <p>Also the net_if process failed to activate socket 
            ({active, once}) after first discovery response was sent. </p>
          <p>Own Id: OTP-8044</p>
	  <p>Aux Id: Seq 11295</p>
        </item>

        <item>
          <p>[agent] Terminating discovery problem. </p>
          <p>The reply to the second stage request should include a 
            varbind with <c>usmStatsNotInTimeWindows</c>.</p>
          <p>Own Id: OTP-8062</p>
	  <p>Aux Id: Seq 11318</p>
        </item>

        <item>
          <p>[agent] Originating discovery improvement. </p>
          <p>Added the ExtraInfo argument to the 
            <seeerl marker="snmpa#discovery">discovery</seeerl> function. 
            This argument will be passed on to the stage1_finish callback
            function. Also, the 
            <seeerl marker="snmpa#discovery">discovery</seeerl> function 
            will now always return <c>{ok, ManagerEngineID}</c> on successful 
            discovery. </p>
          <p>The <seeerl marker="snmpa_discovery_handler">discovery handler</seeerl> 
            behaviour updated accordingly. </p>
          <p>Own Id: OTP-8098</p>
	  <p>Aux Id: Seq 11346</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.13.4 -->


  <section>
    <title>SNMP Development Toolkit 4.13.3</title>

    <p>Version 4.13.3 supports code replacement in runtime from/to
      version 4.13.2, 4.13.1 and 4.13.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 

      <!-- 
      <list type="bulleted">
        <item>
          <p>[agent] Support for the discovery process. </p>
          <p>The agent can both initiate discovery itself (see the
            <seeguide marker="snmp_agent_funct_descr#discovery">discovery</seeguide> chapter
            for more info) and respond to discovery initiated by a manager.</p>
          <p>Own Id: OTP-7571</p>
	  <p>Aux Id: Seq 11053</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[manager] A request for an oid of type BITS was actually
            returned as OCTET STRING. </p>
          <p>Values of type BITS are encoded as OCTET STRING,
            which makes it impossible for the decoder to know that 
            they should really be of type BITS. 
            Instead, this has to be done higher up in the stack, where 
            there is knowledge of the MIB (assuming that the mib has 
            been loaded, there is info about the type of the mibentry). </p>
          <p>This problem has now been fixed, but requires that the MIB 
            defining this mib-entry is loaded! </p>
          <p>The utility function 
            <seeerl marker="snmpm#oid_to_type">oid_to_type</seeerl>
            has been added, for debug purpose. </p>
          <p>The utility function(s)  
            <seeerl marker="snmp#octet_string_to_bits">octet_string_to_bits</seeerl>
            and 
            <seeerl marker="snmp#bits_to_octet_string">bits_to_octet_string</seeerl>
            has also been added. These can be used if the user prefers to 
            handle the conversion on their own. </p>
          <p>Own Id: OTP-8015</p>
	  <p>Aux Id: Seq 11285</p>
        </item>

        <item>
          <p>[agent] Fixed some issues with the discovery handling. </p>
          <p>Changed the API of the 
            <seeerl marker="snmpa#discovery">discovery</seeerl>
            function to solve some 
            of these problems. </p>
          <p>Introduced various options for controlling the discovery
            process. See the 
            <seeerl marker="snmp_config#configuration_params">configuration</seeerl> 
            chapter for more info about the discovery options.</p>
          <p>Own Id: OTP-8020</p>
	  <p>Aux Id: Seq 11295</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.13.3 -->


  <section>
    <title>SNMP Development Toolkit 4.13.2</title>

    <p>Version 4.13.2 supports code replacement in runtime from/to
      version 4.13.1 and 4.13.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 

      <!-- 
      <list type="bulleted">
        <item>
          <p>[agent] Support for the discovery process. </p>
          <p>The agent can both initiate discovery itself (see the
            <seeguide marker="snmp_agent_funct_descr#discovery">discovery</seeguide> chapter
            for more info) and respond to discovery initiated by a manager.</p>
          <p>Own Id: OTP-7571</p>
	  <p>Aux Id: Seq 11053</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[manager] Failure during downed user cleanup.
            As part of the cleanup after a crashed user,
            the manager attempts to unregister the agents
            registered by this user. This however failed,
            causing a server crash. </p>
          <p>Own Id: OTP-7961</p>
	  <p>Aux Id: Seq 11275</p>
        </item>

        <item>
          <p>[manager] Incorrectly documented value type for 
            IpAddress (ip). The value type for IpAddress is
            documented as ip but is actually ia. The value type
            ip has been added. The old (not documented) value
            type ia still works. </p>
          <p>Own Id: OTP-7977</p>
	  <p>Aux Id: Seq 11279</p>
        </item>

        <item>
          <p>[manager] EngineId lookup fails when using version-3. </p>
          <p>Own Id: OTP-7983</p>
	  <p>Aux Id: Seq 11275</p>
        </item>

        <item>
          <p>[agent] As of version 4.13 the possible return values
            of the function 
            <seeerl marker="snmpa_mpd#process_packet">snmpa_mpd:process_packet/4</seeerl> 
            changed, but this was not documented. </p>
          <p>Own Id: OTP-7989</p>
	  <p>Aux Id: Seq 11275</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.13.2 -->

  <section>
    <title>SNMP Development Toolkit 4.13.1</title>

    <p>Version 4.13.1 supports code replacement in runtime from/to
      version 4.13.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 

      <!-- 
      <list type="bulleted">
        <item>
          <p>[agent] Support for the discovery process. </p>
          <p>The agent can both initiate discovery itself (see the
            <seeguide marker="snmp_agent_funct_descr#discovery">discovery</seeguide> chapter
            for more info) and respond to discovery initiated by a manager.</p>
          <p>Own Id: OTP-7571</p>
	  <p>Aux Id: Seq 11053</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[manager] Registration of users had some issues. </p>
          <p>Not all of the registration functions where actually exported
            (<seeerl marker="snmpm#register_user">register_user/4</seeerl> 
            and
            <seeerl marker="snmpm#register_user_monitor">register_user_monitor/4</seeerl>). 
            This has now been fixed. </p>
          <p>Also, the registration did not succeed unless
            user implemented the *new* behaviour. This has now
            also been fixed (registration succeeds if the user
            implements either the new (i.e. updated 
            <seeerl marker="snmpm_user">snmpm_user</seeerl>) 
            or the old user behaviour (<c>snmpm_user_old</c>)). </p>
          <p>Own Id: OTP-7902</p>
	  <p>Aux Id: Seq 11240</p>
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.13.1 -->

  <section>
    <title>SNMP Development Toolkit 4.13</title>
<!--
    <p>Version 4.13 supports code replacement in runtime from/to
      version 4.12.1.</p>
-->

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[agent] Support for the discovery process. </p>
          <p>The agent can both initiate discovery itself (see the
            <seeguide marker="snmp_agent_funct_descr#discovery">discovery</seeguide> chapter
            for more info) and respond to discovery initiated by a manager.</p>
          <p>Own Id: OTP-7571</p>
	  <p>Aux Id: Seq 11053</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[agent] Unnecessary use of math:pow/2 could cause problems
            on systems without floating point support. </p>
          <p>Per Hedeland</p>
          <p>Own Id: OTP-7735</p>
	  <!-- <p>Aux Id: Seq 10966</p> -->
        </item>

        <item>
          <p>[manager] A major flaw was discovered with the agent handling. </p>
          <p>First, <c>TargetName</c> was never used as intended, as a unique
            identifier for the target (agent in this case). </p>
          <p>Second, <c>TargetName</c> had a <em>default value</em>, which meant 
            that several agents could have the same <c>TargetName</c>, causing
            unpredictable behaviour in the manager. </p>
          <p>Third, <c>EngineID</c> was not a mandatory config option and had
            furthermore also a <em>default value</em>. </p>

          <p>These problems has been solved in the following way: </p>
          <p>First, a new set of api functions has been introduced (and documented):
            <seeerl marker="snmpm#register_user">register_user/4</seeerl>,
            <seeerl marker="snmpm#register_user_monitor">register_user_monitor/4</seeerl>,
            <seeerl marker="snmpm#register_agent">register_agent/3</seeerl>,
            <seeerl marker="snmpm#unregister_agent">unregister_agent/2</seeerl>,
            <seeerl marker="snmpm#agent_info">agent_info/2</seeerl>,
            <seeerl marker="snmpm#update_agent_info">update_agent_info/4</seeerl>,
            <seeerl marker="snmpm#sync_get">sync_get/3,4,5,6</seeerl>,
            <seeerl marker="snmpm#async_get">async_get/3,4,5,6</seeerl>,
            <seeerl marker="snmpm#sync_get_next">sync_get_next/3,4,5,6</seeerl>,
            <seeerl marker="snmpm#async_get_next">async_get_next/3,4,5,6</seeerl>,
            <seeerl marker="snmpm#sync_set">sync_set/3,4,5,6</seeerl>,
            <seeerl marker="snmpm#async_set">async_set/3,4,5,6</seeerl>,
            <seeerl marker="snmpm#sync_get_bulk">sync_get_bulk/5,6,7,8</seeerl> and
            <seeerl marker="snmpm#async_get_bulk">async_get_bulk/5,6,7,8</seeerl> 
            that all use <c>TargetName</c> (and not, as previously, <c>Addr</c>
            and <c>Port</c>) to identify the agent (also the return value of 
            <seeerl marker="snmpm#which_agents">which_agents</seeerl> has 
            been changed). </p> 
          <p>Second, for backward compatibility, the old functions still 
            exist, but are no longer documented and are now wrappers for the 
            new functions, including erroneous default value for EngineID and 
            all. The TargetName is however generated from the provided 
            <c>Addr</c>, <c>Port</c> and <c>Version</c> config options. </p>
           <p>Third, the behaviour of the 
             <seeerl marker="snmpm_user">SNMP manager user</seeerl> has
             been changed to reflect this, i.e. 
             <seeerl marker="snmpm_user#handle_pdu">handle_pdu/4</seeerl>,
             <seeerl marker="snmpm_user#handle_trap">handle_trap/3</seeerl>,
             <seeerl marker="snmpm_user#handle_inform">handle_inform/3</seeerl>, 
             <seeerl marker="snmpm_user#handle_report">handle_report/3</seeerl> 
             and the return-value of 
             <seeerl marker="snmpm_user#handle_agent">handle_agent/4</seeerl>.
             The old (non-documented) callback-functions (using Addr and Port) 
             will still be called if the agent was registered using the old 
             registration functions. </p>
          
          <p>Own Id: OTP-7836</p>
	  <!-- <p>Aux Id: Seq 10966</p> -->
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.13 -->

  <section>
    <title>SNMP Development Toolkit 4.12.2</title>
    <p>Version 4.12.2 supports code replacement in runtime from/to
      version 4.12.1, 4.12, 4.11.2, 4.11.1 and 4.11.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 
      <!-- 
      <list type="bulleted">
        <item>
        <item>
          <p>[agent] Improvement of the inform reporting.
            It was previously not certain how many acks an
            application received, 0, 1 or 2. This has now been
            fixed, so that only 1 (one) ack is issued. </p> 
          <p>Per Hedeland</p>
          <p>Own Id: OTP-7525</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[agent] Bad session cache (usm+camv-info) invalidation 
            could cause user crash, through call(s) to (a number of) 
            MIB API function(s) (undefined function). </p>
          <p>Own Id: OTP-7868</p>
	  <!-- <p>Aux Id: Seq 11124</p> -->
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.12.2 -->

  <section>
    <title>SNMP Development Toolkit 4.12.1</title>
    <p>Version 4.12.1 supports code replacement in runtime from/to
      version 4.12, 4.11.2, 4.11.1 and 4.11.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 
      <!-- 
      <list type="bulleted">
        <item>
        <item>
          <p>[agent] Improvement of the inform reporting.
            It was previously not certain how many acks an
            application received, 0, 1 or 2. This has now been
            fixed, so that only 1 (one) ack is issued. </p> 
          <p>Per Hedeland</p>
          <p>Own Id: OTP-7525</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>Logging of messages with the GetBulk-request PDU
            incorrectly produced an erroneous entry in the
            log: "An error occurred". </p>
          <p>The reason for this was that the PDU-fields
            error_status and error_index is re-used for
            Non-repeaters and Max-repetitions for
            GetBulk-request PDUs, but this was not handled
            by the logging code. </p>
          <p>Own Id: OTP-7695</p>
	  <p>Aux Id: Seq 11124</p>
        </item>

        <item>
          <p>[agent] An attempt to set the row status to active for an 
            notReady table row, could result in an "inconsistentValue" 
            error. </p>
          <p>The same problem existed when attempting to set row status 
            to notInService for a row in notReady. </p>
          <p>Serge Aleynikov</p>
          <p>Own Id: OTP-7698</p>
	  <!-- <p>Aux Id: Seq 10966</p> -->
        </item>

      </list>

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.12.1 -->

  <section>
    <title>SNMP Development Toolkit 4.12</title>
    <p>Version 4.12 supports code replacement in runtime from/to
      version 4.11.2, 4.11.1 and 4.11.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[agent] A simple lookup cache has been added to improve 
            the mib server lookup performance. </p>
          <p>This can be disabled with the mib_server 
	  <seeerl marker="snmp_config#agent_ms_cache">cache</seeerl>
	  option. </p>
          <p>Own Id: OTP-7346</p>
        </item>

        <item>
          <p>[agent] Improvement of the inform reporting.
            It was previously not certain how many acks an
            application received, 0, 1 or 2. This has now been
            fixed, so that only 1 (one) ack is issued. </p> 
          <p>Per Hedeland</p>
          <p>Own Id: OTP-7525</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <p>-</p>
      <!-- 
      <list type="bulleted">
        <item>
          <p>[manager] Encryption error when attempting to send
            version 3 inform-requests. </p>
          <p>Own Id: OTP-7432</p>
	  <p>Aux Id: Seq 10966</p>
        </item>

      </list>
      -->

    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.12 -->

  <section>
    <title>SNMP Development Toolkit 4.11.2</title>
    <p>Version 4.11.2 supports code replacement in runtime from/to
      version 4.11.1 and 4.11. </p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 
      <!-- 
      <list type="bulleted">
        <item>
	  <p>Added utility functions for transforming DateAndTime
            as [int()] to strings; 
            <seeerl marker="snmp#dat2s">date_and_time_to_string/2</seeerl>
            and  
            <seeerl marker="snmp#dat2s2">date_and_time_to_string2/1</seeerl>. </p>
          <p>Also added new validation function 
            <seeerl marker="snmp#vdat">validate_date_and_time/2</seeerl>. </p>
	  <p>Own Id: OTP-7412</p>
	  <p>Aux Id: Seq 10987</p>
        </item>
      </list>
      -->
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[manager] Erroneous engine-id check when receiving version 3 
            informs. </p>
          <p>Own Id: OTP-7570</p>
	  <p>Aux Id: Seq 11060</p>
        </item>

        <item>
	  <p>Receiving an snmp message with a very large version
            number could cause the erlang node to run out of
            memory and consequently crash. </p>
          <p>The standard specifies the snmp version as an
            (unlimited) INTEGER, but today only
            0 (version 1), 1 (version 2) and 3 (version 3) is
            actually used. So, when decoding a message, a limit
            has been put on the snmp version integer in order
            to not allow this kind of a problem. </p>
	  <p>Own Id: OTP-7575</p>
	  <p>Aux Id: Seq 11064</p>
        </item>

      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.11.2 -->


  <section>
    <title>SNMP Development Toolkit 4.11.1</title>
    <p>Version 4.11.1 supports code replacement in runtime from/to
      version 4.11.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[compiler] The MIB compiler did not retrieve the REFERENCE part
            of a SNMP MIB definition. </p>
          <p>This problem has been partly solved. For SNMP tables, 
            the assocList field of the tables mib-entry record now contains 
            this info (as <c>{reference, string()}</c>), <em>if</em> the 
            MIB was compiled with the compiler option <em>+reference</em>. </p>
          <p>This solution is temporary, until such time as a permanent
            solution (and probably not backward compatible) is devised, which
            retrieves and stores all REFERENCE part(s) of a MIB. </p>
          <p>See the 
            <seeerl marker="snmpc#compiler_opts">compiler options</seeerl> 
            for more info. </p> 

          <p>Serge Aleynikov</p>
          <p>Own Id: OTP-7426</p>
        </item>

        <item>
	  <p>Added utility functions for transforming DateAndTime
            as [int()] to strings; 
            <seeerl marker="snmp#dat2s">date_and_time_to_string/2</seeerl>
            and  
            <seeerl marker="snmp#dat2s2">date_and_time_to_string2/1</seeerl>. </p>
          <p>Also added new validation function 
            <seeerl marker="snmp#vdat">validate_date_and_time/2</seeerl>. </p>
	  <p>Own Id: OTP-7412</p>
	  <p>Aux Id: Seq 10987</p>
        </item>

      </list>

    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[manager] Encryption error when attempting to send
            version 3 inform-requests. </p>
          <p>Own Id: OTP-7432</p>
	  <p>Aux Id: Seq 10966</p>
        </item>

      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.11.1 -->

  <section>
    <title>SNMP Development Toolkit 4.11</title>
    <p>Version 4.11 supports code replacement in runtime from/to
      version 4.10.3, 4.10.2, 4.10.1 and 4.10.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[agent] Performance improvements in the case when an SNMP 
            manager performs an snmpwalk. </p>
          <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-7201</p>
        </item>

        <item>
          <p>The API for sending inform(s) has been improved. Also
            the documentation has been corrected and updated. See 
            <seeerl marker="snmpa#send_notification">snmpa:send_notification</seeerl> and 
            <seeerl marker="snmpa_notification_delivery_info_receiver">snmpa_notification_delivery_info_receiver</seeerl> 
            for more info.</p>
          <p>Own Id: OTP-7287</p>
          <p>Aux Id: Seq 10926</p>
        </item>

        <item>
	  <p>[agent] Performance of the internal database (local-db) 
           has been improved.</p>
	  <p>Own Id: OTP-7319</p>
	  <p>Aux Id: Seq 10942</p>
        </item>

        <item>
	  <p>[agent] Added utility functions,
            <seeerl marker="snmpa#restart_worker">snmpa:restart_worker/0,1</seeerl> and 
            <seeerl marker="snmpa#restart_set_worker">snmpa:restart_set_worker/0,1</seeerl>, 
            for restarting the agent worker processes (in case the agent is
            multi-threaded).</p>
	  <p>Own Id: OTP-7369</p>
        </item>

        <item>
	  <p>Add utility function to 
            <seeerl marker="snmp#read_mib">read</seeerl> 
            a compiled mib. </p>
	  <p>Own Id: OTP-7371</p>
        </item>

      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!-- 
      <p>-</p>
      -->
      <list type="bulleted">
        <item>
          <p>[manager] Encryption error when attempting to send
            version 3 inform-requests. </p>
          <p>Own Id: OTP-7377</p>
	  <p>Aux Id: Seq 10966</p>
        </item>

      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.11 -->


  <section>
    <title>SNMP Development Toolkit 4.10.3</title>
    <p>Version 4.10.3 supports code replacement in runtime from/to
      version 4.10.2, 4.10.1 and 4.10.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <list type="bulleted">
        <item>
          <p>The snmp documentation source has been converted
            from SGML to XML.</p>
          <p>Own Id: OTP-6771</p>
        </item>
      </list>
      -->
      <p>-</p> 
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] The configuration option 
            <seeerl marker="snmp_config#manager_irb">inform_request_behaviour</seeerl>
            was not properly parsed, which caused the manager to revert 
            to the default value, <c>auto</c>. </p>
          <p>Own Id: OTP-7219</p>
        </item>

      </list>
      <!-- <p>-</p> -->
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.10.3 -->


  <section> <!-- 4.10.2 -->
    <title>SNMP Development Toolkit 4.10.2</title>

    <p>Version 4.10.2 supports code replacement in run-time from/to
      version 4.10.1 and 4.10</p>

    <section>
      <title>Improvements and new features</title>
      <!--
      <p>-</p> 
      -->

      <list type="bulleted">
        <item>
          <p>[compiler] The MIB-compiler did not recognize well-known-names
            as top parents. The names 'ccitt' (0) , 'iso' (1) and 
            'joint-iso-ccitt' (2) is now also recognized by the MIB 
            compiler. </p>
          <p>Ola Samuelsson</p>
          <p>Own Id: OTP-7160</p>
        </item>

        <item>
          <p>[compiler] The MIB-compiler did not support a name assignment
            which was sequence of numbers, only a parent object
            name followed by a sequence of numbers. </p>
          <p>Ola Samuelsson</p>
          <p>Own Id: OTP-7158</p>
        </item>

      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!--
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[agent] Invalid variable value causes crashing agent worker 
            process when sending traps. </p>
          <p>Own Id: OTP-7159</p>
        </item>

        <item>
          <p>[agent] When sending a trap, the order of the variable 
            bindings not provided by the trap-sender, could be
            mangled by the agent. </p>
          <p>Ola Samuelsson</p>
          <p>Own Id: OTP-7157</p>
        </item>

        <item>
          <p>[agent] Uninstalling MEs when unloading mibs incorrect and 
            therefore never done. </p>
          <p>Own Id: OTP-7153</p>
        </item>

        <item>
          <p>[agent] snmp_generic:table_set_cols/3 did not handle unexpected
            return values correctly when setting column values. </p>
          <p>Serge Aleynikov</p>
          <p>Own Id: OTP-7152</p>
        </item>

      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.10.2 -->


  <section> <!-- 4.10.1 -->
    <title>SNMP Development Toolkit 4.10.1</title>

    <p>Version 4.10.1 supports code replacement in run-time from/to
      version 4.10</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p> 
      <!--
      <list type="bulleted">
	<item>
	  <p>Added buffer sizes (both receive and send) of
            the udp socket(s) info when calling the 
            <seeerl marker="snmpa#info">agent info</seeerl> 
            and
            <seeerl marker="snmpm#info">manager info</seeerl> 
            function(s). </p>
	  <p>Own Id: OTP-6945</p>
	</item>

      </list>
      -->
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <!--
      <p>-</p> 
      -->
      <list type="bulleted">
        <item>
          <p>[manager] Fixed usage of inet:gethostname/1. </p>
          <p>Dialyzer</p>
          <p>Own Id: OTP-7123</p>
        </item>

        <item>
          <p>[agent] Remeoved invalid guard. There was an invalid
            guard on the start function of the top agent 
            supervisor. </p>
          <p>Dialyzer</p>
          <p>Own Id: OTP-7121</p>
        </item>

        <item>
          <p>[compiler] Old style fun cleanup in the MIB compiler. </p>
          <p>Dialyzer</p>
          <p>Own Id: OTP-7119</p>
        </item>

        <item>
          <p>Corrected usage of function file:open/2 (the <c>Modes</c> 
            argument is a list). </p>
          <p>Own Id: OTP-7110</p>
          <!-- <p>Aux Id: Seq 10717</p> -->
        </item>

        <item>
          <p>The SNMP application contains some (previously undocumented) 
            simple utility functions for function tracing (using dbg),
            see 
	    <seeerl marker="snmp#enable_trace">enable_trace</seeerl>, 
	    <seeerl marker="snmp#disable_trace">disable_trace</seeerl>, 
	    <seeerl marker="snmp#set_trace1">set_trace/1</seeerl>, 
	    <seeerl marker="snmp#reset_trace">reset_trace</seeerl> and 
	    <seeerl marker="snmp#set_trace2">set_trace/2</seeerl> 
	    for more info. 
	    These functions are intended to make it easy to enable tracing on
            individual functions.
            There where some minor errors, which has now been corrected. </p>
          <p>Own Id: OTP-7109</p>
          <!-- <p>Aux Id: Seq 10717</p> -->
        </item>

        <item>
          <p>There is a bug in snmp_pdus:enc_oct_str_tag/1.  
            All the enc_* functions are supposed to return 
            a flat list, but the second clause of this function 
            does not.  If it gets a binary it returns a deep list. </p>
          <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-7083</p>
          <!-- <p>Aux Id: Seq 10717</p> -->
        </item>

      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.10.1 -->


  <section> <!-- 4.10 -->
    <title>SNMP Development Toolkit 4.10</title>
    <!--
    <p>Version 4.10 supports code replacement in run-time from/to
      version 4.9.6</p>
    -->

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
	<item>
	  <p>Added buffer sizes (both receive and send) of
            the udp socket(s) info when calling the 
            <seeerl marker="snmpa#info">agent info</seeerl> 
            and
            <seeerl marker="snmpm#info">manager info</seeerl> 
            function(s). </p>
	  <p>Own Id: OTP-6945</p>
	</item>

        <item>
          <p>[agent] Added the ability to change the request limit  
            in run-time, see 
            <seeerl marker="snmpa#set_request_limit">set_request_limit</seeerl>
            for more info. </p>
            <p>Own Id: OTP-6898</p>
        </item>

        <item>
          <p>Added the ability to change the audit trail log type 
            in run-time (both agent and manager), see function(s) 
            <seeerl marker="snmpm#set_log_type">[manager] set_log_type</seeerl>
            and 
            <seeerl marker="snmpa#set_log_type">[agent] set_log_type</seeerl>
            for more info. </p>
            <p>Own Id: OTP-6841</p>
        </item>

	<item>
	  <p>[agent] Added support for message filtering in the network
            interface module provided with the application. 
            The component that actually make the filter decisions is the 
            network interface filter module. This module must implement the 
            <seeerl marker="snmpa_network_interface_filter">network interface filter behaviour</seeerl>. 
            See also the 
            <seeerl marker="snmp_config#configuration_params">Configuring the application</seeerl> 
            chapter of the User's Guide to see how to configure this 
            feature. </p>
	  <p>Own Id: OTP-6649</p>
	</item>

      </list>
      <!-- 
      <p>-</p> 
      -->
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <p>-</p> 
      <!--
      <list type="bulleted">
        <item>
          <p>[agent] The order in which the processes in the snmp agent
            where terminated was incorrect. This could, in some
            case's, lead to incoming request(s) being processed
            during the application termination phase. This, in
            turn, could lead to various process crashes (when
            expected resources where no longer available). </p>
          <p>Own Id: OTP-6805</p>
          <p>Aux Id: Seq 10717</p>
        </item>

      </list>
      -->
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.10 -->

  <section>
    <title>SNMP Development Toolkit 4.9.6</title>
    <p>Version 4.9.6 supports code replacement in run-time from/to
      version 4.9.5, 4.9.4, 4.9.3, 4.9.2, 4.9.1 and 4.9.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <list type="bulleted">
        <item>
          <p>The snmp documentation source has been converted
            from SGML to XML.</p>
          <p>Own Id: OTP-6771</p>
        </item>
      </list>
      -->
      <p>-</p> 
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[compiler] The MIB compiler did not handle import
            of the macro from the MIB RFC1155-SMI. </p>
          <p>Own Id: OTP-6840</p>
          <p>Aux Id: Seq 10726</p>
        </item>

        <item>
          <p>Bad length check (i.e. none) when decoding
            AuthenticationParameters. </p>
          <p>Own Id: OTP-6843</p>
        </item>

      </list>
      <!-- <p>-</p> -->
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.9.6 -->

  <section>
    <title>SNMP Development Toolkit 4.9.5</title>
    <p>Version 4.9.5 supports code replacement in run-time from/to
      version 4.9.4, 4.9.3, 4.9.2, 4.9.1 and 4.9.</p>

    <section>
      <title>Improvements and new features</title>
      <!-- 
      <list type="bulleted">
        <item>
          <p>The snmp documentation source has been converted
            from SGML to XML.</p>
          <p>Own Id: OTP-6771</p>
        </item>
      </list>
      -->
      <p>-</p> 
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] The order in which the processes in the snmp agent
            where terminated was incorrect. This could, in some
            case's, lead to incoming request(s) being processed
            during the application termination phase. This, in
            turn, could lead to various process crashes (when
            expected resources where no longer available). </p>
          <p>Own Id: OTP-6805</p>
          <p>Aux Id: Seq 10717</p>
        </item>

        <item>
          <p>[agent] In version 4.9.4 some requests could be
            handled single threaded regardless of the value of 
            the multi_thread config option. </p>
          <p>Own Id: OTP-6815</p>
          <p>Aux Id: Seq 10724</p>
        </item>
      </list>
      <!-- <p>-</p> -->
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.9.4</title>
    <p>Version 4.9.4 supports code replacement in run-time from/to
      version 4.9.3, 4.9.2, 4.9.1 and 4.9.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>The snmp documentation source has been converted
            from SGML to XML.</p>
          <p>Own Id: OTP-6771</p>
        </item>
      </list>
      <!-- <p>-</p> -->
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] Unexpected worker process termination.
            When the agent is multi-threaded (multi_thread = true), 
            sending a request to the agent with an invalid context
            could lead to an unexpected worker process termination.
            This is a non-fatal problem since the master-agent 
            would simply create a new worker process. </p>
          <p>Own Id: OTP-6784</p>
          <p>Aux Id: Seq 10689</p>
        </item>
      </list>
      <!-- <p>-</p> -->
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section> <!-- 4.9.4 -->

  <section>
    <title>SNMP Development Toolkit 4.9.3</title>
    <p>Version 4.9.3 supports code replacement in run-time from/to
      version 4.9.2, 4.9.1 and 4.9.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] Changing own [usm] pass-phrase when agent is
            multi-threaded did not work.</p>
          <p>Scott Lystig Fritchie</p>
          <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-6712</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.9.2</title>
    <p>Version 4.9.2 supports code replacement in run-time from/to
      version 4.9.1, 4.9 &amp; 4.8.4.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] Incorrect default verbosity (trace) for target cache.</p>
          <p>Own Id: OTP-6571</p>
          <p>Aux Id: Seq 10437</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.9.1</title>
    <p>Version 4.9.1 supports code replacement in run-time from/to
      version 4.9 &amp; 4.8.4.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] Used wrong DEFVAL for vacmAccessStorageType
            (volatile instead of nonVolatile) in SNMP-VIEW-BASED-ACM-MIB. </p>
          <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-6569</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.9</title>
    <p>Version 4.9 supports code replacement in run-time from/to
      version 4.8.4, 4.8.3, 4.8.2, 4.8.1 and 4.8.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Added documentation for 
            <seeerl marker="snmp#passwd2localized_key">snmp:passwd2localized_key/3</seeerl>. </p>
          <p>Own Id: OTP-6540</p>
        </item>
        <item>
          <p>The 
            <seeerl marker="snmp#config">snmp:config/0</seeerl>
            utility function assumes by default
            current working dir as the directory to write config
            files. This is a problem since there are two files
            that share the same name, usm.conf, one for the agent 
            and the other for the manager. Some extra checks has 
            been added to be able warn the user about this possible 
            conflict. </p>
          <p>Own Id: OTP-6532</p>
        </item>
        <item>
          <p>Minor documentation improvement for module snmp_generic. </p>
          <p>Own Id: OTP-6518</p>
        </item>
        <item>
          <p>[agent] Improve error handling of missing target params 
            config. </p>
          <p>Own Id: OTP-6487</p>
        </item>
        <item>
          <p>Minor improvement to the mnesia snmp indexing. </p>
          <p>Own Id: OTP-6415</p>
        </item>
        <item>
          <p>Include the INET-ADDRESS-MIB mib in the SNMP application. </p>
          <p>Own Id: OTP-6383</p>
        </item>
        <item>
          <p>Added utility modules to read, write and update the config
            files of the 
            <seeerl marker="snmpa_conf">agent</seeerl> and 
            <seeerl marker="snmpm_conf">manager</seeerl>. </p>
          <p>Own Id: OTP-6318</p>
        </item>
        <item>
          <p>[agent] Improve behaviour during massive trap-
            sending. This is done in two way's:</p>
          <list type="bulleted">
            <item>
              <p>Improving performance of the target(s) cache 
                (which is used during trap/notification sending). </p>
            </item>
            <item>
              <p>A slightly better flow control, making it more 
                difficult to actually overload the agent.</p>
            </item>
          </list>
          <p>Own Id: OTP-6317</p>
          <p>Aux Id: Seq 10437</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>Incorrect handling of decrypt failure resulting in 
            incorrect error reporting. Applies to both the
            agent and the manager. Detected by dialyzer. </p>
          <p>Own Id: OTP-6533</p>
        </item>
        <item>
          <p>[manager] Invalid guard on function snmpm:agn/5 
            made it impossible to reach this particular clause.
            Detected by dialyzer. </p>
          <p>Own Id: OTP-6529</p>
        </item>
        <item>
          <p>Miscellaneous minor corrections, such as 
            removing "dead code". Detected by dialyzer. </p>
          <p>Own Id: OTP-6515</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.8.4</title>
    <p>Version 4.8.4 supports code replacement in run-time from/to
      version 4.8.3, 4.8.2, 4.8.1 and 4.8.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] An Audit Trail Log entry was sometimes done 
            using a list instead of the expected binary for the 
            snmp packet. This caused an error when converting the 
            log to a text-file. </p>
          <p>Own Id: OTP-6408</p>
          <p>Aux Id: Seq 10547</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.8.3</title>
    <p>Version 4.8.3 supports code replacement in run-time from/to
      version 4.8.2, 4.8.1 and 4.8.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] Verification of ViewTreeFamily 
            (SNMP-VIEW-BASED-ACM-MIB) incorrect.
            No values other then <c>null</c> and <c>[]</c> where accepted. </p>
          <p>Own Id: OTP-6337</p>
          <p>Aux Id: Seq 10509</p>
        </item>
        <item>
          <p>[agent] Start with type <c>takeover</c> did not work. </p>
          <p>Own Id: OTP-6340</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.8.2</title>
    <p>Version 4.8.2 supports code replacement in run-time from/to
      version 4.8.1 and 4.8.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Add time-stamp to the verbosity printouts. </p>
          <p>Own Id: OTP-6214</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>A badly formatted debug printout caused console printouts. </p>
          <p>Own Id: OTP-6247</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.8.1</title>
    <p>Version 4.8.1 supports code replacement in run-time from/to
      version 4.8, 4.7.4 and 4.7.3.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>Removed an io:format in mini mib utility (used when
            converting logs). </p>
          <p>Own Id: OTP-6177</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.8</title>
    <p>Version 4.8 supports code replacement in run-time from/to
      version 4.7.4 and 4.7.3.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Added a config option, <c>sndbuf</c>, for the net_if-module(s).  
            See 
            <seeerl marker="snmp_config#configuration_params">Configure the application</seeerl> 
            for more info (look for manager_net_if_options and
            agent_net_if_options). </p>
          <p>Own Id: OTP-6137</p>
        </item>
        <item>
          <p>Improve error handling of the log_to_txt function(s). 
            [snmpm|snmpa]:log_to_txt on a non-existing log-file 
            causes an obscure error reason.</p>
          <p>Own Id: OTP-6149</p>
        </item>
        <item>
          <p>Performance improvement when converting audit trail logs.</p>
          <p>Own Id: OTP-6164</p>
          <p>Aux Id: Seq 10362</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[compiler] Allow empty definitions for SMI-II mibs,
            i.e. mibs are allowed to only contain the
            MODULE-IDENTITY construct. </p>
          <p>Own Id: OTP-6150</p>
          <p>Aux Id: Seq 10333</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.7.4</title>
    <p>Version 4.7.4 supports code replacement in run-time from/to
      version 4.7.3, 4.7.2, 4.7.1 and 4.7.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Add another example, 
            <seeguide marker="snmp_impl_example_manager">ex2</seeguide>. 
            This example is basically a simple manager module. </p>
          <p>Own Id: OTP-6042</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] v1 trap sending minor problems. When sending a
            v1 trap, the wrong record type (#pdu{}) was used to
            access the type field (which does not exist in the
            #tranpdu{} record). This value is used when logging.</p>
          <p>Own Id: OTP-6077</p>
        </item>
        <item>
          <p>[manager] Type guard error.</p>
          <p>Kostis Sagonas.</p>
          <p>Own Id: OTP-6074 (dialyzer)</p>
        </item>
        <item>
          <p>Misc Dialyzer warnings.</p>
          <p>Own Id: OTP-6068</p>
        </item>
        <item>
          <p>[manager] Default value tags may conflict with actual
            host name. When storing default values for agents, the
            tag, default, was used for address (and port). This
            could conflict with an actual host name.</p>
          <p>Own Id: OTP-6062</p>
        </item>
        <item>
          <p>Misc doc corrections.</p>
          <p>Own Id: OTP-6044</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.7.3</title>
    <p>Version 4.7.3 supports code replacement in run-time from/to
      version 4.7.2, 4.7.1 and 4.7.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>Misc compiler warning cleanup.</p>
          <p>Own Id: OTP-6031</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.7.2</title>
    <p>Version 4.7.2 supports code replacement in run-time from/to
      version 4.7.1 and 4.7.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] Improve handling of empty messages. Today 
            when receiving an empty (size = 0) udp message, this 
            will result in a decode failure (a caught function 
            clause), which in turn will be passed on to the user, 
            via a call to the 
            <seeerl marker="snmpm_user#handle_error">handle_error</seeerl> 
            callback function, in the <c>Reason</c> argument. 
            This has now been changed so that instead, the 
            <c>Reason</c> argument will get a <c>empty message</c> 
            value.</p>
          <p>See  
            <seeerl marker="snmpm_user#handle_error">handle_error</seeerl> 
            for more details. </p>
          <p>Own Id: OTP-6024</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] Some error cases are reported to the 'user'
            with the ReqId and Reason swapped in the call to the
            <seeerl marker="snmpm_user#handle_error">handle_error</seeerl> 
            callback function.</p>
          <p>Own Id: OTP-5992</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.7.1</title>
    <p>Version 4.7.1 supports code replacement in run-time from/to
      version 4.7, 4.6.1 and 4.6.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Added new version info print functions, 
            <seeerl marker="snmp#print_version_info">print_version_info</seeerl>.</p>
          <p>Own Id: OTP-5968</p>
        </item>
        <item>
          <p>Updated the documentation for the 
            <seeerl marker="snmpa#log_to_txt">agent</seeerl> and 
            <seeerl marker="snmpm#log_to_txt">manager</seeerl>
            log_to_txt functions.</p>
          <p>Own Id: OTP-5969</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] The supervision structure contained several
            errors which unnecessarily caused a complete restart of 
            the manager.</p>
          <p>Own Id: OTP-5963</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.7</title>
    <p>Version 4.7 supports code replacement in run-time from/to
      version 4.6.1 and 4.6.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Add simple backup mechanism, 
            see <seeerl marker="snmpa#backup">agent backup</seeerl> 
            and <seeerl marker="snmpm#backup">manager backup</seeerl>.</p>
          <p>Own Id: OTP-5870</p>
        </item>
        <item>
          <p>Improve handling of faulty data base files.</p>
          <p>Added new agent and manager config option, 
            <c>db_init_error</c>, see 
            <seeerl marker="snmp_config">config</seeerl> for more 
            info.</p>
          <p>Own Id: OTP-5934</p>
          <p>Aux Id: Seq 10202</p>
        </item>
        <item>
          <p>Added possibility to configure restart type for each of 
            the components (default is permanent for the agent and 
            transient for the manager).
            See <seeerl marker="snmp_config">config</seeerl> for more 
            info.</p>
          <p>Own Id: OTP-5935</p>
        </item>
        <item>
          <p>[compiler] Improve error printouts.</p>
          <p>Own Id: OTP-5937</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <p>-</p>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.6.1</title>
    <p>Version 4.6.1 supports code replacement in run-time from/to
      version 4.6.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] SNMP sha/aes decryption did not work. </p>
	  <p>Magnus Fr&ouml;berg</p>
          <p>Own Id: OTP-5834</p>
        </item>
        <item>
          <p>[agent] The SNMP agent internal data base (local db)
            uses dets, and does not properly handle error's from
            e.g. lookup.</p>
          <p>Own Id: OTP-5838</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.6</title>
    <p>Version 4.6 supports code replacement in run-time from/to
      version 4.5.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Improved application start flexibility. It is now 
            possible to start snmp application components (agent
            or manager) after the application has been started.
            It is even possible to start an "empty" snmp 
            application and start the agent and/or manager 
            afterwords. See 
            <seeerl marker="snmp#start_agent">start_agent</seeerl> and 
            <seeerl marker="snmp#start_manager">start_manager</seeerl>.</p>
          <p>Own Id: OTP-5797</p>
          <p>Aux Id: Seq 10128</p>
        </item>
        <item>
          <p>[agent] Adding utility function to convert old 
            application config to current agent config.
            See the <seeerl marker="snmpa#convert_config">convert_config</seeerl> 
            for more info.</p>
          <p>Own Id: OTP-5787</p>
        </item>
        <item>
          <p>Improved handling of audit trail logs.
            See the <seeerl marker="snmp_config">atl_repair</seeerl> 
            config for more info.</p>
          <p>Own Id: OTP-5771</p>
        </item>
        <item>
          <p>[manager] Introduced the 
            <seeerl marker="snmpm#notify_started">notify_started</seeerl> 
            function used by a <em>client</em> to get a notification 
            when the manager is started.</p>
          <p>Own Id: OTP-5763</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>Misc documentation corrections.</p>
          <p>Own Id: OTP-5829</p>
          <p>Aux Id: Seq 10152</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.5</title>
    <p>Version 4.5 supports code replacement in run-time from/to
      version 4.4.1 and 4.4.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] Introduced the 
            <seeerl marker="snmp_config#manager_irb">inform request behaviour</seeerl> 
            configuration option to allow the user to specify
            how/when the manager shall acknowledge inform-request's.</p>
          <p>Own Id: OTP-5733</p>
        </item>
        <item>
          <p>[manager] In order to improve application behaviour,
            all callback function (see the 
            <seeerl marker="snmpm_user">snmpm_user behaviour</seeerl>) 
            calls
            are now done by spawned processes (and not as previously
            by the SNMP manager server process).</p>
          <p>Own Id: OTP-5726</p>
        </item>
        <item>
          <p>[manager] In order to present the various error 
            reason's returned by the manager, a 
            <seeerl marker="snmpm#format_reason">format_reason</seeerl> 
            function has been added.
            The error reasons this function handles are those
            returned by the (sync and async) get, get-next, 
            get-bulk and set-functions 
            (see the <seeerl marker="snmpm">snmpm</seeerl> module) 
            as well as the 
            <c>Reason</c> argument of the 
            <seeerl marker="snmpm_user#handle_error">handle_error</seeerl> 
            function of the 
            <seeerl marker="snmpm_user">user callback module</seeerl>.</p>
          <p>Own Id: OTP-5581</p>
          <p>Aux Id: Seq 9870</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] The (error) report according to RFC 2572, chapter
            7.2 point 6) was never sent.</p>
          <p>Own Id: OTP-5742</p>
        </item>
        <item>
          <p>[agent] Check of notification name collision
            could fail due to incorrect record name (assumed to
            be <c>#trap</c>, but could also be <c>#notification</c>). 
            This only cases a problem when the application is 
            compiled with the strict_record_tests option.</p>
          <p>Own Id: OTP-5740</p>
        </item>
        <item>
          <p>[agent] Table get-request failure in some cases.</p>
          <p>Own Id: OTP-5732</p>
          <p>Aux Id: Seq 10087</p>
        </item>
        <item>
          <p>Explicitly sync all audit trail log's upon termination.</p>
          <p>Own Id: OTP-5727</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <list type="bulleted">
        <item>
          <p>[manager] The 
            <seeerl marker="snmpm_network_interface">snmpm_network_interface</seeerl> 
            behaviour has been updated (see 
            <seeerl marker="snmpm_network_interface#inform_response">inform_response</seeerl> and 
            <seeguide marker="snmp_manager_netif">definition of the manager net if</seeguide>).</p>
          <p>Own Id: OTP-5733</p>
        </item>
      </list>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.4.1</title>
    <p>Version 4.4.1 supports code replacement in run-time from/to
      version 4.4.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] Add monitoring of the SNMP manager.
            The SNMP application consists of two different
            run-time parts, the agent and the manager. They are
            independent of each other. The agent is "permanent"
            and the manager "transient". In order to handle
            manager crashes a simple 
            <seeerl marker="snmpm#monitor">monitor</seeerl> 
            (and <seeerl marker="snmpm#demonitor">demonitor</seeerl>) 
            function has been added.</p>
          <p>Own Id: OTP-5720</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] If sending a set-request containing an
            'OCTET STRING' with an invalid integer (valid integer
            are 0-255), the encoding will fail and cause the
            net_if process to crash.</p>
          <p>Own Id: OTP-5719</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.4</title>
    <p>Version 4.4 supports code replacement in run-time from/to
      version 4.3.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Updated and extended the 
            <seeerl marker="snmpa#info">agent</seeerl>
            info retrieval function. Also added an info retrieval 
            function for the 
            <seeerl marker="snmpm#info">manager</seeerl>.</p>
          <p>Own Id: OTP-5666</p>
        </item>
        <item>
          <p>[manager] Added get-bulk functionality, see (sync) get-bulk
            and (async) get-bulk for more info.</p>
          <p>Own Id: OTP-5669</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] Mini-MIB not properly initiated which could 
            cause a server crash if the name_to_oid or oid_to_name
            functions where called (if no mib's where loaded).</p>
          <p>Own Id: OTP-5675</p>
        </item>
        <item>
          <p>[manager] The out packet counter was not incremented for 
            sent v1/v2 messages.</p>
          <p>Own Id: OTP-5676</p>
        </item>
        <item>
          <p>[manager] The request GC process was started with the 
            wrong default value (idle) which could (unlikely but 
            still) cause problems after a code-change.</p>
          <p>Own Id: OTP-5678</p>
        </item>
        <item>
          <p>Bad handling of error cases (corrupt log file) when 
            converting log files (i.e. when calling the function 
            log_to_txt).</p>
          <p>Own Id: OTP-5703</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <list type="bulleted">
        <item>
          <p>[agent] The format of the info returned by the agent 
            info retrieval function has been changed. The info 
            can be converted to the old format by calling the 
            <seeerl marker="snmpa#old_info_format">old_info_format</seeerl>).</p>
          <p>function. </p>
          <p>Own Id: OTP-5666</p>
        </item>
      </list>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.3</title>
    <p>Version 4.3 supports code replacement in run-time from/to
      version 4.2.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] Improved async error reporting.</p>
          <p>Own Id: OTP-5637</p>
          <p>Aux Id: Seq 9970</p>
        </item>
        <item>
          <p>Added support for The Advanced Encryption Standard (AES) 
            Cipher Algorithm in the SNMP User-based Security Model 
            (RFC 3826). Both agent and manager. </p>
	  <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-5490</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] Reset of USM-cache when unregister agent.</p>
          <p>Own Id: OTP-5636</p>
          <p>Aux Id: Seq 9970</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.2</title>
    <p>Version 4.2 supports code replacement in run-time from/to
      version 4.1.5.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] Added another get, get-next and set function
            with another argument, <c>ExtraInfo</c> (see 
            synchronous get (g), asynchronous get (ag), 
	    synchronous set (s), asynchronous set (as), 
	    synchronous get-next (gn), and asynchronous get-next (agn)). 
            This argument is passed on to the net-if process. The net-if 
            process included in this application makes no use of this 
            info, but other implementations might.</p>
          <p>Own Id: OTP-5574</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[manager] <c>report</c> message with incorrect security info
            (e.g. securtyModel and/or securityLevel) was ignored (dropped, 
            except for incrementing the proper error counter) even if all 
            other info was correct. This has been changed so that in this
            situation, the user will be informed, either via the
            return value from a synchronous call (see synchronous get (g), 
	    synchronous set (s) and synchronous get-next (gn)) 
            or via a call to the handle_error callback function.</p>
          <p>Own Id: OTP-5578</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[manager] Added a 
            <seeerl marker="snmpm#unregister_usm_user">unregister_usm_user</seeerl> function.</p>
          <p>Own Id: OTP-5580</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[agent] Added new functions to get lists of all tables, 
            <seeerl marker="snmpa#which_tables">which_tables</seeerl>, 
            and variables, 
            <seeerl marker="snmpa#which_variables">which_variables</seeerl>, 
            known to the agent.</p>
          <p>Own Id: OTP-5590</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] Incorrect SHA-key length check when 
            updating usm-user info (should have been 20 but 
            was 16).</p>
          <p>Own Id: OTP-5579</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[compiler] Incorrect error report when the name of the 
            field and object is the same. </p>
	  <p>Kostis Sagonas</p>
          <p>Own Id: OTP-5591 (dialyzer)</p>
        </item>
        <item>
          <p>[manager] Arguments Port (third argument) and CtxName 
            (fourth argument) where swapped in snmpm:g/5 
            when forwarding call. </p>
	  <p>Kostis Sagonas</p>
          <p>Own Id: OTP-5592 (dialyzer)</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <list type="bulleted">
        <item>
          <p>[manager] The <c>snmpm_network_interface</c> behaviour has changed. 
            One more argument (ExtraInfo) was added to the 
            function send_pdu (see 
            <seeerl marker="snmpm_network_interface#send_pdu">send_pdu</seeerl>).</p>
          <p>Own Id: OTP-5574</p>
          <p>Aux Id: Seq 9850</p>
        </item>
      </list>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.1.5</title>
    <p>Version 4.1.5 supports code replacement in run-time from/to
      version 4.1.4, 4.1.3, 4.1.2, 4.1.1 and 4.1.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[agent] Add mapping of notification oid to alias-name. </p>
	  <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-5562</p>
        </item>
        <item>
          <p>[manager] Late (async) reply incorrectly delivered to
            user via handle_pdu instead of handle_error.</p>
          <p>Own Id: OTP-5506</p>
          <p>Aux Id: Seq 9804</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] Security level handled incorrectly.</p>
          <p>Own Id: OTP-5564</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[manager] (v3) Encryption/decryption failure.</p>
          <p>Own Id: OTP-5560</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[manager] Cannot handle version-1 traps.</p>
          <p>Own Id: OTP-5557</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[manager] Set-request without specifying the variable 
            type failed. The type of the oid had to be found in the 
            loaded MIB. This look-up was erroneous.</p>
          <p>Own Id: OTP-5556</p>
          <p>Aux Id: Seq 9850</p>
        </item>
        <item>
          <p>[agent] Error's reported by the SecModule (v3) when 
            generating outgoing message was not handled correctly 
            in message processing dispatcher module.</p>
          <p>Own Id: OTP-5550</p>
        </item>
        <item>
          <p>[manager] Error's reported by the SecModule (v3) when 
            generating outgoing message was not handled correctly 
            in message processing dispatcher module. And also when 
            encryption failed, the real error was masked into another 
            error.</p>
          <p>Own Id: OTP-5548</p>
          <p>Aux Id: Seq 9804</p>
        </item>
        <item>
          <p>[agent] Failure to stop the snmp application when
            started with the old config type.</p>
          <p>Own Id: OTP-5547</p>
          <p>Aux Id: Seq 9842</p>
        </item>
        <item>
          <p>[manager] User unregistration after reboot causes process crash
            (snmpm_server).</p>
          <p>Own Id: OTP-5539</p>
        </item>
        <item>
          <p>[manager] Security engine id look-up errors.</p>
          <p>Own Id: OTP-5508</p>
          <p>Aux Id: Seq 9804</p>
        </item>
        <item>
          <p>[manager] Registering of USM users erroneous.</p>
          <p>Own Id: OTP-5505</p>
          <p>Aux Id: Seq 9804</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.1.4</title>
    <p>Version 4.1.4 supports code replacement in run-time from/to
      version 4.1.3, 4.1.2, 4.1.1 and 4.1.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>Fixed a perl related problem in the mibs Makefile. </p>
	  <p>Geoff White</p>
          <p>Own Id: OTP-5491</p>
        </item>
        <item>
          <p>[manager] Failed to register usm users. Both using the
            usm config file 
            (<seeguide marker="snmp_manager_config_files#usm_user">usm.conf</seeguide>) 
            and the API functions
            <seeerl marker="snmpm#register_usm_user">register_usm_user</seeerl></p>
          <p>Own Id: OTP-5499</p>
	  <p>Aux Id: Seq 9804</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.1.3</title>
    <p>Version 4.1.3 supports code replacement in run-time from/to
      version 4.1.2, 4.1.1 and 4.1.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Added utility functions to update agent and manager
            config files.</p>
          <p>Own Id: OTP-5468</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] Error replies was composed with invalid OIDs for the
            following error counters:
            <em>usmStatsWrongDigests</em> (RFC 2574, chap 3.2, point 6),
            <em>usmStatsUnsupportedSecLevels</em> (point 5) and
            <em>usmStatsDecryptionErrors</em> (point 8a).</p>
          <p>Own Id: OTP-5464</p>
	  <p>Aux Id: Seq 9791</p>
        </item>
        <item>
          <p>[agent] Malformed Oid returned from a get_next operation as
            part of a get-bulk-request causes the agent to crash.</p>
          <p>Own Id: OTP-5465</p>
	  <p>Aux Id: Seq 9783, Seq 9793</p>
        </item>
        <item>
          <p>[agent] Missing catch on decode function call.</p>
	  <p>Kostis Sagonas (Dialyzer)</p>
          <p>Own Id: OTP-5479</p>
        </item>
        <item>
          <p>[manager] Invalid check for illegal options.</p>
	  <p>Kostis Sagonas (Dialyzer</p>
          <p>Own Id: OTP-5480</p>
        </item>
        <item>
          <p>Faulty utility function for generation of agent 
            config file target_addr.conf.</p>
          <p>Own Id: OTP-5482</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit 4.1.2</title>
    <p>Version 4.1.2 supports code replacement in run-time from/to 
      version 4.1.1 and 4.1.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>Export utility functions to create agent and manager
            config files.</p>
          <p>Own Id: OTP-5390</p>
        </item>
        <item>
          <p>[agent] Documented instrumentation utility functions
            (e.g. <seeerl marker="snmpa#current_request_id">current_request_id</seeerl>).</p>
          <p>Own Id: OTP-5423</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] If the client crashes after having issued 
            an async request, the server will crash when trying to 
            perform cleanup. Supervision of the calling process issuing an
            async request has been removed. </p>
          <p>Own Id: OTP-5370</p>
        </item>
        <item>
          <p>Failure to convert an audit-trail-log to text-file when
            using the default log name. This applies to both the manager 
            and the agent. </p>
          <p>Own Id: OTP-5394</p>
        </item>
        <item>
          <p>[manager] Corrected the discovery handling of the manager.</p>
          <p>Own Id: OTP-5414</p>
        </item>
        <item>
          <p>[manager] Statistic counter creation correction.</p>
          <p>Own Id: OTP-5415</p>
        </item>
        <item>
          <p>[agent] When using the old style agent configuration (pre 4.0),
            it was not possible to specify a different error report
            module (the agent always choose snmpa_error_logger).
            A similar problem existed for the config option 
            force_config_load, which always reverted to false.</p>
          <p>Own Id: OTP-5424</p>
        </item>
        <item>
          <p>[manager] The manager net_if process failed to properly handle
            the case bind_to option value true.</p>
          <p>Own Id: OTP-5431</p>
        </item>
        <item>
          <p>[agent] Various minor mnesia-related fixes.</p>
	  <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-5433</p>
        </item>
        <item>
          <p>[manager] Missing interface functions for loading and 
            unloading mibs into/from the manager: 
            <seeerl marker="snmpm#load_mib">load_mib</seeerl>,
            <seeerl marker="snmpm#unload_mib">unload_mib</seeerl>,
            <seeerl marker="snmpm#which_mibs">which_mibs</seeerl>,
            <seeerl marker="snmpm#name_to_oid">name_to_oid</seeerl> and 
            <seeerl marker="snmpm#oid_to_name">oid_to_name</seeerl>.</p>
          <p>Own Id: OTP-5441</p>
        </item>
        <item>
          <p>Added utility functions to retrieve some system and application 
            info, see <seeerl marker="snmp#versions1">versions1</seeerl> and 
            <seeerl marker="snmp#versions2">versions2</seeerl>.</p>
          <p>Own Id: OTP-5445</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit v4.1.1</title>
    <p>Version 4.1.1 supports code replacement in run-time from/to 
      version 4.1. </p>
    <p>When performing a downgrade, make sure the verbosity of the
      manager server process is silence, or else the process will crash
      (due to a bug in version 4.0.4) and be restarted by its
      supervisor.</p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] Manager synchronous get-function with timeout erroneous.
            Results in a function clause.</p>
          <p>Own Id: OTP-5364</p>
        </item>
        <item>
          <p>Replace in decoder fun's of the "old style" fun format, 
            {atom(), atom()}, with a proper fun, e.g. "fun the_function/1".</p>
          <p>Own Id: OTP-5365</p>
        </item>
        <item>
          <p>[manager] Register agent using the config file 
            agents.conf failed due to incorrect function guard.</p>
          <p>Own Id: OTP-5367</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit v4.1.0</title>
    <p>Version 4.1.0 supports code replacement in run-time from/to 
      version 4.0.4. </p>
    <p>When performing a downgrade, make sure the verbosity of the
      manager server process is silence, or else the process will crash
      (due to a bug in version 4.0.4) and be restarted by its
      supervisor.</p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] Added possibility to monitor a registered user.
            See <seeerl marker="snmpm#register_user_monitor">snmpm:register_user_monitor</seeerl>.</p>
          <p>Own Id: OTP-5286</p>
        </item>
        <item>
          <p>[agent] Improved symbolic store. Alias and Oids where stored 
            with similar key's (separated by types: atom() and
            lists() respectively). Also added new function:
            <seeerl marker="snmpa#which_aliasnames">snmpa:which_aliasnames</seeerl>.</p>
          <p>Own Id: OTP-5298</p>
        </item>
        <item>
          <p>[agent] The agent local_db volatile storage method uses
            an ets-table which is private. This table has been made 
            protected in order to make it easier to debug and test the 
            snmp agent.</p>
          <p>Own Id: OTP-5308</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>Misspelled deprecated function. Non-existent function
            snmp:is_constistent/1 was marked as deprecated. Should
            have been snmp:is_consistent/1).</p>
          <p>Own Id: OTP-5273</p>
        </item>
        <item>
          <p>[agent] Unclear documentation for function 
            <seeerl marker="snmpa#send_notification">snmpa:send_notification</seeerl>. The Recv argument
            (specifically the {M,F,A} variant).</p>
          <p>Own Id: OTP-5281</p>
        </item>
        <item>
          <p>[manager] It was never documented how the default 
            <seeerl marker="snmpm_user">user behaviour</seeerl> 
            could be overridden (default user is the module
            <c>snmpm_user_default</c>). 
            See 
            <seeerl marker="snmp_config#configuration_params">configuration params</seeerl>.</p>
          <p>Own Id: OTP-5299</p>
        </item>
        <item>
          <p>[manager] The server process contained a bug that caused it 
            to crash, if it received an exit message from its gct (GC timer)
            process and its verbosity was <em>log</em> or higher. </p>
	  <p>This also effects the application downgrade. </p>
          <p>Own Id: OTP-5306</p>
        </item>
        <item>
          <p>[agent] The agent config file, target_addr.conf, was 
            incorrectly described in the 
            <seeguide marker="snmp_agent_config_files#target_addr">Target Address Definitions</seeguide> chapter of the 
            User's Guide. The EngineId option was left out.</p>
          <p>Own Id: OTP-5307</p>
	  <p>Aux Id: Seq 9689</p>
        </item>
        <item>
          <p>[manager] When a InformRequest is received, the manager sends
            a response message. This did not include the varbinds
            of the original message. See RFC 3416, chapter 4.2.7.</p>
          <p>Own Id: OTP-5314</p>
        </item>
        <item>
          <p>[manager] Erroneous function guards made it possible to update
            some agent info (that should be "static").</p>
          <p>Own Id: OTP-5315</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit v4.0.4</title>
    <p>Version 4.0.4 supports code replacement in run-time from/to 
      version 4.0.3, 4.0.2, 4.0.1 and 4.0.
      </p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager]  The timeout calculation for the request
            gc timer incorrect.</p>
          <p>Own Id: OTP-5267</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit v4.0.3</title>
    <p>Version 4.0.3 supports code replacement in run-time from/to 
      version 4.0.2, 4.0.1 and 4.0. </p>

    <section>
      <title>Improvements and new features</title>
      <p>-</p>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] Some basic SNMP types where not handled when
            performing set-requests snmpm:s and snmpm:as): 
            'BITS' (b), 'IpAddress' (ip), 'Opaque' (op), 
            'Counter32' (c32), 'Counter64' (c64) and 'TimeTicks' (tt).</p>
          <p>Own Id: OTP-5256</p>
        </item>
        <item>
          <p>[manager] Unnecessary error message when receiving trap from 
            unregistered agent or agent using other port then the 
            request port for trap-sending.</p>
          <p>Own Id: OTP-5258</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit v4.0.2</title>
    <p>Version 4.0.2 supports code replacement in run-time from/to 
      version 4.0.1 and 4.0.
      </p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] When the net_if process failed to send a message, for
            whatever reason, this is just dropped. And the user is
            "left hanging". Now, if the request is synchronous,
            it will return with a proper reason (snmpm:g, snmpm:gn and
            snmpm:s), and if the request
            was asynchronous, the new callback function, 
            handle_error 
            (see <seeerl marker="snmpm_user">snmpm_user</seeerl>) is 
            called. </p>
          <p>Own Id: OTP-5242</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] The arguments CtxName and Port was swapped in the
            function snmpm:g/6.</p>
          <p>Own Id: OTP-5225</p>
        </item>
        <item>
          <p>[manager] TRAP receive fails for unknown agent due to
            failing message size calculation.</p>
          <p>Own Id: OTP-5241</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <list type="bulleted">
        <item>
          <p>[manager] Introduced a new callback function in the behaviour
            <seeerl marker="snmpm_user">snmpm_user</seeerl>.</p>
          <p>Own Id: OTP-5242</p>
        </item>
      </list>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit v4.0.1</title>
    <p>Version 4.0.1 supports code replacement in run-time from/to version 4.0.
      </p>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[agent] Added functions to get a list of all mibs loaded into
            an agent 
            (see <seeerl marker="snmpa#which_mibs">snmpa:which_mibs</seeerl>)
            and to get the (full path) file name of a loaded mib (see 
            <seeerl marker="snmpa#whereis_mib">snmpa:whereis_mib</seeerl>).</p>
          <p>Own Id: OTP-5187</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[manager] The wrong default value (1024) was used for the 
            net-if option recbuf. If no value is specified, then the OS
            default shall be used.</p>
          <p>Own Id: OTP-5196</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <p>-</p>
    </section>
  </section>

  <section>
    <title>SNMP Development Toolkit v4.0</title>

    <section>
      <title>Improvements and new features</title>
      <list type="bulleted">
        <item>
          <p>[manager] Added a proper snmp manager.</p>
          <p>Major restructure of the application in order to 
            incorporate the new manager.</p>
        </item>
        <item>
          <p>[agent] Add a <c>snmpa:get/3</c> with an extra <c>Context</c>
            argument. Also added similar <c>snmpa:get_next/2,3</c> functions. 
            See <seeerl marker="snmpa#get">snmpa:get</seeerl> and
            <seeerl marker="snmpa#get_next">snmpa:get_next</seeerl>. </p>
	  <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-5054</p>
        </item>
        <item>
          <p>[agent] Add <em>notification filters</em>. See 
            <seeerl marker="snmpa_notification_filter">snmpa_notification_filter</seeerl>,  
            <seeerl marker="snmpa#register_notification_filter">register_notification_filter</seeerl>,
            <seeerl marker="snmpa#unregister_notification_filter">unregister_notification_filter</seeerl> and 
            <seeerl marker="snmpa#which_notification_filter">which_notification_filter</seeerl>.</p>
          <p>Own Id: OTP-5055</p>
        </item>
        <item>
          <p>[agent] Added two mib look-up functions, 
            <seeerl marker="snmpa#me_of">me_of</seeerl> and
            <seeerl marker="snmpa#mib_of">mib_of</seeerl>.</p>
          <p>Own Id: OTP-5082</p>
	  <p>Aux Id: Seq 8848</p>
        </item>
        <item>
          <p>[compiler] The MIB compiler is now (source code) independent 
            of the rest of the application (and vice versa).</p>
        </item>
        <item>
          <p>[compiler] DISPLAY-HINT and UNITS included in the 
            compiled mib.</p>
          <p>Own Id: OTP-5053</p>
        </item>
        <item>
          <p>[compiler] Added compiler options <c>imports</c> and
            <c>module_identity</c> to include the imports list and 
            module identity (only SMIv2) info in the compiled mib, 
            see <seeerl marker="snmpc">snmpc</seeerl>.</p>
        </item>
        <item>
          <p>[compiler] Added the MIB compiler option 
            <c>+no_defs</c>, see <seeerl marker="snmpc">snmpc</seeerl>.</p>
	  <p>Martin Bj&ouml;rklund</p>
        </item>
        <item>
          <p>[compiler] Added the MIB compiler option 
            <c>+'{module, atom()}'</c>, 
            see <seeerl marker="snmpc">snmpc</seeerl>. </p>
	  <p>Martin Bj&ouml;rklund</p>
        </item>
      </list>
    </section>

    <section>
      <title>Reported Fixed Bugs and Malfunctions</title>
      <list type="bulleted">
        <item>
          <p>[agent] Failing MIB configure/reconfigure was difficult
            to diagnose. Added better error handling and verbosity.</p>
        </item>
        <item>
          <p>[compiler] Added "default value" for INTEGER with enumeration
            without a DEFVAL clause.
            The lowest valid integer value is chosen for the
            variable_info defval.</p>
          <p>Own Id: OTP-5124</p>
	  <p>Aux Id: Seq 8738</p>
        </item>
        <item>
          <p>[compiler] Unnecessarily reserved words in the mib compiler
            can cause some enumeration definitions to fail.</p>
	  <p>Martin Bj&ouml;rklund</p>
          <p>Own Id: OTP-5066</p>
        </item>
      </list>
    </section>

    <section>
      <title>Incompatibilities</title>
      <list type="bulleted">
        <item>
          <p>New sys configuration format. 
            Although the old configuration format still
            works (if only the agent is used), it is no
            longer documented and will eventually be 
            eliminated.
            See 
            <seeerl marker="snmp_config#configuration_params">configuration params</seeerl> for more info.</p>
        </item>
        <item>
          <p>Three new interface modules have been introduced. One
            for each of the individual parts of the application:</p>
          <list type="bulleted">
            <item>
              <p>[agent] <c>snmpa</c></p>
            </item>
            <item>
              <p>[manager] <c>snmpm</c></p>
            </item>
            <item>
              <p>[compiler] <c>snmpc</c></p>
            </item>
          </list>
          <p>The primary interface module, <c>snmp</c>, still exist.
            It contains the application generic functions. The 
            agent specific stuff still exist (for backward
            compatibility reasons), but has been deprecated and will
            eventually be removed.</p>
          <p>Some previously already deprecated functions has been 
            removed (since they in turn was dependent on deprecated 
            functions, see calendar).</p>
        </item>
        <item>
          <p>[agent] The agent network interface API has changed.
            See <seeguide marker="snmp_agent_netif">snmp agent net if</seeguide>,</p>
        </item>
        <item>
          <p>[agent] The default agent audit trail log name has changed.</p>
        </item>
        <item>
          <p>[compiler] Mib format has changed (see OTP-5053 above).</p>
        </item>
      </list>
    </section>
  </section>
</chapter>

