libarms->アプリケーション
汎用のコマンド実行指示を処理する。 コールバックテーブルへの登録は必須ではない。
モジュールID ごとに定義されたコマンド実行を指示する。 処理内容があらかじめ定義されている共通アクションと、 機器固有のコマンドを実行する汎用アクションが用意されている。
モジュールID。ID 自体はSA の機種ごとに定義される。
モジュールID を使用しないaction もある。action の項で個別に記載する。
モジュールの状態を初期状態に戻す。 buff にはモジュールへの付加情報が文字列あるいはバイナリで格納される。 必要があれば実行結果を result_buff に格納する。
id を使用する。指定されたモジュールに対する操作となる。
buff で指定された対象に ICMP ECHO パケットを送信し、それに対する応答となる ICMP ECHO REPLY パケットを待ち、その結果を result_buff に格納する。
id を使用しない。0 が渡されるが無視してよい。
buff で指定された対象にtraceroute 処理を実行し、その結果をresult_buff に格納する。
id を使用しない。0 が渡されるが無視してよい。
汎用アクションを実行する。 buff には機種依存のコマンドが文字列あるいはバイナリで格納される。 この実行結果をresult_buff に格納する。
id を使用する。指定されたモジュールに対する操作となる。
ログやコンフィグなど、デバッグ情報をresult_buff に格納する。
id を使用しない。0 が渡されるが無視してよい。
action ごとの個別パラメータを格納すべきlibarms 内のバッファ。 バッファとしてNULL が渡される可能性はない。 action が ARMS_PUSH_CLEAR_STATUS の場合、 buff はサーバから送られたリクエスト情報(テキストあるいはバイナリ) そのものとなる。 そのとき buff_len で示されるサイズ分のデータが文字列あるいはバイナリ形式で格納され、その直後にNUL 文字が格納される。
action が ARMS_PUSH_PING の場合、buff を arms_ping_arg_t * にキャストする必要がある。
action が ARMS_PUSH_TRACEROUTE の場合、buff を arms_traceroute_arg_t * にキャストする必要がある。
バッファ長。0 が渡されることもある。
ARMS_PUSH_CLEAR_STATUS 以外の場合、バッファ長には0 が渡される可能性はない。 buff に収められているデータのバイト数を表す。
action ごとの処理結果情報を格納すべきlibarms 内のバッファ。 バッファとしてNULL が渡される可能性はない。
action が ARMS_PUSH_PING の場合、result_buff を arms_ping_report_t * にキャストする必要がある。
action が ARMS_PUSH_TRACEROUTE の場合、result_buff を arms_traceroute_info_t * にキャストする必要がある。
呼ばれたときには、ポインタが指す領域に下記の値が入っている。
- ARMS_FRAG_FIRST
- そのモジュールにおいて最初の呼び出し
- ARMS_FRAG_CONTINUE
- そのモジュールにおいて二度目以降の呼び出し
渡されたバッファ長がコールバックの実行結果を収めるには小さく、実行結果の分割取得を利用する場合、ブロックの情報(フラグ) を書き込む必要がある。
ノート
バイト数を返すときに、result_len で指定されたバイト数よりも大きな値あるいはマイナスの値を指定した場合の動作は未定義。
このAPIはVer2.10で追加された。