---
name: "snmpa_mib_data"
section: "3erl"
platform: "linux"
package: "erlang-manpages"
version: "1:25.2.3+dfsg-1+deb12u4"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/snmpa_mib_data"
---

# snmpa\_mib\_data(3erl)

Behaviour module for the SNMP agent mib-server data module.

## NAME

snmpa\_mib\_data - Behaviour module for the SNMP agent mib-server \
   data module.

## 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 dependent (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.
