DESCRIPTION

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.

CALLBACK FUNCTIONS

The following functions must be exported from a mib-server data callback module:

EXPORTS

Module:new(Storage) -> State

Types:

Storage = mib_storage()

State = term()

Create a new mib-server data instance.

Module:close(State) -> void()

Types:

State = term()

Close the mib-storage.

Module:sync(State) -> void()

Types:

State = term()

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).

Module:load_mib(State, Filename, MeOverride, TeOverride) -> {ok, NewState} | {error, Reason}

Types:

State = NewState = term()

Filename = filename()

MeOverride = boolean()

TeOverride = boolean()

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.

Module:unload_mib(State, Filename) -> {ok, NewState} | {error, Reason}

Types:

State = NewState = term()

Filename = filename()

Reason = not_loaded | term()

Unload the mib specified by the Filename argument from the mib-server.

Module:lookup(State, Oid) -> Reply

Types:

State = term()

Reply = {variable, ME} | {table_column, ME, TEOid} | {subagent, SAPid, SAOid} | {false, Reason}

Oid = TEOid = SAOid = oid()

SAPid = pid()

ME = me()

Reason = term()

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 <table>.<entry>.<col>.<any>.

Module:next(State, Oid, MibView) -> Reply

Types:

State = term()

Reply = false | endOfTable | {subagent, SAPid, SAOid} | {variable, ME, VarOid} | {table, TableOid, TableRestOid, ME}

Oid = SAOid = VarOid = TableOid = TableRestOid = oid()

SAPid = pid()

ME = me()

Finds the lexicographically next oid.

Module:register_subagent(State, Oid, Pid) -> Reply

Types:

State = NewState = term()

Reply = {ok, NewState} | {error, Reason}

Oid = oid()

Pid = pid()

Reason = term()

Register the subagent, process, handling part of the mib-tree.

Module:unregister_subagent(State, PidOrOid) -> Reply

Types:

State = NewState = term()

Reply = {ok, NewState} | {ok, NewState, Pid} | {error, Reason}

PidOrOid = pid() | oid()

Pid = pid()

Reason = term()

Unregister the subagent, handling part of the mib-tree, as specified by the oid() or pid() (PidOrOid).

When unregister the subagent using an oid(), the pid() of the process handling the sub-tree is also returned.

Module:dump(State, Destination) -> Reply

Types:

State = term()

Reply = ok | {error, Reason}

Destination = io | filename()

Pid = pid()

Reason = term()

Dump the mib-server data to stdio (Destination = io) or the specified file.

Module:which_mib(State, Oid) -> Reply

Types:

State = term()

Reply = {ok, MibFile} | {error, Reason}

Oid = oid()

MibFile = string()

Reason = term()

Retrieve the mib-file to which an given oid() belongs.

Module:which_mibs(State) -> Reply

Types:

State = term()

Reply = [{MibName, Filename}]

MibName = atom()

Filename = string()

Retrieve all loaded mib-files.

Module:whereis_mib(State, MibName) -> Reply

Types:

State = term()

MibName = atom()

Reply = {ok, Filename} | {error, Reason}

Filename = string()

Reason = term()

Retrieve the mib file for the mib.

Module:info(State) -> Reply

Types:

State = term()

Reply = {ok, Filename} | {error, Reason}

Filename = string()

Reason = term()

Retrieve misc info for the mib data.

This is a utility function used to inspect, for instance, memory usage, in a simple way.

Module:backup(State, BackupDir) -> Reply

Types:

State = term()

Reply = ok | {error, Reason}

BackupDir = string()

Reason = term()

Perform a backup of the mib-server data.

Note that its implementation dependant (and also dependent on mib-storage is used) if a backup is possible.

Module:code_change(Destination, Vsn, Extra, State) -> NewState

Types:

Destination = up | down

Vsn = term()

Extra = term()

State = NewState = term()

Perform a code-change (upgrade or downgrade).

See gen_server for more info regarding the Vsn and Extra arguments.