---
name: "snmpa_mib_storage"
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_storage"
---

# snmpa\_mib\_storage(3erl)

Behaviour module for the SNMP agent mib storage.

## NAME

snmpa\_mib\_storage - \
     Behaviour module for the SNMP agent mib storage.

## DESCRIPTION

This module defines the behaviour of the SNMP agent mib storage.

The mib storage is used by the agent to store internal mib- related information. The mib storage module is used by several entities, not just the mib-server.

A *snmpa\_mib\_storage* compliant module must export the following functions:

- \*

  open/5

- \*

  close/1

- \*

  read/2

- \*

  write/2

- \*

  delete/1

- \*

  delete/2

- \*

  match\_object/2

- \*

  match\_delete/2

- \*

  tab2list/1

- \*

  info/1

- \*

  sync/1

- \*

  backup/2

The semantics of them and their exact signatures are explained below.

## CALLBACK FUNCTIONS

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

## EXPORTS

**Module:open(Name, RecordName, Fields, Type, Options) -\> {ok, TabId} \| {error, Reason}**\

Types:

Name = atom()\
 RecordName = atom()\
 Fields = \[atom()\]\
 Type = set \| bag()\
 Options = list()\
 TabId = term()\
 Reason = term()\

Create or open a mib storage table.

Note that the *RecordName* and *Fields* arguments my not be used in all implementations (they are actually only needed for mnesia-based implementations).

Note also that the *Options* argument comes from the *options* config option of the mib-storage config option, and is passed on as is.

**Module:close(TabId) -\> void()**\

Types:

State = term()\

Close the mib-storage table.

**Module:read(TabId, Key) -\> false \| {value, Record}**\

Types:

TabId = term()\
 Key = term()\
 Record = tuple()\

Read a record from the mib-storage table.

**Module:write(TabId, Record) -\> ok \| {error, Reason}**\

Types:

TabId = term()\
 Record = tuple()\
 Reason = term()\

Write a record to the mib-storage table.

**Module:delete(TabId) -\> void()**\

Types:

TabId = term()\

Delete an entire mib-storage table.

**Module:delete(TabId, Key) -\> ok \| {error, Reason}**\

Types:

TabId = term()\
 Key = term()\
 Reason = term()\

Delete a record from the mib-storage table.

**Module:match\_object(TabId, Pattern) -\> Recs \| {error, Reason}**\

Types:

TabId = term()\
 Pattern = match\_pattern()\
 Recs = \[tuple()\]\
 Reason = term()\

Search the mib-storage table for record that match the specified pattern.

**Module:match\_delete(TabId, Pattern) -\> Recs \| {error, Reason}**\

Types:

TabId = term()\
 Pattern = match\_pattern()\
 Recs = \[tuple()\]\
 Reason = term()\

Search the mib-storage table for record that match the specified pattern and then delete them. The records deleted are also returned.

**Module:tab2list(TabId) -\> Recs**\

Types:

TabId = term()\
 Recs = \[tuple()\]\

Return all records in the mib-storage table in the form of a list.

**Module:info(TabId) -\> {ok, Info} \| {error, Reason}**\

Types:

TabId = term()\
 Info = term()\
 Reason = term()\

Retrieve implementation dependent mib-storage table information.

**Module:sync(TabId) -\> void()**\

Types:

TabId = term()\

Synchronize the mib-storage table.

What this means, if anything, is implementation dependent.

**Module:backup(TabId, BackupDir) -\> ok \| {error, Reason}**\

Types:

TabId = term()\
 BackupDir = string()\
 Reason = term()\

Perform a backup of the mib-storage table.

What this means, if anything, is implementation dependent.
