snmp_generic

MODULE

snmp_generic

MODULE SUMMARY

Generic Functions for Implementing SNMP Objects in a Database

DESCRIPTION

The module snmp_generic contains generic functions for implementing tables
(and variables) using the SNMP built-in database or Mnesia. These
default functions are used if no instrumentation function is
provided for a managed object in a MIB. Sometimes, it might be
necessary to customize the behaviour of the default functions. For
example, in some situations a trap should be sent if a row is
deleted or modified, or some hardware is to be informed, when
information is changed.

Each function takes the argument NameDb, which is a
tuple {Name, Db}, to identify which database the
functions should use. Name is the symbolic name of the
managed object as defined in the MIB, and Db is either
volatile, persistent, or mnesia. If it is
mnesia, all variables are stored in the Mnesia table
snmp_variables which must be a table with two attributes
(not a Mnesia SNMP table). The SNMP tables are stored in Mnesia
tables with the same names as the SNMP tables. All functions
assume that a Mnesia table exists with the correct name and
attributes. It is the programmer's responsibility to ensure
this. Specifically, if variables are stored in Mnesia, the table
snmp_variables must be created by the programmer. The
record definition for this table is defined in the file
snmp/include/snmp_types.hrl.

If an instrumentation function in the association file for a
variable myVar does not have a name when compiling an
MIB, the compiler generates an entry.

The new function creates the table if it does
not exist, but only if the database is the SNMP internal db.

The delete function does not delete the table
from the database since unloading an MIB does not
necessarily mean that the table should be destroyed.

The is_set_ok function checks that a row which
is to be modified or deleted exists, and that a row which
is to be created does not exist.

The undo function does nothing.

The set function checks if it has enough
information to make the row change its status from
notReady to notInService (when a row has
been been set to createAndWait). If a row is set to
createAndWait, columns without a value are set to
noinit. If Mnesia is used, the set functionality is
handled within a transaction.

If it is possible for a manager to create or delete rows in
the table, there must be a RowStatus column for
is_set_ok, set and undo to work properly.

The function returns according to the specification of an
instrumentation function.