監査エミッター インターフェイスの概要 (非推奨)

注: 監査マネージャーは非推奨です。下位互換性のみを目的として提供されています。代わりに syslog イベントを使用することをお奨めします。詳細については、「エンタープライズ サーバーの監査」を参照してください。

監査マネージャーで使用するように構成された各エミッターは、既知のものか動的にロードされるものかに関係なく、本セクションで説明するインターフェイスに準拠します。

動的にロードされるエミッターは、mfaudit.emitter 構成ファイル エントリで指定されたプログラム名を使用して監査マネージャーによってロードされます (「mfaudit.emitter.emitter-name」を参照)。

ロードされると、ロードされたプログラムの GET_AUDIT_EMITTER_FUNCS エントリ ポイントが呼び出され、関数ポインター テーブルのアドレスが取得されます (「AUDIT_EMITTER_FUNCS の構造と Typedef」を参照)。このテーブルには、エミッターの初期化、エミッターの初期化解除、監査イベントの出力、およびエミッターのプロパティ変更の通知の処理を行う関数セットのポインターが含まれています。次の例は、エミッターのメイン エントリ ポイントが、通常、AUDIT_EMITTER_FUNCS 構造体を返すためにどのようにコーディングされるかを示しています。

....
#include "mfaudit.h"
....
static int audit_emitter_deinit(cobuns32_t flags,
                                void       *emitter_data);

static int audit_emitter_init(cobuns32_t          flags,
                              const cobuns8_t     *emitter_name,
                              AUDIT_EMITTER_EVENT *audit_event,
                              void                **emitter_data);

static void audit_emitter_notify(cobuns32_t notif_type,
                                 void       *notif_buf,
                                 void       *emitter_data);

static int audit_emitter_output(cobuns32_t          flags,
                                AUDIT_EMITTER_EVENT *audit_event,
                                Void                *emitter_data);

static AUDIT_EMITTER_FUNCS audit_emitter_funcs = 
{
    0,                         /* Version of structure format      */
    0,                         /* Reserved for future use          */
    audit_emitter_init,        /* Function to initialise the       */
                               /* emitter                          */
    audit_emitter_deinit,      /* Function to deinitialise the     */
                               /* emitter                          */
    audit_emitter_output,      /* Function to output a trace event */
    audit_emitter_notify,      /* Function to handle notifications */
                               /* of emitter config changes        */
};
....

AUDIT_EMITTER_FUNCS *
GET_AUDIT_EMITTER_FUNCS()
{
    return &audit_emitter_funcs;
}
....

エミッターの初期化 (fn_init AUDIT_EMITTER_FUNCS 関数の呼び出し) は、出力する必要がある最初の監査イベントの直前まで監査マネージャーによって遅延されます。エミッターの初期化中に、エミッターは通常、CBL_AUDIT_EMITTER_PROPERTY_GET API を呼び出して、既知の各プロパティに関連付けられた値を取得します。

エミッターの初期化解除 (fn_deinit AUDIT_EMITTER_FUNCS 関数の呼び出し) は、監査マネージャーの初期化解除中に実行されます。エミッターの初期化解除中に、エミッターは以前の呼び出し時に取得したすべてのリソースを解放します。

監査イベントの出力 (fn_output AUDIT_EMITTER_FUNCS 関数の呼び出し) は、コンポーネントが CBL_AUDIT_EVENT API を呼び出すと実行されます (「CBL_AUDIT_EVENT (非推奨)」を参照)。

エミッターは、初期化後に発生する各構成変更 (プロパティ値の変更など) の通知を受けます (fn_notify AUDIT_EMITTER_FUNCS 関数の呼び出し)。