Hitachi

Hitachi System Information Capture リファレンス 


7.2.3 オペレーション名判定UOC

機能

入力のHTTP電文のオペレーション名を判定することができます。

形式

ANSI C、C++の形式

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

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

説明

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

各実行形態と入力電文によるUOC実行の有無を以下に示します。

-

本番環境

テスト環境

要求電文

応答電文

要求電文

応答電文

電文作成フェーズ(PCAP)

-

-

電文作成フェーズ(キャプチャ)

-

-

電文実行モード

×

×

×

×

(凡例)

○:UOCが実行される

×:UOCは実行されない

パラメタの内容

ESPLG_UOC_OPERATIONのパラメタ内容

typedef struct es_plg_uoc_operation {
  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     ………… 電文情報
  ESPLG_UOC_TELSIZE  rcv_telegram_size;………… 電文サイズ
  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];     ……………… 予備領域
  char               operation_name[256];    … オペレーション名
} ESPLG_UOC_OPERATION;

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_RPCSIZE rpc_size;     …………RPCプロトコルのサイズ形式
} ESPLG_UOC_TELSIZE;

ESPLG_UOC_HTTPSIZEのパラメタ内容

HTTPの場合

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

[図データ]

ESPLG_UOC_TCPSIZEのパラメタ内容

TCPの場合

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

RPCの場合

typedef struct es_plg_uoc_rpcsize{
  ESULONG header_size;            …………ヘッダ部サイズ
  ESULONG user_data_size;         …………ユーザデータ部サイズ
} ESPLG_UOC_RPCSIZE;

[図データ]

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

run_mode

システム検証支援の実行形態を設定します。

ESFRW_RUNMODE_CREATE_C:電文作成フェーズ(PCAP)

ESFRW_RUNMODE_CREATE_A:電文作成フェーズ(キャプチャ)

protocol

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

ESFRW_PROT_HTTP:HTTP

msgtype

電文種別を設定します。

ESFRW_MSGTYPE_REQUEST_PRO:要求電文(本番環境)

ESFRW_MSGTYPE_RESPONSE_PRO:応答電文(本番環境)

ESFRW_MSGTYPE_RESPONSE_TST:応答電文(テスト環境)

src_ip

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

dst_ip

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

src_port

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

dst_port

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

rcv_telegram

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

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

  • size

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

  • data

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

rcv_telegram_size

プロトコルに応じて入力電文のサイズをESPLG_UOC_TELSIZE形式で設定します。

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

※1:

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

IPv4の場合

例) 送信元IPが172.165.112.20の場合

[図データ]

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

operation_name

入力電文のオペレーション名を指定できます。

文字列の最後にはnull文字を設定してください。null文字がない場合、256バイト目をnull文字に置換します。

リターン値

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

ESPLG_UOC_OK

UOC指定のオペレーション名で処理を続行します。

上記以外

指定リターン値以外でリターンした場合、UOC指定のオペレーション名で処理を続行します。

注意事項