查看源代码 snmpa_mib_data 行为 (snmp v5.18)

SNMP 代理 mib-server 数据模块的行为模块。

此模块定义了 SNMP 代理 mib-server 数据模块的行为。一个符合 snmpa_mib_data 的模块必须导出以下函数

它们的语义及其确切签名将在下面解释。

请注意,从导入(加载)的 mib 中提取的数据一部分存储在 mib-server 中,一部分存储在 symbolic-store server 中。有关详细信息,请参阅默认的 mib-server 数据模块 snmpa_mib_data_tttn

摘要

回调:回调函数

执行 mib-server 数据的备份。

关闭 mib-存储。

执行代码更改(升级或降级)。

将 mib-server 数据转储到 stdio (Destination = io) 或指定的文件。

检索 mib 数据的各种信息。

Filename 参数指定的 mib 加载到 mib-server 中。MeOverrideTeOverride 参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。

查找与 Oid 对应的 mib 条目。如果它是一个变量,则 Oid 必须是 <变量的 Oid>.0;如果它是一个表,则 Oid 必须是

创建一个新的 mib-server 数据实例。

查找按字典顺序下一个 oid。

注册处理 mib 树一部分的子代理进程。

同步(如果可能,写入磁盘)mib-server 数据。这取决于 mib_storage 选项,并且只有在 mib-存储选项具有实际磁盘组件(如 dets 或带有文件的 ets)时才有效。

从 mib-server 中卸载 Filename 参数指定的 mib。MeOverrideTeOverride 参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。

注销处理 mib 树一部分的子代理,由 oid()pid/0 (PidOrOid) 指定。

检索 mib 的 mib 文件。

检索给定 oid() 所属的 mib 文件。

检索所有已加载的 mib 文件。

类型

链接到此类型

filename()

查看源代码 (未导出) (自 OTP R16B01 起)
-type filename() :: file:filename().
链接到此类型

mib_view()

查看源代码 (自 OTP R16B01 起)
-type mib_view() :: [mib_view_elem()].
链接到此类型

mib_view_elem()

查看源代码 (自 OTP R16B01 起)
-type mib_view_elem() ::
          {SubTree :: snmp:oid(), Mask :: [non_neg_integer()], Inclusion :: mib_view_inclusion()}.
链接到此类型

mib_view_inclusion()

查看源代码 (自 OTP R16B01 起)
-type mib_view_inclusion() :: 1 | 2.
链接到此类型

mib_view_mask()

查看源代码 (自 OTP R16B01 起)
-type mib_view_mask() :: [non_neg_integer()].

回调:回调函数

链接到此回调

backup(State, BackupDir)

查看源代码 (自 OTP R16B01 起)
-callback backup(State :: term(), BackupDir :: string()) -> ok | {error, Reason :: term()}.

执行 mib-server 数据的备份。

请注意,是否可以进行备份取决于其实现(也取决于使用的 mib 存储)。

链接到此回调

close(State)

查看源代码 (自 OTP R16B01 起)
-callback close(State :: term()) -> ok.

关闭 mib-存储。

链接到此回调

code_change(Direction, Vsn, Extra, State)

查看源代码 (自 OTP R16B01 起)
-callback code_change(Direction :: up | down, Vsn :: term(), Extra :: term(), State :: term()) ->
                         NewState :: term().

执行代码更改(升级或降级)。

有关 VsnExtra 参数的更多信息,请参阅 gen_server

链接到此回调

dump(State, Destination)

查看源代码 (自 OTP R16B01 起)
-callback dump(State :: term(), Destination :: io | filename()) -> ok | {error, Reason :: term()}.

将 mib-server 数据转储到 stdio (Destination = io) 或指定的文件。

链接到此回调

info(State)

查看源代码 (自 OTP R16B01 起)
-callback info(State :: term()) -> list().

检索 mib 数据的各种信息。

这是一个实用函数,用于以简单的方式检查(例如)内存使用情况。

链接到此回调

load_mib(State, FileName, MeOverride, TeOverride)

查看源代码 (自 OTP R16B01 起)
-callback load_mib(State :: term(),
                   FileName :: filename(),
                   MeOverride :: boolean(),
                   TeOverride :: boolean()) ->
                      {ok, NewState :: term()} | {error, Reason :: already_loaded | term()}.

Filename 参数指定的 mib 加载到 mib-server 中。MeOverrideTeOverride 参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。

链接到此回调

lookup(State, Oid)

查看源代码 (自 OTP R16B01 起)
-callback lookup(State :: term(), Oid :: snmp:oid()) ->
                    {false, Reason :: term()} |
                    {variable, MibEntry :: snmpa:me()} |
                    {table_column, MibEntry :: snmpa:me(), TableEntryOid :: snmp:oid()} |
                    {subagent, SubAgentPid :: pid(), SAOid :: snmp:oid()}.

查找与 Oid 对应的 mib 条目。如果它是一个变量,则 Oid 必须是 <变量的 Oid>.0;如果它是一个表,则 Oid 必须是

链接到此回调

new(MibStorage)

查看源代码 (自 OTP R16B01 起)
-callback new(MibStorage :: snmpa:mib_storage()) -> State :: term().

创建一个新的 mib-server 数据实例。

链接到此回调

next(State, Oid, MibView)

查看源代码 (自 OTP R16B01 起)
-callback next(State :: term(), Oid :: snmp:oid(), MibView :: mib_view()) ->
                  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()}.

查找按字典顺序下一个 oid。

链接到此回调

register_subagent(State, Oid, Pid)

查看源代码 (自 OTP R16B01 起)
-callback register_subagent(State :: term(), Oid :: snmp:oid(), Pid :: pid()) ->
                               {ok, NewState :: term()} | {error, Reason :: term()}.

注册处理 mib 树一部分的子代理进程。

链接到此回调

sync(State)

查看源代码 (自 OTP R16B01 起)
-callback sync(State :: term()) -> ok.

同步(如果可能,写入磁盘)mib-server 数据。这取决于 mib_storage 选项,并且只有在 mib-存储选项具有实际磁盘组件(如 dets 或带有文件的 ets)时才有效。

链接到此回调

unload_mib(State, FileName, MeOverride, TeOverride)

查看源代码 (自 OTP R16B01 起)
-callback unload_mib(State :: term(),
                     FileName :: filename(),
                     MeOverride :: boolean(),
                     TeOverride :: boolean()) ->
                        {ok, NewState :: term()} | {error, Reason :: not_loaded | term()}.

从 mib-server 中卸载 Filename 参数指定的 mib。MeOverrideTeOverride 参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。

链接到此回调

unregister_subagent(State, PidOrOid)

查看源代码 (自 OTP R16B01 起)
-callback unregister_subagent(State :: term(), PidOrOid :: pid() | snmp:oid()) ->
                                 {ok, NewState :: term()} |
                                 {ok, NewState :: term(), Pid :: pid()} |
                                 {error, Reason :: term()}.

注销处理 mib 树一部分的子代理,由 oid()pid/0 (PidOrOid) 指定。

当使用 oid() 注销子代理时,也会返回处理子树的进程的 pid/0

链接到此回调

whereis_mib(State, MibName)

查看源代码 (自 OTP R16B01 起)
-callback whereis_mib(State :: term(), MibName :: atom()) ->
                         {ok, Filename :: filename()} | {error, Reason :: term()}.

检索 mib 的 mib 文件。

链接到此回调

which_mib(State, Oid)

查看源代码 (自 OTP R16B01 起)
-callback which_mib(State :: term(), Oid :: snmp:oid()) -> {ok, Mib :: string()} | {error, Reason :: term()}.

检索给定 oid() 所属的 mib 文件。

链接到此回调

which_mibs(State)

查看源代码 (自 OTP R16B01 起)
-callback which_mibs(State :: term()) -> [{MibName :: atom(), Filename :: filename()}].

检索所有已加载的 mib 文件。

回调

链接到此回调

unload_mib(State, Filename)

查看源代码 (可选) (自 OTP R16B01 起)
-callback unload_mib(State, Filename) -> {ok, NewState} | {error, Reason}
                        when
                            State :: term(),
                            Filename :: filename(),
                            NewState :: term(),
                            Reason :: not_loaded | term().