Hitachi

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


9.4.2 電文組立UOC

機能

業務システムの利用者と、業務システムとの間のパケットをキャプチャしたときにUOCを実行します。パケットをプロトコル電文に組み立てます。

形式

ANSI C、C++の形式

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

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

説明

電文組立UOCは、パケットをキャプチャしたときに、そのパケットで電文が完成しているかどうかを判定します。

入力パケットの組立

システム検証支援はパケット受信ごとに電文組立UOCにパケットが格納されている受信バッファを引き渡します。電文組立UOCでは、受信バッファを基に電文が完成しているかどうかを判定し、電文が完成したかどうかをリターン値で指定します。電文が未完成の場合、前回までのパケットと、今回受信したパケットを連結して通知します。

なお、電文を組立中のコネクションでパケットロストやコネクション断が検知された場合、システム検証支援は組立中の電文を破棄します。

図9‒2 電文組立UOCによるパケットの組み立て

[図データ]

組み立て中の電文の破棄

組立て中のパケットが不要となった場合は、ESPLG_UOC_MSG_DESTRUCTでリターンすると不要な電文を破棄することができます。

パラメタの内容

es_plg_uoc_buildのパラメタ内容

typedef struct es_plg_uoc_build {
  ESULONG         run_mode;        ……………実行形態
  ESULONG         protocol;        ……………プロトコル種別
  unsigned char   msgtype;         ……………電文種別
  char            reserve[7];      ……………予備領域
  ESCOM_IPADDR         src_ip;     ……………送信元IPアドレス
  ESCOM_IPADDR         dst_ip;     ……………送信先IPアドレス
  unsigned short  src_port;        ……………送信元ポート番号
  unsigned short  dst_port;        ……………送信先ポート番号
  char            reserve2[4];     ……………予備領域
  ESCOM_AREA      rcv_telegram;    ……………受信電文情報
  ESULONG         now_data_size;   ……………当該メッセージの有効長
  ESLONG              rtn_detail;  ……………詳細エラーコード
  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[3];   ………………予備領域
  ESULONG         abort_code;    ………………強制停止理由コード
} ESPLG_UOC_BUILD;

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;

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

run_mode

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

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

protocol

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

ESFRW_PROT_TCP:TCP

msgtype

電文種別を設定します。

ESFRW_MSGTYPE_REQUEST_PRO:要求電文

ESFRW_MSGTYPE_RESPONSE_PRO:応答電文

src_ip

パケットの送信元のIPアドレスを設定します。

dst_ip

パケットの送信先のIPアドレスを設定します。

src_port

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

dst_port

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

rcv_telegram

組立て中の電文のサイズと先頭アドレスを設定します。

now_data_size

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

システム検証支援はデフォルト値として、現時点の電文サイズを設定します。

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に通知済みの領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

注※

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

IPv4の場合

例) 送信元IPが172.165.112.20の場合

[図データ]

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

abort_code

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

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

now_data_size

当該メッセージのサイズを設定します。

rtn_detail

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

ユーザが設定する項目とリターン値の関係を次に示します。

項目

リターン値

ESPLG_UOC_OK_NSEG

ESPLG_UOC_OK_LAST

ESPLG_UOC_MSG_DESTRUCT

ES_UOC_NG

ESPLG_UOC_ABORT

当該メッセージの有効長

×

×

×

詳細エラーコード

×

×

×

×

強制停止理由コード

×

×

×

×

(凡例)

○:指定可能

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

リターン値

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

ESPLG_UOC_OK_NSEG

電文未完成です。後続パケットを待ちます。

ESPLG_UOC_OK_LAST

電文が完成しました。

ESPLG_UOC_MSG_DESTRUCT

組立て中の電文を破棄します。

ESPLG_UOC_NG

パケット判定でエラーが発生しました。組立て中の電文を破棄します。

ES_UOC_ABORT

異常リターン。KFSE64109-Eメッセージを出力し、プロセスダウンします。

上記以外

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

注意事項