Hitachi

Hitachi System Information Capture システム分析支援 リアルタイムモニタ 


9.4.3 電文情報設定UOC

機能

電文情報設定UOCは、システム分析支援アダプタの処理に必要な電文情報を指定するUOCです。

形式

ANSI C、C++の形式

#include <esplg_uoc.h>
ESLONG uoc_func(struct es_plg_uoc_info *parm)

「uoc_func」部分には、システム内で一意の名称を指定してください。

説明

電文入力時に呼び出されるUOCです。

電文情報設定UOCでは、次の情報を設定する必要があります。

ペアリングキーの判定

UOCでは、要求電文と応答電文を関連づけるためのペアリングキーを指定する必要があります。

また、要求電文を電文組立UOCで組立後、framework_definition定義の-t reply_watchtimeオペランドに指定した時間経過すると応答待ちタイムアウトとなり、要求電文を破棄します。タイムアウト後に応答電文を受信した場合、応答電文を破棄します。

要求電文種別の判定

UOCでは、要求電文に対して、応答を待ち合わせる必要のある要求電文(同期要求電文)か、待ち合わせる必要がない要求電文(非応答要求電文)かを指定する必要があります。

パラメタの内容

es_plg_uoc_infoのパラメタ内容

typedef struct es_plg_uoc_info {
  ESULONG        run_mode; ………………… 実行形態
  ESULONG        protocol; ………………… プロトコル種別
  unsigned char  msgtype;  ………………… 電文種別
  unsigned char  reqtype;  ………………… 要求電文種別
  char           reserve[2]; ……………… 予備領域
  ESULONG        error_flg;  ……………… エラー情報
  ESCOM_IPADDR   src_ip;     ……………… 送信元IPアドレス
  ESCOM_IPADDR   dst_ip;     ……………… 送信先IPアドレス
  unsigned short src_port; ………………… 送信元ポート番号
  unsigned short dst_port; ………………… 送信先ポート番号
  char           reserve2[4];  …………… 予備領域
  ESCOM_AREA  usr_tel_area;      ………… 電文単位ユーザ領域
  char       usr_tel_area_state; ………… 電文単位ユーザ領域の状態
  char            reserve3[7]; …………… 予備領域
  ESCOM_AREA  usr_con_area;        ……… コネクション単位ユーザ領域
  char       usr_con_area_state;   ……… コネクション単位ユーザ領域の状態
  char            reserve4[7]; …………… 予備領域
  ESCOM_AREA           telegram;     …… 電文情報
  ESPLG_UOC_TELSIZE   telegram_size;   … 電文サイズ
  char           client_id[16];  ………… クライアント識別子
  ESLONG            rtn_detail;  ………… 詳細エラーコード
  char           reserve5[4]; …………… 予備領域
  char           key[64];    ……………… ペアリングキー
  void           *protoinf;  ……………… プロトコル情報(参照できません)
  ESULONG         abort_code;  …………… 強制停止理由コード
  char            reserve6[4]; …………… 予備領域
} ESPLG_UOC_INFO;

es_com_ipaddr(ESCOM_IPADDR)のパラメタ内容

typedef union es_com_ipaddr{
  ESCOM_IPV4 ipv4;             ……………… IPアドレス(IPv4)
  char reserve[16];            ……………… 予備領域
} ESCOM_IPADDR;

es_com_ipv4(ESCOM_IPV4)のパラメタ内容

typedef struct es_com_ipv4 {
  char reserve[12];            ……………… 予備領域
  char ip[4];                  ……………… IPアドレス(IPv4)
} ESCOM_IPV4;

es_com_area(ESCOM_AREA)のパラメタ内容

typedef struct es_com_area {
  ESULONG   size;              ……………… 領域サイズ
  char      reserve[4];        ……………… 予備領域
  char      *data;             ……………… 領域先頭アドレス
} ESCOM_AREA;

ESPLG_UOC_TELSIZEのパラメタ内容

typedef union {
  ESPLG_UOC_HTTPSIZE http_size;   …………HTTPプロトコルのサイズ格納領域
  ESPLG_UOC_TCPSIZE tcp_size;     …………TCPプロトコルのサイズ格納領域
} ESPLG_UOC_TELSIZE;

ESPLG_UOC_HTTPSIZEのパラメタ内容

typedef struct es_plg_uoc_httpsize{
  ESULONG header_size;             …………HTTPヘッダ部サイズ
  ESULONG body_size;               …………HTTPボディ部サイズ
} ESPLG_UOC_HTTPSIZE;

ESPLG_UOC_TCPSIZEのパラメタ内容

typedef struct es_plg_uoc_tcpsize{
  ESULONG size;                    …………電文サイズ
  char reserve[4];
} ESPLG_UOC_TCPSIZE;

システム検証支援基盤が設定するパラメタ項目

run_mode

システム分析支援アダプタの実行形態を設定します。

ESFRW_RUNMODE_CREATE_A:システム分析支援リアルタイムモニタ連携

protocol

プロトコル種別を設定します。

ESFRW_PROT_TCP:TCP

msgtype

電文種別を設定します。

ESFRW_MSGTYPE_REQUEST_PRO:要求電文

ESFRW_MSGTYPE_RESPONSE_PRO:応答電文

reqtype

ユーザが設定する値です。

システム検証支援はデフォルト値 ESFRW_MSGFORM_SYNC_ANSWER(同期応答型)を設定します。

error_flg

システム検証支援が検知したエラー有無、およびエラー内容を設定します。次のどれかとなります。

ESFRW_ERROR_NONE:エラーなし

ESFRW_ERROR_RECV_CON:コネクション切断による受信・不可

ESFRW_ERROR_RECV_LOST:パケットロスト発生

ESFRW_ERROR_BUILD_TIMEOUT:電文組立中の後続パケット待ちタイムアウト

ESFRW_ERROR_RECV_TIMEOUT:応答待ちタイムアウトによる受信不可

設定値がESFRW_ERROR_NONE以外の場合、以下に示すパラメタだけ参照・設定可能です。

  • 参照可能なパラメタ

    run_mode

    protocol

    msgtype

    reqtype

    src_ip

    dst_ip

    src_port

    dst_port

  • 設定可能なパラメタ

    abort_code

上記以外のパラメタは参照・設定しないでください。

src_ip

電文の送信元のIPアドレスを設定します。

dst_ip

電文の送信先のIPアドレスを設定します。

src_port

電文の送信元のポート番号をホストバイトオーダーで設定します。

dst_port

電文の送信先のポート番号をホストバイトオーダーで設定します。

usr_tel_area

電文単位に共有するユーザ領域を設定します。

各メンバには以下の値が設定されています。

  • size

    電文単位ユーザ領域のサイズを設定します。

  • data

    電文単位ユーザ領域の先頭アドレスを設定します。

usr_tel_area_state

電文単位ユーザ領域の状態を設定します。電文単位ユーザ領域の状態は電文単位ユーザ領域の領域サイズが0以外のときに設定します。

  • ESFRW_CONTST_NEW

    新規に割り当てられた領域であることを示します。

  • ESFRW_CONTST_RENEW

    処理済みとなった電文のユーザ領域が再割り当てされて、通知されたことを示します。ユーザ領域内には現在処理している電文とは無関係の情報が設定されている場合があります。必要に応じて、ユーザ領域に残っている必要な情報の退避、および初期化などを実施して使用してください。

  • ESFRW_CONTST_CONTINUE

    当該電文のユーザ領域として、UOCに通知済みの領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

usr_con_area

コネクション単位で共有するユーザ領域を設定します。

各メンバには以下の値が設定されています。

  • size

    コネクション単位ユーザ領域のサイズを設定します。

  • data

    コネクション単位ユーザ領域の先頭アドレスを設定します。

usr_con_area_state

コネクション単位ユーザ領域の状態を設定します。コネクション単位ユーザ領域の状態はコネクション単位ユーザ領域の領域サイズが0以外のときに設定します。

  • ESFRW_CONTST_NEW

    新規に割り当てられた領域であることを示します。

  • ESFRW_CONTST_RENEW

    切断されたコネクションのユーザ領域が再割り当てされて、通知されたことを示します。ユーザ領域内には現在のコネクションとは無関係の情報が設定されている場合があります。必要に応じて、ユーザ領域に残っている必要な情報の退避、および初期化などを実施して使用してください。

  • ESFRW_CONTST_CONTINUE

    当該コネクションのユーザ領域として、UOCに通知済みの領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

telegram

入力電文に関する情報を設定します。

各メンバには以下の値が設定されています。

  • size

    入力電文のサイズを設定します。

  • data

    入力電文の先頭アドレスを設定します。

telegram_size

プロトコル種別ごとの入力電文のヘッダ領域を設定します。

client_id

コネクションごとに一意となる値を設定します。

key

ユーザが設定する値です。

デフォルト値として、コネクションごとに一意となる値を設定します。このデフォルト値を使用した場合、同一コネクションの要求電文と応答電文がペアリングされます。

注※

IPアドレスは、次に示す形式で設定します。

IPv4の場合

例) 送信元IPが172.165.112.20の場合

[図データ]

ユーザが設定するパラメタ項目

reqtype

要求電文の種別を指定できます。指定できる電文種別は次のとおりです。

  • ESFRW_MSGFORM_SYNC_ANSWER:同期応答型

  • ESFRW_MSGFORM_NOANSWER:非応答型

デフォルトでは ESFRW_MSGFORM_SYNC_ANSWERを指定しています。

次の条件を満たす場合に設定してください。

  • 要求電文

条件を満たさない場合、設定する必要はありません。

client_id

設定しないでください。

rtn_detail

詳細コードを-2147483648 〜 2147483647の範囲で設定できます。このコードはUOCがES_UOC_NGをリターンしたときにシステム検証支援に返されます。システム検証支援は詳細エラーコードをメッセージログファイルに出力します。

key

要求電文と応答電文について、システム内で一意となる同じキーを指定してください。

次の条件のどれかに該当する場合、このキーを設定してください。

  • 要求電文と応答電文が異なるコネクション

  • 複数のクライアントがコネクションを共用してサーバと送受信する

条件を満たさない場合、設定する必要はありません。

abort_code

システム検証支援を強制停止する理由を示すコードを0 ~ 4294967295の範囲で設定できます。

このコードはUOCがESPLG_UOC_ABORTをリターンしたときのみ有効です。システム検証支援は強制停止理由コードをKFSE64109-Eメッセージに出力します。

ユーザが設定する項目は、電文のプロトコルとリターン値によって異なります。

ユーザが設定する項目と、電文のプロトコルとリターン値の関係を次に示します。

項目

TCPのリターン値

ES_UOC_OK

ESPLG_UOC_MSG_DESTRUCT

ES_UOC_NG

ESPLG_UOC_ABORT

要求電文種別

×

×

×

クライアント識別子

×

×

×

詳細エラーコード

×

×

×

ペアリングキー

×

×

×

強制停止理由コード

×

×

×

(凡例)

○:指定可能

×:指定不可(指定値は無視します)

注※

パケットの電文種別がESFRW_MSGTYPE_REQUEST_PROの場合に有効となります。

リターン値

次のコードでリターン値を設定してください。

ESPLG_UOC_OK

正常に電文情報を設定しました。

ESPLG_UOC_MSG_DESTRUCT

電文を破棄します。

ESPLG_UOC_ABORT

電文を強制停止します。

ESPLG_UOC_NG

電文情報設定時にでエラーが発生しました。電文を破棄します。

上記以外

指定リターン値以外でリターンした場合、電文を破棄します。

注意事項