Behaviour module for the SNMP agent mib-server data module.
This module defines the behaviour of the SNMP agent mib-server data module. A
snmpa_mib_data compliant module must export the following functions:
- new/1
- close/1
- sync/1
- load_mib/4
- unload_mib/4
- lookup/2
- next/3
- register_subagent/3
- unregister_subagent/2
- which_mib/2
- which_mibs/1
- whereis_mib/2
- dump/2
- info/1
- backup/2
- code_change/4
The semantics of them and their exact signatures are explained below.
Note that the data extracted from the imported (loaded) mibs are stored partly
by the mib-server and partly by the symbolic-store server. See the default
mib-server data module, snmpa_mib_data_tttn for details.
Summary
Callbacks
Perform a backup of the mib-server data.
Close the mib-storage.
Perform a code-change (upgrade or downgrade).
Dump the mib-server data to stdio (Destination = io) or the specified file.
Retrieve misc info for the mib data.
Load the mib specified by the Filename argument into the mib-server. The
MeOverride and TeOverride arguments specifies how the mib-server shall
handle duplicate mib- and trap- entries.
Find the mib-entry corresponding to the Oid. If it is a variable, the Oid
must be <Oid for var>.0 and if it is a table, Oid must be
Create a new mib-server data instance.
Finds the lexicographically next oid.
Register the subagent, process, handling part of the mib-tree.
Synchronize (write to disc, if possible) the mib-server data. This depends on
the mib_storage option, and will only have an effect if the mib-storage option
has an actual disc component (such as dets, or ets with a file).
Unload the mib specified by the Filename argument from the mib-server. The
MeOverride and TeOverride arguments specifies how the mib-server shall
handle duplicate mib- and trap- entries.
Unregister the subagent, handling part of the mib-tree, as specified by the
oid() or pid/0 (PidOrOid).
Retrieve the mib file for the mib.
Retrieve the mib-file to which an given oid() belongs.
Retrieve all loaded mib-files.
Types
-type filename() :: file:filename().
-type mib_view() :: [mib_view_elem()].
-type mib_view_elem() :: {SubTree :: snmp:oid(), Mask :: [non_neg_integer()], Inclusion :: mib_view_inclusion()}.
-type mib_view_inclusion() :: 1 | 2.
-type mib_view_mask() :: [non_neg_integer()].
Callbacks
Types
Result = ok | {error, Reason :: term()}
Perform a backup of the mib-server data.
Note that its implementation dependent (and also dependent on mib-storage is used) if a backup is possible.
Close the mib-storage.
Perform a code-change (upgrade or downgrade).
See gen_server for more info regarding the Vsn and Extra arguments.
Dump the mib-server data to stdio (Destination = io) or the specified file.
Retrieve misc info for the mib data.
This is a utility function used to inspect, for instance, memory usage, in a simple way.
Types
State = term()
FileName = filename()
MeOverride = TeOverride = boolean()
Result = {ok, NewState :: term()} | {error, Reason :: already_loaded | term()}
Load the mib specified by the Filename argument into the mib-server. The
MeOverride and TeOverride arguments specifies how the mib-server shall
handle duplicate mib- and trap- entries.
Types
State = term()
Oid = snmp:oid()
Result = {false, Reason :: term()} |
{variable, MibEntry :: snmpa:me()} |
{table_column, MibEntry :: snmpa:me(), TableEntryOid :: snmp:oid()} |
{subagent, SubAgentPid :: pid(), SAOid :: snmp:oid()}
Find the mib-entry corresponding to the Oid. If it is a variable, the Oid
must be <Oid for var>.0 and if it is a table, Oid must be
Types
State = term()
Create a new mib-server data instance.
Types
State = term()
Oid = snmp:oid()
MibView = mib_view()
Result = endOfView | false |
{subagent, SubAgentPid :: pid(), SAOid :: snmp:oid()} |
{variable, MibEntry :: snmpa:me(), VarOid :: snmp:oid()} |
{table, TableOid :: snmp:oid(), TableRestOid :: snmp:oid(), MibEntry :: snmpa:me()}
Finds the lexicographically next oid.
Types
State = term()
Oid = snmp:oid()
Pid = pid()
Result = {ok, NewState :: term()} | {error, Reason :: term()}
Register the subagent, process, handling part of the mib-tree.
Synchronize (write to disc, if possible) the mib-server data. This depends on
the mib_storage option, and will only have an effect if the mib-storage option
has an actual disc component (such as dets, or ets with a file).
Types
State = term()
FileName = filename()
MeOverride = TeOverride = boolean()
Result = {ok, NewState :: term()} | {error, Reason :: not_loaded | term()}
Unload the mib specified by the Filename argument from the mib-server. The
MeOverride and TeOverride arguments specifies how the mib-server shall
handle duplicate mib- and trap- entries.
Types
State = term()
PidOrOid = pid() | snmp:oid()
Result = {ok, NewState :: term()} | {ok, NewState :: term(), Pid :: pid()} | {error, Reason :: term()}
Unregister the subagent, handling part of the mib-tree, as specified by the
oid() or pid/0 (PidOrOid).
When unregister the subagent using an oid(), the pid/0 of the process
handling the sub-tree is also returned.
Types
State = term()
MibName = atom()
Result = {ok, Filename :: filename()} | {error, Reason :: term()}
Retrieve the mib file for the mib.
Retrieve the mib-file to which an given oid() belongs.
Retrieve all loaded mib-files.