この節では、SAC からポートモニターに送るメッセージ (SAC メッセージ) と、ポートモニターから SAC に送るメッセージ (ポートモニターメッセージ) について説明します。メッセージは、FIFO を通して C の構造体形式で送信されます。例 F–2 を参照してください。
SAC から送られるメッセージの形式は、構造体 sacmsg で定義されています。
struct sacmsg { int sc_size; /* オプションデータ部分のサイズ */ char sc_type; /* メッセージのタイプ */ };
SAC からポートモニターに送られるメッセージには 4 つのタイプがあります。メッセージがどのタイプなのかは、sacmsg 構造体の sc_type フィールドに次のどれかの値を設定して示します。
SC_STATUS ステータス要求
SC_ENABLE 使用可能メッセージ
SC_DISABLE 使用不可メッセージ
ポートモニターの _pmtab ファイルを読む必要があることを示す SC_READDB メッセージ
sc_size はメッセージのオプションデータ部分のサイズを示します。メッセージクラス を参照してください。Solaris 環境では常に sc_size を 0 に設定する必要があります。
ポートモニターは、sac からのメッセージには必ず応答しなければなりません。
ポートモニターから sac に送られるメッセージの形式は、次の構造体 pmmsg で定義されています。
struct pmmsg { char pm_type; /* メッセージのタイプ */ unchar pm_state; /* ポートモニターの現在の状態 */ char pm_maxclass; /* このポートモニターが解釈できる 最大メッセージクラス */ char pm_tag[PMTAGSIZE + 1]; /* ポートモニターのタグ */ int pm_size; /* オプションデータ部分のサイズ */ };
ポートモニターから SAC に送られるメッセージには 2 つのタイプがあります。 メッセージがどのタイプなのかは、pmmsg 構造体の pm_type フィールドに次のどちらかの値を設定して示します。
PM_STATUS 状態情報
PM_UNKNOWN 否定応答
どちらのタイプのメッセージの場合も、pm_tag フィールドにはポートモニターのタグが、pm_state フィールドにはポートモニターの現在の状態が設定されます。pm_state フィールドに設定できる状態は次の 4 つです。
PM_STARTING 起動中
PM_ENABLED 使用可能
PM_DISABLED 使用不可
PM_STOPPING 停止中
現在の状態は、sac からの最後のメッセージによる状態変更を反映しています。
通常の応答メッセージは状態メッセージです。否定応答メッセージを返すのは、sac から受信したメッセージが理解できなかったときだけです。
pm_size はメッセージのオプションデータ部分のサイズを示します。pm_maxclass はメッセージクラスを指定するのに使用します。この 2 つのフィールドについては、メッセージクラス の説明を参照してください。Solaris 環境では、常に pm_maxclass を 1 へ、sc_size を 0 へ設定してください。
ポートモニターから先にメッセージを送ることはありません。ポートモニターは、受信したメッセージに応答するだけです。