查看源代码 snmpa_mib_data 行为 (snmp v5.18)
SNMP 代理 mib-server 数据模块的行为模块。
此模块定义了 SNMP 代理 mib-server 数据模块的行为。一个符合 snmpa_mib_data
的模块必须导出以下函数
- 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
它们的语义及其确切签名将在下面解释。
请注意,从导入(加载)的 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 中。MeOverride
和 TeOverride
参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。
查找与 Oid
对应的 mib 条目。如果它是一个变量,则 Oid
必须是 <变量的 Oid>.0;如果它是一个表,则 Oid
必须是
创建一个新的 mib-server 数据实例。
查找按字典顺序下一个 oid。
注册处理 mib 树一部分的子代理进程。
同步(如果可能,写入磁盘)mib-server 数据。这取决于 mib_storage
选项,并且只有在 mib-存储选项具有实际磁盘组件(如 dets 或带有文件的 ets)时才有效。
从 mib-server 中卸载 Filename
参数指定的 mib。MeOverride
和 TeOverride
参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。
注销处理 mib 树一部分的子代理,由 oid()
或 pid/0
(PidOrOid
) 指定。
检索 mib 的 mib 文件。
检索给定 oid()
所属的 mib 文件。
检索所有已加载的 mib 文件。
类型
-type filename() :: file:filename().
-type mib_view() :: [mib_view_elem()].
-type mib_view_elem() :: {SubTree :: snmp:oid(), Mask :: [non_neg_integer()], Inclusion :: mib_view_inclusion()}.
-type mib_view_inclusion() :: 1 | 2.
-type mib_view_mask() :: [non_neg_integer()].
回调:回调函数
执行 mib-server 数据的备份。
请注意,是否可以进行备份取决于其实现(也取决于使用的 mib 存储)。
-callback close(State :: term()) -> ok.
关闭 mib-存储。
-callback code_change(Direction :: up | down, Vsn :: term(), Extra :: term(), State :: term()) -> NewState :: term().
执行代码更改(升级或降级)。
有关 Vsn
和 Extra
参数的更多信息,请参阅 gen_server
。
将 mib-server 数据转储到 stdio
(Destination = io
) 或指定的文件。
检索 mib 数据的各种信息。
这是一个实用函数,用于以简单的方式检查(例如)内存使用情况。
-callback load_mib(State :: term(), FileName :: filename(), MeOverride :: boolean(), TeOverride :: boolean()) -> {ok, NewState :: term()} | {error, Reason :: already_loaded | term()}.
将 Filename
参数指定的 mib 加载到 mib-server 中。MeOverride
和 TeOverride
参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。
-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
必须是
-callback new(MibStorage :: snmpa:mib_storage()) -> State :: term().
创建一个新的 mib-server 数据实例。
-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。
-callback register_subagent(State :: term(), Oid :: snmp:oid(), Pid :: pid()) -> {ok, NewState :: term()} | {error, Reason :: term()}.
注册处理 mib 树一部分的子代理进程。
-callback sync(State :: term()) -> ok.
同步(如果可能,写入磁盘)mib-server 数据。这取决于 mib_storage
选项,并且只有在 mib-存储选项具有实际磁盘组件(如 dets 或带有文件的 ets)时才有效。
-callback unload_mib(State :: term(), FileName :: filename(), MeOverride :: boolean(), TeOverride :: boolean()) -> {ok, NewState :: term()} | {error, Reason :: not_loaded | term()}.
从 mib-server 中卸载 Filename
参数指定的 mib。MeOverride
和 TeOverride
参数指定 mib-server 应如何处理重复的 mib 和陷阱条目。
-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
。
-callback whereis_mib(State :: term(), MibName :: atom()) -> {ok, Filename :: filename()} | {error, Reason :: term()}.
检索 mib 的 mib 文件。
-callback which_mib(State :: term(), Oid :: snmp:oid()) -> {ok, Mib :: string()} | {error, Reason :: term()}.
检索给定 oid()
所属的 mib 文件。
检索所有已加载的 mib 文件。