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指定のオペレーション名で処理を続行します。
注意事項
-
UOCで設定した値に不正があった場合、システム検証支援はデフォルトのオペレーション名を設定します。
-
入力電文を編集した場合、その後の処理の保証はできません。