20132013 Ericsson AB. All Rights Reserved. The contents of this file are subject to the Erlang Public License, Version 1.1, (the "License"); you may not use this file except in compliance with the License. You should have received a copy of the Erlang Public License along with this software. If not, it can be retrieved online at http://www.erlang.org/. Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. snmpa_mib_data snmpa_mib_data.xml
snmpa_mib_data 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 some of the data need to be "passed on" to the symbolic-store for storage, 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:

Module:new(Storage) -> State Create new (mib-server) data instance Storage = mib_storage() State = term()

Create a new mib-server data instance.

Module:close(State) -> void() Close the mib-storage State = term()

Close the mib-storage.

Module:sync(State) -> void() Synchronize to disc 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} Load a mib into the mib-server 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} Unload mib from the mib-server 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 Find the mib-entry corresponding to the Oid 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 Finds the lexicographically next oid 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 Register the subagent 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 Unregister the subagent 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 Unregister the subagent 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 Retrieve the mib file for an oid() 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 Retrieve all loaded mib files State = term() Reply = [{MibName, Filename}] MibName = atom() Filename = string()

Retrieve all loaded mib-files.

Module:whereis_mib(State, MibName) -> Reply Retrieve the mib file for the mib State = term() MibName = atom() Reply = {ok, Filename} | {error, Reason} Filename = string() Reason = term()

Retrieve the mib file for the mib.

Module:info(State) -> Reply Retrieve misc info for the mib data 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 Perform a backup of the mib-server data 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 Perform a code-change 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.