25 SNMP Release Notes
25.1 SNMP Development Toolkit v2.2.1
25.1.1 Reported Fixed Bugs and Malfunctions
- The example mib EX1-MIB in the user's guide compiles.
Own Id: OTP-2576
Aux Id: seq933
- The supervisor of the mibs has a correct shutdown time (infinity instead of 2 secs).
Own Id: OTP-2606
Aux Id: seq947
- The automatic conversion of trap_dest.conf to the new notify.conf, target_addres.conf, and target_params.conf now gives an error message if the conversion fails.
Own Id: OTP-2647
- The UDP port used by the agent is now opened with the flag
reuseaddr
set to true.
Own Id: OTP-2655
authenticationFailure
are now sent correctly.
Own Id: OTP-2690
- A
get
operation that refers to anot-accessible
object now returns the correct error code.
Own Id: OTP-2691
- The counter
snmpInTotalsetVars
is now updated properly.
Own Id: OTP-2694
25.2 SNMP Development Toolkit v2.2
25.2.1 Improvements and new features
- The agent and
snmp_mgr
support Inform-Requests when sending SNMPv2 notifications, as defined in rfc2273. This means that it is now possible to send a notification and have the agent wait for an acknowledgement from the manager. See the User's guide, "Notification Sending" for a description of the mechanism.
- The agent uses the SNMP-NOTIFICATION-MIB and SNMP-TARGET-MIB from rfc2273 to select notification destinations, instead of the
intTrapDestTable
from OTP-SNMPEA-MIB.
- There are a few new functions in the module
snmp
for trap/notification sending.
- Two new modules are added;
snmp_notification_mib
andsnmp_target_mib
. These modules contain functions for initialising the agent data from configuration files.
- There is a new function
reconfigure/1
insnmp_standard_mib
, which reconfigures the persistent objects from the configuration files.
- The following mibs are added to the distribution for completeness:
- SNMPv2-TM
- SNMPv2-SMI
- SNMPv2-CONF
- SNMP-FRAMEWORK-MIB
- RFC1155-SMI
- RFC-1212
- RFC-1215
25.2.2 Reported Fixed Bugs and Malfunctions
- The
snmp_mgr
no longer crashes if an unknown trap is received.
Own Id: OTP-2137, OTP-2464
- The supervisor of the mibs has a correct shutdown time (infinity instead of 2 secs).
Own Id: OTP-2310
Aux Id: seq767, HA79462
- The Mib Compiler now handles the construct MODULE OtherModule in the MODULE-COMPLIANCE macro.
Own Id: OTP-2465
- The Mib Compiler now handles the construct INTEGER (0..1 | 3..4).
Own Id: OTP-2466
- The Mib Compiler now handles IMPLIED OIDs
Own Id: OTP-2467
- The Mib Compiler now handles REFERENCE in the OBJECT-IDENTITY macro.
Own Id: OTP-2468
25.2.3 Incompatibilities with v2.1.1
- The table
intTrapDestTable
in OTP-SNMPEA-MIB is not used anymore.
- There are three new configuration files;
target_addr.conf
,target_params.conf
andnotify.conf
. The old filetrap_dest.conf
is not used. However, if atrap_dest.conf
file exists, the agent automatically converts that file to the new files.
- The function
snmp:send_trap
no longer takes aCommunityString
as a parameter. This parameter is now optional, and refers to thesnmpNotifyName
insnmpNotifyTable
. Old code that uses the old function does not have to be changed.
- There are two new messages a net if process must handle. These are messages to handle Inform-Requests.
25.2.4 Future Improvements
More MIBs from the so-called SNMPv3 effort will be implemented, as these mibs become standards (although these MIBs don't require SNMPv3). This means that more tables from OTP-SNMPEA-MIB become obsolete, e.g.
intCommunityTable
,intAddressTable
andintViewTable
.SNMPv3 itself will be implemented.
25.3 SNMP Development Toolkit v2.1.1
25.3.1 Reported Fixed Bugs and Malfunctions
- The
snmp_note_store
server sometimes didn't invoked its gc, which meant that its internal data structure could grow very large.
Own Id: OTP-1946, OTP-2004
Aux Id: seq451
- If a (possibly user-defined) net if process crahses and restarts, the agent could crash as well.
Own Id: OTP-2017
- Failover/takeover of the SNMP agent administering the MIB did not work, since the old implementation tried to delete a Mnesia table on a node which was not up and running (which always is the case at failover). Now the SNMP related Mnesia table is defined to have the
local_content
property.
Own Id: OTP-2146
Aux Id: seq1
25.4 SNMP Development Toolkit v2.1.1
25.4.1 Reported Fixed Bugs and Malfunctions
- The
snmp_note_store
server sometimes didn't invoked its gc, which meant that its internal data structure could grow very large.
Own Id: OTP-1946, OTP-2004
Aux Id: seq451
- If a (possibly user-defined) net if process crahses and restarts, the agent could crash as well.
Own Id: OTP-2017
- Failover/takeover of the SNMP agent administering the MIB did not work, since the old implementation tried to delete a Mnesia table on a node which was not up and running (which always is the case at failover). Now the SNMP related Mnesia table is defined to have the
local_content
property.
Own Id: OTP-2146
Aux Id: seq1
25.5 SNMP Development Toolkit v2.1
25.5.1 Improvements and new features
- The agent does not use the application
sockets
anymore. Thus,sockets
does not have to be started before the agent (or manager).
- There are several new functions in the module
snmp
to check the syntax of and convert to/fromDateAndTime
structures.
25.5.2 Reported Fixed Bugs and Malfunctions
- If an
is_set_ok
orundo
instrumentation function crashed because it called an undefined function, the agent treated this as if the instrumentation function succeeded.
Own Id: OTP-1762
Aux Id: seq369
- The function
snmp:date_and_time/0
returns a correctDateAndTime
structure. Previously, the sign in position 9 was wrong.
Own Id: OTP-1838
- Traps larger than the maximum packet size are now handled.
Own Id: OTP-1850
Aux Id: seq416
- The
snmp_note_store
server never invoked its gc, which meant that its intenal data structure could grow very large.
Own Id: OTP-1946
Aux Id: seq451
- Some objects in traps in SNMP v1 MIBs did not get the correct type in the compiled mib. This could lead to that the trap could not be sent.
Own Id: OTP-2063
25.6 SNMP Development Toolkit v2.0
25.6.1 Improvements and new features
- The agent is bilingual, and understands SNMPv1 and SNMPv2c.
- The agent is made multi-threaded (configurable option).
- The agent can be configured to log requests to an Audit Trail Log.
- The application is restructured to be able to restart large parts of the agent in case of an error.
- The NetIf process API is simpler than in previous versions.
- New functions for handling AGENT-CAPABILITES statements in the module
snmp
.
- A few new MIBs are added to the distribution. These are SNMPv2-MIB and SNMPv2-TC. The INTERNAL-MIB has changed its name to OTP-SNMPEA-MIB.
- Added the
coldStart
andwarmStart
traps to the STANDARD-MIB. None of them are sent by default though. The STANDARD-MIB and SNMPv2-MIB defines the same objects and notifications, except for the object specifc to v1 and v2 respectively.
snmp:enum_to_int/2
andsnmp:int_to_enum/2
works for types as well as for objects.
- RowStatus no longer needs to be the last column for
snmp_generic
to work. This allows a table to be extended at a later stage.
- A table doesn't need to have all columns defined. Example:
snmp_generic
can handle a table with columns 1,2,3,5.
snmp_generic
works even though some columns in the middle of a table are not-accessible.
- Default values for strings may use "" syntax.
- The Mib Compiler understands both SNMPv1 and SNMPv2 MIBs and implements cross-version-IMPORTs.
- The Mib Compiler produces several error messages at the same time.
- The Mibs Compiler is more strict.
snmp_mgr
can send and receive SNMPv2 messages.
snmp:config/0
generates a sys.config file.
- Added a record definition for the Mnesia table
snmp_variables
tosnmp_types.hrl
.
- The master agent may now be a distributed Erlang applications, and it reloads loaded mib during takeover.
25.6.2 Reported Fixed Bugs and Malfunctions
- The Mib Compiler and
snmp_generic
handle objects with STATUS deprecated and obsolete.
Own Id: OTP-1372
Aux Id: HA47707
- Agent restarts after crashes keeps information about loaded mibs. Previously, the agent restarted, but all loaded mibs were unloaded.
Own Id: OTP-1423
Aux Id: AD84262
- The generated
.hrl
files now starts with an-ifndef
which makes it possible to include the same file several times.
Own Id: OTP-1425
- The agent could under som circumstances crash when a table instrumentation function crashed.
Own Id: OTP-1738
Aux Id: seq351
25.6.3 Incompatibilities with v1.3.1
- The MIBs must be recompiled.
- The MIB compiler is more strict. Now it also checks that macros are imported correctly.
- The NetIf API is entirely re-written. It is now easier to implement a NetIf process.
- The Proxy handling in
snmp_net_if
is removed.
- The INTERNAL-MIB has changed its name to OTP-SNMPEA-MIB.
25.6.4 Known bugs and problems
The User's Guide now describes where the Agent and MIB compiler don't implement the standard.
25.7 SNMP Development Toolkit v1.3.1
25.7.1 Reported Fixed Bugs and Malfunctions
- When trying to create a row that already exists in snmp_local_db, the new row is inserted instead of the old row.
25.8 SNMP Development Toolkit v1.3
25.8.1 Improvements and new features
- The MIB compiler has a new "include_lib"-like option called
il
.
Own Id: OTP-1041
- The
RFC1213-MIB
,STANDARD-MIB
andINTERNAL-MIB
are delivered in compiled form (.bin
) as well as source form. The compiled mibs are located insnmp-1.2.3/priv/mibs
directory. Use the optionil
to the mib compiler to find these files.
Own Id: OTP-1272
- A new module
snmp_index
for building snmp indexes like the one used by Mnesia is added.
Own Id: OTP-1307
snmp:mib_to_hrl
generates OBJECT IDENTIFIERs for all internal nodes in a MIB module, not just for the leaves in the tree.
Own Id: OTP-1319
25.8.2 Reported Fixed Bugs and Malfunctions
- The agent now treats the SNMPv2 error value
wrongValue
correctly.
Own Id: OTP-1162
- It is now possible to load MIBs with short names.
Own Id: OTP-1195
- The MIB-compiler now compiles full-path files.
Own Id: OTP-1217
- The function
snmp:config/0
works for WinNT.
Own Id: OTP-1216
- The agent handles bad index returned from table instrumentation functions.
Own Id: OTP-1222
- The data type
IpAddress
works better.
Own Id: OTP-1234
- The function
snmp:date_and_time/0
now works correctly when called at midnight.
Own Id: OTP-1236
- The documentation of
snmp_generic:table_set_elements/3
is updated to reflect the fact that it is the caller's responsibility to call this function from within a transaction, if Mnesia is used.
Own Id: OTP-1265
- The MIB compiler prints the error message "Unexpected 0" when an INTEGER begins with 0.
Own Id: OTP-1274
- The agent now decodes negative integers correctly.
Own Id: OTP-1298
- Trying to delete a non-existing row implemented with
snmp_generic
now returnsnoError
instead ofinconsistentValue
.
Own Id: OTP-1331
- Default value initialisation now works for Mnesia tables when
snmp_generic:table_set_row/5
is called.
Own Id: OTP-1338
- Trying to set a row implemented with
snmp_generic
when an INDEX column wasread-write
got the agent into an infinite loop.
Own Id: OTP-1342
mib_to_hrl
doesn't generate enum definitions for importedOBJECT-TYPE
s.
Own Id: OTP-1355
- Traps are not only sent to one manager if several managers are specified as trap destinations, but to all of them.
Own Id: OTP-1366
25.9 SNMP Development Toolkit v1.2.1
25.9.1 Improvements and new features
- The file
STANDARD-MIB.hrl
is now included in the directorysnmp/include
. It may de included in source code with-include_lib("snmp/include/STANDARD-MIB.hrl").
Own Id: OTP-1063
Aux Id: HA34986, HA36413
25.9.2 Reported Fixed Bugs and Malfunctions
- Calls to the agent had too short timeout. This was most obvious in calls to
snmp:load_mibs/2
.
Own Id: OTP-1078, OTP-1096
Aux Id: HA36413
snmp:config/0
tried to validate correct IP addresses, resulting in an error when DNS was not used.
Own Id: OTP-1094
snmp:mib_to_hrl/1
generated entries for imported OBJECT IDENTIFIERs and imported DEFVALs, which could result in macro conflict when.hrl
files from more than one MIB was included.
Own Id: OTP-1126
- When a row was
createAndWait
ed, it wasn't possible to set a row toactive
in the same request as the rest of the mandatory columns were set.
Own Id: OTP-1128
snmp:int_to_enum/2
crashed when called with an Oid without any enums.
Own Id: OTP-1129
- The agent could crash if a
RowIndex
in a set-request was of bad type.
Own Id: OTP-1131
25.10 SNMP Development Toolkit v1.2
25.10.1 Improvements and new features
- A new set-phase
undo
is added. When the agent has calledis_set_ok
for an object, it will always call eitherset
orundo
at a later stage. This may be used to reserve resources in theis_set_ok
function.
- More documentation on Mnesia.
- Added conversion functions from OBJECT IDENTIFIER to symbolic name, and vice versa. These are called
snmp:oid_to_name/1
andsnmp:name_to_oid/1
.
- Added conversion functions from enumerated integers to symbolic value, and vice versa. These are called
snmp:int_to_enum/2
andsnmp:enum_to_int/2
.
- Added an extra parameter from the (configurable) Net If process for each SNMP packet. This value can be retrieved by
snmp:current_net_if_data/0
from an instrumentation function.
- Added a function
snmp:date_and_time/0
, which returns a DateAndTime value, according to RFC1903.
- A new function
snmp:str_apply/1
may be used to pass options to the Mib Compiler from the unix command line.
- There is now no need to have a RowStatus column for a read-only table that is implemented with
snmp_generic
.
- A Mnesia table that implements an SNMP table with
snmp_generic
may have more columns than the SNMP table.
- Added a function
snmp:get/2
to retrieve values from the agent from programs.
- The
snmp:config/0
tool handles host names as strings better.
- The Mib Compiler generates better warnings.
- The agent handles atoms as return values from enumerated integers better.
25.10.2 Reported Fixed Bugs and Malfunctions
- DEFVALs for strings are handled correctly by the Mib Compiler.
- The SNMPv2 error code
notWritable
is translated to the SNMPv1 codenoSuchName
.
- The instrumentation function
delete
is now called correctly when unloading a Mib.
- An
is_set_ok
function is added forsnmp_generic:variable_func
.
snmp:mib_to_hrl
doesn't generate output for imported MIB objects.
- The SNMP type
IpAddress
is now BER encoded correctly.
- The agent could hang when last object in the MIB was
not-accessible
, and a GET-NEXT request was received.
- The Mib Compiler doesn't crash when the MIB file doesn't exist.
- The Mib Compiler doesn't crash when an instrumentation function is specified for a column object in a table.
25.10.3 Incompatibilities with v1.1
- The MIBs must be recompiled.
- The contents of the output file from
snmp:mib_to_hrl
has changed. Imported objects are not included. All MIBs with imported objects must be run throughsnmp:mib_to_hrl
, and included in the Erlang code as well.
- The start functions for the agent has changed. Note that this is invisible when Erlang 4.4 is used.