檢視原始碼 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 和 trap 條目。
尋找與 Oid
對應的 mib 條目。如果它是變數,則 Oid
必須是 <Oid for var>.0,如果它是表格,則 Oid
必須是
建立新的 mib-server 資料執行個體。
尋找依字典順序下一個 oid。
註冊子代理程式、處理 mib 樹部分的程序。
同步(如果可能,寫入磁碟)mib-server 資料。這取決於 mib_storage
選項,並且只有在 mib 儲存選項具有實際磁碟元件(例如 dets 或具有檔案的 ets)時才會生效。
從 mib-server 解載 Filename
引數指定的 mib。MeOverride
和 TeOverride
引數指定 mib-server 應如何處理重複的 mib 和 trap 條目。
取消註冊處理 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 和 trap 條目。
-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 for var>.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 和 trap 條目。
-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 檔案。