aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mq.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-mq.c')
-rw-r--r--epan/dissectors/packet-mq.c8203
1 files changed, 5006 insertions, 3197 deletions
diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c
index fc2d185f5e..3fc1917628 100644
--- a/epan/dissectors/packet-mq.c
+++ b/epan/dissectors/packet-mq.c
@@ -116,15 +116,15 @@ static int hf_mq_tsh_tcf_reqacc = -1;
static int hf_mq_tsh_tcf_dlq = -1;
static const int *pf_flds_tcf[] =
{
- &hf_mq_tsh_tcf_dlq ,
- &hf_mq_tsh_tcf_reqacc ,
- &hf_mq_tsh_tcf_last ,
- &hf_mq_tsh_tcf_first ,
- &hf_mq_tsh_tcf_closechann,
- &hf_mq_tsh_tcf_reqclose ,
- &hf_mq_tsh_tcf_error ,
- &hf_mq_tsh_tcf_confirmreq,
- NULL
+ &hf_mq_tsh_tcf_dlq ,
+ &hf_mq_tsh_tcf_reqacc ,
+ &hf_mq_tsh_tcf_last ,
+ &hf_mq_tsh_tcf_first ,
+ &hf_mq_tsh_tcf_closechann,
+ &hf_mq_tsh_tcf_reqclose ,
+ &hf_mq_tsh_tcf_error ,
+ &hf_mq_tsh_tcf_confirmreq,
+ NULL
};
/* Transmission Segment Control Flags 2 */
@@ -134,11 +134,11 @@ static int hf_mq_tsh_tcf2_CSH = -1;
static int hf_mq_tsh_tcf2_CmitIntv = -1;
static const int *pf_flds_tcf2[] =
{
- &hf_mq_tsh_tcf2_CmitIntv,
- &hf_mq_tsh_tcf2_CSH ,
- &hf_mq_tsh_tcf2_MsgComp ,
- &hf_mq_tsh_tcf2_HdrComp ,
- NULL
+ &hf_mq_tsh_tcf2_CmitIntv,
+ &hf_mq_tsh_tcf2_CSH ,
+ &hf_mq_tsh_tcf2_MsgComp ,
+ &hf_mq_tsh_tcf2_HdrComp ,
+ NULL
};
static int hf_mq_api_replylen = -1;
@@ -204,15 +204,15 @@ static int hf_mq_id_icf1_svrsec = -1;
static int hf_mq_id_icf1_runtime = -1;
static const int *pf_flds_icf1[] =
{
- &hf_mq_id_icf1_runtime ,
- &hf_mq_id_icf1_svrsec ,
- &hf_mq_id_icf1_mqreq ,
- &hf_mq_id_icf1_RqstSecu,
- &hf_mq_id_icf1_RqstInit,
- &hf_mq_id_icf1_splitmsg,
- &hf_mq_id_icf1_convcap ,
- &hf_mq_id_icf1_msgseq ,
- NULL
+ &hf_mq_id_icf1_runtime ,
+ &hf_mq_id_icf1_svrsec ,
+ &hf_mq_id_icf1_mqreq ,
+ &hf_mq_id_icf1_RqstSecu,
+ &hf_mq_id_icf1_RqstInit,
+ &hf_mq_id_icf1_splitmsg,
+ &hf_mq_id_icf1_convcap ,
+ &hf_mq_id_icf1_msgseq ,
+ NULL
};
/* Initial Data Error Flag 1 */
@@ -226,15 +226,15 @@ static int hf_mq_id_ief1_seqwrap = -1;
static int hf_mq_id_ief1_hbint = -1;
static const int *pf_flds_ief1[] =
{
- &hf_mq_id_ief1_hbint ,
- &hf_mq_id_ief1_seqwrap,
- &hf_mq_id_ief1_mxmsgpb,
- &hf_mq_id_ief1_mxmsgsz,
- &hf_mq_id_ief1_fap ,
- &hf_mq_id_ief1_mxtrsz ,
- &hf_mq_id_ief1_enc ,
- &hf_mq_id_ief1_ccsid ,
- NULL
+ &hf_mq_id_ief1_hbint ,
+ &hf_mq_id_ief1_seqwrap,
+ &hf_mq_id_ief1_mxmsgpb,
+ &hf_mq_id_ief1_mxmsgsz,
+ &hf_mq_id_ief1_fap ,
+ &hf_mq_id_ief1_mxtrsz ,
+ &hf_mq_id_ief1_enc ,
+ &hf_mq_id_ief1_ccsid ,
+ NULL
};
/* Initial Data Capability Flag 2 */
@@ -248,15 +248,15 @@ static int hf_mq_id_icf2_DualUOW = -1;
static int hf_mq_id_icf2_CanTrcRte = -1;
static const int *pf_flds_icf2[] =
{
- &hf_mq_id_icf2_CanTrcRte,
- &hf_mq_id_icf2_SPIRqst ,
- &hf_mq_id_icf2_XARunTApp,
- &hf_mq_id_icf2_XARequest,
- &hf_mq_id_icf2_DualUOW ,
- &hf_mq_id_icf2_RespConv ,
- &hf_mq_id_icf2_FstMsgReq,
- &hf_mq_id_icf2_CanDstLst,
- NULL
+ &hf_mq_id_icf2_CanTrcRte,
+ &hf_mq_id_icf2_SPIRqst ,
+ &hf_mq_id_icf2_XARunTApp,
+ &hf_mq_id_icf2_XARequest,
+ &hf_mq_id_icf2_DualUOW ,
+ &hf_mq_id_icf2_RespConv ,
+ &hf_mq_id_icf2_FstMsgReq,
+ &hf_mq_id_icf2_CanDstLst,
+ NULL
};
/* Initial Data Error Flag 2 */
@@ -265,10 +265,10 @@ static int hf_mq_id_ief2_MsgCmpLst = -1;
static int hf_mq_id_ief2_SSLReset = -1;
static const int *pf_flds_ief2[] =
{
- &hf_mq_id_ief2_HdrCmpLst,
- &hf_mq_id_ief2_MsgCmpLst,
- &hf_mq_id_ief2_SSLReset ,
- NULL
+ &hf_mq_id_ief2_HdrCmpLst,
+ &hf_mq_id_ief2_MsgCmpLst,
+ &hf_mq_id_ief2_SSLReset ,
+ NULL
};
/* Initial Data Capability Flag 3 */
@@ -276,9 +276,9 @@ static int hf_mq_id_icf3_CanMsgPrp = -1;
static int hf_mq_id_icf3_Unknown02 = -1;
static const int *pf_flds_icf3[] =
{
- &hf_mq_id_icf3_Unknown02,
- &hf_mq_id_icf3_CanMsgPrp,
- NULL
+ &hf_mq_id_icf3_Unknown02,
+ &hf_mq_id_icf3_CanMsgPrp,
+ NULL
};
static int hf_mq_uid_StructID = -1;
@@ -336,10 +336,10 @@ static int hf_mq_spi_opt_syncp = -1;
static int hf_mq_spi_opt_deferred = -1;
static const int *pf_flds_spiopt[] =
{
- &hf_mq_spi_opt_deferred,
- &hf_mq_spi_opt_syncp,
- &hf_mq_spi_opt_blank,
- NULL
+ &hf_mq_spi_opt_deferred,
+ &hf_mq_spi_opt_syncp,
+ &hf_mq_spi_opt_blank,
+ NULL
};
static int hf_mq_put_length = -1;
@@ -352,12 +352,12 @@ static int hf_mq_close_options_REMOVE_SUB = -1;
static int hf_mq_close_options_QUIESCE = -1;
static const int *pf_flds_clsopt[] =
{
- &hf_mq_close_options_QUIESCE ,
- &hf_mq_close_options_REMOVE_SUB ,
- &hf_mq_close_options_KEEP_SUB ,
- &hf_mq_close_options_DELETE_PURGE,
- &hf_mq_close_options_DELETE ,
- NULL
+ &hf_mq_close_options_QUIESCE ,
+ &hf_mq_close_options_REMOVE_SUB ,
+ &hf_mq_close_options_KEEP_SUB ,
+ &hf_mq_close_options_DELETE_PURGE,
+ &hf_mq_close_options_DELETE ,
+ NULL
};
static int hf_mq_open_options = -1;
@@ -386,30 +386,30 @@ static int hf_mq_open_options_NO_MULTICAST = -1;
static int hf_mq_open_options_BIND_ON_GROUP = -1;
static const int *pf_flds_opnopt[] =
{
- &hf_mq_open_options_BIND_ON_GROUP ,
- &hf_mq_open_options_NO_MULTICAST ,
- &hf_mq_open_options_READ_AHEAD ,
- &hf_mq_open_options_NO_READ_AHEAD ,
- &hf_mq_open_options_RESOLVE_LOCAL_Q,
- &hf_mq_open_options_CO_OP ,
- &hf_mq_open_options_RESOLVE_NAMES ,
- &hf_mq_open_options_BIND_NOT_FIXED ,
- &hf_mq_open_options_BIND_ON_OPEN ,
- &hf_mq_open_options_FAIL_IF_QUIESC ,
- &hf_mq_open_options_ALT_USER_AUTH ,
- &hf_mq_open_options_SET_ALL_CONTEXT,
- &hf_mq_open_options_SET_IDENT_CTX ,
- &hf_mq_open_options_PASS_ALL_CTX ,
- &hf_mq_open_options_PASS_IDENT_CTX ,
- &hf_mq_open_options_SAVE_ALL_CTX ,
- &hf_mq_open_options_SET ,
- &hf_mq_open_options_INQUIRE ,
- &hf_mq_open_options_OUTPUT ,
- &hf_mq_open_options_BROWSE ,
- &hf_mq_open_options_INPUT_EXCLUSIVE,
- &hf_mq_open_options_INPUT_SHARED ,
- &hf_mq_open_options_INPUT_AS_Q_DEF ,
- NULL
+ &hf_mq_open_options_BIND_ON_GROUP ,
+ &hf_mq_open_options_NO_MULTICAST ,
+ &hf_mq_open_options_READ_AHEAD ,
+ &hf_mq_open_options_NO_READ_AHEAD ,
+ &hf_mq_open_options_RESOLVE_LOCAL_Q,
+ &hf_mq_open_options_CO_OP ,
+ &hf_mq_open_options_RESOLVE_NAMES ,
+ &hf_mq_open_options_BIND_NOT_FIXED ,
+ &hf_mq_open_options_BIND_ON_OPEN ,
+ &hf_mq_open_options_FAIL_IF_QUIESC ,
+ &hf_mq_open_options_ALT_USER_AUTH ,
+ &hf_mq_open_options_SET_ALL_CONTEXT,
+ &hf_mq_open_options_SET_IDENT_CTX ,
+ &hf_mq_open_options_PASS_ALL_CTX ,
+ &hf_mq_open_options_PASS_IDENT_CTX ,
+ &hf_mq_open_options_SAVE_ALL_CTX ,
+ &hf_mq_open_options_SET ,
+ &hf_mq_open_options_INQUIRE ,
+ &hf_mq_open_options_OUTPUT ,
+ &hf_mq_open_options_BROWSE ,
+ &hf_mq_open_options_INPUT_EXCLUSIVE,
+ &hf_mq_open_options_INPUT_SHARED ,
+ &hf_mq_open_options_INPUT_AS_Q_DEF ,
+ NULL
};
static int hf_mq_fopa_StructID = -1;
@@ -558,35 +558,35 @@ static int hf_mq_gmo_options_SYNCPOINT = -1;
static int hf_mq_gmo_options_WAIT = -1;
static const int *pf_flds_gmoopt[] =
{
- &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY,
- &hf_mq_gmo_options_PROPERTIES_IN_HANDLE ,
- &hf_mq_gmo_options_NO_PROPERTIES ,
- &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 ,
- &hf_mq_gmo_options_UNMARKED_BROWSE_MSG ,
- &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE ,
- &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP ,
- &hf_mq_gmo_options_MARK_BROWSE_CO_OP ,
- &hf_mq_gmo_options_MARK_BROWSE_HANDLE ,
- &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE ,
- &hf_mq_gmo_options_ALL_MSGS_AVAILABLE ,
- &hf_mq_gmo_options_COMPLETE_MSG ,
- &hf_mq_gmo_options_LOGICAL_ORDER ,
- &hf_mq_gmo_options_CONVERT ,
- &hf_mq_gmo_options_FAIL_IF_QUIESCING ,
- &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT ,
- &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR ,
- &hf_mq_gmo_options_UNLOCK ,
- &hf_mq_gmo_options_LOCK ,
- &hf_mq_gmo_options_MSG_UNDER_CURSOR ,
- &hf_mq_gmo_options_MARK_SKIP_BACKOUT ,
- &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG ,
- &hf_mq_gmo_options_BROWSE_NEXT ,
- &hf_mq_gmo_options_BROWSE_FIRST ,
- &hf_mq_gmo_options_SET_SIGNAL ,
- &hf_mq_gmo_options_NO_SYNCPOINT ,
- &hf_mq_gmo_options_SYNCPOINT ,
- &hf_mq_gmo_options_WAIT ,
- NULL
+ &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY,
+ &hf_mq_gmo_options_PROPERTIES_IN_HANDLE ,
+ &hf_mq_gmo_options_NO_PROPERTIES ,
+ &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 ,
+ &hf_mq_gmo_options_UNMARKED_BROWSE_MSG ,
+ &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE ,
+ &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP ,
+ &hf_mq_gmo_options_MARK_BROWSE_CO_OP ,
+ &hf_mq_gmo_options_MARK_BROWSE_HANDLE ,
+ &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE ,
+ &hf_mq_gmo_options_ALL_MSGS_AVAILABLE ,
+ &hf_mq_gmo_options_COMPLETE_MSG ,
+ &hf_mq_gmo_options_LOGICAL_ORDER ,
+ &hf_mq_gmo_options_CONVERT ,
+ &hf_mq_gmo_options_FAIL_IF_QUIESCING ,
+ &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT ,
+ &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR ,
+ &hf_mq_gmo_options_UNLOCK ,
+ &hf_mq_gmo_options_LOCK ,
+ &hf_mq_gmo_options_MSG_UNDER_CURSOR ,
+ &hf_mq_gmo_options_MARK_SKIP_BACKOUT ,
+ &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG ,
+ &hf_mq_gmo_options_BROWSE_NEXT ,
+ &hf_mq_gmo_options_BROWSE_FIRST ,
+ &hf_mq_gmo_options_SET_SIGNAL ,
+ &hf_mq_gmo_options_NO_SYNCPOINT ,
+ &hf_mq_gmo_options_SYNCPOINT ,
+ &hf_mq_gmo_options_WAIT ,
+ NULL
};
static int hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN = -1;
@@ -597,13 +597,13 @@ static int hf_mq_gmo_matchoptions_MATCH_CORREL_ID = -1;
static int hf_mq_gmo_matchoptions_MATCH_MSG_ID = -1;
static const int *pf_flds_mtchopt[] =
{
- &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN ,
- &hf_mq_gmo_matchoptions_MATCH_OFFSET ,
- &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER,
- &hf_mq_gmo_matchoptions_MATCH_GROUP_ID ,
- &hf_mq_gmo_matchoptions_MATCH_CORREL_ID ,
- &hf_mq_gmo_matchoptions_MATCH_MSG_ID ,
- NULL
+ &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN ,
+ &hf_mq_gmo_matchoptions_MATCH_OFFSET ,
+ &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER,
+ &hf_mq_gmo_matchoptions_MATCH_GROUP_ID ,
+ &hf_mq_gmo_matchoptions_MATCH_CORREL_ID ,
+ &hf_mq_gmo_matchoptions_MATCH_MSG_ID ,
+ NULL
};
static int hf_mq_lpoo_StructID = -1;
@@ -623,10 +623,10 @@ static int hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT = -1 ;
static int hf_mq_lpoo_lpiopts_SAVE_USER_CTXT = -1;
static const int *pf_flds_lpooopt[] =
{
- &hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT,
- &hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT,
- &hf_mq_lpoo_lpiopts_SAVE_USER_CTXT,
- NULL
+ &hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT,
+ &hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT,
+ &hf_mq_lpoo_lpiopts_SAVE_USER_CTXT,
+ NULL
};
@@ -698,29 +698,29 @@ static int hf_mq_pmo_options_NO_SYNCPOINT = -1;
static int hf_mq_pmo_options_SYNCPOINT = -1;
static const int *pf_flds_pmoopt[] =
{
- &hf_mq_pmo_options_NOT_OWN_SUBS ,
- &hf_mq_pmo_options_SUPPRESS_REPLYTO ,
- &hf_mq_pmo_options_SCOPE_QMGR ,
- &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY ,
- &hf_mq_pmo_options_RETAIN ,
- &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED ,
- &hf_mq_pmo_options_RESOLVE_LOCAL_Q ,
- &hf_mq_pmo_options_SYNC_RESPONSE ,
- &hf_mq_pmo_options_ASYNC_RESPONSE ,
- &hf_mq_pmo_options_LOGICAL_ORDER ,
- &hf_mq_pmo_options_NO_CONTEXT ,
- &hf_mq_pmo_options_FAIL_IF_QUIESCING ,
- &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY,
- &hf_mq_pmo_options_SET_ALL_CONTEXT ,
- &hf_mq_pmo_options_SET_IDENTITY_CONTEXT ,
- &hf_mq_pmo_options_PASS_ALL_CONTEXT ,
- &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT ,
- &hf_mq_pmo_options_NEW_CORREL_ID ,
- &hf_mq_pmo_options_NEW_MSG_ID ,
- &hf_mq_pmo_options_DEFAULT_CONTEXT ,
- &hf_mq_pmo_options_NO_SYNCPOINT ,
- &hf_mq_pmo_options_SYNCPOINT ,
- NULL
+ &hf_mq_pmo_options_NOT_OWN_SUBS ,
+ &hf_mq_pmo_options_SUPPRESS_REPLYTO ,
+ &hf_mq_pmo_options_SCOPE_QMGR ,
+ &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY ,
+ &hf_mq_pmo_options_RETAIN ,
+ &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED ,
+ &hf_mq_pmo_options_RESOLVE_LOCAL_Q ,
+ &hf_mq_pmo_options_SYNC_RESPONSE ,
+ &hf_mq_pmo_options_ASYNC_RESPONSE ,
+ &hf_mq_pmo_options_LOGICAL_ORDER ,
+ &hf_mq_pmo_options_NO_CONTEXT ,
+ &hf_mq_pmo_options_FAIL_IF_QUIESCING ,
+ &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY,
+ &hf_mq_pmo_options_SET_ALL_CONTEXT ,
+ &hf_mq_pmo_options_SET_IDENTITY_CONTEXT ,
+ &hf_mq_pmo_options_PASS_ALL_CONTEXT ,
+ &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT ,
+ &hf_mq_pmo_options_NEW_CORREL_ID ,
+ &hf_mq_pmo_options_NEW_MSG_ID ,
+ &hf_mq_pmo_options_DEFAULT_CONTEXT ,
+ &hf_mq_pmo_options_NO_SYNCPOINT ,
+ &hf_mq_pmo_options_SYNCPOINT ,
+ NULL
};
static int hf_mq_xa_tmflags_join = -1;
@@ -733,15 +733,15 @@ static int hf_mq_xa_tmflags_fail = -1;
static int hf_mq_xa_tmflags_onephase = -1;
static const int *pf_flds_tmflags[] =
{
- &hf_mq_xa_tmflags_onephase ,
- &hf_mq_xa_tmflags_fail ,
- &hf_mq_xa_tmflags_resume ,
- &hf_mq_xa_tmflags_success ,
- &hf_mq_xa_tmflags_suspend ,
- &hf_mq_xa_tmflags_startrscan,
- &hf_mq_xa_tmflags_endrscan ,
- &hf_mq_xa_tmflags_join ,
- NULL
+ &hf_mq_xa_tmflags_onephase ,
+ &hf_mq_xa_tmflags_fail ,
+ &hf_mq_xa_tmflags_resume ,
+ &hf_mq_xa_tmflags_success ,
+ &hf_mq_xa_tmflags_suspend ,
+ &hf_mq_xa_tmflags_startrscan,
+ &hf_mq_xa_tmflags_endrscan ,
+ &hf_mq_xa_tmflags_join ,
+ NULL
};
static int hf_mq_msgreq_version = -1;
@@ -1193,29 +1193,29 @@ static reassembly_table mq_reassembly_table;
/* MQ structures */
/* Undocumented structures */
-#define MQ_TEXT_TSH "Transmission Segment Header"
-#define MQ_TEXT_TSHC "Transmission Segment Header Common"
-#define MQ_TEXT_TSHM "Transmission Segment Header Multiplexed"
-#define MQ_TEXT_FCNO "F Connect Option"
-#define MQ_TEXT_API "API Header"
-#define MQ_TEXT_SOCKET "Socket Action"
-#define MQ_TEXT_ID "Initial Data"
-#define MQ_TEXT_UID "User Id Data"
-#define MQ_TEXT_MSH "Message Segment Header"
-#define MQ_TEXT_CAUT "Connection Authority"
-#define MQ_TEXT_CONN "MQCONN"
-#define MQ_TEXT_INQ "MQINQ/MQSET"
-#define MQ_TEXT_PUT "MQPUT/MQGET"
-#define MQ_TEXT_OPEN "MQOPEN/MQCLOSE"
-#define MQ_TEXT_REQMSG "REQUEST MESSAGE"
-#define MQ_TEXT_ASYMSG "ASYNC MESSAGE"
-#define MQ_TEXT_NOTIFICATION "NOTIFICATION"
+#define MQ_TEXT_TSH "Transmission Segment Header"
+#define MQ_TEXT_TSHC "Transmission Segment Header Common"
+#define MQ_TEXT_TSHM "Transmission Segment Header Multiplexed"
+#define MQ_TEXT_FCNO "F Connect Option"
+#define MQ_TEXT_API "API Header"
+#define MQ_TEXT_SOCKET "Socket Action"
+#define MQ_TEXT_ID "Initial Data"
+#define MQ_TEXT_UID "User Id Data"
+#define MQ_TEXT_MSH "Message Segment Header"
+#define MQ_TEXT_CAUT "Connection Authority"
+#define MQ_TEXT_CONN "MQCONN"
+#define MQ_TEXT_INQ "MQINQ/MQSET"
+#define MQ_TEXT_PUT "MQPUT/MQGET"
+#define MQ_TEXT_OPEN "MQOPEN/MQCLOSE"
+#define MQ_TEXT_REQMSG "REQUEST MESSAGE"
+#define MQ_TEXT_ASYMSG "ASYNC MESSAGE"
+#define MQ_TEXT_NOTIFICATION "NOTIFICATION"
#define MQ_TEXT_BIND_READAHEAD_AS_Q_DEF "Bind/Read Ahead As Q Def"
-#define MQ_TEXT_IMMEDIATE_NONE "Close Immediate/No option"
-#define MQ_TEXT_MQPMO_NONE "Resp as Q Def/Resp as Topic Def/None"
-#define MQ_TEXT_MQGMO_NONE "No Wait/Prop as Q Def/None"
-#define MQ_TEXT_MQMO_NONE "None"
-#define MQ_TEXT_LPOOOPT_NONE "None"
+#define MQ_TEXT_IMMEDIATE_NONE "Close Immediate/No option"
+#define MQ_TEXT_MQPMO_NONE "Resp as Q Def/Resp as Topic Def/None"
+#define MQ_TEXT_MQGMO_NONE "No Wait/Prop as Q Def/None"
+#define MQ_TEXT_MQMO_NONE "None"
+#define MQ_TEXT_LPOOOPT_NONE "None"
#define MQ_TEXT_PING "PING"
#define MQ_TEXT_RESET "RESET"
@@ -1283,3186 +1283,4995 @@ static reassembly_table mq_reassembly_table;
#define MQ_NC_RECONNECTION_COMPLETE 17
DEF_VALSB(notifcode)
- DEF_VALS2(NC_GET_INHIBITED, "GET_INHIBITED"),
- DEF_VALS2(NC_GET_ALLOWED, "GET_ALLOWED"),
- DEF_VALS2(NC_CONN_STATE, "CONN_STATE"),
- DEF_VALS2(NC_CONN_STATE_REPLY, "CONN_STATE_REPLY"),
- DEF_VALS2(NC_Q_STATE, "Q_STATE"),
- DEF_VALS2(NC_Q_STATE_REPLY, "Q_STATE_REPLY"),
- DEF_VALS2(NC_QM_QUIESCING, "QM_QUIESCING"),
- DEF_VALS2(NC_TXN_ALLOWED, "TXN_ALLOWED"),
- DEF_VALS2(NC_TXN_REVOKE, "TXN_REVOKE"),
- DEF_VALS2(NC_TXN_REVOKE_REPLY, "TXN_REVOKE_REPLY"),
- DEF_VALS2(NC_CHECK_MSG, "CHECK_MSG"),
- DEF_VALS2(NC_BROWSE_FIRST, "BROWSE_FIRST"),
- DEF_VALS2(NC_MESSAGE_TOO_LARGE, "MESSAGE_TOO_LARGE"),
- DEF_VALS2(NC_STREAMING_FAILURE, "STREAMING_FAILURE"),
- DEF_VALS2(NC_CLIENT_ASYNC_EMPTY, "CLIENT_ASYNC_EMPTY"),
+ DEF_VALS2(NC_GET_INHIBITED, "GET_INHIBITED"),
+ DEF_VALS2(NC_GET_ALLOWED, "GET_ALLOWED"),
+ DEF_VALS2(NC_CONN_STATE, "CONN_STATE"),
+ DEF_VALS2(NC_CONN_STATE_REPLY, "CONN_STATE_REPLY"),
+ DEF_VALS2(NC_Q_STATE, "Q_STATE"),
+ DEF_VALS2(NC_Q_STATE_REPLY, "Q_STATE_REPLY"),
+ DEF_VALS2(NC_QM_QUIESCING, "QM_QUIESCING"),
+ DEF_VALS2(NC_TXN_ALLOWED, "TXN_ALLOWED"),
+ DEF_VALS2(NC_TXN_REVOKE, "TXN_REVOKE"),
+ DEF_VALS2(NC_TXN_REVOKE_REPLY, "TXN_REVOKE_REPLY"),
+ DEF_VALS2(NC_CHECK_MSG, "CHECK_MSG"),
+ DEF_VALS2(NC_BROWSE_FIRST, "BROWSE_FIRST"),
+ DEF_VALS2(NC_MESSAGE_TOO_LARGE, "MESSAGE_TOO_LARGE"),
+ DEF_VALS2(NC_STREAMING_FAILURE, "STREAMING_FAILURE"),
+ DEF_VALS2(NC_CLIENT_ASYNC_EMPTY, "CLIENT_ASYNC_EMPTY"),
DEF_VALSE;
DEF_VALSB(opcode)
- DEF_VALS2(TST_INITIAL, "INITIAL_DATA"),
- DEF_VALS2(TST_RESYNC, "RESYNC_DATA"),
- DEF_VALS2(TST_RESET, "RESET_DATA"),
- DEF_VALS2(TST_MESSAGE, "MESSAGE_DATA"),
- DEF_VALS2(TST_STATUS, "STATUS_DATA"),
- DEF_VALS2(TST_SECURITY, "SECURITY_DATA"),
- DEF_VALS2(TST_PING, "PING_DATA"),
- DEF_VALS2(TST_USERID, "USERID_DATA"),
- DEF_VALS2(TST_HEARTBEAT, "HEARTBEAT"),
- DEF_VALS2(TST_CONAUTH_INFO, "CONAUTH_INFO"),
- DEF_VALS2(TST_RENEGOTIATE_DATA, "RENEGOTIATE_DATA"),
- DEF_VALS2(TST_SOCKET_ACTION, "SOCKET_ACTION"),
- DEF_VALS2(TST_ASYNC_MESSAGE, "ASYNC_MESSAGE"),
- DEF_VALS2(TST_REQUEST_MSGS, "REQUEST_MSGS"),
- DEF_VALS2(TST_NOTIFICATION, "NOTIFICATION"),
- DEF_VALS2(TST_MQCONN, "MQCONN"),
- DEF_VALS2(TST_MQDISC, "MQDISC"),
- DEF_VALS2(TST_MQOPEN, "MQOPEN"),
- DEF_VALS2(TST_MQCLOSE, "MQCLOSE"),
- DEF_VALS2(TST_MQGET, "MQGET"),
- DEF_VALS2(TST_MQPUT, "MQPUT"),
- DEF_VALS2(TST_MQPUT1, "MQPUT1"),
- DEF_VALS2(TST_MQSET, "MQSET"),
- DEF_VALS2(TST_MQINQ, "MQINQ"),
- DEF_VALS2(TST_MQCMIT, "MQCMIT"),
- DEF_VALS2(TST_MQBACK, "MQBACK"),
- DEF_VALS2(TST_SPI, "SPI"),
- DEF_VALS2(TST_MQSTAT, "MQSTAT"),
- DEF_VALS2(TST_MQSUB, "MQSUB"),
- DEF_VALS2(TST_MQSUBRQ, "MQSUBRQ"),
- DEF_VALS2(TST_MQCONN_REPLY, "MQCONN_REPLY"),
- DEF_VALS2(TST_MQDISC_REPLY, "MQDISC_REPLY"),
- DEF_VALS2(TST_MQOPEN_REPLY, "MQOPEN_REPLY"),
- DEF_VALS2(TST_MQCLOSE_REPLY, "MQCLOSE_REPLY"),
- DEF_VALS2(TST_MQGET_REPLY, "MQGET_REPLY"),
- DEF_VALS2(TST_MQPUT_REPLY, "MQPUT_REPLY"),
- DEF_VALS2(TST_MQPUT1_REPLY, "MQPUT1_REPLY"),
- DEF_VALS2(TST_MQSET_REPLY, "MQSET_REPLY"),
- DEF_VALS2(TST_MQINQ_REPLY, "MQINQ_REPLY"),
- DEF_VALS2(TST_MQCMIT_REPLY, "MQCMIT_REPLY"),
- DEF_VALS2(TST_MQBACK_REPLY, "MQBACK_REPLY"),
- DEF_VALS2(TST_SPI_REPLY, "SPI_REPLY"),
- DEF_VALS2(TST_MQSTAT_REPLY, "MQSTAT_REPLY"),
- DEF_VALS2(TST_MQSUB_REPLY, "MQSUB_REPLY"),
- DEF_VALS2(TST_MQSUBRQ_REPLY, "MQSUBRQ_REPLY"),
- DEF_VALS2(TST_XA_START, "XA_START"),
- DEF_VALS2(TST_XA_END, "XA_END"),
- DEF_VALS2(TST_XA_OPEN, "XA_OPEN"),
- DEF_VALS2(TST_XA_CLOSE, "XA_CLOSE"),
- DEF_VALS2(TST_XA_PREPARE, "XA_PREPARE"),
- DEF_VALS2(TST_XA_COMMIT, "XA_COMMIT"),
- DEF_VALS2(TST_XA_ROLLBACK, "XA_ROLLBACK"),
- DEF_VALS2(TST_XA_FORGET, "XA_FORGET"),
- DEF_VALS2(TST_XA_RECOVER, "XA_RECOVER"),
- DEF_VALS2(TST_XA_COMPLETE, "XA_COMPLETE"),
- DEF_VALS2(TST_XA_START_REPLY, "XA_START_REPLY"),
- DEF_VALS2(TST_XA_END_REPLY, "XA_END_REPLY"),
- DEF_VALS2(TST_XA_OPEN_REPLY, "XA_OPEN_REPLY"),
- DEF_VALS2(TST_XA_CLOSE_REPLY, "XA_CLOSE_REPLY"),
- DEF_VALS2(TST_XA_PREPARE_REPLY, "XA_PREPARE_REPLY"),
- DEF_VALS2(TST_XA_COMMIT_REPLY, "XA_COMMIT_REPLY"),
- DEF_VALS2(TST_XA_ROLLBACK_REPLY, "XA_ROLLBACK_REPLY"),
- DEF_VALS2(TST_XA_FORGET_REPLY, "XA_FORGET_REPLY"),
- DEF_VALS2(TST_XA_RECOVER_REPLY, "XA_RECOVER_REPLY"),
- DEF_VALS2(TST_XA_COMPLETE_REPLY, "XA_COMPLETE_REPLY"),
+ DEF_VALS2(TST_INITIAL, "INITIAL_DATA"),
+ DEF_VALS2(TST_RESYNC, "RESYNC_DATA"),
+ DEF_VALS2(TST_RESET, "RESET_DATA"),
+ DEF_VALS2(TST_MESSAGE, "MESSAGE_DATA"),
+ DEF_VALS2(TST_STATUS, "STATUS_DATA"),
+ DEF_VALS2(TST_SECURITY, "SECURITY_DATA"),
+ DEF_VALS2(TST_PING, "PING_DATA"),
+ DEF_VALS2(TST_USERID, "USERID_DATA"),
+ DEF_VALS2(TST_HEARTBEAT, "HEARTBEAT"),
+ DEF_VALS2(TST_CONAUTH_INFO, "CONAUTH_INFO"),
+ DEF_VALS2(TST_RENEGOTIATE_DATA, "RENEGOTIATE_DATA"),
+ DEF_VALS2(TST_SOCKET_ACTION, "SOCKET_ACTION"),
+ DEF_VALS2(TST_ASYNC_MESSAGE, "ASYNC_MESSAGE"),
+ DEF_VALS2(TST_REQUEST_MSGS, "REQUEST_MSGS"),
+ DEF_VALS2(TST_NOTIFICATION, "NOTIFICATION"),
+ DEF_VALS2(TST_MQCONN, "MQCONN"),
+ DEF_VALS2(TST_MQDISC, "MQDISC"),
+ DEF_VALS2(TST_MQOPEN, "MQOPEN"),
+ DEF_VALS2(TST_MQCLOSE, "MQCLOSE"),
+ DEF_VALS2(TST_MQGET, "MQGET"),
+ DEF_VALS2(TST_MQPUT, "MQPUT"),
+ DEF_VALS2(TST_MQPUT1, "MQPUT1"),
+ DEF_VALS2(TST_MQSET, "MQSET"),
+ DEF_VALS2(TST_MQINQ, "MQINQ"),
+ DEF_VALS2(TST_MQCMIT, "MQCMIT"),
+ DEF_VALS2(TST_MQBACK, "MQBACK"),
+ DEF_VALS2(TST_SPI, "SPI"),
+ DEF_VALS2(TST_MQSTAT, "MQSTAT"),
+ DEF_VALS2(TST_MQSUB, "MQSUB"),
+ DEF_VALS2(TST_MQSUBRQ, "MQSUBRQ"),
+ DEF_VALS2(TST_MQCONN_REPLY, "MQCONN_REPLY"),
+ DEF_VALS2(TST_MQDISC_REPLY, "MQDISC_REPLY"),
+ DEF_VALS2(TST_MQOPEN_REPLY, "MQOPEN_REPLY"),
+ DEF_VALS2(TST_MQCLOSE_REPLY, "MQCLOSE_REPLY"),
+ DEF_VALS2(TST_MQGET_REPLY, "MQGET_REPLY"),
+ DEF_VALS2(TST_MQPUT_REPLY, "MQPUT_REPLY"),
+ DEF_VALS2(TST_MQPUT1_REPLY, "MQPUT1_REPLY"),
+ DEF_VALS2(TST_MQSET_REPLY, "MQSET_REPLY"),
+ DEF_VALS2(TST_MQINQ_REPLY, "MQINQ_REPLY"),
+ DEF_VALS2(TST_MQCMIT_REPLY, "MQCMIT_REPLY"),
+ DEF_VALS2(TST_MQBACK_REPLY, "MQBACK_REPLY"),
+ DEF_VALS2(TST_SPI_REPLY, "SPI_REPLY"),
+ DEF_VALS2(TST_MQSTAT_REPLY, "MQSTAT_REPLY"),
+ DEF_VALS2(TST_MQSUB_REPLY, "MQSUB_REPLY"),
+ DEF_VALS2(TST_MQSUBRQ_REPLY, "MQSUBRQ_REPLY"),
+ DEF_VALS2(TST_XA_START, "XA_START"),
+ DEF_VALS2(TST_XA_END, "XA_END"),
+ DEF_VALS2(TST_XA_OPEN, "XA_OPEN"),
+ DEF_VALS2(TST_XA_CLOSE, "XA_CLOSE"),
+ DEF_VALS2(TST_XA_PREPARE, "XA_PREPARE"),
+ DEF_VALS2(TST_XA_COMMIT, "XA_COMMIT"),
+ DEF_VALS2(TST_XA_ROLLBACK, "XA_ROLLBACK"),
+ DEF_VALS2(TST_XA_FORGET, "XA_FORGET"),
+ DEF_VALS2(TST_XA_RECOVER, "XA_RECOVER"),
+ DEF_VALS2(TST_XA_COMPLETE, "XA_COMPLETE"),
+ DEF_VALS2(TST_XA_START_REPLY, "XA_START_REPLY"),
+ DEF_VALS2(TST_XA_END_REPLY, "XA_END_REPLY"),
+ DEF_VALS2(TST_XA_OPEN_REPLY, "XA_OPEN_REPLY"),
+ DEF_VALS2(TST_XA_CLOSE_REPLY, "XA_CLOSE_REPLY"),
+ DEF_VALS2(TST_XA_PREPARE_REPLY, "XA_PREPARE_REPLY"),
+ DEF_VALS2(TST_XA_COMMIT_REPLY, "XA_COMMIT_REPLY"),
+ DEF_VALS2(TST_XA_ROLLBACK_REPLY, "XA_ROLLBACK_REPLY"),
+ DEF_VALS2(TST_XA_FORGET_REPLY, "XA_FORGET_REPLY"),
+ DEF_VALS2(TST_XA_RECOVER_REPLY, "XA_RECOVER_REPLY"),
+ DEF_VALS2(TST_XA_COMPLETE_REPLY, "XA_COMPLETE_REPLY"),
DEF_VALSE;
DEF_VALSB(spi_verbs)
- DEF_VALS2(SPI_QUERY, "QUERY"),
- DEF_VALS2(SPI_PUT, "PUT"),
- DEF_VALS2(SPI_GET, "GET"),
- DEF_VALS2(SPI_ACTIVATE, "ACTIVATE"),
- DEF_VALS2(SPI_OPEN, "OPEN"),
+ DEF_VALS2(SPI_QUERY, "QUERY"),
+ DEF_VALS2(SPI_PUT, "PUT"),
+ DEF_VALS2(SPI_GET, "GET"),
+ DEF_VALS2(SPI_ACTIVATE, "ACTIVATE"),
+ DEF_VALS2(SPI_OPEN, "OPEN"),
DEF_VALSE;
DEF_VALSB(spi_activate)
- DEF_VALS2(SPI_ACTIVATE_ENABLE, "ENABLE"),
- DEF_VALS2(SPI_ACTIVATE_DISABLE, "DISABLE"),
+ DEF_VALS2(SPI_ACTIVATE_ENABLE, "ENABLE"),
+ DEF_VALS2(SPI_ACTIVATE_DISABLE, "DISABLE"),
DEF_VALSE;
DEF_VALSB(status)
- DEF_VALS2(STATUS_ERR_NO_CHANNEL, "NO_CHANNEL"),
- DEF_VALS2(STATUS_ERR_CHANNEL_WRONG_TYPE, "CHANNEL_WRONG_TYPE"),
- DEF_VALS2(STATUS_ERR_QM_UNAVAILABLE, "QM_UNAVAILABLE"),
- DEF_VALS2(STATUS_ERR_MSG_SEQUENCE_ERROR, "MSG_SEQUENCE_ERROR"),
- DEF_VALS2(STATUS_ERR_QM_TERMINATING, "QM_TERMINATING"),
- DEF_VALS2(STATUS_ERR_CAN_NOT_STORE, "CAN_NOT_STORE"),
- DEF_VALS2(STATUS_ERR_USER_CLOSED, "USER_CLOSED"),
- DEF_VALS2(STATUS_ERR_PROTOCOL_SEGMENT_TYPE, "REMOTE_PROTOCOL_ERROR"),
- DEF_VALS2(STATUS_ERR_PROTOCOL_LENGTH_ERROR, "BIND_FAILED"),
- DEF_VALS2(STATUS_ERR_PROTOCOL_INVALID_DATA, "MSGWRAP_DIFFERENT"),
- DEF_VALS2(STATUS_ERR_PROTOCOL_ID_ERROR, "REMOTE_CHANNEL_UNAVAILABLE"),
- DEF_VALS2(STATUS_ERR_PROTOCOL_MSH_ERROR, "TERMINATED_BY_REMOTE_EXIT"),
- DEF_VALS2(STATUS_ERR_PROTOCOL_GENERAL, "PROTOCOL_GENERAL"),
- DEF_VALS2(STATUS_ERR_BATCH_FAILURE, "BATCH_FAILURE"),
- DEF_VALS2(STATUS_ERR_MESSAGE_LENGTH_ERROR, "MESSAGE_LENGTH_ERROR"),
- DEF_VALS2(STATUS_ERR_SEGMENT_NUMBER_ERROR, "SEGMENT_NUMBER_ERROR"),
- DEF_VALS2(STATUS_ERR_SECURITY_FAILURE, "SECURITY_FAILURE"),
- DEF_VALS2(STATUS_ERR_WRAP_VALUE_ERROR, "WRAP_VALUE_ERROR"),
- DEF_VALS2(STATUS_ERR_CHANNEL_UNAVAILABLE, "CHANNEL_UNAVAILABLE"),
- DEF_VALS2(STATUS_ERR_CLOSED_BY_EXIT, "CLOSED_BY_EXIT"),
- DEF_VALS2(STATUS_ERR_CIPHER_SPEC, "CIPHER_SPEC"),
- DEF_VALS2(STATUS_ERR_PEER_NAME, "PEER_NAME"),
- DEF_VALS2(STATUS_ERR_SSL_CLIENT_CERTIFICATE, "SSL_CLIENT_CERTIFICATE"),
- DEF_VALS2(STATUS_ERR_RMT_RSRCS_IN_RECOVERY, "RMT_RSRCS_IN_RECOVERY"),
- DEF_VALS2(STATUS_ERR_SSL_REFRESHING, "SSL_REFRESHING"),
- DEF_VALS2(STATUS_ERR_INVALID_HOBJ, "INVALID_HOBJ"),
- DEF_VALS2(STATUS_ERR_CONV_ID_ERROR, "CONV_ID_ERROR"),
- DEF_VALS2(STATUS_ERR_SOCKET_ACTION_TYPE, "SOCKET_ACTION_TYPE"),
- DEF_VALS2(STATUS_ERR_STANDBY_Q_MGR, "STANDBY_Q_MGR"),
-
- DEF_VALS2(STATUS_ERR_CCSID_NOT_SUPPORTED, "CCSID_NOT_SUPPORTED"),
- DEF_VALS2(STATUS_ERR_ENCODING_INVALID, "ENCODING_INVALID"),
- DEF_VALS2(STATUS_ERR_FAP_LEVEL, "FAP_LEVEL"),
- DEF_VALS2(STATUS_ERR_NEGOTIATION_FAILED, "NEGOTIATION_FAILED"),
+ DEF_VALS2(STATUS_ERR_NO_CHANNEL, "NO_CHANNEL"),
+ DEF_VALS2(STATUS_ERR_CHANNEL_WRONG_TYPE, "CHANNEL_WRONG_TYPE"),
+ DEF_VALS2(STATUS_ERR_QM_UNAVAILABLE, "QM_UNAVAILABLE"),
+ DEF_VALS2(STATUS_ERR_MSG_SEQUENCE_ERROR, "MSG_SEQUENCE_ERROR"),
+ DEF_VALS2(STATUS_ERR_QM_TERMINATING, "QM_TERMINATING"),
+ DEF_VALS2(STATUS_ERR_CAN_NOT_STORE, "CAN_NOT_STORE"),
+ DEF_VALS2(STATUS_ERR_USER_CLOSED, "USER_CLOSED"),
+ DEF_VALS2(STATUS_ERR_PROTOCOL_SEGMENT_TYPE, "REMOTE_PROTOCOL_ERROR"),
+ DEF_VALS2(STATUS_ERR_PROTOCOL_LENGTH_ERROR, "BIND_FAILED"),
+ DEF_VALS2(STATUS_ERR_PROTOCOL_INVALID_DATA, "MSGWRAP_DIFFERENT"),
+ DEF_VALS2(STATUS_ERR_PROTOCOL_ID_ERROR, "REMOTE_CHANNEL_UNAVAILABLE"),
+ DEF_VALS2(STATUS_ERR_PROTOCOL_MSH_ERROR, "TERMINATED_BY_REMOTE_EXIT"),
+ DEF_VALS2(STATUS_ERR_PROTOCOL_GENERAL, "PROTOCOL_GENERAL"),
+ DEF_VALS2(STATUS_ERR_BATCH_FAILURE, "BATCH_FAILURE"),
+ DEF_VALS2(STATUS_ERR_MESSAGE_LENGTH_ERROR, "MESSAGE_LENGTH_ERROR"),
+ DEF_VALS2(STATUS_ERR_SEGMENT_NUMBER_ERROR, "SEGMENT_NUMBER_ERROR"),
+ DEF_VALS2(STATUS_ERR_SECURITY_FAILURE, "SECURITY_FAILURE"),
+ DEF_VALS2(STATUS_ERR_WRAP_VALUE_ERROR, "WRAP_VALUE_ERROR"),
+ DEF_VALS2(STATUS_ERR_CHANNEL_UNAVAILABLE, "CHANNEL_UNAVAILABLE"),
+ DEF_VALS2(STATUS_ERR_CLOSED_BY_EXIT, "CLOSED_BY_EXIT"),
+ DEF_VALS2(STATUS_ERR_CIPHER_SPEC, "CIPHER_SPEC"),
+ DEF_VALS2(STATUS_ERR_PEER_NAME, "PEER_NAME"),
+ DEF_VALS2(STATUS_ERR_SSL_CLIENT_CERTIFICATE, "SSL_CLIENT_CERTIFICATE"),
+ DEF_VALS2(STATUS_ERR_RMT_RSRCS_IN_RECOVERY, "RMT_RSRCS_IN_RECOVERY"),
+ DEF_VALS2(STATUS_ERR_SSL_REFRESHING, "SSL_REFRESHING"),
+ DEF_VALS2(STATUS_ERR_INVALID_HOBJ, "INVALID_HOBJ"),
+ DEF_VALS2(STATUS_ERR_CONV_ID_ERROR, "CONV_ID_ERROR"),
+ DEF_VALS2(STATUS_ERR_SOCKET_ACTION_TYPE, "SOCKET_ACTION_TYPE"),
+ DEF_VALS2(STATUS_ERR_STANDBY_Q_MGR, "STANDBY_Q_MGR"),
+
+ DEF_VALS2(STATUS_ERR_CCSID_NOT_SUPPORTED, "CCSID_NOT_SUPPORTED"),
+ DEF_VALS2(STATUS_ERR_ENCODING_INVALID, "ENCODING_INVALID"),
+ DEF_VALS2(STATUS_ERR_FAP_LEVEL, "FAP_LEVEL"),
+ DEF_VALS2(STATUS_ERR_NEGOTIATION_FAILED, "NEGOTIATION_FAILED"),
DEF_VALSE;
DEF_VALSB(xaer)
- DEF_VALS2(XA_RBROLLBACK, "XA_RBROLLBACK"),
- DEF_VALS2(XA_RBCOMMFAIL, "XA_RBCOMMFAIL"),
- DEF_VALS2(XA_RBDEADLOCK, "XA_RBDEADLOCK"),
- DEF_VALS2(XA_RBINTEGRITY, "XA_RBINTEGRITY"),
- DEF_VALS2(XA_RBOTHER, "XA_RBOTHER"),
- DEF_VALS2(XA_RBPROTO, "XA_RBPROTO"),
- DEF_VALS2(XA_RBTIMEOUT, "XA_RBTIMEOUT"),
- DEF_VALS2(XA_RBTRANSIENT, "XA_RBTRANSIENT"),
- DEF_VALS2(XA_NOMIGRATE, "XA_NOMIGRATE"),
- DEF_VALS2(XA_HEURHAZ, "XA_HEURHAZ"),
- DEF_VALS2(XA_HEURCOM, "XA_HEURCOM"),
- DEF_VALS2(XA_HEURRB, "XA_HEURRB"),
- DEF_VALS2(XA_HEURMIX, "XA_HEURMIX"),
- DEF_VALS2(XA_RETRY, "XA_RETRY"),
- DEF_VALS2(XA_RDONLY, "XA_RDONLY"),
- DEF_VALS2(XA_OK, "XA_OK"),
- DEF_VALS2(XAER_ASYNC, "XAER_ASYNC"),
- DEF_VALS2(XAER_RMERR, "XAER_RMERR"),
- DEF_VALS2(XAER_NOTA, "XAER_NOTA"),
- DEF_VALS2(XAER_INVAL, "XAER_INVAL"),
- DEF_VALS2(XAER_PROTO, "XAER_PROTO"),
- DEF_VALS2(XAER_RMFAIL, "XAER_RMFAIL"),
- DEF_VALS2(XAER_DUPID, "XAER_DUPID"),
- DEF_VALS2(XAER_OUTSIDE, "XAER_OUTSIDE"),
+ DEF_VALS2(XA_RBROLLBACK, "XA_RBROLLBACK"),
+ DEF_VALS2(XA_RBCOMMFAIL, "XA_RBCOMMFAIL"),
+ DEF_VALS2(XA_RBDEADLOCK, "XA_RBDEADLOCK"),
+ DEF_VALS2(XA_RBINTEGRITY, "XA_RBINTEGRITY"),
+ DEF_VALS2(XA_RBOTHER, "XA_RBOTHER"),
+ DEF_VALS2(XA_RBPROTO, "XA_RBPROTO"),
+ DEF_VALS2(XA_RBTIMEOUT, "XA_RBTIMEOUT"),
+ DEF_VALS2(XA_RBTRANSIENT, "XA_RBTRANSIENT"),
+ DEF_VALS2(XA_NOMIGRATE, "XA_NOMIGRATE"),
+ DEF_VALS2(XA_HEURHAZ, "XA_HEURHAZ"),
+ DEF_VALS2(XA_HEURCOM, "XA_HEURCOM"),
+ DEF_VALS2(XA_HEURRB, "XA_HEURRB"),
+ DEF_VALS2(XA_HEURMIX, "XA_HEURMIX"),
+ DEF_VALS2(XA_RETRY, "XA_RETRY"),
+ DEF_VALS2(XA_RDONLY, "XA_RDONLY"),
+ DEF_VALS2(XA_OK, "XA_OK"),
+ DEF_VALS2(XAER_ASYNC, "XAER_ASYNC"),
+ DEF_VALS2(XAER_RMERR, "XAER_RMERR"),
+ DEF_VALS2(XAER_NOTA, "XAER_NOTA"),
+ DEF_VALS2(XAER_INVAL, "XAER_INVAL"),
+ DEF_VALS2(XAER_PROTO, "XAER_PROTO"),
+ DEF_VALS2(XAER_RMFAIL, "XAER_RMFAIL"),
+ DEF_VALS2(XAER_DUPID, "XAER_DUPID"),
+ DEF_VALS2(XAER_OUTSIDE, "XAER_OUTSIDE"),
DEF_VALSE;
DEF_VALSB(StructID)
- DEF_VALS2(STRUCTID_CIH, MQ_TEXT_CIH),
- DEF_VALS2(STRUCTID_DH, MQ_TEXT_DH),
- DEF_VALS2(STRUCTID_DLH, MQ_TEXT_DLH),
- DEF_VALS2(STRUCTID_GMO, MQ_TEXT_GMO),
- DEF_VALS2(STRUCTID_ID, MQ_TEXT_ID),
- DEF_VALS2(STRUCTID_IIH, MQ_TEXT_IIH),
- DEF_VALS2(STRUCTID_MD, MQ_TEXT_MD),
- DEF_VALS2(STRUCTID_MDE, MQ_TEXT_MDE),
- DEF_VALS2(STRUCTID_MSH, MQ_TEXT_MSH),
- DEF_VALS2(STRUCTID_OD, MQ_TEXT_OD),
- DEF_VALS2(STRUCTID_PMO, MQ_TEXT_PMO),
- DEF_VALS2(STRUCTID_RMH, MQ_TEXT_RMH),
- DEF_VALS2(STRUCTID_TM, MQ_TEXT_TM),
- DEF_VALS2(STRUCTID_TMC2, MQ_TEXT_TMC2),
- DEF_VALS2(STRUCTID_CAUT, MQ_TEXT_CAUT),
- DEF_VALS2(STRUCTID_TSH, MQ_TEXT_TSH),
- DEF_VALS2(STRUCTID_TSHC, MQ_TEXT_TSHC),
- DEF_VALS2(STRUCTID_TSHM, MQ_TEXT_TSHM),
- DEF_VALS2(STRUCTID_UID, MQ_TEXT_UID),
- DEF_VALS2(STRUCTID_WIH, MQ_TEXT_WIH),
- DEF_VALS2(STRUCTID_XQH, MQ_TEXT_XQH),
- DEF_VALS2(STRUCTID_SPQU , MQ_TEXT_SPQU),
- DEF_VALS2(STRUCTID_SPQI , MQ_TEXT_SPQI),
- DEF_VALS2(STRUCTID_SPQO , MQ_TEXT_SPQO),
- DEF_VALS2(STRUCTID_SPPU , MQ_TEXT_SPPU),
- DEF_VALS2(STRUCTID_SPPI , MQ_TEXT_SPPI),
- DEF_VALS2(STRUCTID_SPPO , MQ_TEXT_SPPO),
- DEF_VALS2(STRUCTID_SPGU , MQ_TEXT_SPGU),
- DEF_VALS2(STRUCTID_SPGI , MQ_TEXT_SPGI),
- DEF_VALS2(STRUCTID_SPGO , MQ_TEXT_SPGO),
- DEF_VALS2(STRUCTID_SPAU , MQ_TEXT_SPAU),
- DEF_VALS2(STRUCTID_SPAI , MQ_TEXT_SPAI),
- DEF_VALS2(STRUCTID_SPAO , MQ_TEXT_SPAO),
- DEF_VALS2(STRUCTID_SPOU , MQ_TEXT_SPOU),
- DEF_VALS2(STRUCTID_SPOI , MQ_TEXT_SPOI),
- DEF_VALS2(STRUCTID_SPOO , MQ_TEXT_SPOO),
- DEF_VALS2(STRUCTID_LPOO , MQ_TEXT_LPOO),
- DEF_VALS2(STRUCTID_FOPA , MQ_TEXT_FOPA),
- DEF_VALS2(STRUCTID_FCNO , MQ_TEXT_FCNO),
- DEF_VALS2(STRUCTID_CIH_EBCDIC, MQ_TEXT_CIH),
- DEF_VALS2(STRUCTID_DH_EBCDIC, MQ_TEXT_DH),
- DEF_VALS2(STRUCTID_DLH_EBCDIC, MQ_TEXT_DLH),
- DEF_VALS2(STRUCTID_GMO_EBCDIC, MQ_TEXT_GMO),
- DEF_VALS2(STRUCTID_ID_EBCDIC, MQ_TEXT_ID),
- DEF_VALS2(STRUCTID_IIH_EBCDIC, MQ_TEXT_IIH),
- DEF_VALS2(STRUCTID_MD_EBCDIC, MQ_TEXT_MD),
- DEF_VALS2(STRUCTID_MDE_EBCDIC, MQ_TEXT_MDE),
- DEF_VALS2(STRUCTID_OD_EBCDIC, MQ_TEXT_OD),
- DEF_VALS2(STRUCTID_PMO_EBCDIC, MQ_TEXT_PMO),
- DEF_VALS2(STRUCTID_RMH_EBCDIC, MQ_TEXT_RMH),
- DEF_VALS2(STRUCTID_TM_EBCDIC, MQ_TEXT_TM),
- DEF_VALS2(STRUCTID_TMC2_EBCDIC, MQ_TEXT_TMC2),
- DEF_VALS2(STRUCTID_CAUT_EBCDIC, MQ_TEXT_CAUT),
- DEF_VALS2(STRUCTID_TSH_EBCDIC, MQ_TEXT_TSH),
- DEF_VALS2(STRUCTID_TSHC_EBCDIC, MQ_TEXT_TSHC),
- DEF_VALS2(STRUCTID_TSHM_EBCDIC, MQ_TEXT_TSHM),
- DEF_VALS2(STRUCTID_UID_EBCDIC, MQ_TEXT_UID),
- DEF_VALS2(STRUCTID_WIH_EBCDIC, MQ_TEXT_WIH),
- DEF_VALS2(STRUCTID_XQH_EBCDIC, MQ_TEXT_XQH),
- DEF_VALS2(STRUCTID_SPQU_EBCDIC, MQ_TEXT_SPQU),
- DEF_VALS2(STRUCTID_SPQI_EBCDIC, MQ_TEXT_SPQI),
- DEF_VALS2(STRUCTID_SPQO_EBCDIC, MQ_TEXT_SPQO),
- DEF_VALS2(STRUCTID_SPPU_EBCDIC, MQ_TEXT_SPPU),
- DEF_VALS2(STRUCTID_SPPI_EBCDIC, MQ_TEXT_SPPI),
- DEF_VALS2(STRUCTID_SPPO_EBCDIC, MQ_TEXT_SPPO),
- DEF_VALS2(STRUCTID_SPGU_EBCDIC, MQ_TEXT_SPGU),
- DEF_VALS2(STRUCTID_SPGI_EBCDIC, MQ_TEXT_SPGI),
- DEF_VALS2(STRUCTID_SPGO_EBCDIC, MQ_TEXT_SPGO),
- DEF_VALS2(STRUCTID_SPAU_EBCDIC, MQ_TEXT_SPAU),
- DEF_VALS2(STRUCTID_SPAI_EBCDIC, MQ_TEXT_SPAI),
- DEF_VALS2(STRUCTID_SPAO_EBCDIC, MQ_TEXT_SPAO),
- DEF_VALS2(STRUCTID_SPOU_EBCDIC, MQ_TEXT_SPOU),
- DEF_VALS2(STRUCTID_SPOI_EBCDIC, MQ_TEXT_SPOI),
- DEF_VALS2(STRUCTID_SPOO_EBCDIC, MQ_TEXT_SPOO),
- DEF_VALS2(STRUCTID_LPOO_EBCDIC, MQ_TEXT_LPOO),
- DEF_VALS2(STRUCTID_FOPA_EBCDIC, MQ_TEXT_FOPA),
- DEF_VALS2(STRUCTID_FCNO_EBCDIC , MQ_TEXT_FCNO),
+ DEF_VALS2(STRUCTID_CIH, MQ_TEXT_CIH),
+ DEF_VALS2(STRUCTID_DH, MQ_TEXT_DH),
+ DEF_VALS2(STRUCTID_DLH, MQ_TEXT_DLH),
+ DEF_VALS2(STRUCTID_GMO, MQ_TEXT_GMO),
+ DEF_VALS2(STRUCTID_ID, MQ_TEXT_ID),
+ DEF_VALS2(STRUCTID_IIH, MQ_TEXT_IIH),
+ DEF_VALS2(STRUCTID_MD, MQ_TEXT_MD),
+ DEF_VALS2(STRUCTID_MDE, MQ_TEXT_MDE),
+ DEF_VALS2(STRUCTID_MSH, MQ_TEXT_MSH),
+ DEF_VALS2(STRUCTID_OD, MQ_TEXT_OD),
+ DEF_VALS2(STRUCTID_PMO, MQ_TEXT_PMO),
+ DEF_VALS2(STRUCTID_RMH, MQ_TEXT_RMH),
+ DEF_VALS2(STRUCTID_TM, MQ_TEXT_TM),
+ DEF_VALS2(STRUCTID_TMC2, MQ_TEXT_TMC2),
+ DEF_VALS2(STRUCTID_CAUT, MQ_TEXT_CAUT),
+ DEF_VALS2(STRUCTID_TSH, MQ_TEXT_TSH),
+ DEF_VALS2(STRUCTID_TSHC, MQ_TEXT_TSHC),
+ DEF_VALS2(STRUCTID_TSHM, MQ_TEXT_TSHM),
+ DEF_VALS2(STRUCTID_UID, MQ_TEXT_UID),
+ DEF_VALS2(STRUCTID_WIH, MQ_TEXT_WIH),
+ DEF_VALS2(STRUCTID_XQH, MQ_TEXT_XQH),
+ DEF_VALS2(STRUCTID_SPQU , MQ_TEXT_SPQU),
+ DEF_VALS2(STRUCTID_SPQI , MQ_TEXT_SPQI),
+ DEF_VALS2(STRUCTID_SPQO , MQ_TEXT_SPQO),
+ DEF_VALS2(STRUCTID_SPPU , MQ_TEXT_SPPU),
+ DEF_VALS2(STRUCTID_SPPI , MQ_TEXT_SPPI),
+ DEF_VALS2(STRUCTID_SPPO , MQ_TEXT_SPPO),
+ DEF_VALS2(STRUCTID_SPGU , MQ_TEXT_SPGU),
+ DEF_VALS2(STRUCTID_SPGI , MQ_TEXT_SPGI),
+ DEF_VALS2(STRUCTID_SPGO , MQ_TEXT_SPGO),
+ DEF_VALS2(STRUCTID_SPAU , MQ_TEXT_SPAU),
+ DEF_VALS2(STRUCTID_SPAI , MQ_TEXT_SPAI),
+ DEF_VALS2(STRUCTID_SPAO , MQ_TEXT_SPAO),
+ DEF_VALS2(STRUCTID_SPOU , MQ_TEXT_SPOU),
+ DEF_VALS2(STRUCTID_SPOI , MQ_TEXT_SPOI),
+ DEF_VALS2(STRUCTID_SPOO , MQ_TEXT_SPOO),
+ DEF_VALS2(STRUCTID_LPOO , MQ_TEXT_LPOO),
+ DEF_VALS2(STRUCTID_FOPA , MQ_TEXT_FOPA),
+ DEF_VALS2(STRUCTID_FCNO , MQ_TEXT_FCNO),
+ DEF_VALS2(STRUCTID_CIH_EBCDIC, MQ_TEXT_CIH),
+ DEF_VALS2(STRUCTID_DH_EBCDIC, MQ_TEXT_DH),
+ DEF_VALS2(STRUCTID_DLH_EBCDIC, MQ_TEXT_DLH),
+ DEF_VALS2(STRUCTID_GMO_EBCDIC, MQ_TEXT_GMO),
+ DEF_VALS2(STRUCTID_ID_EBCDIC, MQ_TEXT_ID),
+ DEF_VALS2(STRUCTID_IIH_EBCDIC, MQ_TEXT_IIH),
+ DEF_VALS2(STRUCTID_MD_EBCDIC, MQ_TEXT_MD),
+ DEF_VALS2(STRUCTID_MDE_EBCDIC, MQ_TEXT_MDE),
+ DEF_VALS2(STRUCTID_OD_EBCDIC, MQ_TEXT_OD),
+ DEF_VALS2(STRUCTID_PMO_EBCDIC, MQ_TEXT_PMO),
+ DEF_VALS2(STRUCTID_RMH_EBCDIC, MQ_TEXT_RMH),
+ DEF_VALS2(STRUCTID_TM_EBCDIC, MQ_TEXT_TM),
+ DEF_VALS2(STRUCTID_TMC2_EBCDIC, MQ_TEXT_TMC2),
+ DEF_VALS2(STRUCTID_CAUT_EBCDIC, MQ_TEXT_CAUT),
+ DEF_VALS2(STRUCTID_TSH_EBCDIC, MQ_TEXT_TSH),
+ DEF_VALS2(STRUCTID_TSHC_EBCDIC, MQ_TEXT_TSHC),
+ DEF_VALS2(STRUCTID_TSHM_EBCDIC, MQ_TEXT_TSHM),
+ DEF_VALS2(STRUCTID_UID_EBCDIC, MQ_TEXT_UID),
+ DEF_VALS2(STRUCTID_WIH_EBCDIC, MQ_TEXT_WIH),
+ DEF_VALS2(STRUCTID_XQH_EBCDIC, MQ_TEXT_XQH),
+ DEF_VALS2(STRUCTID_SPQU_EBCDIC, MQ_TEXT_SPQU),
+ DEF_VALS2(STRUCTID_SPQI_EBCDIC, MQ_TEXT_SPQI),
+ DEF_VALS2(STRUCTID_SPQO_EBCDIC, MQ_TEXT_SPQO),
+ DEF_VALS2(STRUCTID_SPPU_EBCDIC, MQ_TEXT_SPPU),
+ DEF_VALS2(STRUCTID_SPPI_EBCDIC, MQ_TEXT_SPPI),
+ DEF_VALS2(STRUCTID_SPPO_EBCDIC, MQ_TEXT_SPPO),
+ DEF_VALS2(STRUCTID_SPGU_EBCDIC, MQ_TEXT_SPGU),
+ DEF_VALS2(STRUCTID_SPGI_EBCDIC, MQ_TEXT_SPGI),
+ DEF_VALS2(STRUCTID_SPGO_EBCDIC, MQ_TEXT_SPGO),
+ DEF_VALS2(STRUCTID_SPAU_EBCDIC, MQ_TEXT_SPAU),
+ DEF_VALS2(STRUCTID_SPAI_EBCDIC, MQ_TEXT_SPAI),
+ DEF_VALS2(STRUCTID_SPAO_EBCDIC, MQ_TEXT_SPAO),
+ DEF_VALS2(STRUCTID_SPOU_EBCDIC, MQ_TEXT_SPOU),
+ DEF_VALS2(STRUCTID_SPOI_EBCDIC, MQ_TEXT_SPOI),
+ DEF_VALS2(STRUCTID_SPOO_EBCDIC, MQ_TEXT_SPOO),
+ DEF_VALS2(STRUCTID_LPOO_EBCDIC, MQ_TEXT_LPOO),
+ DEF_VALS2(STRUCTID_FOPA_EBCDIC, MQ_TEXT_FOPA),
+ DEF_VALS2(STRUCTID_FCNO_EBCDIC , MQ_TEXT_FCNO),
DEF_VALSE;
DEF_VALSB(byteorder)
- DEF_VALS2(LITTLE_ENDIAN, "Little endian"),
- DEF_VALS2(BIG_ENDIAN, "Big endian"),
+ DEF_VALS2(LITTLE_ENDIAN, "Little endian"),
+ DEF_VALS2(BIG_ENDIAN, "Big endian"),
DEF_VALSE;
DEF_VALSB(conn_version)
- DEF_VALS2(CONN_VERSION, "MQCONN"),
- DEF_VALS2(CONNX_VERSION, "MQCONNX"),
+ DEF_VALS2(CONN_VERSION, "MQCONN"),
+ DEF_VALS2(CONNX_VERSION, "MQCONNX"),
DEF_VALSE;
DEF_VALSB(sidtype)
- DEF_VALS1(MQSIDT_NONE),
- DEF_VALS1(MQSIDT_NT_SECURITY_ID),
- DEF_VALS1(MQSIDT_WAS_SECURITY_ID),
+ DEF_VALS1(MQSIDT_NONE),
+ DEF_VALS1(MQSIDT_NT_SECURITY_ID),
+ DEF_VALS1(MQSIDT_WAS_SECURITY_ID),
DEF_VALSE;
static gint dissect_mq_encoding(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding)
{
- gchar sEnc[128] = "";
- gchar *pEnc;
- guint uEnc;
-
- if (length == 2)
- {
- uEnc = (gint)tvb_get_guint16_endian(tvb, start, encoding);
- }
- else
- {
- uEnc = tvb_get_guint32_endian(tvb, start, encoding);
- }
- pEnc = sEnc;
+ gchar sEnc[128] = "";
+ gchar *pEnc;
+ guint uEnc;
+
+ if (length == 2)
+ {
+ uEnc = (gint)tvb_get_guint16_endian(tvb, start, encoding);
+ }
+ else
+ {
+ uEnc = tvb_get_guint32_endian(tvb, start, encoding);
+ }
+ pEnc = sEnc;
#define CHECK_ENC(M, T) ((uEnc & M) == T)
#define DOPRT(A) pEnc += g_snprintf(pEnc, (gulong)(sizeof(sEnc)-1-(pEnc-sEnc)), A);
- if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_UNDEFINED))
- {
- DOPRT("FLT_UNDEFINED");
- }
- else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_IEEE_NORMAL))
- {
- DOPRT("FLT_IEEE_NORMAL");
- }
- else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_IEEE_REVERSED))
- {
- DOPRT("FLT_IEEE_REVERSED");
- }
- else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_S390))
- {
- DOPRT("FLT_S390");
- }
- else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_TNS))
- {
- DOPRT("FLT_TNS");
- } else
- {
- DOPRT("FLT_UNKNOWN");
- }
-
- DOPRT("/");
- if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK, MQ_MQENC_DECIMAL_UNDEFINED))
- {
- DOPRT("DEC_UNDEFINED");
- }
- else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK, MQ_MQENC_DECIMAL_NORMAL))
- {
- DOPRT("DEC_NORMAL");
- }
- else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK, MQ_MQENC_DECIMAL_REVERSED))
- {
- DOPRT("DEC_REVERSED");
- }
- else
- {
- DOPRT("DEC_UNKNOWN");
- }
-
- DOPRT("/");
- if (CHECK_ENC(MQ_MQENC_INTEGER_MASK, MQ_MQENC_INTEGER_UNDEFINED))
- {
- DOPRT("INT_UNDEFINED");
- }
- else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK, MQ_MQENC_INTEGER_NORMAL))
- {
- DOPRT("INT_NORMAL");
- }
- else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK, MQ_MQENC_INTEGER_REVERSED))
- {
- DOPRT("INT_REVERSED");
- }
- else
- {
- DOPRT("INT_UNKNOWN");
- }
+ if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_UNDEFINED))
+ {
+ DOPRT("FLT_UNDEFINED");
+ }
+ else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_IEEE_NORMAL))
+ {
+ DOPRT("FLT_IEEE_NORMAL");
+ }
+ else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_IEEE_REVERSED))
+ {
+ DOPRT("FLT_IEEE_REVERSED");
+ }
+ else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_S390))
+ {
+ DOPRT("FLT_S390");
+ }
+ else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_TNS))
+ {
+ DOPRT("FLT_TNS");
+ } else
+ {
+ DOPRT("FLT_UNKNOWN");
+ }
+
+ DOPRT("/");
+ if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK, MQ_MQENC_DECIMAL_UNDEFINED))
+ {
+ DOPRT("DEC_UNDEFINED");
+ }
+ else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK, MQ_MQENC_DECIMAL_NORMAL))
+ {
+ DOPRT("DEC_NORMAL");
+ }
+ else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK, MQ_MQENC_DECIMAL_REVERSED))
+ {
+ DOPRT("DEC_REVERSED");
+ }
+ else
+ {
+ DOPRT("DEC_UNKNOWN");
+ }
+
+ DOPRT("/");
+ if (CHECK_ENC(MQ_MQENC_INTEGER_MASK, MQ_MQENC_INTEGER_UNDEFINED))
+ {
+ DOPRT("INT_UNDEFINED");
+ }
+ else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK, MQ_MQENC_INTEGER_NORMAL))
+ {
+ DOPRT("INT_NORMAL");
+ }
+ else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK, MQ_MQENC_INTEGER_REVERSED))
+ {
+ DOPRT("INT_REVERSED");
+ }
+ else
+ {
+ DOPRT("INT_UNKNOWN");
+ }
#undef CHECK_ENC
#undef DOPRT
- proto_tree_add_uint_format_value(tree, hfindex, tvb, start, length, uEnc,
- "%8x-%d (%s)", uEnc, uEnc, sEnc);
+ proto_tree_add_uint_format_value(tree, hfindex, tvb, start, length, uEnc,
+ "%8x-%d (%s)", uEnc, uEnc, sEnc);
- return length;
+ return length;
}
static gint dissect_mq_MQMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, gint ett_subtree, mq_parm_t *p_mq_parm)
{
- guint uMoOpt;
-
- uMoOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
-
- if (uMoOpt == 0)
- {
- proto_item *ti;
- proto_tree *mq_tree_sub;
- ti = proto_tree_add_item(mq_tree, hf_mq_gmo_matchoptions, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
- proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQMO_NONE);
- }
- else
- {
- proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_gmo_matchoptions, ett_subtree, pf_flds_mtchopt, p_mq_parm->mq_int_enc);
- }
- return 4;
+ guint uMoOpt;
+
+ uMoOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+
+ if (uMoOpt == 0)
+ {
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_gmo_matchoptions, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
+ proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQMO_NONE);
+ }
+ else
+ {
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_gmo_matchoptions, ett_subtree, pf_flds_mtchopt, p_mq_parm->mq_int_enc);
+ }
+ return 4;
}
static gint dissect_mq_LPOO_LPIOPTS(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, gint ett_subtree, mq_parm_t *p_mq_parm)
{
- guint uLpiOpts;
-
- uLpiOpts = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
-
- if (uLpiOpts == 0)
- {
- proto_item *ti;
- proto_tree *mq_tree_sub;
- ti = proto_tree_add_item(mq_tree, hf_mq_lpoo_lpiopts, tvb, offset, 4, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
- proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_LPOOOPT_NONE);
- }
- else
- {
- proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_lpoo_lpiopts, ett_subtree, pf_flds_lpooopt, p_mq_parm->mq_int_enc);
- }
- return 4;
+ guint uLpiOpts;
+
+ uLpiOpts = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+
+ if (uLpiOpts == 0)
+ {
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_lpoo_lpiopts, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
+ proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_LPOOOPT_NONE);
+ }
+ else
+ {
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_lpoo_lpiopts, ett_subtree, pf_flds_lpooopt, p_mq_parm->mq_int_enc);
+ }
+ return 4;
}
static gint dissect_mq_MQGMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, gint ett_subtree, mq_parm_t *p_mq_parm)
{
- guint uGmoOpt;
-
- uGmoOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
-
- if (uGmoOpt == 0)
- {
- proto_item *ti;
- proto_tree *mq_tree_sub;
- ti = proto_tree_add_item(mq_tree, hf_mq_gmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
- proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQGMO_NONE);
- }
- else
- {
- proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_gmo_options, ett_subtree, pf_flds_gmoopt, p_mq_parm->mq_int_enc);
- }
- return 4;
+ guint uGmoOpt;
+
+ uGmoOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+
+ if (uGmoOpt == 0)
+ {
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_gmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
+ proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQGMO_NONE);
+ }
+ else
+ {
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_gmo_options, ett_subtree, pf_flds_gmoopt, p_mq_parm->mq_int_enc);
+ }
+ return 4;
}
static gint dissect_mq_MQPMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, gint ett_subtree, mq_parm_t *p_mq_parm)
{
- guint uPmoOpt;
-
- uPmoOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
-
- if (uPmoOpt == 0)
- {
- proto_item *ti;
- proto_tree *mq_tree_sub;
- ti = proto_tree_add_item(mq_tree, hf_mq_pmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
- proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQPMO_NONE);
- }
- else
- {
- proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_pmo_options, ett_subtree, pf_flds_pmoopt, p_mq_parm->mq_int_enc);
- }
- return 4;
+ guint uPmoOpt;
+
+ uPmoOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+
+ if (uPmoOpt == 0)
+ {
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_pmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
+ proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQPMO_NONE);
+ }
+ else
+ {
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_pmo_options, ett_subtree, pf_flds_pmoopt, p_mq_parm->mq_int_enc);
+ }
+ return 4;
}
static gint dissect_mq_MQOO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, gint ett_subtree, gint hfindex, mq_parm_t *p_mq_parm)
{
- guint uOpenOpt;
-
- uOpenOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
-
- if (uOpenOpt == 0)
- {
- proto_item *ti;
- proto_tree *mq_tree_sub;
- ti = proto_tree_add_item(mq_tree, hfindex, tvb, offset, 4, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
- proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_BIND_READAHEAD_AS_Q_DEF);
- }
- else
- {
- proto_tree_add_bitmask(mq_tree, tvb, offset, hfindex, ett_subtree, pf_flds_opnopt, p_mq_parm->mq_int_enc);
- }
- return 4;
+ guint uOpenOpt;
+
+ uOpenOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+
+ if (uOpenOpt == 0)
+ {
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hfindex, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
+ proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_BIND_READAHEAD_AS_Q_DEF);
+ }
+ else
+ {
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hfindex, ett_subtree, pf_flds_opnopt, p_mq_parm->mq_int_enc);
+ }
+ return 4;
}
static gint dissect_mq_MQCO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, mq_parm_t *p_mq_parm)
{
- guint iCloseOpt;
-
- iCloseOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
-
- if (iCloseOpt == 0)
- {
- proto_item *ti;
- proto_tree *mq_tree_sub;
- ti = proto_tree_add_item(mq_tree, hf_mq_close_options, tvb, offset, 4, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_close_option);
- proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_IMMEDIATE_NONE);
- }
- else
- {
- proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_close_options, ett_mq_close_option, pf_flds_clsopt, ENC_BIG_ENDIAN);
- }
- return 4;
+ guint iCloseOpt;
+
+ iCloseOpt = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+
+ if (iCloseOpt == 0)
+ {
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_close_options, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ mq_tree_sub = proto_item_add_subtree(ti, ett_mq_close_option);
+ proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_IMMEDIATE_NONE);
+ }
+ else
+ {
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_close_options, ett_mq_close_option, pf_flds_clsopt, ENC_BIG_ENDIAN);
+ }
+ return 4;
}
static gint dissect_mq_charv(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iSize, gint idx, guint8 *pStr, mq_parm_t *p_mq_parm)
{
- proto_item *ti;
- proto_tree *mq_tree_sub;
- guint32 lStr;
- guint32 oStr;
- gint32 eStr;
- guint8 *sStr;
- static guint8 sEmpty[] = "[Empty]";
-
- lStr = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
- oStr = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- eStr = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
- if (lStr && oStr)
- {
- sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, oStr, lStr, p_mq_parm->mq_str_enc);
- }
- else
- sStr = NULL;
-
- ti = proto_tree_add_text(tree, tvb, offset, iSize, "%s - %s", pStr, (sStr) ? sStr : sEmpty);
- mq_tree_sub = proto_item_add_subtree(ti, idx);
- proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsptr, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsoffset, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsbufsize, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree_sub, hf_mq_charv_vslength, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsvalue, tvb, oStr, lStr, (eStr == 500) ? ENC_EBCDIC : ENC_ASCII);
-
- return 20;
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ guint32 lStr;
+ guint32 oStr;
+ gint32 eStr;
+ guint8 *sStr;
+ static guint8 sEmpty[] = "[Empty]";
+
+ lStr = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
+ oStr = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ eStr = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ if (lStr && oStr)
+ {
+ sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, oStr, lStr, p_mq_parm->mq_str_enc);
+ }
+ else
+ sStr = NULL;
+
+ ti = proto_tree_add_text(tree, tvb, offset, iSize, "%s - %s", pStr, (sStr) ? sStr : sEmpty);
+ mq_tree_sub = proto_item_add_subtree(ti, idx);
+ proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsptr, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsoffset, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsbufsize, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree_sub, hf_mq_charv_vslength, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsvalue, tvb, oStr, lStr, (eStr == 500) ? ENC_EBCDIC : ENC_ASCII);
+
+ return 20;
}
static gint dissect_mq_pmr(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iNbrRecords, gint offsetPMR, guint32 recFlags, mq_parm_t *p_mq_parm)
{
- gint iSizePMR1 = 0;
- gint iSizePMR = 0;
-
- iSizePMR1 = ((((recFlags & MQ_PMRF_MSG_ID) != 0) * 24)
- +(((recFlags & MQ_PMRF_CORREL_ID) != 0) * 24)
- +(((recFlags & MQ_PMRF_GROUP_ID) != 0) * 24)
- +(((recFlags & MQ_PMRF_FEEDBACK) != 0) * 4)
- +(((recFlags & MQ_PMRF_ACCOUNTING_TOKEN) != 0) * 32));
-
- if (offsetPMR != 0 && iSizePMR1 != 0)
- {
- iSizePMR = iNbrRecords * iSizePMR1;
- if (tvb_length_remaining(tvb, offset) >= iSizePMR)
- {
- if (tree)
- {
- gint iOffsetPMR = 0;
- gint iRecord = 0;
- for (iRecord = 0; iRecord < iNbrRecords; iRecord++)
- {
- proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetPMR, iSizePMR1, MQ_TEXT_PMR);
- proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_pmr);
- if ((recFlags & MQ_PMRF_MSG_ID) != 0)
- {
- proto_tree_add_item(mq_tree, hf_mq_pmr_msgid, tvb, offset + iOffsetPMR, 24, ENC_NA);
- iOffsetPMR += 24;
- }
- if ((recFlags & MQ_PMRF_CORREL_ID) != 0)
- {
- proto_tree_add_item(mq_tree, hf_mq_pmr_correlid, tvb, offset + iOffsetPMR, 24, ENC_NA);
- iOffsetPMR += 24;
- }
- if ((recFlags & MQ_PMRF_GROUP_ID) != 0)
- {
- proto_tree_add_item(mq_tree, hf_mq_pmr_groupid, tvb, offset + iOffsetPMR, 24, ENC_NA);
- iOffsetPMR += 24;
- }
- if ((recFlags & MQ_PMRF_FEEDBACK) != 0)
- {
- proto_tree_add_item(mq_tree, hf_mq_pmr_feedback, tvb, offset + iOffsetPMR, 4, p_mq_parm->mq_int_enc);
- iOffsetPMR += 4;
- }
- if ((recFlags & MQ_PMRF_ACCOUNTING_TOKEN) != 0)
- {
- proto_tree_add_item(mq_tree, hf_mq_pmr_acttoken, tvb, offset + iOffsetPMR, 32, ENC_NA);
- iOffsetPMR += 32;
- }
- }
- }
- }
- else iSizePMR = 0;
- }
- return iSizePMR;
+ gint iSizePMR1 = 0;
+ gint iSizePMR = 0;
+
+ iSizePMR1 = ((((recFlags & MQ_PMRF_MSG_ID) != 0) * 24)
+ +(((recFlags & MQ_PMRF_CORREL_ID) != 0) * 24)
+ +(((recFlags & MQ_PMRF_GROUP_ID) != 0) * 24)
+ +(((recFlags & MQ_PMRF_FEEDBACK) != 0) * 4)
+ +(((recFlags & MQ_PMRF_ACCOUNTING_TOKEN) != 0) * 32));
+
+ if (offsetPMR != 0 && iSizePMR1 != 0)
+ {
+ iSizePMR = iNbrRecords * iSizePMR1;
+ if (tvb_length_remaining(tvb, offset) >= iSizePMR)
+ {
+ if (tree)
+ {
+ gint iOffsetPMR = 0;
+ gint iRecord = 0;
+ for (iRecord = 0; iRecord < iNbrRecords; iRecord++)
+ {
+ proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetPMR, iSizePMR1, MQ_TEXT_PMR);
+ proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_pmr);
+ if ((recFlags & MQ_PMRF_MSG_ID) != 0)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_pmr_msgid, tvb, offset + iOffsetPMR, 24, ENC_NA);
+ iOffsetPMR += 24;
+ }
+ if ((recFlags & MQ_PMRF_CORREL_ID) != 0)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_pmr_correlid, tvb, offset + iOffsetPMR, 24, ENC_NA);
+ iOffsetPMR += 24;
+ }
+ if ((recFlags & MQ_PMRF_GROUP_ID) != 0)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_pmr_groupid, tvb, offset + iOffsetPMR, 24, ENC_NA);
+ iOffsetPMR += 24;
+ }
+ if ((recFlags & MQ_PMRF_FEEDBACK) != 0)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_pmr_feedback, tvb, offset + iOffsetPMR, 4, p_mq_parm->mq_int_enc);
+ iOffsetPMR += 4;
+ }
+ if ((recFlags & MQ_PMRF_ACCOUNTING_TOKEN) != 0)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_pmr_acttoken, tvb, offset + iOffsetPMR, 32, ENC_NA);
+ iOffsetPMR += 32;
+ }
+ }
+ }
+ }
+ else iSizePMR = 0;
+ }
+ return iSizePMR;
}
static gint dissect_mq_or(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iNbrRecords, gint offsetOR, mq_parm_t *p_mq_parm)
{
- gint iSizeOR = 0;
- if (offsetOR != 0)
- {
- iSizeOR = iNbrRecords * 96;
- if (tvb_length_remaining(tvb, offset) >= iSizeOR)
- {
- if (tree)
- {
- gint iOffsetOR = 0;
- gint iRecord = 0;
- for (iRecord = 0; iRecord < iNbrRecords ; iRecord++)
- {
- proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetOR, 96, MQ_TEXT_OR);
- proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_or);
- proto_tree_add_item(mq_tree, hf_mq_or_objname, tvb, offset + iOffsetOR, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_or_objqmgrname, tvb, offset + iOffsetOR + 48, 48, p_mq_parm->mq_str_enc);
- iOffsetOR += 96;
- }
- }
- }
- else iSizeOR = 0;
- }
- return iSizeOR;
+ gint iSizeOR = 0;
+ if (offsetOR != 0)
+ {
+ iSizeOR = iNbrRecords * 96;
+ if (tvb_length_remaining(tvb, offset) >= iSizeOR)
+ {
+ if (tree)
+ {
+ gint iOffsetOR = 0;
+ gint iRecord = 0;
+ for (iRecord = 0; iRecord < iNbrRecords ; iRecord++)
+ {
+ proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetOR, 96, MQ_TEXT_OR);
+ proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_or);
+ proto_tree_add_item(mq_tree, hf_mq_or_objname, tvb, offset + iOffsetOR, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_or_objqmgrname, tvb, offset + iOffsetOR + 48, 48, p_mq_parm->mq_str_enc);
+ iOffsetOR += 96;
+ }
+ }
+ }
+ else iSizeOR = 0;
+ }
+ return iSizeOR;
}
static gint dissect_mq_rr(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iNbrRecords, gint offsetRR, mq_parm_t *p_mq_parm)
{
- gint iSizeRR = 0;
- if (offsetRR != 0)
- {
- iSizeRR = iNbrRecords * 8;
- if (tvb_length_remaining(tvb, offset) >= iSizeRR)
- {
- if (tree)
- {
- gint iOffsetRR = 0;
- gint iRecord = 0;
- for (iRecord = 0; iRecord < iNbrRecords; iRecord++)
- {
- proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetRR, 8, MQ_TEXT_RR);
- proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_rr);
- proto_tree_add_item(mq_tree, hf_mq_rr_compcode, tvb, offset + iOffsetRR, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_rr_reascode, tvb, offset + iOffsetRR + 4, 4, p_mq_parm->mq_int_enc);
- iOffsetRR += 8;
- }
- }
- }
- else iSizeRR = 0;
- }
- return iSizeRR;
+ gint iSizeRR = 0;
+ if (offsetRR != 0)
+ {
+ iSizeRR = iNbrRecords * 8;
+ if (tvb_length_remaining(tvb, offset) >= iSizeRR)
+ {
+ if (tree)
+ {
+ gint iOffsetRR = 0;
+ gint iRecord = 0;
+ for (iRecord = 0; iRecord < iNbrRecords; iRecord++)
+ {
+ proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetRR, 8, MQ_TEXT_RR);
+ proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_rr);
+ proto_tree_add_item(mq_tree, hf_mq_rr_compcode, tvb, offset + iOffsetRR, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_rr_reascode, tvb, offset + iOffsetRR + 4, 4, p_mq_parm->mq_int_enc);
+ iOffsetRR += 8;
+ }
+ }
+ }
+ else iSizeRR = 0;
+ }
+ return iSizeRR;
}
static gint dissect_mq_gmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, mq_parm_t *p_mq_parm)
{
- gint iSize = 0;
-
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (p_mq_parm->mq_strucID == MQ_STRUCTID_GMO || p_mq_parm->mq_strucID == MQ_STRUCTID_GMO_EBCDIC)
- {
- guint32 iVersion = 0;
- iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- /* Compute length according to version */
- switch (iVersion)
- {
- case 1: iSize = 72; break;
- case 2: iSize = 80; break;
- case 3: iSize = 100; break;
- }
-
- if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
- {
- guint8 *sQueue;
- sQueue = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 24, 48, p_mq_parm->mq_str_enc);
- if (strip_trailing_blanks(sQueue, 48) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " Q=%s", sQueue);
- }
-
- if (tree)
- {
- proto_tree *mq_tree;
- proto_item *ti;
-
- ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_GMO);
- mq_tree = proto_item_add_subtree(ti, ett_mq_gmo);
-
- proto_tree_add_item(mq_tree, hf_mq_gmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_gmo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
-
- dissect_mq_MQGMO(tvb, mq_tree, offset + 8, ett_mq_gmo_option, p_mq_parm);
-
- proto_tree_add_item(mq_tree, hf_mq_gmo_waitinterval, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_gmo_signal1, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_gmo_signal2, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_gmo_resolvqname, tvb, offset + 24, 48, p_mq_parm->mq_str_enc);
-
- if (iVersion >= 2)
- {
- /*proto_tree_add_item(mq_tree, hf_mq_gmo_matchoptions, tvb, offset + 72, 4, ENC_BIG_ENDIAN);*/
- dissect_mq_MQMO(tvb, mq_tree, offset + 8, ett_mq_gmo_matchoption, p_mq_parm);
-
- proto_tree_add_item(mq_tree, hf_mq_gmo_groupstatus, tvb, offset + 76, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_gmo_segmstatus, tvb, offset + 77, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_gmo_segmentation, tvb, offset + 78, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_gmo_reserved, tvb, offset + 79, 1, ENC_BIG_ENDIAN);
- }
-
- if (iVersion >= 3)
- {
- proto_tree_add_item(mq_tree, hf_mq_gmo_msgtoken, tvb, offset + 80, 16, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_gmo_returnedlen, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
- }
- }
- }
- }
- return iSize;
+ gint iSize = 0;
+
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ if (p_mq_parm->mq_strucID == MQ_STRUCTID_GMO || p_mq_parm->mq_strucID == MQ_STRUCTID_GMO_EBCDIC)
+ {
+ guint32 iVersion = 0;
+ iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ /* Compute length according to version */
+ switch (iVersion)
+ {
+ case 1: iSize = 72; break;
+ case 2: iSize = 80; break;
+ case 3: iSize = 100; break;
+ }
+
+ if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
+ {
+ guint8 *sQueue;
+ sQueue = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 24, 48, p_mq_parm->mq_str_enc);
+ if (strip_trailing_blanks(sQueue, 48) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Q=%s", sQueue);
+ }
+
+ if (tree)
+ {
+ proto_tree *mq_tree;
+ proto_item *ti;
+
+ ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_GMO);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_gmo);
+
+ proto_tree_add_item(mq_tree, hf_mq_gmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+
+ dissect_mq_MQGMO(tvb, mq_tree, offset + 8, ett_mq_gmo_option, p_mq_parm);
+
+ proto_tree_add_item(mq_tree, hf_mq_gmo_waitinterval, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_signal1, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_signal2, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_resolvqname, tvb, offset + 24, 48, p_mq_parm->mq_str_enc);
+
+ if (iVersion >= 2)
+ {
+ /*proto_tree_add_item(mq_tree, hf_mq_gmo_matchoptions, tvb, offset + 72, 4, ENC_BIG_ENDIAN);*/
+ dissect_mq_MQMO(tvb, mq_tree, offset + 8, ett_mq_gmo_matchoption, p_mq_parm);
+
+ proto_tree_add_item(mq_tree, hf_mq_gmo_groupstatus, tvb, offset + 76, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_segmstatus, tvb, offset + 77, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_segmentation, tvb, offset + 78, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_reserved, tvb, offset + 79, 1, ENC_BIG_ENDIAN);
+ }
+
+ if (iVersion >= 3)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_gmo_msgtoken, tvb, offset + 80, 16, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_returnedlen, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ }
+ }
+ return iSize;
}
static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, mq_parm_t *p_mq_parm, gint *iDistributionListSize)
{
- gint iSize = 0;
-
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (p_mq_parm->mq_strucID == MQ_STRUCTID_PMO || p_mq_parm->mq_strucID == MQ_STRUCTID_PMO_EBCDIC)
- {
- guint32 iVersion = 0;
- iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- /* Compute length according to version */
- switch (iVersion)
- {
- case 1: iSize = 128; break;
- case 2: iSize = 152;break;
- }
-
- if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
- {
- guint8 *sQueue;
-
- sQueue = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 32, 48, p_mq_parm->mq_str_enc);
- if (strip_trailing_blanks(sQueue, 48) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " Q=%s", sQueue);
- }
-
- if (tree)
- {
- proto_tree *mq_tree;
- proto_item *ti;
-
- ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_PMO);
- mq_tree = proto_item_add_subtree(ti, ett_mq_pmo);
- proto_tree_add_item(mq_tree, hf_mq_pmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
-
- dissect_mq_MQPMO(tvb, mq_tree, offset + 8, ett_mq_pmo_option, p_mq_parm);
-
- proto_tree_add_item(mq_tree, hf_mq_pmo_timeout, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_context, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_knowndstcnt, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_unkndstcnt, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_invaldstcnt, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_resolvqname, tvb, offset + 32, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_resolvqmgr, tvb, offset + 80, 48, p_mq_parm->mq_str_enc);
-
- if (iVersion >= 2)
- {
- proto_tree_add_item(mq_tree, hf_mq_pmo_recspresent, tvb, offset + 128, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecfld, tvb, offset + 132, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecofs, tvb, offset + 136, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_resprecofs, tvb, offset + 140, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecptr, tvb, offset + 144, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_pmo_resprecptr, tvb, offset + 148, 4, p_mq_parm->mq_int_enc);
- }
- }
- if (iVersion >= 2)
- {
- gint iNbrRecords = 0;
- guint32 iRecFlags = 0;
-
- iNbrRecords = tvb_get_guint32_endian(tvb, offset + 128, p_mq_parm->mq_int_enc);
- iRecFlags = tvb_get_guint32_endian(tvb, offset + 132, p_mq_parm->mq_int_enc);
-
- if (iNbrRecords > 0)
- {
- gint iOffsetPMR = 0;
- gint iOffsetRR = 0;
-
- *iDistributionListSize = iNbrRecords;
- iOffsetPMR = tvb_get_guint32_endian(tvb, offset + 136, p_mq_parm->mq_int_enc);
- iOffsetRR = tvb_get_guint32_endian(tvb, offset + 140, p_mq_parm->mq_int_enc);
- iSize += dissect_mq_pmr(tvb, tree, offset + iSize, iNbrRecords, iOffsetPMR, iRecFlags, p_mq_parm);
- iSize += dissect_mq_rr(tvb, tree, offset + iSize, iNbrRecords, iOffsetRR, p_mq_parm);
- }
- }
- }
- }
- return iSize;
+ gint iSize = 0;
+
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ if (p_mq_parm->mq_strucID == MQ_STRUCTID_PMO || p_mq_parm->mq_strucID == MQ_STRUCTID_PMO_EBCDIC)
+ {
+ guint32 iVersion = 0;
+ iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ /* Compute length according to version */
+ switch (iVersion)
+ {
+ case 1: iSize = 128; break;
+ case 2: iSize = 152;break;
+ }
+
+ if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
+ {
+ guint8 *sQueue;
+
+ sQueue = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 32, 48, p_mq_parm->mq_str_enc);
+ if (strip_trailing_blanks(sQueue, 48) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Q=%s", sQueue);
+ }
+
+ if (tree)
+ {
+ proto_tree *mq_tree;
+ proto_item *ti;
+
+ ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_PMO);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_pmo);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+
+ dissect_mq_MQPMO(tvb, mq_tree, offset + 8, ett_mq_pmo_option, p_mq_parm);
+
+ proto_tree_add_item(mq_tree, hf_mq_pmo_timeout, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_context, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_knowndstcnt, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_unkndstcnt, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_invaldstcnt, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_resolvqname, tvb, offset + 32, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_resolvqmgr, tvb, offset + 80, 48, p_mq_parm->mq_str_enc);
+
+ if (iVersion >= 2)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_pmo_recspresent, tvb, offset + 128, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecfld, tvb, offset + 132, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecofs, tvb, offset + 136, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_resprecofs, tvb, offset + 140, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecptr, tvb, offset + 144, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_resprecptr, tvb, offset + 148, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ if (iVersion >= 2)
+ {
+ gint iNbrRecords = 0;
+ guint32 iRecFlags = 0;
+
+ iNbrRecords = tvb_get_guint32_endian(tvb, offset + 128, p_mq_parm->mq_int_enc);
+ iRecFlags = tvb_get_guint32_endian(tvb, offset + 132, p_mq_parm->mq_int_enc);
+
+ if (iNbrRecords > 0)
+ {
+ gint iOffsetPMR = 0;
+ gint iOffsetRR = 0;
+
+ *iDistributionListSize = iNbrRecords;
+ iOffsetPMR = tvb_get_guint32_endian(tvb, offset + 136, p_mq_parm->mq_int_enc);
+ iOffsetRR = tvb_get_guint32_endian(tvb, offset + 140, p_mq_parm->mq_int_enc);
+ iSize += dissect_mq_pmr(tvb, tree, offset + iSize, iNbrRecords, iOffsetPMR, iRecFlags, p_mq_parm);
+ iSize += dissect_mq_rr(tvb, tree, offset + iSize, iNbrRecords, iOffsetRR, p_mq_parm);
+ }
+ }
+ }
+ }
+ return iSize;
}
static gint dissect_mq_od(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, mq_parm_t *p_mq_parm, gint *iDistributionListSize)
{
- gint iSize = 0;
-
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (p_mq_parm->mq_strucID == MQ_STRUCTID_OD || p_mq_parm->mq_strucID == MQ_STRUCTID_OD_EBCDIC)
- {
- /* The OD struct can be present in several messages at different levels */
- guint32 iVersion = 0;
- iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- /* Compute length according to version */
- switch (iVersion)
- {
- case 1: iSize = 168; break;
- case 2: iSize = 200; break;
- case 3: iSize = 336; break;
- case 4: iSize = 336+3*20+4; break;
- }
-
- if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
- {
- gint iNbrRecords = 0;
- guint8 *sObj;
- guint32 uTyp;
-
- if (iVersion >= 2)
- iNbrRecords = tvb_get_guint32_endian(tvb, offset + 168, p_mq_parm->mq_int_enc);
-
- uTyp = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
- sObj = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
- col_append_fstr(pinfo->cinfo, COL_INFO, " Typ=%s", try_val_to_str(uTyp, GET_VALSV(objtype)));
- if (strip_trailing_blanks(sObj, 48) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " Obj=%s", sObj);
- }
-
- if (tree)
- {
- proto_tree *mq_tree;
- proto_item *ti;
-
- ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_OD);
- mq_tree = proto_item_add_subtree(ti, ett_mq_od);
-
- proto_tree_add_item(mq_tree, hf_mq_od_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_objecttype, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_objectname, tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_objqmgrname, tvb, offset + 60, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_dynqname, tvb, offset + 108, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_altuserid, tvb, offset + 156, 12, p_mq_parm->mq_str_enc);
-
- if (iVersion >= 2)
- {
- proto_tree_add_item(mq_tree, hf_mq_od_recspresent, tvb, offset + 168, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_knowndstcnt, tvb, offset + 172, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_unknowdstcnt, tvb, offset + 176, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_invaldstcnt, tvb, offset + 180, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_objrecofs, tvb, offset + 184, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_resprecofs, tvb, offset + 188, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_objrecptr, tvb, offset + 192, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_resprecptr, tvb, offset + 196, 4, p_mq_parm->mq_int_enc);
- }
- if (iVersion >= 3)
- {
- proto_tree_add_item(mq_tree, hf_mq_od_altsecurid, tvb, offset + 200, 40, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_resolvqname, tvb, offset + 240, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_od_resolvqmgrnm, tvb, offset + 288, 48, p_mq_parm->mq_str_enc);
- }
- if (iVersion >= 4)
- {
- dissect_mq_charv(tvb, mq_tree, offset+336, 20, ett_mq_od_objstr, (guint8 *)"Object string", p_mq_parm);
- dissect_mq_charv(tvb, mq_tree, offset+356, 20, ett_mq_od_selstr, (guint8 *)"Selection string", p_mq_parm);
- dissect_mq_charv(tvb, mq_tree, offset+376, 20, ett_mq_od_resobjstr, (guint8 *)"Resolved object string", p_mq_parm);
- proto_tree_add_item(mq_tree, hf_mq_od_resolvobjtyp, tvb, offset + 396, 4, p_mq_parm->mq_int_enc);
- }
- }
- if (iNbrRecords > 0)
- {
- gint iOffsetOR = 0;
- gint iOffsetRR = 0;
-
- *iDistributionListSize = iNbrRecords;
- iOffsetOR = tvb_get_guint32_endian(tvb, offset + 184, p_mq_parm->mq_int_enc);
- iOffsetRR = tvb_get_guint32_endian(tvb, offset + 188, p_mq_parm->mq_int_enc);
-
- iSize += dissect_mq_or(tvb, tree, offset, iNbrRecords, iOffsetOR, p_mq_parm);
- iSize += dissect_mq_rr(tvb, tree, offset, iNbrRecords, iOffsetRR, p_mq_parm);
- }
- }
- }
- return iSize;
+ gint iSize = 0;
+
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ if (p_mq_parm->mq_strucID == MQ_STRUCTID_OD || p_mq_parm->mq_strucID == MQ_STRUCTID_OD_EBCDIC)
+ {
+ /* The OD struct can be present in several messages at different levels */
+ guint32 iVersion = 0;
+ iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ /* Compute length according to version */
+ switch (iVersion)
+ {
+ case 1: iSize = 168; break;
+ case 2: iSize = 200; break;
+ case 3: iSize = 336; break;
+ case 4: iSize = 336+3*20+4; break;
+ }
+
+ if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
+ {
+ gint iNbrRecords = 0;
+ guint8 *sObj;
+ guint32 uTyp;
+
+ if (iVersion >= 2)
+ iNbrRecords = tvb_get_guint32_endian(tvb, offset + 168, p_mq_parm->mq_int_enc);
+
+ uTyp = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
+ sObj = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Typ=%s", try_val_to_str(uTyp, GET_VALSV(objtype)));
+ if (strip_trailing_blanks(sObj, 48) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Obj=%s", sObj);
+ }
+
+ if (tree)
+ {
+ proto_tree *mq_tree;
+ proto_item *ti;
+
+ ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_OD);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_od);
+
+ proto_tree_add_item(mq_tree, hf_mq_od_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_objecttype, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_objectname, tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_objqmgrname, tvb, offset + 60, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_dynqname, tvb, offset + 108, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_altuserid, tvb, offset + 156, 12, p_mq_parm->mq_str_enc);
+
+ if (iVersion >= 2)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_od_recspresent, tvb, offset + 168, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_knowndstcnt, tvb, offset + 172, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_unknowdstcnt, tvb, offset + 176, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_invaldstcnt, tvb, offset + 180, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_objrecofs, tvb, offset + 184, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_resprecofs, tvb, offset + 188, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_objrecptr, tvb, offset + 192, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_resprecptr, tvb, offset + 196, 4, p_mq_parm->mq_int_enc);
+ }
+ if (iVersion >= 3)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_od_altsecurid, tvb, offset + 200, 40, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_resolvqname, tvb, offset + 240, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_resolvqmgrnm, tvb, offset + 288, 48, p_mq_parm->mq_str_enc);
+ }
+ if (iVersion >= 4)
+ {
+ dissect_mq_charv(tvb, mq_tree, offset+336, 20, ett_mq_od_objstr, (guint8 *)"Object string", p_mq_parm);
+ dissect_mq_charv(tvb, mq_tree, offset+356, 20, ett_mq_od_selstr, (guint8 *)"Selection string", p_mq_parm);
+ dissect_mq_charv(tvb, mq_tree, offset+376, 20, ett_mq_od_resobjstr, (guint8 *)"Resolved object string", p_mq_parm);
+ proto_tree_add_item(mq_tree, hf_mq_od_resolvobjtyp, tvb, offset + 396, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ if (iNbrRecords > 0)
+ {
+ gint iOffsetOR = 0;
+ gint iOffsetRR = 0;
+
+ *iDistributionListSize = iNbrRecords;
+ iOffsetOR = tvb_get_guint32_endian(tvb, offset + 184, p_mq_parm->mq_int_enc);
+ iOffsetRR = tvb_get_guint32_endian(tvb, offset + 188, p_mq_parm->mq_int_enc);
+
+ iSize += dissect_mq_or(tvb, tree, offset, iNbrRecords, iOffsetOR, p_mq_parm);
+ iSize += dissect_mq_rr(tvb, tree, offset, iNbrRecords, iOffsetRR, p_mq_parm);
+ }
+ }
+ }
+ return iSize;
}
static gint dissect_mq_xid(tvbuff_t *tvb, proto_tree *tree, mq_parm_t *p_mq_parm, gint offset)
{
- gint iSizeXid = 0;
- if (tvb_length_remaining(tvb, offset) >= 6)
- {
- guint8 iXidLength = 0;
- guint8 iBqLength = 0;
-
- iXidLength = tvb_get_guint8(tvb, offset + 4);
- iBqLength = tvb_get_guint8(tvb, offset + 5);
- iSizeXid = 6 + iXidLength + iBqLength;
-
- if (tvb_length_remaining(tvb, offset) >= iSizeXid)
- {
- if (tree)
- {
- proto_tree *mq_tree;
- proto_item *ti;
-
- ti = proto_tree_add_text(tree, tvb, offset, iSizeXid, MQ_TEXT_XID);
- mq_tree = proto_item_add_subtree(ti, ett_mq_xa_xid);
-
- proto_tree_add_item(mq_tree, hf_mq_xa_xid_formatid, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_xa_xid_glbxid_len, tvb, offset + 4, 1, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_xa_xid_brq_length, tvb, offset + 5, 1, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_xa_xid_globalxid, tvb, offset + 6, iXidLength, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_xa_xid_brq, tvb, offset + 6 + iXidLength, iBqLength, ENC_NA);
- }
- iSizeXid += (4 - (iSizeXid % 4)) % 4; /* Pad for alignment with 4 byte word boundary */
- if (tvb_length_remaining(tvb, offset) < iSizeXid)
- iSizeXid = 0;
- }
- else iSizeXid = 0;
- }
- return iSizeXid;
+ gint iSizeXid = 0;
+ if (tvb_length_remaining(tvb, offset) >= 6)
+ {
+ guint8 iXidLength = 0;
+ guint8 iBqLength = 0;
+
+ iXidLength = tvb_get_guint8(tvb, offset + 4);
+ iBqLength = tvb_get_guint8(tvb, offset + 5);
+ iSizeXid = 6 + iXidLength + iBqLength;
+
+ if (tvb_length_remaining(tvb, offset) >= iSizeXid)
+ {
+ if (tree)
+ {
+ proto_tree *mq_tree;
+ proto_item *ti;
+
+ ti = proto_tree_add_text(tree, tvb, offset, iSizeXid, MQ_TEXT_XID);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_xa_xid);
+
+ proto_tree_add_item(mq_tree, hf_mq_xa_xid_formatid, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_xa_xid_glbxid_len, tvb, offset + 4, 1, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_xa_xid_brq_length, tvb, offset + 5, 1, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_xa_xid_globalxid, tvb, offset + 6, iXidLength, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_xa_xid_brq, tvb, offset + 6 + iXidLength, iBqLength, ENC_NA);
+ }
+ iSizeXid += (4 - (iSizeXid % 4)) % 4; /* Pad for alignment with 4 byte word boundary */
+ if (tvb_length_remaining(tvb, offset) < iSizeXid)
+ iSizeXid = 0;
+ }
+ else iSizeXid = 0;
+ }
+ return iSizeXid;
}
static gint dissect_mq_sid(tvbuff_t *tvb, proto_tree *tree, mq_parm_t *p_mq_parm, gint offset)
{
- guint8 iSIDL;
- guint8 iSID;
- guint8 *sid_str;
- gint bOffset = offset;
-
- iSIDL = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_mq_sidlen, tvb, offset, 1, p_mq_parm->mq_int_enc);
- offset++;
- if (iSIDL > 0)
- {
- iSID = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_mq_sidtyp, tvb, offset, 1, p_mq_parm->mq_int_enc);
- offset++;
- if (iSID == MQ_MQSIDT_NT_SECURITY_ID)
- {
- offset = dissect_nt_sid(tvb, offset, tree, "SID", (char **)&sid_str, -1);
- }
- else
- {
- proto_tree_add_item(tree, hf_mq_securityid, tvb, offset, 40, ENC_NA);
- offset += 40;
- }
- }
- return offset - bOffset;
+ guint8 iSIDL;
+ guint8 iSID;
+ guint8 *sid_str;
+ gint bOffset = offset;
+
+ iSIDL = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mq_sidlen, tvb, offset, 1, p_mq_parm->mq_int_enc);
+ offset++;
+ if (iSIDL > 0)
+ {
+ iSID = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mq_sidtyp, tvb, offset, 1, p_mq_parm->mq_int_enc);
+ offset++;
+ if (iSID == MQ_MQSIDT_NT_SECURITY_ID)
+ {
+ offset = dissect_nt_sid(tvb, offset, tree, "SID", (char **)&sid_str, -1);
+ }
+ else
+ {
+ proto_tree_add_item(tree, hf_mq_securityid, tvb, offset, 40, ENC_NA);
+ offset += 40;
+ }
+ }
+ return offset - bOffset;
}
static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_tree, gint offset, mq_parm_t *p_mq_parm)
{
- guint8 iFAPLvl;
- gint iSize;
-
- iFAPLvl = tvb_get_guint8(tvb, offset + 4);
-
- if (iFAPLvl < 4)
- iSize = 44;
- else if (iFAPLvl < 10)
- iSize = 102;
- else
- iSize = 208;
-
- if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
- {
- guint8 *sChannel;
- sChannel = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 24, 20, p_mq_parm->mq_str_enc);
- col_append_fstr(pinfo->cinfo, COL_INFO, " FAPLvl=%d", iFAPLvl);
- if (strip_trailing_blanks(sChannel, 20) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, ", CHL=%s", sChannel);
- }
- if (iFAPLvl >= 4)
- {
- guint8 *sQMgr;
- sQMgr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 48, p_mq_parm->mq_str_enc);
- if (strip_trailing_blanks(sQMgr, 48) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, ", QM=%s", sQMgr);
- }
- p_mq_parm->mq_id_ccsid.ccsid = (guint32)tvb_get_guint16_endian(tvb, offset + 46, p_mq_parm->mq_int_enc);
- }
- if (mqroot_tree)
- {
- proto_item *ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_ID);
- proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_id);
-
- proto_tree_add_item(mq_tree, hf_mq_id_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_FapLevel, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
-
- /* ID Capability flags 1 */
- proto_tree_add_bitmask(mq_tree, tvb, offset + 44, hf_mq_id_icf1, ett_mq_id_icf1, pf_flds_icf1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_id_Eicf1, tvb, offset + 6, 1, ENC_BIG_ENDIAN);
-
- /* Error flags 1*/
- proto_tree_add_bitmask(mq_tree, tvb, offset + 7, hf_mq_id_ief1, ett_mq_id_ief1, pf_flds_ief1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(mq_tree, hf_mq_id_Reserved, tvb, offset + 8, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_MaxMsgBatch, tvb, offset + 10, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_MaxTrSize, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_MaxMsgSize, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_SeqWrapVal, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_channel, tvb, offset + 24, 20, p_mq_parm->mq_str_enc);
-
- if (iFAPLvl >= 4)
- {
- /* ID Capability flags 2 */
- proto_tree_add_bitmask(mq_tree, tvb, offset + 44, hf_mq_id_icf2, ett_mq_id_icf2, pf_flds_icf2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_id_Eicf2, tvb, offset + 45, 1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(mq_tree, hf_mq_id_ccsid , tvb, offset + 46, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_qmgrname , tvb, offset + 48, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_HBInterval, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_EFLLength , tvb, offset + 100, 2, p_mq_parm->mq_int_enc);
- if (iFAPLvl >= 10)
- {
- /* Error flags 2*/
- proto_tree_add_bitmask(mq_tree, tvb, offset + 102, hf_mq_id_ief2, ett_mq_id_ief2, pf_flds_ief2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_id_Reserved1 , tvb, offset + 103, 1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(mq_tree, hf_mq_id_HdrCprsLst, tvb, offset + 104, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_MsgCprsLst, tvb, offset + 106, 16, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_Reserved2 , tvb, offset + 122, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_SSLKeyRst , tvb, offset + 124, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_ConvBySkt , tvb, offset + 128, 4, p_mq_parm->mq_int_enc);
-
- /* ID Capability flags 3 */
- proto_tree_add_bitmask(mq_tree, tvb, offset + 132, hf_mq_id_icf3, ett_mq_id_icf3, pf_flds_icf3, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_id_Eicf3, tvb, offset + 133, 1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(mq_tree, hf_mq_id_Reserved3, tvb, offset + 134, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_ProcessId, tvb, offset + 136, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_ThreadId , tvb, offset + 140, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_TraceId , tvb, offset + 144, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_ProdId , tvb, offset + 148, 12, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_mqmid , tvb, offset + 160, 48, p_mq_parm->mq_str_enc);
- }
- }
- }
- }
- return iSize;
+ guint8 iFAPLvl;
+ gint iSize;
+
+ iFAPLvl = tvb_get_guint8(tvb, offset + 4);
+
+ if (iFAPLvl < 4)
+ iSize = 44;
+ else if (iFAPLvl < 10)
+ iSize = 102;
+ else
+ iSize = 208;
+
+ if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
+ {
+ guint8 *sChannel;
+ sChannel = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 24, 20, p_mq_parm->mq_str_enc);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " FAPLvl=%d", iFAPLvl);
+ if (strip_trailing_blanks(sChannel, 20) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", CHL=%s", sChannel);
+ }
+ if (iFAPLvl >= 4)
+ {
+ guint8 *sQMgr;
+ sQMgr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 48, p_mq_parm->mq_str_enc);
+ if (strip_trailing_blanks(sQMgr, 48) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", QM=%s", sQMgr);
+ }
+ p_mq_parm->mq_id_ccsid.ccsid = (guint32)tvb_get_guint16_endian(tvb, offset + 46, p_mq_parm->mq_int_enc);
+ }
+ if (mqroot_tree)
+ {
+ proto_item *ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_ID);
+ proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_id);
+
+ proto_tree_add_item(mq_tree, hf_mq_id_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_FapLevel, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
+
+ /* ID Capability flags 1 */
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 44, hf_mq_id_icf1, ett_mq_id_icf1, pf_flds_icf1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_id_Eicf1, tvb, offset + 6, 1, ENC_BIG_ENDIAN);
+
+ /* Error flags 1*/
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 7, hf_mq_id_ief1, ett_mq_id_ief1, pf_flds_ief1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_id_Reserved, tvb, offset + 8, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_MaxMsgBatch, tvb, offset + 10, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_MaxTrSize, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_MaxMsgSize, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_SeqWrapVal, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_channel, tvb, offset + 24, 20, p_mq_parm->mq_str_enc);
+
+ if (iFAPLvl >= 4)
+ {
+ /* ID Capability flags 2 */
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 44, hf_mq_id_icf2, ett_mq_id_icf2, pf_flds_icf2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_id_Eicf2, tvb, offset + 45, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_id_ccsid , tvb, offset + 46, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_qmgrname , tvb, offset + 48, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_HBInterval, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_EFLLength , tvb, offset + 100, 2, p_mq_parm->mq_int_enc);
+ if (iFAPLvl >= 10)
+ {
+ /* Error flags 2*/
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 102, hf_mq_id_ief2, ett_mq_id_ief2, pf_flds_ief2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_id_Reserved1 , tvb, offset + 103, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_id_HdrCprsLst, tvb, offset + 104, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_MsgCprsLst, tvb, offset + 106, 16, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_Reserved2 , tvb, offset + 122, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_SSLKeyRst , tvb, offset + 124, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_ConvBySkt , tvb, offset + 128, 4, p_mq_parm->mq_int_enc);
+
+ /* ID Capability flags 3 */
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 132, hf_mq_id_icf3, ett_mq_id_icf3, pf_flds_icf3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_id_Eicf3, tvb, offset + 133, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_id_Reserved3, tvb, offset + 134, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_ProcessId, tvb, offset + 136, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_ThreadId , tvb, offset + 140, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_TraceId , tvb, offset + 144, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_ProdId , tvb, offset + 148, 12, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_mqmid , tvb, offset + 160, 48, p_mq_parm->mq_str_enc);
+ }
+ }
+ }
+ }
+ return iSize;
}
static gint dissect_mq_md(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_parm_t *p_mq_parm, gboolean bDecode)
{
- gint iSize = 0;
-
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (p_mq_parm->mq_strucID == MQ_STRUCTID_MD || p_mq_parm->mq_strucID == MQ_STRUCTID_MD_EBCDIC)
- {
- guint32 iVersion = 0;
- iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- /* Compute length according to version */
- switch (iVersion)
- {
- case 1: iSize = 324; break;
- case 2: iSize = 364; break;
- }
-
- if (bDecode && iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
- {
- p_mq_parm->iOfsEnc = offset + 24;
- p_mq_parm->iOfsCcs = offset + 28;
- p_mq_parm->iOfsFmt = offset + 32;
-
- p_mq_parm->mq_md_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 24, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_md_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 28, p_mq_parm->mq_int_enc);
- if (tree)
- {
- proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_MD);
- proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_md);
-
- proto_tree_add_item(mq_tree, hf_mq_md_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_report, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_msgtype, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_expiry, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_feedback, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
- dissect_mq_encoding(mq_tree, hf_mq_md_encoding, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_ccsid, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_format, tvb, offset + 32, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_priority, tvb, offset + 40, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_persistence, tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_msgid, tvb, offset + 48, 24, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_md_correlid, tvb, offset + 72, 24, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_md_backoutcnt, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_replytoq, tvb, offset + 100, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_replytoqmgr, tvb, offset + 148, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_userid, tvb, offset + 196, 12, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_acttoken, tvb, offset + 208, 32, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_md_appliddata, tvb, offset + 240, 32, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_putappltype, tvb, offset + 272, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_putapplname, tvb, offset + 276, 28, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_putdate, tvb, offset + 304, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_puttime, tvb, offset + 312, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_apporigdata, tvb, offset + 320, 4, p_mq_parm->mq_str_enc);
-
- if (iVersion >= 2)
- {
- proto_tree_add_item(mq_tree, hf_mq_md_groupid, tvb, offset + 324, 24, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_md_msgseqnumber, tvb, offset + 348, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_offset, tvb, offset + 352, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_msgflags, tvb, offset + 356, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_origlen, tvb, offset + 360, 4, p_mq_parm->mq_int_enc);
- }
- }
- }
- }
- return iSize;
+ gint iSize = 0;
+
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ if (p_mq_parm->mq_strucID == MQ_STRUCTID_MD || p_mq_parm->mq_strucID == MQ_STRUCTID_MD_EBCDIC)
+ {
+ guint32 iVersion = 0;
+ iVersion = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ /* Compute length according to version */
+ switch (iVersion)
+ {
+ case 1: iSize = 324; break;
+ case 2: iSize = 364; break;
+ }
+
+ if (bDecode && iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
+ {
+ p_mq_parm->iOfsEnc = offset + 24;
+ p_mq_parm->iOfsCcs = offset + 28;
+ p_mq_parm->iOfsFmt = offset + 32;
+
+ p_mq_parm->mq_md_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 24, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_md_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 28, p_mq_parm->mq_int_enc);
+ if (tree)
+ {
+ proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_MD);
+ proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_md);
+
+ proto_tree_add_item(mq_tree, hf_mq_md_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_report, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_msgtype, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_expiry, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_feedback, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_encoding(mq_tree, hf_mq_md_encoding, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_ccsid, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_format, tvb, offset + 32, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_priority, tvb, offset + 40, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_persistence, tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_msgid, tvb, offset + 48, 24, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_md_correlid, tvb, offset + 72, 24, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_md_backoutcnt, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_replytoq, tvb, offset + 100, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_replytoqmgr, tvb, offset + 148, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_userid, tvb, offset + 196, 12, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_acttoken, tvb, offset + 208, 32, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_md_appliddata, tvb, offset + 240, 32, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_putappltype, tvb, offset + 272, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_putapplname, tvb, offset + 276, 28, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_putdate, tvb, offset + 304, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_puttime, tvb, offset + 312, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_apporigdata, tvb, offset + 320, 4, p_mq_parm->mq_str_enc);
+
+ if (iVersion >= 2)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_md_groupid, tvb, offset + 324, 24, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_md_msgseqnumber, tvb, offset + 348, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_offset, tvb, offset + 352, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_msgflags, tvb, offset + 356, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_origlen, tvb, offset + 360, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ }
+ }
+ return iSize;
}
static gint dissect_mq_fopa(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_parm_t *p_mq_parm)
{
- gint iSize = 0;
-
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (p_mq_parm->mq_strucID == MQ_STRUCTID_FOPA || p_mq_parm->mq_strucID == MQ_STRUCTID_FOPA_EBCDIC)
- {
- iSize = tvb_get_guint32_endian(tvb, offset+8, p_mq_parm->mq_int_enc);
- if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
- {
- if (tree)
- {
- proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_FOPA);
- proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_fopa);
-
- proto_tree_add_item(mq_tree, hf_mq_fopa_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown3, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
- if (iSize > 28)
- {
- proto_tree_add_item(mq_tree, hf_mq_fopa_qprotect, tvb, offset + 28, 48, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown4, tvb, offset + 76, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown5, tvb, offset + 80, 4, p_mq_parm->mq_int_enc);
- }
- }
- }
- }
- return iSize;
+ gint iSize = 0;
+
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ if (p_mq_parm->mq_strucID == MQ_STRUCTID_FOPA || p_mq_parm->mq_strucID == MQ_STRUCTID_FOPA_EBCDIC)
+ {
+ iSize = tvb_get_guint32_endian(tvb, offset+8, p_mq_parm->mq_int_enc);
+ if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
+ {
+ if (tree)
+ {
+ proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_FOPA);
+ proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_fopa);
+
+ proto_tree_add_item(mq_tree, hf_mq_fopa_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_unknown1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_unknown2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_unknown3, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
+ if (iSize > 28)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_fopa_qprotect, tvb, offset + 28, 48, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_unknown4, tvb, offset + 76, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_unknown5, tvb, offset + 80, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ }
+ }
+ return iSize;
}
static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- gint offset = 0;
- guint32 iSegmentLength = 0;
- guint32 iSizePayload = 0;
- gint iSizeMD = 0;
- gboolean bPayload = FALSE;
- gboolean bEBCDIC = FALSE;
- gint iDistributionListSize = 0;
- mq_parm_t *p_mq_parm;
-
- p_mq_parm = wmem_new0(wmem_packet_scope(), mq_parm_t);
-
- p_mq_parm->mq_strucID = MQ_STRUCTID_NULL;
- p_mq_parm->mq_int_enc = ENC_BIG_ENDIAN;
- p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ");
-
- p_mq_parm->iOfsEnc = 0;
- p_mq_parm->iOfsFmt = 0;
- p_mq_parm->iOfsCcs = 0;
- if (tvb_length(tvb) >= 4)
- {
- p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
- if (((p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx ||
- (p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 28)
- {
- proto_tree *mq_tree = NULL;
- proto_tree *mqroot_tree = NULL;
- proto_item *ti = NULL;
-
- /* An MQ packet always starts with this structure*/
- gint iSizeTSH = 28;
- gint iSizeMPF = 0; /* Size Of Multiplexed Field */
-
- if ((p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
- {
- bEBCDIC = TRUE;
- p_mq_parm->mq_str_enc = ENC_EBCDIC|ENC_NA;
- }
-
- iSegmentLength = tvb_get_ntohl(tvb, offset + 4);
-
- if (p_mq_parm->mq_strucID == MQ_STRUCTID_TSHM || p_mq_parm->mq_strucID == MQ_STRUCTID_TSHM_EBCDIC)
- {
- if (tvb_length_remaining(tvb, offset) < 36)
- return;
- iSizeMPF += 8;
- iSizeTSH = 36;
- }
- p_mq_parm->mq_opcode = tvb_get_guint8(tvb, offset + iSizeMPF + 9);
-
- if (p_mq_parm->mq_opcode == MQ_TST_REQUEST_MSGS || p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE)
- {
- p_mq_parm->iOfsEnc = offset + iSizeMPF + 20;
- p_mq_parm->iOfsCcs = offset + iSizeMPF + 24;
- p_mq_parm->iOfsFmt = offset ;
- }
- p_mq_parm->mq_int_enc = (tvb_get_guint8(tvb, offset + iSizeMPF + 8) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
- p_mq_parm->mq_ctlf1 = tvb_get_guint8(tvb, offset + iSizeMPF + 10);
- p_mq_parm->mq_ctlf2 = tvb_get_guint8(tvb, offset + iSizeMPF + 11);
-
- p_mq_parm->mq_tsh_ccsid.encod = tvb_get_guint32_endian(tvb, offset + iSizeMPF + 20, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_tsh_ccsid.ccsid = tvb_get_guint16_endian(tvb, offset + iSizeMPF + 24, p_mq_parm->mq_int_enc);
-
- if (p_mq_parm->mq_tsh_ccsid.ccsid == 500 && !bEBCDIC)
- {
- bEBCDIC = TRUE;
- p_mq_parm->mq_str_enc = ENC_EBCDIC|ENC_NA;
- }
-
- if (!mq_in_reassembly)
- {
- col_clear(pinfo->cinfo, COL_INFO);
- col_append_sep_fstr(pinfo->cinfo, COL_INFO, " | ", "%-17s", val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
- col_set_fence(pinfo->cinfo, COL_INFO);
- }
-
- if (tree)
- {
- if (p_mq_parm->mq_opcode!=MQ_TST_ASYNC_MESSAGE)
- {
- ti = proto_tree_add_item(tree, proto_mq, tvb, offset, -1, ENC_NA);
- proto_item_append_text(ti, " (%s)", val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
- if (bEBCDIC == TRUE)
- proto_item_append_text(ti, " (EBCDIC)");
- mqroot_tree = proto_item_add_subtree(ti, ett_mq);
- }
- else
- {
- mqroot_tree = tree;
- }
-
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeTSH, MQ_TEXT_TSH);
- mq_tree = proto_item_add_subtree(ti, ett_mq_tsh);
-
- proto_tree_add_item(mq_tree, hf_mq_tsh_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_tsh_mqseglen, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
-
- if (iSizeTSH == 36)
- {
- proto_tree_add_item(mq_tree, hf_mq_tsh_convid, tvb, offset + 8, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_tsh_requestid, tvb, offset + 12, 4, ENC_BIG_ENDIAN);
- }
-
- proto_tree_add_item(mq_tree, hf_mq_tsh_byteorder, tvb, offset + iSizeMPF + 8, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_tsh_opcode, tvb, offset + iSizeMPF + 9, 1, ENC_BIG_ENDIAN);
-
- proto_tree_add_bitmask(mq_tree, tvb, offset + iSizeMPF + 10, hf_mq_tsh_ctlflgs1, ett_mq_tsh_tcf, pf_flds_tcf, ENC_BIG_ENDIAN);
- proto_tree_add_bitmask(mq_tree, tvb, offset + iSizeMPF + 11, hf_mq_tsh_ctlflgs2, ett_mq_tsh_tcf2, pf_flds_tcf2, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(mq_tree, hf_mq_tsh_luwid, tvb, offset + iSizeMPF + 12, 8, ENC_NA);
- dissect_mq_encoding(mq_tree, hf_mq_tsh_encoding, tvb, offset + iSizeMPF + 20, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_tsh_ccsid, tvb, offset + iSizeMPF + 24, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_tsh_reserved, tvb, offset + iSizeMPF + 26, 2, p_mq_parm->mq_int_enc);
- }
- offset += iSizeTSH;
-
- /* Now dissect the embedded structures */
- if (tvb_length_remaining(tvb, offset) >= 4)
- {
- p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
- if (((p_mq_parm->mq_ctlf1 & MQ_TCF_FIRST) != 0) || p_mq_parm->mq_opcode < 0x80)
- {
- /* First MQ segment (opcodes below 0x80 never span several TSH) */
- gint iSizeAPI = 16;
- if (p_mq_parm->mq_opcode >= 0x80 && p_mq_parm->mq_opcode <= 0x9F && tvb_length_remaining(tvb, offset) >= 16)
- {
- guint32 iReturnCode = 0;
- guint32 iHdl = 0;
- iReturnCode = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
- iHdl = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
- if (iHdl != 0 && iHdl != 0xffffffff)
- col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x", iHdl);
- if (iReturnCode != 0)
- col_append_fstr(pinfo->cinfo, COL_INFO, " [RC=%d]", iReturnCode);
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeAPI, MQ_TEXT_API);
- mq_tree = proto_item_add_subtree(ti, ett_mq_api);
-
- proto_tree_add_item(mq_tree, hf_mq_api_replylen, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_api_compcode, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_api_reascode, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_api_objecthdl, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- }
- offset += iSizeAPI;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_MSH || p_mq_parm->mq_strucID == MQ_STRUCTID_MSH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 20)
- {
- gint iSize = 20;
- iSizePayload = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
- bPayload = TRUE;
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_MSH);
- mq_tree = proto_item_add_subtree(ti, ett_mq_msh);
-
- proto_tree_add_item(mq_tree, hf_mq_msh_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_msh_seqnum, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msh_datalength, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msh_unknown1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msh_msglength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- }
- offset += iSize;
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_CONAUTH_INFO && tvb_length_remaining(tvb, offset) >= 20)
- {
- gint iSize = 24;
- gint iUsr = 0;
- gint iPsw = 0;
-
- iUsr = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
- iPsw = tvb_get_guint32_endian(tvb, offset + 20, p_mq_parm->mq_int_enc);
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_CAUT);
- mq_tree = proto_item_add_subtree(ti, ett_mq_caut);
-
- proto_tree_add_item(mq_tree, hf_mq_caut_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_AuthType, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_UsrMaxLen, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_PwdMaxLen, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_UsrLength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_PwdLength, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
-
- if (iUsr)
- proto_tree_add_item(mq_tree, hf_mq_caut_usr, tvb, offset + 24, iUsr, p_mq_parm->mq_str_enc);
- if (iPsw)
- proto_tree_add_item(mq_tree, hf_mq_caut_psw, tvb, offset + 24 + iUsr, iPsw, p_mq_parm->mq_str_enc);
+ gint offset = 0;
+ guint32 iSegmentLength = 0;
+ guint32 iSizePayload = 0;
+ gint iSizeMD = 0;
+ gboolean bPayload = FALSE;
+ gboolean bEBCDIC = FALSE;
+ gint iDistributionListSize = 0;
+ mq_parm_t *p_mq_parm;
+
+ p_mq_parm = wmem_new0(wmem_packet_scope(), mq_parm_t);
+
+ p_mq_parm->mq_strucID = MQ_STRUCTID_NULL;
+ p_mq_parm->mq_int_enc = ENC_BIG_ENDIAN;
+ p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ");
+
+ p_mq_parm->iOfsEnc = 0;
+ p_mq_parm->iOfsFmt = 0;
+ p_mq_parm->iOfsCcs = 0;
+ if (tvb_length(tvb) >= 4)
+ {
+ p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
+ if (((p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx ||
+ (p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 28)
+ {
+ proto_tree *mq_tree = NULL;
+ proto_tree *mqroot_tree = NULL;
+ proto_item *ti = NULL;
+
+ /* An MQ packet always starts with this structure*/
+ gint iSizeTSH = 28;
+ gint iSizeMPF = 0; /* Size Of Multiplexed Field */
+
+ if ((p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
+ {
+ bEBCDIC = TRUE;
+ p_mq_parm->mq_str_enc = ENC_EBCDIC|ENC_NA;
+ }
+
+ iSegmentLength = tvb_get_ntohl(tvb, offset + 4);
+
+ if (p_mq_parm->mq_strucID == MQ_STRUCTID_TSHM || p_mq_parm->mq_strucID == MQ_STRUCTID_TSHM_EBCDIC)
+ {
+ if (tvb_length_remaining(tvb, offset) < 36)
+ return;
+ iSizeMPF += 8;
+ iSizeTSH = 36;
+ }
+ p_mq_parm->mq_opcode = tvb_get_guint8(tvb, offset + iSizeMPF + 9);
+
+ if (p_mq_parm->mq_opcode == MQ_TST_REQUEST_MSGS || p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE)
+ {
+ p_mq_parm->iOfsEnc = offset + iSizeMPF + 20;
+ p_mq_parm->iOfsCcs = offset + iSizeMPF + 24;
+ p_mq_parm->iOfsFmt = offset ;
+ }
+ p_mq_parm->mq_int_enc = (tvb_get_guint8(tvb, offset + iSizeMPF + 8) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
+ p_mq_parm->mq_ctlf1 = tvb_get_guint8(tvb, offset + iSizeMPF + 10);
+ p_mq_parm->mq_ctlf2 = tvb_get_guint8(tvb, offset + iSizeMPF + 11);
+
+ p_mq_parm->mq_tsh_ccsid.encod = tvb_get_guint32_endian(tvb, offset + iSizeMPF + 20, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_tsh_ccsid.ccsid = tvb_get_guint16_endian(tvb, offset + iSizeMPF + 24, p_mq_parm->mq_int_enc);
+
+ if (p_mq_parm->mq_tsh_ccsid.ccsid == 500 && !bEBCDIC)
+ {
+ bEBCDIC = TRUE;
+ p_mq_parm->mq_str_enc = ENC_EBCDIC|ENC_NA;
+ }
+
+ if (!mq_in_reassembly)
+ {
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, " | ", "%-17s", val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
+ col_set_fence(pinfo->cinfo, COL_INFO);
+ }
+
+ if (tree)
+ {
+ if (p_mq_parm->mq_opcode!=MQ_TST_ASYNC_MESSAGE)
+ {
+ ti = proto_tree_add_item(tree, proto_mq, tvb, offset, -1, ENC_NA);
+ proto_item_append_text(ti, " (%s)", val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
+ if (bEBCDIC == TRUE)
+ proto_item_append_text(ti, " (EBCDIC)");
+ mqroot_tree = proto_item_add_subtree(ti, ett_mq);
+ }
+ else
+ {
+ mqroot_tree = tree;
+ }
+
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeTSH, MQ_TEXT_TSH);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_tsh);
+
+ proto_tree_add_item(mq_tree, hf_mq_tsh_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_mqseglen, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+
+ if (iSizeTSH == 36)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_tsh_convid, tvb, offset + 8, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_requestid, tvb, offset + 12, 4, ENC_BIG_ENDIAN);
+ }
+
+ proto_tree_add_item(mq_tree, hf_mq_tsh_byteorder, tvb, offset + iSizeMPF + 8, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_opcode, tvb, offset + iSizeMPF + 9, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_bitmask(mq_tree, tvb, offset + iSizeMPF + 10, hf_mq_tsh_ctlflgs1, ett_mq_tsh_tcf, pf_flds_tcf, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask(mq_tree, tvb, offset + iSizeMPF + 11, hf_mq_tsh_ctlflgs2, ett_mq_tsh_tcf2, pf_flds_tcf2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_tsh_luwid, tvb, offset + iSizeMPF + 12, 8, ENC_NA);
+ dissect_mq_encoding(mq_tree, hf_mq_tsh_encoding, tvb, offset + iSizeMPF + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_ccsid, tvb, offset + iSizeMPF + 24, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_reserved, tvb, offset + iSizeMPF + 26, 2, p_mq_parm->mq_int_enc);
+ }
+ offset += iSizeTSH;
+
+ /* Now dissect the embedded structures */
+ if (tvb_length_remaining(tvb, offset) >= 4)
+ {
+ p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
+ if (((p_mq_parm->mq_ctlf1 & MQ_TCF_FIRST) != 0) || p_mq_parm->mq_opcode < 0x80)
+ {
+ /* First MQ segment (opcodes below 0x80 never span several TSH) */
+ gint iSizeAPI = 16;
+ if (p_mq_parm->mq_opcode >= 0x80 && p_mq_parm->mq_opcode <= 0x9F && tvb_length_remaining(tvb, offset) >= 16)
+ {
+ guint32 iReturnCode = 0;
+ guint32 iHdl = 0;
+ iReturnCode = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
+ iHdl = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
+ if (iHdl != 0 && iHdl != 0xffffffff)
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x", iHdl);
+ if (iReturnCode != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, " [RC=%d]", iReturnCode);
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeAPI, MQ_TEXT_API);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_api);
+
+ proto_tree_add_item(mq_tree, hf_mq_api_replylen, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_api_compcode, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_api_reascode, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_api_objecthdl, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += iSizeAPI;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_MSH || p_mq_parm->mq_strucID == MQ_STRUCTID_MSH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 20)
+ {
+ gint iSize = 20;
+ iSizePayload = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ bPayload = TRUE;
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_MSH);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_msh);
+
+ proto_tree_add_item(mq_tree, hf_mq_msh_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msh_seqnum, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msh_datalength, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msh_unknown1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msh_msglength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += iSize;
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_CONAUTH_INFO && tvb_length_remaining(tvb, offset) >= 20)
+ {
+ gint iSize = 24;
+ gint iUsr = 0;
+ gint iPsw = 0;
+
+ iUsr = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ iPsw = tvb_get_guint32_endian(tvb, offset + 20, p_mq_parm->mq_int_enc);
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_CAUT);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_caut);
+
+ proto_tree_add_item(mq_tree, hf_mq_caut_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_AuthType, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_UsrMaxLen, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_PwdMaxLen, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_UsrLength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_PwdLength, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+
+ if (iUsr)
+ proto_tree_add_item(mq_tree, hf_mq_caut_usr, tvb, offset + 24, iUsr, p_mq_parm->mq_str_enc);
+ if (iPsw)
+ proto_tree_add_item(mq_tree, hf_mq_caut_psw, tvb, offset + 24 + iUsr, iPsw, p_mq_parm->mq_str_enc);
}
- offset += iSize + iUsr + iPsw;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_SOCKET_ACTION && tvb_length_remaining(tvb, offset) >= 20)
- {
- gint iSize = 20;
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeAPI, MQ_TEXT_SOCKET);
- mq_tree = proto_item_add_subtree(ti, ett_mq_socket);
-
- proto_tree_add_item(mq_tree, hf_mq_socket_conversid, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_requestid, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_type, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_parm1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_parm2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- }
- offset += iSize;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_STATUS && tvb_length_remaining(tvb, offset) >= 8)
- {
- /* Some status are 28 bytes long and some are 36 bytes long */
- gint iStatus = 0;
- gint iStatusLength = 0;
-
- iStatus = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- iStatusLength = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
-
- if (tvb_length_remaining(tvb, offset) >= iStatusLength)
- {
- if (iStatus != 0)
- col_append_fstr(pinfo->cinfo, COL_INFO, " Code=%s", val_to_str(iStatus, GET_VALSV(status), "Unknown (0x%08x)"));
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, 8, MQ_TEXT_STAT);
- mq_tree = proto_item_add_subtree(ti, ett_mq_status);
-
- proto_tree_add_item(mq_tree, hf_mq_status_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_status_code, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
-
- if (iStatusLength >= 12)
- proto_tree_add_item(mq_tree, hf_mq_status_value, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- }
- offset += iStatusLength;
- }
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_PING && tvb_length_remaining(tvb, offset) > 4)
- {
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_PING);
- mq_tree = proto_item_add_subtree(ti, ett_mq_ping);
-
- proto_tree_add_item(mq_tree, hf_mq_ping_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_ping_buffer, tvb, offset + 4, -1, ENC_NA);
- }
- offset = tvb_length(tvb);
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_RESET && tvb_length_remaining(tvb, offset) >= 8)
- {
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_RESET);
- mq_tree = proto_item_add_subtree(ti, ett_mq_reset);
-
- proto_tree_add_item(mq_tree, hf_mq_reset_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_reset_seqnum, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- }
- offset = tvb_length(tvb);
- }
- else if ((p_mq_parm->mq_opcode == MQ_TST_MQOPEN || p_mq_parm->mq_opcode == MQ_TST_MQCLOSE ||
- p_mq_parm->mq_opcode == MQ_TST_MQOPEN_REPLY || p_mq_parm->mq_opcode == MQ_TST_MQCLOSE_REPLY)
- && tvb_length_remaining(tvb, offset) >= 4)
- {
- offset += dissect_mq_od(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, 4, MQ_TEXT_OPEN);
- mq_tree = proto_item_add_subtree(ti, ett_mq_open);
- if (p_mq_parm->mq_opcode == MQ_TST_MQOPEN || p_mq_parm->mq_opcode == MQ_TST_MQOPEN_REPLY)
- {
- dissect_mq_MQOO(tvb, mq_tree, offset, ett_mq_open_option, hf_mq_open_options, p_mq_parm);
- }
- if (p_mq_parm->mq_opcode == MQ_TST_MQCLOSE || p_mq_parm->mq_opcode == MQ_TST_MQCLOSE_REPLY)
- {
- dissect_mq_MQCO(tvb, mq_tree, offset, p_mq_parm);
- }
- }
- offset += 4;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- offset += dissect_mq_fopa(tvb, mqroot_tree, offset, p_mq_parm);
- }
- else if ((p_mq_parm->mq_opcode == MQ_TST_MQCONN || p_mq_parm->mq_opcode == MQ_TST_MQCONN_REPLY) &&
- tvb_length_remaining(tvb, offset) > 0)
- {
- gint iSizeCONN = 0;
- gint nofs;
-
- /*iSizeCONN = ((iVersionID == 4 || iVersionID == 6) ? 120 : 112);*/ /* guess */
- /* The iVersionID is available in the previous ID segment, we should keep a state
- * Instead we rely on the segment length announced in the TSH */
- /* The MQCONN structure is special because it does not start with a structid */
- iSizeCONN = iSegmentLength - iSizeTSH - iSizeAPI;
- if (iSizeCONN != 112 && iSizeCONN != 120 && iSizeCONN != 260 && iSizeCONN != 332)
- iSizeCONN = 0;
-
- if (iSizeCONN != 0 && tvb_length_remaining(tvb, offset) >= iSizeCONN)
- {
- guint8 *sApplicationName;
- guint8 *sQMgr;
- sApplicationName = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 28, p_mq_parm->mq_str_enc), 28, '.');
- if (strip_trailing_blanks(sApplicationName, 28) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " App=%s", sApplicationName);
- }
- sQMgr = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 48, p_mq_parm->mq_str_enc), 28, '.');
- if (strip_trailing_blanks(sQMgr, 48) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " QM=%s", sQMgr);
- }
+ offset += iSize + iUsr + iPsw;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_SOCKET_ACTION && tvb_length_remaining(tvb, offset) >= 20)
+ {
+ gint iSize = 20;
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeAPI, MQ_TEXT_SOCKET);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_socket);
+
+ proto_tree_add_item(mq_tree, hf_mq_socket_conversid, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_requestid, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_type, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_parm1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_parm2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += iSize;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_STATUS && tvb_length_remaining(tvb, offset) >= 8)
+ {
+ /* Some status are 28 bytes long and some are 36 bytes long */
+ gint iStatus = 0;
+ gint iStatusLength = 0;
+
+ iStatus = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ iStatusLength = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+
+ if (tvb_length_remaining(tvb, offset) >= iStatusLength)
+ {
+ if (iStatus != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Code=%s", val_to_str(iStatus, GET_VALSV(status), "Unknown (0x%08x)"));
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, 8, MQ_TEXT_STAT);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_status);
+
+ proto_tree_add_item(mq_tree, hf_mq_status_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_status_code, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+
+ if (iStatusLength >= 12)
+ proto_tree_add_item(mq_tree, hf_mq_status_value, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += iStatusLength;
+ }
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_PING && tvb_length_remaining(tvb, offset) > 4)
+ {
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_PING);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_ping);
+
+ proto_tree_add_item(mq_tree, hf_mq_ping_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_ping_buffer, tvb, offset + 4, -1, ENC_NA);
+ }
+ offset = tvb_length(tvb);
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_RESET && tvb_length_remaining(tvb, offset) >= 8)
+ {
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_RESET);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_reset);
+
+ proto_tree_add_item(mq_tree, hf_mq_reset_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_reset_seqnum, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ }
+ offset = tvb_length(tvb);
+ }
+ else if ((p_mq_parm->mq_opcode == MQ_TST_MQOPEN || p_mq_parm->mq_opcode == MQ_TST_MQCLOSE ||
+ p_mq_parm->mq_opcode == MQ_TST_MQOPEN_REPLY || p_mq_parm->mq_opcode == MQ_TST_MQCLOSE_REPLY)
+ && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ offset += dissect_mq_od(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, 4, MQ_TEXT_OPEN);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_open);
+ if (p_mq_parm->mq_opcode == MQ_TST_MQOPEN || p_mq_parm->mq_opcode == MQ_TST_MQOPEN_REPLY)
+ {
+ dissect_mq_MQOO(tvb, mq_tree, offset, ett_mq_open_option, hf_mq_open_options, p_mq_parm);
+ }
+ if (p_mq_parm->mq_opcode == MQ_TST_MQCLOSE || p_mq_parm->mq_opcode == MQ_TST_MQCLOSE_REPLY)
+ {
+ dissect_mq_MQCO(tvb, mq_tree, offset, p_mq_parm);
+ }
+ }
+ offset += 4;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ offset += dissect_mq_fopa(tvb, mqroot_tree, offset, p_mq_parm);
+ }
+ else if ((p_mq_parm->mq_opcode == MQ_TST_MQCONN || p_mq_parm->mq_opcode == MQ_TST_MQCONN_REPLY) &&
+ tvb_length_remaining(tvb, offset) > 0)
+ {
+ gint iSizeCONN = 0;
+ gint nofs;
+
+ /*iSizeCONN = ((iVersionID == 4 || iVersionID == 6) ? 120 : 112);*/ /* guess */
+ /* The iVersionID is available in the previous ID segment, we should keep a state
+ * Instead we rely on the segment length announced in the TSH */
+ /* The MQCONN structure is special because it does not start with a structid */
+ iSizeCONN = iSegmentLength - iSizeTSH - iSizeAPI;
+ if (iSizeCONN != 112 && iSizeCONN != 120 && iSizeCONN != 260 && iSizeCONN != 332)
+ iSizeCONN = 0;
+
+ if (iSizeCONN != 0 && tvb_length_remaining(tvb, offset) >= iSizeCONN)
+ {
+ guint8 *sApplicationName;
+ guint8 *sQMgr;
+ sApplicationName = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 28, p_mq_parm->mq_str_enc), 28, '.');
+ if (strip_trailing_blanks(sApplicationName, 28) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " App=%s", sApplicationName);
+ }
+ sQMgr = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 48, p_mq_parm->mq_str_enc), 28, '.');
+ if (strip_trailing_blanks(sQMgr, 48) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " QM=%s", sQMgr);
+ }
#define do_proto_add_item(a, b) b; nofs += a;
- nofs = offset;
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeCONN, MQ_TEXT_CONN);
- mq_tree = proto_item_add_subtree(ti, ett_mq_conn);
-
- do_proto_add_item(48, proto_tree_add_item(mq_tree, hf_mq_conn_QMgr , tvb, nofs, 48, p_mq_parm->mq_str_enc));
- do_proto_add_item(28, proto_tree_add_item(mq_tree, hf_mq_conn_appname , tvb, nofs, 28, p_mq_parm->mq_str_enc));
- do_proto_add_item( 4, proto_tree_add_item(mq_tree, hf_mq_conn_apptype , tvb, nofs, 4, p_mq_parm->mq_int_enc));
- do_proto_add_item(32, proto_tree_add_item(mq_tree, hf_mq_conn_acttoken, tvb, nofs, 32, ENC_NA));
-
- if (iSizeCONN >= 120)
- {
- do_proto_add_item(4, proto_tree_add_item(mq_tree, hf_mq_conn_version, tvb, nofs, 4, p_mq_parm->mq_int_enc));
- do_proto_add_item(4, proto_tree_add_item(mq_tree, hf_mq_conn_options, tvb, nofs, 4, p_mq_parm->mq_int_enc));
- }
- if (iSizeCONN >= 260)
- {
- proto_tree *mq_tree_sub;
-
- ti = proto_tree_add_text(mq_tree, tvb, nofs, iSizeCONN - nofs, MQ_TEXT_FCNO);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_fcno);
-
- do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_StructID , tvb, nofs, 4, p_mq_parm->mq_str_enc));
- do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown00, tvb, nofs, 4, p_mq_parm->mq_int_enc));
- do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown01, tvb, nofs, 4, p_mq_parm->mq_int_enc));
-
- if (iSizeCONN == 260)
- {
- do_proto_add_item( 12, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_msgid , tvb, nofs, 12, p_mq_parm->mq_str_enc));
- do_proto_add_item( 48, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_mqmid , tvb, nofs, 48, p_mq_parm->mq_str_enc));
- do_proto_add_item( 68, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown02, tvb, nofs, 68, ENC_NA));
- }
- if (iSizeCONN >= 332)
- {
- do_proto_add_item(152, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_msgid , tvb, nofs, 152, p_mq_parm->mq_str_enc));
- proto_tree_add_item(mq_tree_sub, hf_mq_fcno_mqmid , tvb, nofs, 48, p_mq_parm->mq_int_enc);
- }
- }
- }
+ nofs = offset;
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeCONN, MQ_TEXT_CONN);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_conn);
+
+ do_proto_add_item(48, proto_tree_add_item(mq_tree, hf_mq_conn_QMgr , tvb, nofs, 48, p_mq_parm->mq_str_enc));
+ do_proto_add_item(28, proto_tree_add_item(mq_tree, hf_mq_conn_appname , tvb, nofs, 28, p_mq_parm->mq_str_enc));
+ do_proto_add_item( 4, proto_tree_add_item(mq_tree, hf_mq_conn_apptype , tvb, nofs, 4, p_mq_parm->mq_int_enc));
+ do_proto_add_item(32, proto_tree_add_item(mq_tree, hf_mq_conn_acttoken, tvb, nofs, 32, ENC_NA));
+
+ if (iSizeCONN >= 120)
+ {
+ do_proto_add_item(4, proto_tree_add_item(mq_tree, hf_mq_conn_version, tvb, nofs, 4, p_mq_parm->mq_int_enc));
+ do_proto_add_item(4, proto_tree_add_item(mq_tree, hf_mq_conn_options, tvb, nofs, 4, p_mq_parm->mq_int_enc));
+ }
+ if (iSizeCONN >= 260)
+ {
+ proto_tree *mq_tree_sub;
+
+ ti = proto_tree_add_text(mq_tree, tvb, nofs, iSizeCONN - nofs, MQ_TEXT_FCNO);
+ mq_tree_sub = proto_item_add_subtree(ti, ett_mq_fcno);
+
+ do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_StructID , tvb, nofs, 4, p_mq_parm->mq_str_enc));
+ do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown00, tvb, nofs, 4, p_mq_parm->mq_int_enc));
+ do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown01, tvb, nofs, 4, p_mq_parm->mq_int_enc));
+
+ if (iSizeCONN == 260)
+ {
+ do_proto_add_item( 12, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_msgid , tvb, nofs, 12, p_mq_parm->mq_str_enc));
+ do_proto_add_item( 48, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_mqmid , tvb, nofs, 48, p_mq_parm->mq_str_enc));
+ do_proto_add_item( 68, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown02, tvb, nofs, 68, ENC_NA));
+ }
+ if (iSizeCONN >= 332)
+ {
+ do_proto_add_item(152, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_msgid , tvb, nofs, 152, p_mq_parm->mq_str_enc));
+ proto_tree_add_item(mq_tree_sub, hf_mq_fcno_mqmid , tvb, nofs, 48, p_mq_parm->mq_int_enc);
+ }
+ }
+ }
#undef do_proto_add_item
- offset += iSizeCONN;
- }
- }
- else if ((p_mq_parm->mq_opcode == MQ_TST_MQINQ || p_mq_parm->mq_opcode == MQ_TST_MQINQ_REPLY || p_mq_parm->mq_opcode == MQ_TST_MQSET) && tvb_length_remaining(tvb, offset) >= 12)
- {
- /* The MQINQ/MQSET structure is special because it does not start with a structid */
- gint iNbSelectors;
- gint iNbIntegers;
- gint iCharLen;
- gint iOffsetINQ;
- gint iSelector;
-
- iNbSelectors = tvb_get_guint32_endian(tvb, offset , p_mq_parm->mq_int_enc);
- iNbIntegers = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- iCharLen = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_INQ);
- mq_tree = proto_item_add_subtree(ti, ett_mq_inq);
-
- proto_tree_add_item(mq_tree, hf_mq_inq_nbsel, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_inq_nbint, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_inq_charlen, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- }
- iOffsetINQ = 12;
- if (tvb_length_remaining(tvb, offset + iOffsetINQ) >= iNbSelectors * 4)
- {
- if (tree)
- {
- for (iSelector = 0; iSelector < iNbSelectors; iSelector++)
- {
- proto_tree_add_item(mq_tree, hf_mq_inq_sel, tvb, offset + iOffsetINQ + iSelector * 4, 4, p_mq_parm->mq_int_enc);
- }
- }
- iOffsetINQ += iNbSelectors * 4;
- if (p_mq_parm->mq_opcode == MQ_TST_MQINQ_REPLY || p_mq_parm->mq_opcode == MQ_TST_MQSET)
- {
- gint iSizeINQValues;
- iSizeINQValues = iNbIntegers * 4 + iCharLen;
- if (tvb_length_remaining(tvb, offset + iOffsetINQ) >= iSizeINQValues)
- {
- gint iInteger;
- if (tree)
- {
- for (iInteger = 0; iInteger < iNbIntegers; iInteger++)
- {
- proto_tree_add_item(mq_tree, hf_mq_inq_intvalue, tvb, offset + iOffsetINQ + iInteger * 4, 4, p_mq_parm->mq_int_enc);
- }
- }
- iOffsetINQ += iNbIntegers * 4;
- if (iCharLen != 0)
- {
- if (tree)
- {
- proto_tree_add_item(mq_tree, hf_mq_inq_charvalues, tvb, offset + iOffsetINQ, iCharLen, p_mq_parm->mq_str_enc);
- }
- }
- }
- }
- }
- offset += tvb_length(tvb);
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_NOTIFICATION)
- {
- gint iHdl;
-
- iHdl = tvb_get_guint32_endian(tvb, offset+4, p_mq_parm->mq_int_enc);
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x", iHdl);
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_NOTIFICATION);
- mq_tree = proto_item_add_subtree(ti, ett_mq_notif);
-
- proto_tree_add_item(mq_tree, hf_mq_notif_vers, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_notif_handle, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_notif_code, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_notif_value, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- }
- offset+=16;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_REQUEST_MSGS)
- {
- gint iHdl;
- gint iFlags;
- gint iGlbMsgIdx;
- gint iMaxMsgLen;
- gint xOfs;
- gint iOpt;
-
- xOfs = 0;
- iHdl = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- iMaxMsgLen = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
- iFlags = tvb_get_guint32_endian(tvb, offset + 32, p_mq_parm->mq_int_enc);
- iGlbMsgIdx = tvb_get_guint32_endian(tvb, offset + 36, p_mq_parm->mq_int_enc);
- if (iFlags & 0x00000010)
- {
- p_mq_parm->mq_msgreq_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 44, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_msgreq_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 48, p_mq_parm->mq_int_enc);
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x GlbMsgIdx=%d, MaxLen=%d",
- iHdl, iGlbMsgIdx, iMaxMsgLen);
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_REQMSG);
- mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
-
- proto_tree_add_item(mq_tree, hf_mq_msgreq_version, tvb, offset , 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_handle, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_RecvBytes, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_RqstBytes, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_MaxMsgLen, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- dissect_mq_MQGMO(tvb, mq_tree, offset + 20, ett_mq_gmo_option, p_mq_parm);
-
- proto_tree_add_item(mq_tree, hf_mq_msgreq_WaitIntrv, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_QueStatus, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_RqstFlags, tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_GlbMsgIdx, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
-
- if (iFlags & 0x00000010)
- {
- proto_tree_add_item(mq_tree, hf_mq_msgreq_SelectIdx, tvb, offset + 40, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_MQMDVers, tvb, offset + 42, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_ccsid, tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
- dissect_mq_encoding(mq_tree, hf_mq_msgreq_encoding, tvb, offset + 48, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_MsgSeqNum, tvb, offset + 52, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_offset, tvb, offset + 56, 4, p_mq_parm->mq_int_enc);
- dissect_mq_MQMO(tvb, mq_tree, offset + 60, ett_mq_gmo_matchoption, p_mq_parm);
- iOpt = tvb_get_guint32_endian(tvb, offset + 60, p_mq_parm->mq_int_enc);
-
- if (iOpt & MQ_MQMO_MATCH_MSG_ID)
- {
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
- xOfs += 24;
- }
- if (iOpt & MQ_MQMO_MATCH_CORREL_ID)
- {
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchCorId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
- xOfs += 24;
- }
- if (iOpt & MQ_MQMO_MATCH_GROUP_ID)
- {
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchGrpid, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
- xOfs += 24;
- }
- if (iOpt & MQ_MQMO_MATCH_MSG_TOKEN)
- {
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgTk, tvb, offset + 64 + xOfs, 16, p_mq_parm->mq_str_enc);
- xOfs += 16;
- }
- }
- }
- offset += (iFlags & 0x00000010) ? (64+xOfs) : 40;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- else if (p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE)
- {
- gint iSegmIndex;
- gint iGlbMsgIdx;
- gint iPadLen;
- gint iSegLength;
- gint8 iStrLen;
- gint iHdl;
- gint iHdrL;
-
- iHdl = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
- iGlbMsgIdx = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
- iSegLength = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
- iSegmIndex = tvb_get_guint16_endian(tvb, offset + 20, p_mq_parm->mq_int_enc);
-
- if (iSegmIndex == 0)
- {
- iStrLen = tvb_get_guint8(tvb, offset + 54);
- iPadLen = (2+1+iStrLen) % 4;
- iPadLen = (iPadLen) ? 4-iPadLen : 0;
- }
- else
- {
- iPadLen = 0;
- iStrLen = 0;
- }
-
- iHdrL = (iSegmIndex == 0) ? (54+1+iStrLen+iPadLen) : 24;
-
- if (!mq_in_reassembly)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
- iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
- }
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iHdrL, MQ_TEXT_ASYMSG);
- mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
-
- proto_tree_add_item(mq_tree, hf_mq_msgasy_version , tvb, offset , 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_handle , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_MsgIndex , tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_GlbMsgIdx, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_SegLength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_SegmIndex, tvb, offset + 20, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_SeleIndex, tvb, offset + 22, 2, p_mq_parm->mq_int_enc);
- if (p_mq_parm->mq_ctlf1 & MQ_TCF_FIRST)
- {
- proto_tree_add_item(mq_tree, hf_mq_msgasy_ReasonCod , tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_ActMsgLen , tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_TotMsgLen , tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_MsgToken , tvb, offset + 36, 16, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_Status , tvb, offset + 52, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_resolQNLn , tvb, offset + 54, 1, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_resolQNme , tvb, offset + 55, iStrLen, p_mq_parm->mq_str_enc);
- if (iPadLen)
- proto_tree_add_item(mq_tree, hf_mq_msgasy_padding , tvb, offset + 55 + iStrLen, iPadLen, p_mq_parm->mq_str_enc);
- }
- }
- offset+=iHdrL;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
-
- iSizePayload = tvb_length_remaining(tvb, offset);
- bPayload = (iSizePayload>0);
- }
- else if ((p_mq_parm->mq_opcode == MQ_TST_SPI || p_mq_parm->mq_opcode == MQ_TST_SPI_REPLY) && tvb_length_remaining(tvb, offset) >= 12)
- {
- gint iOffsetSPI = 0;
- guint32 iSpiVerb = 0;
-
- p_mq_parm->iOfsEnc = offset + 12;
- p_mq_parm->iOfsCcs = offset + 16;
- p_mq_parm->iOfsFmt = offset + 20;
-
- iSpiVerb = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", val_to_str(iSpiVerb, mq_spi_verbs_vals, "Unknown (0x%08x)"));
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, 12, MQ_TEXT_SPI);
- mq_tree = proto_item_add_subtree(ti, ett_mq_spi);
-
- proto_tree_add_item(mq_tree, hf_mq_spi_verb, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- }
-
- offset += 12;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (((p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxU ||
- (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxU_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 12)
- {
- gint iSizeSPIMD = 0;
- if (tree)
- {
- guint8 *sStructId;
- sStructId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 4, ((p_mq_parm->mq_strucID & MQ_MASK_SPxx) == MQ_STRUCTID_SPxx) ? ENC_ASCII : ENC_EBCDIC);
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, 12, "%s", sStructId);
- mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
-
- proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_base_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_base_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- }
- offset += 12;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
-
- if ((iSizeSPIMD = dissect_mq_md(tvb, mqroot_tree, offset, p_mq_parm, TRUE)) != 0)
- {
- offset += iSizeSPIMD;
- offset += dissect_mq_gmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm);
- offset += dissect_mq_pmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
-
- offset += dissect_mq_od(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
-
- if (((p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxO ||
- (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxO_EBCDIC ||
- (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxI ||
- (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxI_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 12)
- {
- if (tree)
- {
- /* Dissect the common part of these structures */
- guint8 *sStructId;
- sStructId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 4, ((p_mq_parm->mq_strucID & MQ_MASK_SPxx) == MQ_STRUCTID_SPxx) ? ENC_ASCII : ENC_EBCDIC);
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", sStructId);
- mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
-
- proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_base_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_base_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- }
-
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPQO || p_mq_parm->mq_strucID == MQ_STRUCTID_SPQO_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 16)
- {
- if (tree)
- {
- gint iVerbNumber = 0;
- proto_tree_add_item(mq_tree, hf_mq_spi_spqo_nbverb, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- iVerbNumber = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
-
- if (tvb_length_remaining(tvb, offset) >= iVerbNumber * 20 + 16)
- {
- gint iVerb = 0;
- iOffsetSPI = offset + 16;
- for (iVerb = 0; iVerb < iVerbNumber; iVerb++)
- {
- proto_tree_add_item(mq_tree, hf_mq_spi_spqo_verbid, tvb, iOffsetSPI, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spqo_maxiover, tvb, iOffsetSPI + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spqo_maxinver, tvb, iOffsetSPI + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spqo_maxouver, tvb, iOffsetSPI + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spqo_flags, tvb, iOffsetSPI + 16, 4, p_mq_parm->mq_int_enc);
- iOffsetSPI += 20;
- }
- offset += iVerbNumber * 20 + 16;
- }
- }
- }
- else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPAI || p_mq_parm->mq_strucID == MQ_STRUCTID_SPAI_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 136)
- {
- if (tree)
- {
- proto_tree_add_item(mq_tree, hf_mq_spi_spai_mode, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spai_unknown1, tvb, offset + 16, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spai_unknown2, tvb, offset + 64, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spai_msgid, tvb, offset + 112, 24, p_mq_parm->mq_str_enc);
- }
- offset += 136;
- }
- else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPGI || p_mq_parm->mq_strucID == MQ_STRUCTID_SPGI_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 24)
- {
- if (tree)
- {
- proto_tree_add_item(mq_tree, hf_mq_spi_spgi_batchsz, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spgi_batchint, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_spi_spgi_maxmsgsz, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
- }
- offset += 24;
- }
- else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPGO || p_mq_parm->mq_strucID == MQ_STRUCTID_SPPI ||
- p_mq_parm->mq_strucID == MQ_STRUCTID_SPGO_EBCDIC || p_mq_parm->mq_strucID == MQ_STRUCTID_SPPI_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 20)
- {
- if (tree)
- {
- proto_tree_add_bitmask(mq_tree, tvb, offset + 12, hf_mq_spi_spgo_options, ett_mq_spi_options, pf_flds_spiopt, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_spi_spgo_size, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- }
- iSizePayload = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
- offset += 20;
- bPayload = TRUE;
- }
- else
- {
- offset += 12;
- }
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- }
- }
- else if ((p_mq_parm->mq_opcode >= 0xA0 && p_mq_parm->mq_opcode <= 0xB9) && tvb_length_remaining(tvb, offset) >= 16)
- {
- /* The XA structures are special because they do not start with a structid */
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, 16, "%s (%s)", MQ_TEXT_XA,
- val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
- mq_tree = proto_item_add_subtree(ti, ett_mq_xa);
-
- proto_tree_add_item(mq_tree, hf_mq_xa_length, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_xa_returnvalue, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
-
- proto_tree_add_bitmask(mq_tree, tvb, offset + 8, hf_mq_xa_tmflags, ett_mq_xa_tmflags, pf_flds_tmflags, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(mq_tree, hf_mq_xa_rmid, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- }
- offset += 16;
- if (p_mq_parm->mq_opcode == MQ_TST_XA_START || p_mq_parm->mq_opcode == MQ_TST_XA_END || p_mq_parm->mq_opcode == MQ_TST_XA_PREPARE
- || p_mq_parm->mq_opcode == MQ_TST_XA_COMMIT || p_mq_parm->mq_opcode == MQ_TST_XA_ROLLBACK || p_mq_parm->mq_opcode == MQ_TST_XA_FORGET
- || p_mq_parm->mq_opcode == MQ_TST_XA_COMPLETE)
- {
- gint iSizeXid = 0;
- if ((iSizeXid = dissect_mq_xid(tvb, mqroot_tree, p_mq_parm, offset)) != 0)
- offset += iSizeXid;
- }
- else if ((p_mq_parm->mq_opcode == MQ_TST_XA_OPEN || p_mq_parm->mq_opcode == MQ_TST_XA_CLOSE)
- && tvb_length_remaining(tvb, offset) >= 1)
- {
- guint8 iXAInfoLength = 0;
- iXAInfoLength = tvb_get_guint8(tvb, offset);
- if (tvb_length_remaining(tvb, offset) >= iXAInfoLength + 1)
- {
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iXAInfoLength + 1, MQ_TEXT_XINF);
- mq_tree = proto_item_add_subtree(ti, ett_mq_xa_info);
-
- proto_tree_add_item(mq_tree, hf_mq_xa_xainfo_length, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_xa_xainfo_value, tvb, offset + 1, iXAInfoLength, p_mq_parm->mq_str_enc);
- }
- }
- offset += 1 + iXAInfoLength;
- }
- else if ((p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER || p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER_REPLY)
- && tvb_length_remaining(tvb, offset) >= 4)
- {
- gint iNbXid = 0;
- iNbXid = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
- if (tree)
- {
- proto_tree_add_item(mq_tree, hf_mq_xa_count, tvb, offset, 4, p_mq_parm->mq_int_enc);
- }
- offset += 4;
- if (p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER_REPLY)
- {
- gint iXid = 0;
- for (iXid = 0; iXid < iNbXid; iXid++)
- {
- gint iSizeXid = 0;
- if ((iSizeXid = dissect_mq_xid(tvb, mqroot_tree, p_mq_parm, offset)) != 0)
- offset += iSizeXid;
- else
- break;
- }
- }
- }
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_LPOO || p_mq_parm->mq_strucID == MQ_STRUCTID_LPOO_EBCDIC) && tvb_length_remaining(tvb, offset) >= 32)
- {
- guint iVersion;
- guint iXtraData = 0;
- gint iSize = 32;
- iVersion = tvb_get_guint32_endian(tvb, offset+4, p_mq_parm->mq_int_enc);
- if (iVersion >= 3)
- {
- iSize += 56;
- iXtraData = tvb_get_guint32_endian(tvb, offset + 84, p_mq_parm->mq_int_enc);
- }
-
- if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
- {
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_LPOO);
- mq_tree = proto_item_add_subtree(ti, ett_mq_lpoo);
-
- proto_tree_add_item(mq_tree, hf_mq_lpoo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_lpoo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
-
- dissect_mq_MQOO(tvb, mq_tree, offset+8, ett_mq_lpoo_options, hf_mq_lpoo_options, p_mq_parm);
-
- dissect_mq_LPOO_LPIOPTS(tvb, mq_tree, offset+16, ett_mq_lpoo_lpiopts, p_mq_parm);
- proto_tree_add_item(mq_tree, hf_mq_lpoo_defpersist, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_lpoo_defputresptype, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_lpoo_defreadahead, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- if (iVersion >= 3)
- {
- proto_tree_add_item(mq_tree, hf_mq_lpoo_qprotect, tvb, offset + 32, 48, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_lpoo_unknown6, tvb, offset + 80, 4, p_mq_parm->mq_int_enc);
- /*proto_tree_add_item(mq_tree, hf_mq_lpoo_unknown7, tvb, offset + 84, 2, p_mq_parm->mq_int_enc);*/
- proto_tree_add_item(mq_tree, hf_mq_lpoo_xtradata, tvb, offset + 84, 4, p_mq_parm->mq_int_enc);
- }
- }
- offset += iSize;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (iXtraData>0)
- {
- if (p_mq_parm->mq_opcode == MQ_TST_SPI_REPLY)
- {
- bPayload = TRUE;
- iSizePayload = iXtraData;
- p_mq_parm->iOfsFmt = (offset-iSize);
- }
- }
- }
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_ID || p_mq_parm->mq_strucID == MQ_STRUCTID_ID_EBCDIC) && tvb_length_remaining(tvb, offset) >= 5)
- {
- offset += dissect_mq_id(tvb, pinfo, mqroot_tree, offset, p_mq_parm);
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_UID || p_mq_parm->mq_strucID == MQ_STRUCTID_UID_EBCDIC) && tvb_length_remaining(tvb, offset) > 0)
- {
- gint iSizeUID;
- /* iSizeUID = (iVersionID < 5 ? 28 : 132); guess */
- /* The iVersionID is available in the previous ID segment, we should keep a state *
- * Instead we rely on the segment length announced in the TSH */
- iSizeUID = iSegmentLength - iSizeTSH;
- if (iSizeUID != 28 && iSizeUID != 132)
- iSizeUID = 0;
-
- if (iSizeUID != 0 && tvb_length_remaining(tvb, offset) >= iSizeUID)
- {
- guint8 *sUserId;
- sUserId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 4, 12, p_mq_parm->mq_str_enc);
- if (strip_trailing_blanks(sUserId, 12) > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " User=%s", sUserId);
- }
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeUID, MQ_TEXT_UID);
- mq_tree = proto_item_add_subtree(ti, ett_mq_uid);
-
- proto_tree_add_item(mq_tree, hf_mq_uid_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_uid_userid, tvb, offset + 4, 12, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_uid_password, tvb, offset + 16, 12, p_mq_parm->mq_str_enc);
- }
-
- if (iSizeUID == 132)
- {
- if (tree)
- {
- proto_tree_add_item(mq_tree, hf_mq_uid_longuserid, tvb, offset + 28, 64, p_mq_parm->mq_str_enc);
- dissect_mq_sid(tvb, mq_tree, p_mq_parm, offset + 92);
- }
- }
- }
- offset += iSizeUID;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
-
- offset += dissect_mq_od(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
-
- if ((iSizeMD = dissect_mq_md(tvb, mqroot_tree, offset, p_mq_parm, TRUE)) != 0)
- {
- gint iSizeGMO = 0;
- gint iSizePMO = 0;
- offset += iSizeMD;
-
- if ((iSizeGMO = dissect_mq_gmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm)) != 0)
- {
- offset += iSizeGMO;
- bPayload = TRUE;
- }
- else if ((iSizePMO = dissect_mq_pmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize)) != 0)
- {
- offset += iSizePMO;
- bPayload = TRUE;
- }
- if (tvb_length_remaining(tvb, offset) >= 4)
- {
- if (bPayload == TRUE && (p_mq_parm->mq_opcode != MQ_TST_ASYNC_MESSAGE))
- {
- iSizePayload = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, 4, MQ_TEXT_PUT);
- mq_tree = proto_item_add_subtree(ti, ett_mq_put);
- proto_tree_add_item(mq_tree, hf_mq_put_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
- }
- offset += 4;
- }
- }
- }
- if (iDistributionListSize > 0)
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Distribution List, Size=%d)", iDistributionListSize);
- }
- if (bPayload == TRUE)
- {
- if (iSizePayload != 0 && tvb_length_remaining(tvb, offset) > 0)
- {
- /* For the following header structures, each structure has a "format" field
- which announces the type of the following structure. For dissection we
- do not use it and rely on the structid instead. */
- guint32 iHeadersLength = 0;
- if (tvb_length_remaining(tvb, offset) >= 4)
- {
- gint iSizeMD2 = 0;
- p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
-
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_XQH || p_mq_parm->mq_strucID == MQ_STRUCTID_XQH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 104)
- {
- /* if MD.format == MQXMIT */
- gint iSizeXQH = 104;
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeXQH, MQ_TEXT_XQH);
- mq_tree = proto_item_add_subtree(ti, ett_mq_xqh);
-
- proto_tree_add_item(mq_tree, hf_mq_xqh_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_xqh_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_xqh_remoteq, tvb, offset + 8, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_xqh_remoteqmgr, tvb, offset + 56, 48, p_mq_parm->mq_str_enc);
- }
- offset += iSizeXQH;
- iHeadersLength += iSizeXQH;
-
- if ((iSizeMD2 = dissect_mq_md(tvb, mqroot_tree, offset, p_mq_parm, TRUE)) != 0)
- {
- offset += iSizeMD2;
- iHeadersLength += iSizeMD2;
- }
-
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_DH || p_mq_parm->mq_strucID == MQ_STRUCTID_DH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 48)
- {
- /* if MD.format == MQHDIST */
- gint iSizeDH = 48;
- gint iNbrRecords = 0;
- guint32 iRecFlags = 0;
-
- iNbrRecords = tvb_get_guint32_endian(tvb, offset + 36, p_mq_parm->mq_int_enc);
- iRecFlags = tvb_get_guint32_endian(tvb, offset + 32, p_mq_parm->mq_int_enc);
- p_mq_parm->iOfsEnc = offset + 12;
- p_mq_parm->iOfsCcs = offset + 16;
- p_mq_parm->iOfsFmt = offset + 20;
-
- p_mq_parm->mq_head_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_head_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeDH, MQ_TEXT_DH);
- mq_tree = proto_item_add_subtree(ti, ett_mq_dh);
-
- proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- dissect_mq_encoding(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_ccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_format, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dh_putmsgrecfld, tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dh_recspresent, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dh_objrecofs , tvb, offset + 40, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dh_putmsgrecofs, tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
- }
- offset += iSizeDH;
- iHeadersLength += iSizeDH;
-
- if (iNbrRecords > 0)
- {
- gint iOffsetOR = 0;
- gint iOffsetPMR = 0;
- gint iSizeORPMR = 0;
-
- iOffsetOR = tvb_get_guint32_endian(tvb, offset - iSizeDH + 40, p_mq_parm->mq_int_enc);
- iOffsetPMR = tvb_get_guint32_endian(tvb, offset - iSizeDH + 44, p_mq_parm->mq_int_enc);
- if ((iSizeORPMR = dissect_mq_or(tvb, mqroot_tree, offset, iNbrRecords, iOffsetOR, p_mq_parm)) != 0)
- {
- offset += iSizeORPMR;
- iHeadersLength += iSizeORPMR;
- }
- if ((iSizeORPMR = dissect_mq_pmr(tvb, mqroot_tree, offset, iNbrRecords, iOffsetPMR, iRecFlags, p_mq_parm)) != 0)
- {
- offset += iSizeORPMR;
- iHeadersLength += iSizeORPMR;
- }
- }
-
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_DLH || p_mq_parm->mq_strucID == MQ_STRUCTID_DLH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 172)
- {
- /* if MD.format == MQDEAD */
- gint iSizeDLH = 172;
- p_mq_parm->iOfsEnc = offset + 108;
- p_mq_parm->iOfsCcs = offset + 112;
- p_mq_parm->iOfsFmt = offset + 116;
-
- p_mq_parm->mq_dlh_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 108, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_dlh_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 112, p_mq_parm->mq_int_enc);
-
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeDLH, MQ_TEXT_DLH);
- mq_tree = proto_item_add_subtree(ti, ett_mq_dlh);
-
- proto_tree_add_item(mq_tree, hf_mq_dlh_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_reason, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_destq, tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_destqmgr, tvb, offset + 60, 48, p_mq_parm->mq_str_enc);
- dissect_mq_encoding(mq_tree, hf_mq_dlh_encoding, tvb, offset + 108, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_ccsid, tvb, offset + 112, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_format, tvb, offset + 116, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_putappltype, tvb, offset + 124, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_putapplname, tvb, offset + 128, 28, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_putdate, tvb, offset + 156, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_dlh_puttime, tvb, offset + 164, 8, p_mq_parm->mq_str_enc);
- }
- offset += iSizeDLH;
- iHeadersLength += iSizeDLH;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_MDE || p_mq_parm->mq_strucID == MQ_STRUCTID_MDE_EBCDIC) && tvb_length_remaining(tvb, offset) >= 72)
- {
- /* if MD.format == MQHMDE */
- gint iSizeMDE = 72;
- p_mq_parm->iOfsEnc = offset + 12;
- p_mq_parm->iOfsCcs = offset + 16;
- p_mq_parm->iOfsFmt = offset + 20;
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeMDE, MQ_TEXT_MDE);
- mq_tree = proto_item_add_subtree(ti, ett_mq_mde);
-
- proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- dissect_mq_encoding(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_ccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_format, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_groupid, tvb, offset + 32, 24, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_md_msgseqnumber, tvb, offset + 56, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_offset, tvb, offset + 60, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_msgflags, tvb, offset + 64, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_origlen, tvb, offset + 68, 4, p_mq_parm->mq_int_enc);
- }
- offset += iSizeMDE;
- iHeadersLength += iSizeMDE;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- if ((p_mq_parm->mq_strucID == MQ_STRUCTID_CIH || p_mq_parm->mq_strucID == MQ_STRUCTID_CIH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH_EBCDIC)
- && tvb_length_remaining(tvb, offset) >= 12)
- {
- /* Dissect the generic part of the other pre-defined headers */
- /* We assume that only one such header is present */
- gint iSizeHeader = 0;
- iSizeHeader = (gint) tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
- /* XXX - 32 is inferred from the code below. What's the
- * correct minimum? */
- if (iSizeHeader <= 32)
- THROW(ReportedBoundsError);
-
- if (tvb_length_remaining(tvb, offset) >= iSizeHeader)
- {
- p_mq_parm->iOfsEnc = offset + 12;
- p_mq_parm->iOfsCcs = offset + 16;
- p_mq_parm->iOfsFmt = offset + 20;
- if (tree)
- {
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeHeader, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
- mq_tree = proto_item_add_subtree(ti, ett_mq_head);
-
- proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- dissect_mq_encoding(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_ccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_format, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_head_struct, tvb, offset + 32, iSizeHeader - 32, ENC_NA);
-
- }
- offset += iSizeHeader;
- iHeadersLength += iSizeHeader;
- p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- }
- }
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%d bytes)", iSizePayload - iHeadersLength);
-
- if (!mq_in_reassembly)
- {
- /* Call subdissector for the payload */
- tvbuff_t *next_tvb;
+ offset += iSizeCONN;
+ }
+ }
+ else if ((p_mq_parm->mq_opcode == MQ_TST_MQINQ || p_mq_parm->mq_opcode == MQ_TST_MQINQ_REPLY || p_mq_parm->mq_opcode == MQ_TST_MQSET) && tvb_length_remaining(tvb, offset) >= 12)
+ {
+ /* The MQINQ/MQSET structure is special because it does not start with a structid */
+ gint iNbSelectors;
+ gint iNbIntegers;
+ gint iCharLen;
+ gint iOffsetINQ;
+ gint iSelector;
+
+ iNbSelectors = tvb_get_guint32_endian(tvb, offset , p_mq_parm->mq_int_enc);
+ iNbIntegers = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ iCharLen = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_INQ);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_inq);
+
+ proto_tree_add_item(mq_tree, hf_mq_inq_nbsel, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_inq_nbint, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_inq_charlen, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ }
+ iOffsetINQ = 12;
+ if (tvb_length_remaining(tvb, offset + iOffsetINQ) >= iNbSelectors * 4)
+ {
+ if (tree)
+ {
+ for (iSelector = 0; iSelector < iNbSelectors; iSelector++)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_inq_sel, tvb, offset + iOffsetINQ + iSelector * 4, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ iOffsetINQ += iNbSelectors * 4;
+ if (p_mq_parm->mq_opcode == MQ_TST_MQINQ_REPLY || p_mq_parm->mq_opcode == MQ_TST_MQSET)
+ {
+ gint iSizeINQValues;
+ iSizeINQValues = iNbIntegers * 4 + iCharLen;
+ if (tvb_length_remaining(tvb, offset + iOffsetINQ) >= iSizeINQValues)
+ {
+ gint iInteger;
+ if (tree)
+ {
+ for (iInteger = 0; iInteger < iNbIntegers; iInteger++)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_inq_intvalue, tvb, offset + iOffsetINQ + iInteger * 4, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ iOffsetINQ += iNbIntegers * 4;
+ if (iCharLen != 0)
+ {
+ if (tree)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_inq_charvalues, tvb, offset + iOffsetINQ, iCharLen, p_mq_parm->mq_str_enc);
+ }
+ }
+ }
+ }
+ }
+ offset += tvb_length(tvb);
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_NOTIFICATION)
+ {
+ gint iHdl;
+
+ iHdl = tvb_get_guint32_endian(tvb, offset+4, p_mq_parm->mq_int_enc);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x", iHdl);
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_NOTIFICATION);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_notif);
+
+ proto_tree_add_item(mq_tree, hf_mq_notif_vers, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_notif_handle, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_notif_code, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_notif_value, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ }
+ offset+=16;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_REQUEST_MSGS)
+ {
+ gint iHdl;
+ gint iFlags;
+ gint iGlbMsgIdx;
+ gint iMaxMsgLen;
+ gint xOfs;
+ gint iOpt;
+
+ xOfs = 0;
+ iHdl = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ iMaxMsgLen = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ iFlags = tvb_get_guint32_endian(tvb, offset + 32, p_mq_parm->mq_int_enc);
+ iGlbMsgIdx = tvb_get_guint32_endian(tvb, offset + 36, p_mq_parm->mq_int_enc);
+ if (iFlags & 0x00000010)
+ {
+ p_mq_parm->mq_msgreq_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 44, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_msgreq_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 48, p_mq_parm->mq_int_enc);
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x GlbMsgIdx=%d, MaxLen=%d",
+ iHdl, iGlbMsgIdx, iMaxMsgLen);
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_REQMSG);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
+
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_version, tvb, offset , 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_handle, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_RecvBytes, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_RqstBytes, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_MaxMsgLen, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_MQGMO(tvb, mq_tree, offset + 20, ett_mq_gmo_option, p_mq_parm);
+
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_WaitIntrv, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_QueStatus, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_RqstFlags, tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_GlbMsgIdx, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
+
+ if (iFlags & 0x00000010)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_SelectIdx, tvb, offset + 40, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_MQMDVers, tvb, offset + 42, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_ccsid, tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_encoding(mq_tree, hf_mq_msgreq_encoding, tvb, offset + 48, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_MsgSeqNum, tvb, offset + 52, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_offset, tvb, offset + 56, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_MQMO(tvb, mq_tree, offset + 60, ett_mq_gmo_matchoption, p_mq_parm);
+ iOpt = tvb_get_guint32_endian(tvb, offset + 60, p_mq_parm->mq_int_enc);
+
+ if (iOpt & MQ_MQMO_MATCH_MSG_ID)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
+ xOfs += 24;
+ }
+ if (iOpt & MQ_MQMO_MATCH_CORREL_ID)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchCorId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
+ xOfs += 24;
+ }
+ if (iOpt & MQ_MQMO_MATCH_GROUP_ID)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchGrpid, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
+ xOfs += 24;
+ }
+ if (iOpt & MQ_MQMO_MATCH_MSG_TOKEN)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgTk, tvb, offset + 64 + xOfs, 16, p_mq_parm->mq_str_enc);
+ xOfs += 16;
+ }
+ }
+ }
+ offset += (iFlags & 0x00000010) ? (64+xOfs) : 40;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ else if (p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE)
+ {
+ gint iSegmIndex;
+ gint iGlbMsgIdx;
+ gint iPadLen;
+ gint iSegLength;
+ gint8 iStrLen;
+ gint iHdl;
+ gint iHdrL;
+
+ iHdl = tvb_get_guint32_endian(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ iGlbMsgIdx = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
+ iSegLength = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ iSegmIndex = tvb_get_guint16_endian(tvb, offset + 20, p_mq_parm->mq_int_enc);
+
+ if (iSegmIndex == 0)
+ {
+ iStrLen = tvb_get_guint8(tvb, offset + 54);
+ iPadLen = (2+1+iStrLen) % 4;
+ iPadLen = (iPadLen) ? 4-iPadLen : 0;
+ }
+ else
+ {
+ iPadLen = 0;
+ iStrLen = 0;
+ }
+
+ iHdrL = (iSegmIndex == 0) ? (54+1+iStrLen+iPadLen) : 24;
+
+ if (!mq_in_reassembly)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
+ }
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iHdrL, MQ_TEXT_ASYMSG);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
+
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_version , tvb, offset , 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_handle , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_MsgIndex , tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_GlbMsgIdx, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_SegLength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_SegmIndex, tvb, offset + 20, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_SeleIndex, tvb, offset + 22, 2, p_mq_parm->mq_int_enc);
+ if (p_mq_parm->mq_ctlf1 & MQ_TCF_FIRST)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_ReasonCod , tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_ActMsgLen , tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_TotMsgLen , tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_MsgToken , tvb, offset + 36, 16, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_Status , tvb, offset + 52, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_resolQNLn , tvb, offset + 54, 1, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_resolQNme , tvb, offset + 55, iStrLen, p_mq_parm->mq_str_enc);
+ if (iPadLen)
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_padding , tvb, offset + 55 + iStrLen, iPadLen, p_mq_parm->mq_str_enc);
+ }
+ }
+ offset+=iHdrL;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+
+ iSizePayload = tvb_length_remaining(tvb, offset);
+ bPayload = (iSizePayload>0);
+ }
+ else if ((p_mq_parm->mq_opcode == MQ_TST_SPI || p_mq_parm->mq_opcode == MQ_TST_SPI_REPLY) && tvb_length_remaining(tvb, offset) >= 12)
+ {
+ gint iOffsetSPI = 0;
+ guint32 iSpiVerb = 0;
+
+ p_mq_parm->iOfsEnc = offset + 12;
+ p_mq_parm->iOfsCcs = offset + 16;
+ p_mq_parm->iOfsFmt = offset + 20;
+
+ iSpiVerb = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", val_to_str(iSpiVerb, mq_spi_verbs_vals, "Unknown (0x%08x)"));
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, 12, MQ_TEXT_SPI);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_spi);
+
+ proto_tree_add_item(mq_tree, hf_mq_spi_verb, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ }
+
+ offset += 12;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ if (((p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxU ||
+ (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxU_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 12)
+ {
+ gint iSizeSPIMD = 0;
+ if (tree)
+ {
+ guint8 *sStructId;
+ sStructId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 4, ((p_mq_parm->mq_strucID & MQ_MASK_SPxx) == MQ_STRUCTID_SPxx) ? ENC_ASCII : ENC_EBCDIC);
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, 12, "%s", sStructId);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
+
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += 12;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+
+ if ((iSizeSPIMD = dissect_mq_md(tvb, mqroot_tree, offset, p_mq_parm, TRUE)) != 0)
+ {
+ offset += iSizeSPIMD;
+ offset += dissect_mq_gmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm);
+ offset += dissect_mq_pmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+
+ offset += dissect_mq_od(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
+
+ if (((p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxO ||
+ (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxO_EBCDIC ||
+ (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxI ||
+ (p_mq_parm->mq_strucID & MQ_MASK_SPxZ) == MQ_STRUCTID_SPxI_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 12)
+ {
+ if (tree)
+ {
+ /* Dissect the common part of these structures */
+ guint8 *sStructId;
+ sStructId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 4, ((p_mq_parm->mq_strucID & MQ_MASK_SPxx) == MQ_STRUCTID_SPxx) ? ENC_ASCII : ENC_EBCDIC);
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", sStructId);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
+
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ }
+
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPQO || p_mq_parm->mq_strucID == MQ_STRUCTID_SPQO_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 16)
+ {
+ if (tree)
+ {
+ gint iVerbNumber = 0;
+ proto_tree_add_item(mq_tree, hf_mq_spi_spqo_nbverb, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ iVerbNumber = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
+
+ if (tvb_length_remaining(tvb, offset) >= iVerbNumber * 20 + 16)
+ {
+ gint iVerb = 0;
+ iOffsetSPI = offset + 16;
+ for (iVerb = 0; iVerb < iVerbNumber; iVerb++)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_spi_spqo_verbid, tvb, iOffsetSPI, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spqo_maxiover, tvb, iOffsetSPI + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spqo_maxinver, tvb, iOffsetSPI + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spqo_maxouver, tvb, iOffsetSPI + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spqo_flags, tvb, iOffsetSPI + 16, 4, p_mq_parm->mq_int_enc);
+ iOffsetSPI += 20;
+ }
+ offset += iVerbNumber * 20 + 16;
+ }
+ }
+ }
+ else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPAI || p_mq_parm->mq_strucID == MQ_STRUCTID_SPAI_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 136)
+ {
+ if (tree)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_spi_spai_mode, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spai_unknown1, tvb, offset + 16, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spai_unknown2, tvb, offset + 64, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spai_msgid, tvb, offset + 112, 24, p_mq_parm->mq_str_enc);
+ }
+ offset += 136;
+ }
+ else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPGI || p_mq_parm->mq_strucID == MQ_STRUCTID_SPGI_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 24)
+ {
+ if (tree)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_spi_spgi_batchsz, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spgi_batchint, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spgi_maxmsgsz, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += 24;
+ }
+ else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPGO || p_mq_parm->mq_strucID == MQ_STRUCTID_SPPI ||
+ p_mq_parm->mq_strucID == MQ_STRUCTID_SPGO_EBCDIC || p_mq_parm->mq_strucID == MQ_STRUCTID_SPPI_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 20)
+ {
+ if (tree)
+ {
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 12, hf_mq_spi_spgo_options, ett_mq_spi_options, pf_flds_spiopt, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_spi_spgo_size, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ }
+ iSizePayload = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ offset += 20;
+ bPayload = TRUE;
+ }
+ else
+ {
+ offset += 12;
+ }
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ }
+ }
+ else if ((p_mq_parm->mq_opcode >= 0xA0 && p_mq_parm->mq_opcode <= 0xB9) && tvb_length_remaining(tvb, offset) >= 16)
+ {
+ /* The XA structures are special because they do not start with a structid */
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, 16, "%s (%s)", MQ_TEXT_XA,
+ val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
+ mq_tree = proto_item_add_subtree(ti, ett_mq_xa);
+
+ proto_tree_add_item(mq_tree, hf_mq_xa_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_xa_returnvalue, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 8, hf_mq_xa_tmflags, ett_mq_xa_tmflags, pf_flds_tmflags, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_xa_rmid, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += 16;
+ if (p_mq_parm->mq_opcode == MQ_TST_XA_START || p_mq_parm->mq_opcode == MQ_TST_XA_END || p_mq_parm->mq_opcode == MQ_TST_XA_PREPARE
+ || p_mq_parm->mq_opcode == MQ_TST_XA_COMMIT || p_mq_parm->mq_opcode == MQ_TST_XA_ROLLBACK || p_mq_parm->mq_opcode == MQ_TST_XA_FORGET
+ || p_mq_parm->mq_opcode == MQ_TST_XA_COMPLETE)
+ {
+ gint iSizeXid = 0;
+ if ((iSizeXid = dissect_mq_xid(tvb, mqroot_tree, p_mq_parm, offset)) != 0)
+ offset += iSizeXid;
+ }
+ else if ((p_mq_parm->mq_opcode == MQ_TST_XA_OPEN || p_mq_parm->mq_opcode == MQ_TST_XA_CLOSE)
+ && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ guint8 iXAInfoLength = 0;
+ iXAInfoLength = tvb_get_guint8(tvb, offset);
+ if (tvb_length_remaining(tvb, offset) >= iXAInfoLength + 1)
+ {
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iXAInfoLength + 1, MQ_TEXT_XINF);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_xa_info);
+
+ proto_tree_add_item(mq_tree, hf_mq_xa_xainfo_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_xa_xainfo_value, tvb, offset + 1, iXAInfoLength, p_mq_parm->mq_str_enc);
+ }
+ }
+ offset += 1 + iXAInfoLength;
+ }
+ else if ((p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER || p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER_REPLY)
+ && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ gint iNbXid = 0;
+ iNbXid = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+ if (tree)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_xa_count, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += 4;
+ if (p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER_REPLY)
+ {
+ gint iXid = 0;
+ for (iXid = 0; iXid < iNbXid; iXid++)
+ {
+ gint iSizeXid = 0;
+ if ((iSizeXid = dissect_mq_xid(tvb, mqroot_tree, p_mq_parm, offset)) != 0)
+ offset += iSizeXid;
+ else
+ break;
+ }
+ }
+ }
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_LPOO || p_mq_parm->mq_strucID == MQ_STRUCTID_LPOO_EBCDIC) && tvb_length_remaining(tvb, offset) >= 32)
+ {
+ guint iVersion;
+ guint iXtraData = 0;
+ gint iSize = 32;
+ iVersion = tvb_get_guint32_endian(tvb, offset+4, p_mq_parm->mq_int_enc);
+ if (iVersion >= 3)
+ {
+ iSize += 56;
+ iXtraData = tvb_get_guint32_endian(tvb, offset + 84, p_mq_parm->mq_int_enc);
+ }
+
+ if (iSize != 0 && tvb_length_remaining(tvb, offset) >= iSize)
+ {
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_LPOO);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_lpoo);
+
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+
+ dissect_mq_MQOO(tvb, mq_tree, offset+8, ett_mq_lpoo_options, hf_mq_lpoo_options, p_mq_parm);
+
+ dissect_mq_LPOO_LPIOPTS(tvb, mq_tree, offset+16, ett_mq_lpoo_lpiopts, p_mq_parm);
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_defpersist, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_defputresptype, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_defreadahead, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ if (iVersion >= 3)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_qprotect, tvb, offset + 32, 48, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_unknown6, tvb, offset + 80, 4, p_mq_parm->mq_int_enc);
+ /*proto_tree_add_item(mq_tree, hf_mq_lpoo_unknown7, tvb, offset + 84, 2, p_mq_parm->mq_int_enc);*/
+ proto_tree_add_item(mq_tree, hf_mq_lpoo_xtradata, tvb, offset + 84, 4, p_mq_parm->mq_int_enc);
+ }
+ }
+ offset += iSize;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ if (iXtraData>0)
+ {
+ if (p_mq_parm->mq_opcode == MQ_TST_SPI_REPLY)
+ {
+ bPayload = TRUE;
+ iSizePayload = iXtraData;
+ p_mq_parm->iOfsFmt = (offset-iSize);
+ }
+ }
+ }
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_ID || p_mq_parm->mq_strucID == MQ_STRUCTID_ID_EBCDIC) && tvb_length_remaining(tvb, offset) >= 5)
+ {
+ offset += dissect_mq_id(tvb, pinfo, mqroot_tree, offset, p_mq_parm);
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_UID || p_mq_parm->mq_strucID == MQ_STRUCTID_UID_EBCDIC) && tvb_length_remaining(tvb, offset) > 0)
+ {
+ gint iSizeUID;
+ /* iSizeUID = (iVersionID < 5 ? 28 : 132); guess */
+ /* The iVersionID is available in the previous ID segment, we should keep a state *
+ * Instead we rely on the segment length announced in the TSH */
+ iSizeUID = iSegmentLength - iSizeTSH;
+ if (iSizeUID != 28 && iSizeUID != 132)
+ iSizeUID = 0;
+
+ if (iSizeUID != 0 && tvb_length_remaining(tvb, offset) >= iSizeUID)
+ {
+ guint8 *sUserId;
+ sUserId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 4, 12, p_mq_parm->mq_str_enc);
+ if (strip_trailing_blanks(sUserId, 12) > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " User=%s", sUserId);
+ }
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeUID, MQ_TEXT_UID);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_uid);
+
+ proto_tree_add_item(mq_tree, hf_mq_uid_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_uid_userid, tvb, offset + 4, 12, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_uid_password, tvb, offset + 16, 12, p_mq_parm->mq_str_enc);
+ }
+
+ if (iSizeUID == 132)
+ {
+ if (tree)
+ {
+ proto_tree_add_item(mq_tree, hf_mq_uid_longuserid, tvb, offset + 28, 64, p_mq_parm->mq_str_enc);
+ dissect_mq_sid(tvb, mq_tree, p_mq_parm, offset + 92);
+ }
+ }
+ }
+ offset += iSizeUID;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+
+ offset += dissect_mq_od(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
+
+ if ((iSizeMD = dissect_mq_md(tvb, mqroot_tree, offset, p_mq_parm, TRUE)) != 0)
+ {
+ gint iSizeGMO = 0;
+ gint iSizePMO = 0;
+ offset += iSizeMD;
+
+ if ((iSizeGMO = dissect_mq_gmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm)) != 0)
+ {
+ offset += iSizeGMO;
+ bPayload = TRUE;
+ }
+ else if ((iSizePMO = dissect_mq_pmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize)) != 0)
+ {
+ offset += iSizePMO;
+ bPayload = TRUE;
+ }
+ if (tvb_length_remaining(tvb, offset) >= 4)
+ {
+ if (bPayload == TRUE && (p_mq_parm->mq_opcode != MQ_TST_ASYNC_MESSAGE))
+ {
+ iSizePayload = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, 4, MQ_TEXT_PUT);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_put);
+ proto_tree_add_item(mq_tree, hf_mq_put_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += 4;
+ }
+ }
+ }
+ if (iDistributionListSize > 0)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (Distribution List, Size=%d)", iDistributionListSize);
+ }
+ if (bPayload == TRUE)
+ {
+ if (iSizePayload != 0 && tvb_length_remaining(tvb, offset) > 0)
+ {
+ /* For the following header structures, each structure has a "format" field
+ which announces the type of the following structure. For dissection we
+ do not use it and rely on the structid instead. */
+ guint32 iHeadersLength = 0;
+ if (tvb_length_remaining(tvb, offset) >= 4)
+ {
+ gint iSizeMD2 = 0;
+ p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
+
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_XQH || p_mq_parm->mq_strucID == MQ_STRUCTID_XQH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 104)
+ {
+ /* if MD.format == MQXMIT */
+ gint iSizeXQH = 104;
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeXQH, MQ_TEXT_XQH);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_xqh);
+
+ proto_tree_add_item(mq_tree, hf_mq_xqh_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_xqh_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_xqh_remoteq, tvb, offset + 8, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_xqh_remoteqmgr, tvb, offset + 56, 48, p_mq_parm->mq_str_enc);
+ }
+ offset += iSizeXQH;
+ iHeadersLength += iSizeXQH;
+
+ if ((iSizeMD2 = dissect_mq_md(tvb, mqroot_tree, offset, p_mq_parm, TRUE)) != 0)
+ {
+ offset += iSizeMD2;
+ iHeadersLength += iSizeMD2;
+ }
+
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_DH || p_mq_parm->mq_strucID == MQ_STRUCTID_DH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 48)
+ {
+ /* if MD.format == MQHDIST */
+ gint iSizeDH = 48;
+ gint iNbrRecords = 0;
+ guint32 iRecFlags = 0;
+
+ iNbrRecords = tvb_get_guint32_endian(tvb, offset + 36, p_mq_parm->mq_int_enc);
+ iRecFlags = tvb_get_guint32_endian(tvb, offset + 32, p_mq_parm->mq_int_enc);
+ p_mq_parm->iOfsEnc = offset + 12;
+ p_mq_parm->iOfsCcs = offset + 16;
+ p_mq_parm->iOfsFmt = offset + 20;
+
+ p_mq_parm->mq_head_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_head_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeDH, MQ_TEXT_DH);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_dh);
+
+ proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_encoding(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_ccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_format, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dh_putmsgrecfld, tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dh_recspresent, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dh_objrecofs , tvb, offset + 40, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dh_putmsgrecofs, tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += iSizeDH;
+ iHeadersLength += iSizeDH;
+
+ if (iNbrRecords > 0)
+ {
+ gint iOffsetOR = 0;
+ gint iOffsetPMR = 0;
+ gint iSizeORPMR = 0;
+
+ iOffsetOR = tvb_get_guint32_endian(tvb, offset - iSizeDH + 40, p_mq_parm->mq_int_enc);
+ iOffsetPMR = tvb_get_guint32_endian(tvb, offset - iSizeDH + 44, p_mq_parm->mq_int_enc);
+ if ((iSizeORPMR = dissect_mq_or(tvb, mqroot_tree, offset, iNbrRecords, iOffsetOR, p_mq_parm)) != 0)
+ {
+ offset += iSizeORPMR;
+ iHeadersLength += iSizeORPMR;
+ }
+ if ((iSizeORPMR = dissect_mq_pmr(tvb, mqroot_tree, offset, iNbrRecords, iOffsetPMR, iRecFlags, p_mq_parm)) != 0)
+ {
+ offset += iSizeORPMR;
+ iHeadersLength += iSizeORPMR;
+ }
+ }
+
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_DLH || p_mq_parm->mq_strucID == MQ_STRUCTID_DLH_EBCDIC) && tvb_length_remaining(tvb, offset) >= 172)
+ {
+ /* if MD.format == MQDEAD */
+ gint iSizeDLH = 172;
+ p_mq_parm->iOfsEnc = offset + 108;
+ p_mq_parm->iOfsCcs = offset + 112;
+ p_mq_parm->iOfsFmt = offset + 116;
+
+ p_mq_parm->mq_dlh_ccsid.encod = tvb_get_guint32_endian(tvb, offset + 108, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_dlh_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset + 112, p_mq_parm->mq_int_enc);
+
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeDLH, MQ_TEXT_DLH);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_dlh);
+
+ proto_tree_add_item(mq_tree, hf_mq_dlh_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_reason, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_destq, tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_destqmgr, tvb, offset + 60, 48, p_mq_parm->mq_str_enc);
+ dissect_mq_encoding(mq_tree, hf_mq_dlh_encoding, tvb, offset + 108, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_ccsid, tvb, offset + 112, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_format, tvb, offset + 116, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_putappltype, tvb, offset + 124, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_putapplname, tvb, offset + 128, 28, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_putdate, tvb, offset + 156, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_puttime, tvb, offset + 164, 8, p_mq_parm->mq_str_enc);
+ }
+ offset += iSizeDLH;
+ iHeadersLength += iSizeDLH;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_MDE || p_mq_parm->mq_strucID == MQ_STRUCTID_MDE_EBCDIC) && tvb_length_remaining(tvb, offset) >= 72)
+ {
+ /* if MD.format == MQHMDE */
+ gint iSizeMDE = 72;
+ p_mq_parm->iOfsEnc = offset + 12;
+ p_mq_parm->iOfsCcs = offset + 16;
+ p_mq_parm->iOfsFmt = offset + 20;
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeMDE, MQ_TEXT_MDE);
+ mq_tree = proto_item_add_subtree(ti, ett_mq_mde);
+
+ proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_encoding(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_ccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_format, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_groupid, tvb, offset + 32, 24, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_md_msgseqnumber, tvb, offset + 56, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_offset, tvb, offset + 60, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_msgflags, tvb, offset + 64, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_origlen, tvb, offset + 68, 4, p_mq_parm->mq_int_enc);
+ }
+ offset += iSizeMDE;
+ iHeadersLength += iSizeMDE;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_CIH || p_mq_parm->mq_strucID == MQ_STRUCTID_CIH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH_EBCDIC)
+ && tvb_length_remaining(tvb, offset) >= 12)
+ {
+ /* Dissect the generic part of the other pre-defined headers */
+ /* We assume that only one such header is present */
+ gint iSizeHeader = 0;
+ iSizeHeader = (gint) tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
+ /* XXX - 32 is inferred from the code below. What's the
+ * correct minimum? */
+ if (iSizeHeader <= 32)
+ THROW(ReportedBoundsError);
+
+ if (tvb_length_remaining(tvb, offset) >= iSizeHeader)
+ {
+ p_mq_parm->iOfsEnc = offset + 12;
+ p_mq_parm->iOfsCcs = offset + 16;
+ p_mq_parm->iOfsFmt = offset + 20;
+ if (tree)
+ {
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeHeader, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
+ mq_tree = proto_item_add_subtree(ti, ett_mq_head);
+
+ proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_encoding(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_ccsid, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_format, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_struct, tvb, offset + 32, iSizeHeader - 32, ENC_NA);
+
+ }
+ offset += iSizeHeader;
+ iHeadersLength += iSizeHeader;
+ p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
+ }
+ }
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%d bytes)", iSizePayload - iHeadersLength);
+
+ if (!mq_in_reassembly)
+ {
+ /* Call subdissector for the payload */
+ tvbuff_t *next_tvb;
#if 0
- struct mqinfo *mqinfo;
- mqinfo = wmem_new0(wmem_packet_scope(), struct mqinfo);
- /* Format, encoding and character set are "data type" information, not subprotocol information */
- mqinfo->encoding = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsEnc, p_mq_parm->mq_int_enc);
- mqinfo->ccsid = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsCcs, p_mq_parm->mq_int_enc);
- memcpy(mqinfo->format,
- tvb_get_string_enc(wmem_packet_scope(), tvb, p_mq_parm->iOfsFmt, sizeof(mqinfo->format), p_mq_parm->mq_str_enc),
- sizeof(mqinfo->format));
+ struct mqinfo *mqinfo;
+ mqinfo = wmem_new0(wmem_packet_scope(), struct mqinfo);
+ /* Format, encoding and character set are "data type" information, not subprotocol information */
+ mqinfo->encoding = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsEnc, p_mq_parm->mq_int_enc);
+ mqinfo->ccsid = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsCcs, p_mq_parm->mq_int_enc);
+ memcpy(mqinfo->format,
+ tvb_get_string_enc(wmem_packet_scope(), tvb, p_mq_parm->iOfsFmt, sizeof(mqinfo->format), p_mq_parm->mq_str_enc),
+ sizeof(mqinfo->format));
#endif
- p_mq_parm->mq_cur_ccsid.encod = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsEnc, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_cur_ccsid.ccsid = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsCcs, p_mq_parm->mq_int_enc);
- memcpy(p_mq_parm->mq_format,
- tvb_get_string_enc(wmem_packet_scope(), tvb, p_mq_parm->iOfsFmt, sizeof(p_mq_parm->mq_format), p_mq_parm->mq_str_enc),
- sizeof(p_mq_parm->mq_format));
-
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, mqroot_tree, p_mq_parm))
- call_dissector(data_handle, next_tvb, pinfo, mqroot_tree);
- }
- else
- {
- tvbuff_t *next_tvb;
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- call_dissector(data_handle, next_tvb, pinfo, mqroot_tree);
- }
- }
- offset = tvb_length(tvb);
- }
- /* After all recognised structures have been dissected, process remaining structure*/
- if (tvb_length_remaining(tvb, offset) >= 4)
- {
- p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
- if (tree)
- {
- proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
- }
- }
- }
- else
- {
- /* This is a MQ segment continuation (if MQ reassembly is not enabled) */
- col_append_str(pinfo->cinfo, COL_INFO, " [Unreassembled MQ]");
- call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset), pinfo, tree);
- }
- }
- }
- else
- {
- /* This packet is a TCP continuation of a segment (if desegmentation is not enabled) */
- col_append_str(pinfo->cinfo, COL_INFO, " [Undesegmented]");
- if (tree)
- {
- proto_tree_add_item(tree, proto_mq, tvb, offset, -1, ENC_NA);
- }
- call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset), pinfo, tree);
- }
- }
+ p_mq_parm->mq_cur_ccsid.encod = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsEnc, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_cur_ccsid.ccsid = tvb_get_guint32_endian(tvb, p_mq_parm->iOfsCcs, p_mq_parm->mq_int_enc);
+ memcpy(p_mq_parm->mq_format,
+ tvb_get_string_enc(wmem_packet_scope(), tvb, p_mq_parm->iOfsFmt, sizeof(p_mq_parm->mq_format), p_mq_parm->mq_str_enc),
+ sizeof(p_mq_parm->mq_format));
+
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, mqroot_tree, p_mq_parm))
+ call_dissector(data_handle, next_tvb, pinfo, mqroot_tree);
+ }
+ else
+ {
+ tvbuff_t *next_tvb;
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(data_handle, next_tvb, pinfo, mqroot_tree);
+ }
+ }
+ offset = tvb_length(tvb);
+ }
+ /* After all recognised structures have been dissected, process remaining structure*/
+ if (tvb_length_remaining(tvb, offset) >= 4)
+ {
+ p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
+ if (tree)
+ {
+ proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
+ }
+ }
+ }
+ else
+ {
+ /* This is a MQ segment continuation (if MQ reassembly is not enabled) */
+ col_append_str(pinfo->cinfo, COL_INFO, " [Unreassembled MQ]");
+ call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset), pinfo, tree);
+ }
+ }
+ }
+ else
+ {
+ /* This packet is a TCP continuation of a segment (if desegmentation is not enabled) */
+ col_append_str(pinfo->cinfo, COL_INFO, " [Undesegmented]");
+ if (tree)
+ {
+ proto_tree_add_item(tree, proto_mq, tvb, offset, -1, ENC_NA);
+ }
+ call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset), pinfo, tree);
+ }
+ }
}
static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
- mq_parm_t mq_parm;
+ mq_parm_t mq_parm;
- /* Reassembly of the MQ messages that span several PDU (several TSH) */
- /* Typically a TCP PDU is 1460 bytes and a MQ PDU is 32766 bytes */
- if (tvb_length(tvb) < 28)
+ /* Reassembly of the MQ messages that span several PDU (several TSH) */
+ /* Typically a TCP PDU is 1460 bytes and a MQ PDU is 32766 bytes */
+ if (tvb_length(tvb) < 28)
return 0;
- memset(&mq_parm, 0, sizeof(mq_parm_t));
- mq_parm.mq_strucID = tvb_get_ntohl(tvb, 0);
-
- if ( (mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
- {
- guint8 iCtlF = 0;
- gint32 iSegL = 0;
- gint32 iBegL = 0;
- gint32 iEnco = 0;
- gint32 iMulS = 0;
- gint32 iHdrL = 0;
- gint32 iNxtP = 0;
- guint8 iOpcd = 0;
- gboolean bSeg1st = FALSE;
- gboolean bSegLst = FALSE;
- gboolean bMore = FALSE;
-
- gint32 iHdl = 0;
- gint32 iGlbMsgIdx = 0;
- gint32 iSegLength = 0;
- gint16 iSegmIndex = 0;
-
- guint32 uStrL = 0;
- guint32 uPadL = 0;
-
- /* TSHM structure as 8 bytes more after the length (convid/requestid) */
- if (mq_parm.mq_strucID == MQ_STRUCTID_TSHM || mq_parm.mq_strucID == MQ_STRUCTID_TSHM_EBCDIC)
- iMulS = 8;
-
- /* Get the Encoding scheme */
- iEnco = (tvb_get_guint8(tvb, 8 + iMulS) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
- /* Get the Operation Code */
- iOpcd = tvb_get_guint8( tvb, 9 + iMulS);
- /* Get the Control Flag */
- iCtlF = tvb_get_guint8( tvb, 10 + iMulS);
- /* Get the Semgnet Length */
- iSegL = tvb_get_ntohl ( tvb, 4);
- /* First Segment ? */
- bSeg1st = ((iCtlF & MQ_TCF_FIRST) != 0);
- /* Last Segment */
- bSegLst = ((iCtlF & MQ_TCF_LAST) != 0);
-
- mq_in_reassembly = FALSE;
-
- if ((iOpcd > 0x80 && !(bSeg1st && bSegLst)) || iOpcd == MQ_TST_ASYNC_MESSAGE)
- {
- proto_tree *mq_tree = NULL;
-
- /* Optimisation : only fragmented segments go through the reassembly process */
- /*
- It seems that after a PUT on a Queue, when doing a GET, MQ first get
- a small part of the response (4096 bytes)
- The response contain the number of bytes returned for this request (ActMsgLen)
- and the total number of bytes of this reply (TotMsgLen)
-
- this mean the flow seems to be :
-
- PUT
- REQUEST_MSG (MaxLen=4096)
- ASYNC_MSG (1st/Lst Segment, ActMsgLen=4096, TotMsgLen=279420)
- as ActMsgLen!=TotMsgLen, this mean the MSG is not complete, we only receive some of 279420 bytes
- REQUEST_MSG (MaxLen=279420)
- ASYNC_MSG (1st Segment, SegIndex=0 ActMsgLen=279420, TotMsgLen=279420)
- ASYNC_MSG (Mid Segment, SegIndex=1)
- ASYNC_MSG (Mid Segment, SegIndex=2)
- .
- ASYNC_MSG (Lst Segment, SegIndex=n)
- End of reassembling (we have 279420 bytes to decode)
- */
-
- if (mq_reassembly)
- {
- fragment_head *fd_head;
- guint32 iConnectionId = (pinfo->srcport + pinfo->destport);
- iHdrL = 28 + iMulS;
-
- /* Get the MQ Handle of the Object */
- iHdl = tvb_get_guint32_endian(tvb, iHdrL + 4, iEnco);
- /* Get the Global Message Index */
- iGlbMsgIdx = tvb_get_guint32_endian(tvb, iHdrL + 12, iEnco);
- /* Get the Segment Length */
- iSegLength = tvb_get_guint32_endian(tvb, iHdrL + 16, iEnco);
- /* Get the Segment Index */
- iSegmIndex = tvb_get_guint16_endian(tvb, iHdrL +20, iEnco);
-
- /*
- if SegmIndex == 0, it has 54 bytes + the length and padding
- of a variable string at the end of the Header
- */
-
- if (iSegmIndex == 0)
- {
- uStrL = tvb_get_guint8(tvb, iHdrL + 54);
- uPadL = ((((2+1+uStrL)/4)+1)*4)-(2+1+uStrL);
- }
- bMore = !bSegLst;
- /*
- First segment has a longer header
- */
- iNxtP = iHdrL + ((bSeg1st) ? (54 + 1 + uStrL + uPadL) : (24));
- iNxtP += dissect_mq_md(tvb, NULL, iNxtP, &mq_parm, FALSE);
-
- /*
- if it is the 1st Segment, it means we are
- of the beginning of a reassembling. We must take the whole segment (with tSHM, and headers)
- */
- iBegL = (bSeg1st) ? 0 : iNxtP;
-
- fd_head = fragment_add_seq_next(&mq_reassembly_table,
- tvb, iBegL,
- pinfo, iConnectionId, NULL,
- iSegL - iBegL, bMore);
-
- if (tree)
- {
- proto_item *ti = proto_tree_add_item(tree, proto_mq, tvb, 0, -1, ENC_NA);
- if (bMore)
- {
- proto_item_append_text(ti, " [%s of a Reassembled MQ Segment] Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
- val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
- iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
- }
- else
- {
- proto_item_append_text(ti, " %s Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
- val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
- iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
- }
- mq_tree = proto_item_add_subtree(ti, ett_mq_reaasemb);
- }
- else
- {
- mq_tree = tree;
- }
-
- if (fd_head != NULL && pinfo->fd->num == fd_head->reassembled_in)
- {
- tvbuff_t *next_tvb;
-
- /* Reassembly finished */
- if (fd_head->next != NULL)
- {
- /* 2 or more fragments */
- next_tvb = tvb_new_chain(tvb, fd_head->tvb_data);
- add_new_data_source(pinfo, next_tvb, "Reassembled MQ");
- }
- else
- {
- /* Only 1 fragment */
- next_tvb = tvb;
- }
- dissect_mq_pdu(next_tvb, pinfo, mq_tree);
- return tvb_length(tvb);
- }
- else
- {
- mq_in_reassembly = TRUE;
- /* Reassembly in progress */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ");
- col_add_fstr(pinfo->cinfo, COL_INFO, "[%s of a Reassembled MQ Segment] Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
- val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
- iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
- dissect_mq_pdu(tvb, pinfo, mq_tree);
- return tvb_length(tvb);
- }
- }
- else
- {
- dissect_mq_pdu(tvb, pinfo, mq_tree); /* XXX: mq_tree always NULL ?? */
- if (bSeg1st)
- {
- /* MQ segment is the first of a unreassembled series */
- col_append_str(pinfo->cinfo, COL_INFO, " [Unreassembled MQ]");
- }
- return tvb_length(tvb);
- }
- }
- /* Reassembly not enabled or non-fragmented message */
- dissect_mq_pdu(tvb, pinfo, tree);
- }
-
- return tvb_length(tvb);
+ memset(&mq_parm, 0, sizeof(mq_parm_t));
+ mq_parm.mq_strucID = tvb_get_ntohl(tvb, 0);
+
+ if ( (mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
+ {
+ guint8 iCtlF = 0;
+ gint32 iSegL = 0;
+ gint32 iBegL = 0;
+ gint32 iEnco = 0;
+ gint32 iMulS = 0;
+ gint32 iHdrL = 0;
+ gint32 iNxtP = 0;
+ guint8 iOpcd = 0;
+ gboolean bSeg1st = FALSE;
+ gboolean bSegLst = FALSE;
+ gboolean bMore = FALSE;
+
+ gint32 iHdl = 0;
+ gint32 iGlbMsgIdx = 0;
+ gint32 iSegLength = 0;
+ gint16 iSegmIndex = 0;
+
+ guint32 uStrL = 0;
+ guint32 uPadL = 0;
+
+ /* TSHM structure as 8 bytes more after the length (convid/requestid) */
+ if (mq_parm.mq_strucID == MQ_STRUCTID_TSHM || mq_parm.mq_strucID == MQ_STRUCTID_TSHM_EBCDIC)
+ iMulS = 8;
+
+ /* Get the Encoding scheme */
+ iEnco = (tvb_get_guint8(tvb, 8 + iMulS) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
+ /* Get the Operation Code */
+ iOpcd = tvb_get_guint8( tvb, 9 + iMulS);
+ /* Get the Control Flag */
+ iCtlF = tvb_get_guint8( tvb, 10 + iMulS);
+ /* Get the Semgnet Length */
+ iSegL = tvb_get_ntohl ( tvb, 4);
+ /* First Segment ? */
+ bSeg1st = ((iCtlF & MQ_TCF_FIRST) != 0);
+ /* Last Segment */
+ bSegLst = ((iCtlF & MQ_TCF_LAST) != 0);
+
+ mq_in_reassembly = FALSE;
+
+ if ((iOpcd > 0x80 && !(bSeg1st && bSegLst)) || iOpcd == MQ_TST_ASYNC_MESSAGE)
+ {
+ proto_tree *mq_tree = NULL;
+
+ /* Optimisation : only fragmented segments go through the reassembly process */
+ /*
+ It seems that after a PUT on a Queue, when doing a GET, MQ first get
+ a small part of the response (4096 bytes)
+ The response contain the number of bytes returned for this request (ActMsgLen)
+ and the total number of bytes of this reply (TotMsgLen)
+
+ this mean the flow seems to be :
+
+ PUT
+ REQUEST_MSG (MaxLen=4096)
+ ASYNC_MSG (1st/Lst Segment, ActMsgLen=4096, TotMsgLen=279420)
+ as ActMsgLen!=TotMsgLen, this mean the MSG is not complete, we only receive some of 279420 bytes
+ REQUEST_MSG (MaxLen=279420)
+ ASYNC_MSG (1st Segment, SegIndex=0 ActMsgLen=279420, TotMsgLen=279420)
+ ASYNC_MSG (Mid Segment, SegIndex=1)
+ ASYNC_MSG (Mid Segment, SegIndex=2)
+ .
+ ASYNC_MSG (Lst Segment, SegIndex=n)
+ End of reassembling (we have 279420 bytes to decode)
+ */
+
+ if (mq_reassembly)
+ {
+ fragment_head *fd_head;
+ guint32 iConnectionId = (pinfo->srcport + pinfo->destport);
+ iHdrL = 28 + iMulS;
+
+ /* Get the MQ Handle of the Object */
+ iHdl = tvb_get_guint32_endian(tvb, iHdrL + 4, iEnco);
+ /* Get the Global Message Index */
+ iGlbMsgIdx = tvb_get_guint32_endian(tvb, iHdrL + 12, iEnco);
+ /* Get the Segment Length */
+ iSegLength = tvb_get_guint32_endian(tvb, iHdrL + 16, iEnco);
+ /* Get the Segment Index */
+ iSegmIndex = tvb_get_guint16_endian(tvb, iHdrL +20, iEnco);
+
+ /*
+ if SegmIndex == 0, it has 54 bytes + the length and padding
+ of a variable string at the end of the Header
+ */
+
+ if (iSegmIndex == 0)
+ {
+ uStrL = tvb_get_guint8(tvb, iHdrL + 54);
+ uPadL = ((((2+1+uStrL)/4)+1)*4)-(2+1+uStrL);
+ }
+ bMore = !bSegLst;
+ /*
+ First segment has a longer header
+ */
+ iNxtP = iHdrL + ((bSeg1st) ? (54 + 1 + uStrL + uPadL) : (24));
+ iNxtP += dissect_mq_md(tvb, NULL, iNxtP, &mq_parm, FALSE);
+
+ /*
+ if it is the 1st Segment, it means we are
+ of the beginning of a reassembling. We must take the whole segment (with tSHM, and headers)
+ */
+ iBegL = (bSeg1st) ? 0 : iNxtP;
+
+ fd_head = fragment_add_seq_next(&mq_reassembly_table,
+ tvb, iBegL,
+ pinfo, iConnectionId, NULL,
+ iSegL - iBegL, bMore);
+
+ if (tree)
+ {
+ proto_item *ti = proto_tree_add_item(tree, proto_mq, tvb, 0, -1, ENC_NA);
+ if (bMore)
+ {
+ proto_item_append_text(ti, " [%s of a Reassembled MQ Segment] Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
+ }
+ else
+ {
+ proto_item_append_text(ti, " %s Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
+ }
+ mq_tree = proto_item_add_subtree(ti, ett_mq_reaasemb);
+ }
+ else
+ {
+ mq_tree = tree;
+ }
+
+ if (fd_head != NULL && pinfo->fd->num == fd_head->reassembled_in)
+ {
+ tvbuff_t *next_tvb;
+
+ /* Reassembly finished */
+ if (fd_head->next != NULL)
+ {
+ /* 2 or more fragments */
+ next_tvb = tvb_new_chain(tvb, fd_head->tvb_data);
+ add_new_data_source(pinfo, next_tvb, "Reassembled MQ");
+ }
+ else
+ {
+ /* Only 1 fragment */
+ next_tvb = tvb;
+ }
+ dissect_mq_pdu(next_tvb, pinfo, mq_tree);
+ return tvb_length(tvb);
+ }
+ else
+ {
+ mq_in_reassembly = TRUE;
+ /* Reassembly in progress */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ");
+ col_add_fstr(pinfo->cinfo, COL_INFO, "[%s of a Reassembled MQ Segment] Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
+ dissect_mq_pdu(tvb, pinfo, mq_tree);
+ return tvb_length(tvb);
+ }
+ }
+ else
+ {
+ dissect_mq_pdu(tvb, pinfo, mq_tree); /* XXX: mq_tree always NULL ?? */
+ if (bSeg1st)
+ {
+ /* MQ segment is the first of a unreassembled series */
+ col_append_str(pinfo->cinfo, COL_INFO, " [Unreassembled MQ]");
+ }
+ return tvb_length(tvb);
+ }
+ }
+ /* Reassembly not enabled or non-fragmented message */
+ dissect_mq_pdu(tvb, pinfo, tree);
+ }
+
+ return tvb_length(tvb);
}
static guint get_mq_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
- if (tvb_length_remaining(tvb, offset) >= 8)
- {
- guint32 mq_strucID = tvb_get_ntohl(tvb, 0);
- if ( (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
- {
- return tvb_get_ntohl(tvb, offset + 4);
- }
- }
- return 0;
+ if (tvb_length_remaining(tvb, offset) >= 8)
+ {
+ guint32 mq_strucID = tvb_get_ntohl(tvb, 0);
+ if ( (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
+ {
+ return tvb_get_ntohl(tvb, offset + 4);
+ }
+ }
+ return 0;
}
static int dissect_mq_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
- tcp_dissect_pdus(tvb, pinfo, tree, mq_desegment, 28, get_mq_pdu_len, reassemble_mq, data);
- return tvb_length(tvb);
+ tcp_dissect_pdus(tvb, pinfo, tree, mq_desegment, 28, get_mq_pdu_len, reassemble_mq, data);
+ return tvb_length(tvb);
}
static void dissect_mq_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- /* Since SPX has no standard desegmentation, MQ cannot be performed as well */
- dissect_mq_pdu(tvb, pinfo, tree);
+ /* Since SPX has no standard desegmentation, MQ cannot be performed as well */
+ dissect_mq_pdu(tvb, pinfo, tree);
}
static gboolean dissect_mq_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint iProto, void *data)
{
- if (tvb_length(tvb) >= 28)
- {
- guint32 mq_strucID = tvb_get_ntohl(tvb, 0);
- if ( (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
- {
- /* Register this dissector for this conversation */
- conversation_t *conversation;
-
- conversation = find_or_create_conversation(pinfo);
- if (iProto == MQ_XPT_TCP)
- conversation_set_dissector(conversation, mq_tcp_handle);
-
- /* Dissect the packet */
- reassemble_mq(tvb, pinfo, tree, data);
- return TRUE;
- }
- }
- return FALSE;
+ if (tvb_length(tvb) >= 28)
+ {
+ guint32 mq_strucID = tvb_get_ntohl(tvb, 0);
+ if ( (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
+ {
+ /* Register this dissector for this conversation */
+ conversation_t *conversation;
+
+ conversation = find_or_create_conversation(pinfo);
+ if (iProto == MQ_XPT_TCP)
+ conversation_set_dissector(conversation, mq_tcp_handle);
+
+ /* Dissect the packet */
+ reassemble_mq(tvb, pinfo, tree, data);
+ return TRUE;
+ }
+ }
+ return FALSE;
}
-static gboolean dissect_mq_heur_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+static gboolean dissect_mq_heur_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
- return dissect_mq_heur(tvb, pinfo, tree, MQ_XPT_TCP, NULL);
+ return dissect_mq_heur(tvb, pinfo, tree, MQ_XPT_TCP, NULL);
}
-static gboolean dissect_mq_heur_netbios(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+static gboolean dissect_mq_heur_netbios(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
- return dissect_mq_heur(tvb, pinfo, tree, MQ_XPT_NETBIOS, NULL);
+ return dissect_mq_heur(tvb, pinfo, tree, MQ_XPT_NETBIOS, NULL);
}
-static gboolean dissect_mq_heur_http(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+static gboolean dissect_mq_heur_http(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
- return dissect_mq_heur(tvb, pinfo, tree, MQ_XPT_HTTP, NULL);
+ return dissect_mq_heur(tvb, pinfo, tree, MQ_XPT_HTTP, NULL);
}
static void mq_init(void)
{
- reassembly_table_init(&mq_reassembly_table,
- &addresses_reassembly_table_functions);
+ reassembly_table_init(&mq_reassembly_table,
+ &addresses_reassembly_table_functions);
}
void proto_register_mq(void)
{
- static hf_register_info hf[] =
- {
- { &hf_mq_tsh_StructID , {"StructID..", "mq.tsh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_tsh_mqseglen , {"MQSegmLen.", "mq.tsh.seglength", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH MQ Segment length", HFILL }},
- { &hf_mq_tsh_convid , {"Convers ID", "mq.tsh.convid", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH Conversation ID", HFILL }},
- { &hf_mq_tsh_requestid, {"Request ID", "mq.tsh.requestid", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH Request ID", HFILL }},
- { &hf_mq_tsh_byteorder, {"Byte order", "mq.tsh.byteorder", FT_UINT8, BASE_HEX, VALS(GET_VALSV(byteorder)), 0x0, "TSH Byte order", HFILL }},
- { &hf_mq_tsh_opcode , {"SegmType..", "mq.tsh.type", FT_UINT8, BASE_HEX, VALS(GET_VALSV(opcode)), 0x0, "TSH MQ segment type", HFILL }},
- { &hf_mq_tsh_ctlflgs1 , {"Ctl Flag 1", "mq.tsh.cflags1", FT_UINT8, BASE_HEX, NULL, 0x0, "TSH Control flags 1", HFILL }},
- { &hf_mq_tsh_ctlflgs2 , {"Ctl Flag 2", "mq.tsh.cflags2", FT_UINT8, BASE_HEX, NULL, 0x0, "TSH Control flags 2", HFILL }},
- { &hf_mq_tsh_luwid , {"LUW Ident.", "mq.tsh.luwid", FT_BYTES, BASE_NONE, NULL, 0x0, "TSH logical unit of work identifier", HFILL }},
- { &hf_mq_tsh_encoding , {"Encoding..", "mq.tsh.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH Encoding", HFILL }},
- { &hf_mq_tsh_ccsid , {"CCSID.....", "mq.tsh.ccsid", FT_INT16, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "TSH CCSID", HFILL }},
- { &hf_mq_tsh_reserved , {"Reserved..", "mq.tsh.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, "TSH Reserved", HFILL }},
-
- { &hf_mq_tsh_tcf_confirmreq, {"Confirm Req", "mq.tsh.tcf.confirmreq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_CONFIRM_REQUEST, "TSH TCF Confirm request", HFILL }},
- { &hf_mq_tsh_tcf_error , {"Error", "mq.tsh.tcf.error", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_ERROR, "TSH TCF Error", HFILL }},
- { &hf_mq_tsh_tcf_reqclose , {"Req close", "mq.tsh.tcf.reqclose", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_CLOSE, "TSH TCF Request close", HFILL }},
- { &hf_mq_tsh_tcf_closechann, {"Close Chnl", "mq.tsh.tcf.closechann", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_CLOSE_CHANNEL, "TSH TCF Close channel", HFILL }},
- { &hf_mq_tsh_tcf_first , {"First Seg", "mq.tsh.tcf.first", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_FIRST, "TSH TCF First", HFILL }},
- { &hf_mq_tsh_tcf_last , {"Last Seg", "mq.tsh.tcf.last", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_LAST, "TSH TCF Last", HFILL }},
- { &hf_mq_tsh_tcf_reqacc , {"Req accept", "mq.tsh.tcf.reqacc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_ACCEPTED, "TSH TCF Request accepted", HFILL }},
- { &hf_mq_tsh_tcf_dlq , {"DLQ used", "mq.tsh.tcf.dlq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_DLQ_USED, "TSH TCF DLQ used", HFILL }},
-
- { &hf_mq_tsh_tcf2_HdrComp , {"HDR Comp", "mq.tsh.tcf2.hdrcomp", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_HDRCOMP , "TSH TCF2 Header Compressed", HFILL }},
- { &hf_mq_tsh_tcf2_MsgComp , {"MSG Comp", "mq.tsh.tcf2.msgcomp", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_MSGCOMP , "TSH TCF2 Message Compressed", HFILL }},
- { &hf_mq_tsh_tcf2_CSH , {"CSH", "mq.tsh.tcf2.csh" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_CSH , "TSH TCF2 CSH", HFILL }},
- { &hf_mq_tsh_tcf2_CmitIntv , {"ComitIntvl", "mq.tsh.tcf.cmitintv", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_CMIT_INTERVAL, "TSH TCF2 Commit Interval", HFILL }},
-
- { &hf_mq_api_replylen , {"Reply len..", "mq.api.replylength", FT_UINT32, BASE_DEC, NULL, 0x0, "API Reply length", HFILL }},
- { &hf_mq_api_compcode , {"Compl Code.", "mq.api.completioncode", FT_UINT32, BASE_DEC, VALS(GET_VALSV(mqcc)), 0x0, "API Completion code", HFILL }},
- { &hf_mq_api_reascode , {"Reason Code", "mq.api.reasoncode", FT_UINT32, BASE_DEC, VALS(GET_VALSV(mqrc)), 0x0, "API Reason code", HFILL }},
- { &hf_mq_api_objecthdl, {"Object Hdl.", "mq.api.hobj", FT_UINT32, BASE_HEX, NULL, 0x0, "API Object handle", HFILL }},
-
- { &hf_mq_socket_conversid, {"ConversId", "mq.socket.conversid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Conversation Id", HFILL }},
- { &hf_mq_socket_requestid, {"RequestId", "mq.socket.requestid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Request Id", HFILL }},
- { &hf_mq_socket_type , {"Type.....", "mq.socket.type", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Type", HFILL }},
- { &hf_mq_socket_parm1 , {"Parm1....", "mq.socket.parm1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Parameter 1", HFILL }},
- { &hf_mq_socket_parm2 , {"Parm2....", "mq.socket.parm2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Parameter 2", HFILL }},
-
- { &hf_mq_caut_StructID , {"StructID." , "mq.caut.structid" , FT_STRINGZ, BASE_NONE , NULL, 0x0, NULL, HFILL }},
- { &hf_mq_caut_AuthType , {"AuthType." , "mq.caut.authtype" , FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT Authority Type", HFILL }},
- { &hf_mq_caut_UsrMaxLen, {"UsrMaxLen", "mq.caut.usrmaxlen", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT userid Maximum length", HFILL }},
- { &hf_mq_caut_PwdMaxLen, {"PwdMaxLen", "mq.caut.pwdmaxlen", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT password Maximum length", HFILL }},
- { &hf_mq_caut_UsrLength, {"UsrLength", "mq.caut.usrlength", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT userid length", HFILL }},
- { &hf_mq_caut_PwdLength, {"PwdLength", "mq.caut.pswlength", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT password length", HFILL }},
- { &hf_mq_caut_usr , {"userid...", "mq.msh.userid" , FT_STRINGZ, BASE_NONE , NULL, 0x0, "CAUT UserId", HFILL }},
- { &hf_mq_caut_psw , {"password.", "mq.msh.password" , FT_STRINGZ, BASE_NONE , NULL, 0x0, "CAUT Password", HFILL }},
-
- { &hf_mq_msh_StructID , {"StructID", "mq.msh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_msh_seqnum , {"Seq Numb", "mq.msh.seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, "MSH sequence number", HFILL }},
- { &hf_mq_msh_datalength, {"Buf len.", "mq.msh.buflength", FT_UINT32, BASE_DEC, NULL, 0x0, "MSH buffer length", HFILL }},
- { &hf_mq_msh_unknown1 , {"Unknown1", "mq.msh.unknown1", FT_UINT32, BASE_HEX, NULL, 0x0, "MSH unknown1", HFILL }},
- { &hf_mq_msh_msglength , {"Msg len.", "mq.msh.msglength", FT_UINT32, BASE_DEC, NULL, 0x0, "MSH message length", HFILL }},
-
- { &hf_mq_xqh_StructID , {"StructID", "mq.xqh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_xqh_version , {"Version.", "mq.xqh.version", FT_UINT32, BASE_DEC, NULL, 0x0, "XQH version", HFILL }},
- { &hf_mq_xqh_remoteq , {"Remote Q", "mq.xqh.remoteq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "XQH remote queue", HFILL }},
- { &hf_mq_xqh_remoteqmgr, {"Rmt QMgr", "mq.xqh.remoteqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "XQH remote queue manager", HFILL }},
-
- { &hf_mq_id_StructID , {"Structid..", "mq.id.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_id_FapLevel , {"FAP level.", "mq.id.level", FT_UINT8, BASE_DEC, NULL, 0x0, "ID Formats And Protocols level", HFILL }},
- { &hf_mq_id_icf1 , {"CapFlag1..", "mq.id.idflags", FT_UINT8, BASE_HEX, NULL, 0x0, "ID Capability Flags 1", HFILL }},
- { &hf_mq_id_Eicf1 , {"ECapFlag1.", "mq.id.ideflags", FT_UINT8, BASE_HEX, NULL, 0x0, "ID E Capability Flags 1", HFILL }},
- { &hf_mq_id_ief1 , {"IniErrFlg1", "mq.id.ief", FT_UINT8, BASE_HEX, NULL, 0x0, "ID Initial Error Flags 1", HFILL }},
- { &hf_mq_id_Reserved , {"Reserved..", "mq.id.unknown04", FT_UINT16, BASE_HEX, NULL, 0x0, "ID Reserved", HFILL }},
- { &hf_mq_id_MaxMsgBatch, {"MaxMsgBtch", "mq.id.MaxMsgBatch", FT_UINT16, BASE_DEC, NULL, 0x0, "ID max msg per batch", HFILL }},
- { &hf_mq_id_MaxTrSize , {"MaxTrSize.", "mq.id.MaxTrSize", FT_UINT32, BASE_DEC, NULL, 0x0, "ID max trans size", HFILL }},
- { &hf_mq_id_MaxMsgSize , {"MaxMsgSize", "mq.id.maxmsgsize", FT_UINT32, BASE_DEC, NULL, 0x0, "ID max msg size", HFILL }},
- { &hf_mq_id_SeqWrapVal , {"SeqWrapVal", "mq.id.seqwrap", FT_UINT32, BASE_DEC, NULL, 0x0, "ID seq wrap value", HFILL }},
- { &hf_mq_id_channel , {"ChannelNme", "mq.id.channelname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID channel name", HFILL }},
- { &hf_mq_id_icf2 , {"CapFlag2..", "mq.id.idflags2", FT_UINT8, BASE_HEX, NULL, 0x0, "ID Capability flags 2", HFILL }},
- { &hf_mq_id_Eicf2 , {"ECapFlag2.", "mq.id.ideflags2", FT_UINT8, BASE_HEX, NULL, 0x0, "ID E Capabitlity flags 2", HFILL }},
- { &hf_mq_id_ccsid , {"ccsid.....", "mq.id.ccsid", FT_INT16, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "ID Coded Character Set ID", HFILL }},
- { &hf_mq_id_qmgrname , {"QMgrName..", "mq.id.qm", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID Queue Manager Name", HFILL }},
- { &hf_mq_id_HBInterval , {"HBInterval", "mq.id.hbint", FT_UINT32, BASE_DEC, NULL, 0x0, "ID Heartbeat interval", HFILL }},
- { &hf_mq_id_EFLLength , {"EFLLength.", "mq.id.efllength", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID EFL Length", HFILL }},
- { &hf_mq_id_ief2 , {"IniErrFlg2", "mq.id.inierrflg2", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID Initial Error Flags 2", HFILL }},
- { &hf_mq_id_Reserved1 , {"Reserved1.", "mq.id.reserved1", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID Reserved 1", HFILL }},
- { &hf_mq_id_HdrCprsLst , {"HdrCprsLst", "mq.id.hdrcprslst", FT_BYTES, BASE_NONE, NULL, 0x0, "ID Hdr Cprs Lst", HFILL }},
- { &hf_mq_id_MsgCprsLst , {"MsgCprsLst", "mq.id.msgcprslst", FT_BYTES, BASE_NONE, NULL, 0x0, "ID Msg Cprs Lst", HFILL }},
- { &hf_mq_id_Reserved2 , {"Reserved2.", "mq.id.reserved2", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Reserved 2", HFILL }},
- { &hf_mq_id_SSLKeyRst , {"SSLKeyRst.", "mq.id.sslkeyrst", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID SSL Key Reset", HFILL }},
- { &hf_mq_id_ConvBySkt , {"ConvBySkt.", "mq.id.convbyskt", FT_INT32, BASE_DEC, NULL, 0x0, "ID Conv Per Socket", HFILL }},
- { &hf_mq_id_icf3 , {"CapFlag3..", "mq.id.idflags3", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID Capability flags 3", HFILL }},
- { &hf_mq_id_Eicf3 , {"ECapFlag3.", "mq.id.ideflags3", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID E Capability flags 3", HFILL }},
- { &hf_mq_id_Reserved3 , {"Reserved3.", "mq.id.reserved3", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Reserved 3", HFILL }},
- { &hf_mq_id_ProcessId , {"ProcessId.", "mq.id.processid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Process Identifier", HFILL }},
- { &hf_mq_id_ThreadId , {"ThreadId..", "mq.id.threadid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Thread Identifier", HFILL }},
- { &hf_mq_id_TraceId , {"TraceId...", "mq.id.traceid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Trace Identifier", HFILL }},
- { &hf_mq_id_ProdId , {"ProdId....", "mq.id.prodid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID Product Identifier", HFILL }},
- { &hf_mq_id_mqmid , {"MQM ID....", "mq.id.mqmid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID MQM ID", HFILL }},
-
- { &hf_mq_id_icf1_msgseq , {"Message sequence", "mq.id.icf.msgseq" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_MSG_SEQ, "ID ICF Message sequence", HFILL }},
- { &hf_mq_id_icf1_convcap , {"Conversion capable", "mq.id.icf.convcap" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_CONVERSION_CAPABLE, "ID ICF Conversion capable", HFILL }},
- { &hf_mq_id_icf1_splitmsg, {"Split messages", "mq.id.icf.splitmsg", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_SPLIT_MESSAGE, "ID ICF Split message", HFILL }},
- { &hf_mq_id_icf1_RqstInit, {"Request Initiation", "mq.id.icf.rqstinit", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_REQUEST_INITIATION, "ID ICF Request Initiation", HFILL }},
- { &hf_mq_id_icf1_RqstSecu, {"Request Security", "mq.id.icf.rqstsecu", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_REQUEST_SECURITY, "ID ICF Request Security", HFILL }},
- { &hf_mq_id_icf1_mqreq , {"MQ request", "mq.id.icf.mqreq" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_MQREQUEST, "ID ICF MQ request", HFILL }},
- { &hf_mq_id_icf1_svrsec , {"Srvr Con security", "mq.id.icf.svrsec" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_SVRCONN_SECURITY, "ID ICF Server connection security", HFILL }},
- { &hf_mq_id_icf1_runtime , {"Runtime applic", "mq.id.icf.runtime" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_RUNTIME, "ID ICF Runtime application", HFILL }},
-
- { &hf_mq_id_icf2_CanDstLst, {"DistListCapable", "mq.id.icf2.distlistcap" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_DIST_LIST_CAPABLE, "ID ICF2 Distribution List Capable", HFILL }},
- { &hf_mq_id_icf2_FstMsgReq, {"Fast Msg Reqrd", "mq.id.icf2.fastmsgrqrd" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_FAST_MESSAGES_REQUIRED, "ID ICF2 Fast Message Required", HFILL }},
- { &hf_mq_id_icf2_RespConv , {"RspndrConversion", "mq.id.icf2.respndrconvers", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_RESPONDER_CONVERSION, "ID ICF2 Responder Conversion", HFILL }},
- { &hf_mq_id_icf2_XARequest, {"XARequest", "mq.id.icf2.xarequest" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_XAREQUEST, "ID ICF2 XA Request", HFILL }},
- { &hf_mq_id_icf2_XARunTApp, {"XARunTypApp", "mq.id.icf2.xaruntypapp" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_XARUNTIME_APP, "ID ICF2 XA Runtime App", HFILL }},
- { &hf_mq_id_icf2_SPIRqst , {"SPIRequest", "mq.id.icf2.spirequest" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_SPIREQUEST, "ID ICF2 SPI Request", HFILL }},
- { &hf_mq_id_icf2_DualUOW , {"DualUOW", "mq.id.icf2.dualuow" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_DUAL_UOW, "ID ICF2 Dual UOW", HFILL }},
- { &hf_mq_id_icf2_CanTrcRte, {"Trace Rte Capab", "mq.id.icf2.cantraceroute" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_TRACE_ROUTE_CAPABLE, "ID ICF2 Trace Route Capable", HFILL }},
-
- { &hf_mq_id_icf3_CanMsgPrp, {"Msg Property Cap", "mq.id.icf.msgprpcap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_MSG_PROP_CAPABLE, "ID ICF3 Message PropertyCapable", HFILL }},
- { &hf_mq_id_icf3_Unknown02, {"Unknownx02", "mq.id.icf.unknown02", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_UNKNOWNX02, "ID ICF3 Unknown Falg x02", HFILL }},
-
- { &hf_mq_id_ief1_ccsid , {"Invalid CCSID", "mq.id.ief1.ccsid", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_CCSID, "ID invalid CCSID", HFILL }},
- { &hf_mq_id_ief1_enc , {"Invalid encoding", "mq.id.ief1.enc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_ENCODING, "ID invalid encoding", HFILL }},
- { &hf_mq_id_ief1_mxtrsz , {"Invalid Max Trans Size", "mq.id.ief1.mxtrsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_TRANSMISSION_SIZE, "ID invalid maximum transmission size", HFILL }},
- { &hf_mq_id_ief1_fap , {"Invalid FAP level", "mq.id.ief1.fap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_FAP_LEVEL, "ID invalid FAP level", HFILL }},
- { &hf_mq_id_ief1_mxmsgsz, {"Invalid message size", "mq.id.ief1.mxmsgsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_MSG_SIZE, "ID invalid message size", HFILL }},
- { &hf_mq_id_ief1_mxmsgpb, {"Invalid Max Msg batch", "mq.id.ief1.mxmsgpb", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_MSG_PER_BATCH, "ID maximum message per batch", HFILL }},
- { &hf_mq_id_ief1_seqwrap, {"Invalid Seq Wrap Value", "mq.id.ief1.seqwrap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_SEQ_WRAP_VALUE, "ID invalid sequence wrap value", HFILL }},
- { &hf_mq_id_ief1_hbint , {"Invalid HB interval", "mq.id.ief1.hbint", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_HEARTBEAT_INTERVAL, "ID invalid heartbeat interval", HFILL }},
-
- { &hf_mq_id_ief2_HdrCmpLst, {"Invalid HDR CompLst", "mq.id.ief2.hdrcomplst", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_HDRCOMPLIST, "ID invalid Header Compression List", HFILL }},
- { &hf_mq_id_ief2_MsgCmpLst, {"Invalid Msg CompLst", "mq.id.ief2.msgcomplst", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_MSGCOMPLIST, "ID invalid Message Compression List", HFILL }},
- { &hf_mq_id_ief2_SSLReset , {"Invalid SSL Reset", "mq.id.ief2.sslreset" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_SSL_RESET , "ID invalid SSL Reset", HFILL }},
-
- { &hf_mq_uid_StructID , {"Structid", "mq.uid.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_uid_userid , {"User ID.", "mq.uid.userid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "UID structid", HFILL }},
- { &hf_mq_uid_password , {"Password", "mq.uid.password", FT_STRINGZ, BASE_NONE, NULL, 0x0, "UID password", HFILL }},
- { &hf_mq_uid_longuserid, {"Long UID", "mq.uid.longuserid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "UID long user id", HFILL }},
-
- { &hf_mq_sidlen , {"SID Len.", "mq.uid.sidlen", FT_UINT8, BASE_DEC, NULL, 0x0, "Sid Len", HFILL }},
- { &hf_mq_sidtyp , {"SIDType.", "mq.uid.sidtyp", FT_UINT8, BASE_DEC, VALS(GET_VALSV(sidtype)), 0x0, "Sid Typ", HFILL }},
- { &hf_mq_securityid , {"SecurID.", "mq.uid.securityid", FT_BYTES, BASE_NONE, NULL, 0x0, "Security ID", HFILL }},
-
- { &hf_mq_conn_QMgr , {"QMgr....", "mq.conn.qm", FT_STRINGZ, BASE_NONE, NULL, 0x0, "CONN queue manager", HFILL }},
- { &hf_mq_conn_appname , {"ApplName", "mq.conn.appname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "CONN application name", HFILL }},
- { &hf_mq_conn_apptype , {"ApplType", "mq.conn.apptype", FT_INT32, BASE_DEC, VALS(GET_VALSV(mqat)), 0x0, "CONN application type", HFILL }},
- { &hf_mq_conn_acttoken , {"AccntTok", "mq.conn.acttoken", FT_BYTES, BASE_NONE, NULL, 0x0, "CONN accounting token", HFILL }},
- { &hf_mq_conn_version , {"Version.", "mq.conn.version", FT_UINT32, BASE_DEC, VALS(mq_conn_version_vals), 0x0, "CONN version", HFILL }},
- { &hf_mq_conn_options , {"Options.", "mq.conn.options", FT_UINT32, BASE_HEX, NULL, 0x0, "CONN options", HFILL }},
-
- { &hf_mq_fcno_StructID , {"StructId.", "mq.fcno.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_fcno_unknown00, {"unknown00", "mq.fcno.unknown00", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "FCNO unknown00", HFILL }},
- { &hf_mq_fcno_unknown01, {"unknown01", "mq.fcno.unknown01", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "FCNO unknown01", HFILL }},
- { &hf_mq_fcno_unknown02, {"unknown02", "mq.fcno.unknown02", FT_BYTES, BASE_NONE, NULL, 0x0, "FCNO unknown02", HFILL }},
- { &hf_mq_fcno_msgid , {"msgid....", "mq.fcno.msgid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "FCNO Msg ID", HFILL }},
- { &hf_mq_fcno_mqmid , {"MqmId....", "mq.fcno.mqmid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "FCNO Mqm ID", HFILL }},
-
- { &hf_mq_inq_nbsel , {"Selector count..", "mq.inq.nbsel", FT_UINT32, BASE_DEC, NULL, 0x0, "INQ Selector count", HFILL }},
- { &hf_mq_inq_nbint , {"Integer count...", "mq.inq.nbint", FT_UINT32, BASE_DEC, NULL, 0x0, "INQ Integer count", HFILL }},
- { &hf_mq_inq_charlen , {"Character length", "mq.inq.charlen", FT_UINT32, BASE_DEC, NULL, 0x0, "INQ Character length", HFILL }},
- { &hf_mq_inq_sel , {"Selector........", "mq.inq.sel", FT_UINT32, BASE_DEC, VALS(GET_VALSV(selector)), 0x0, "INQ Selector", HFILL }},
- { &hf_mq_inq_intvalue , {"Integer value...", "mq.inq.intvalue", FT_UINT32, BASE_DEC, NULL, 0x0, "INQ Integer value", HFILL }},
- { &hf_mq_inq_charvalues, {"Char values.....", "mq.inq.charvalues", FT_STRINGZ, BASE_NONE, NULL, 0x0, "INQ Character values", HFILL }},
-
- { &hf_mq_spi_verb , {"SPI Verb", "mq.spi.verb", FT_UINT32, BASE_DEC, VALS(GET_VALSV(spi_verbs)), 0x0, NULL, HFILL }},
- { &hf_mq_spi_version , {"Version", "mq.spi.version", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Version", HFILL }},
- { &hf_mq_spi_length , {"Max reply size", "mq.spi.replength", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Max reply size", HFILL }},
-
- { &hf_mq_spi_base_StructID, {"SPI Structid", "mq.spib.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_spi_base_version , {"Version", "mq.spib.version", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Base Version", HFILL }},
- { &hf_mq_spi_base_length , {"Length", "mq.spib.length", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Base Length", HFILL }},
-
- { &hf_mq_spi_spqo_nbverb , {"Number of verbs", "mq.spqo.nbverb", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Query Output Number of verbs", HFILL }},
- { &hf_mq_spi_spqo_verbid , {"Verb", "mq.spqo.verb", FT_UINT32, BASE_DEC, VALS(GET_VALSV(spi_verbs)), 0x0, "SPI Query Output VerbId", HFILL }},
- { &hf_mq_spi_spqo_maxiover, {"Max InOut Version", "mq.spqo.maxiov", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Query Output Max InOut Version", HFILL }},
- { &hf_mq_spi_spqo_maxinver, {"Max In Version", "mq.spqo.maxiv", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Query Output Max In Version", HFILL }},
- { &hf_mq_spi_spqo_maxouver, {"Max Out Version", "mq.spqo.maxov", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Query Output Max Out Version", HFILL }},
- { &hf_mq_spi_spqo_flags , {"Flags", "mq.spqo.flags", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Query Output flags", HFILL }},
-
- { &hf_mq_spi_spai_mode , {"Mode", "mq.spai.mode", FT_UINT32, BASE_DEC, VALS(GET_VALSV(spi_activate)), 0x0, "SPI Activate Input mode", HFILL }},
- { &hf_mq_spi_spai_unknown1, {"Unknown1", "mq.spai.unknown1", FT_STRINGZ, BASE_NONE, NULL, 0x0, "SPI Activate Input unknown1", HFILL }},
- { &hf_mq_spi_spai_unknown2, {"Unknown2", "mq.spai.unknown2", FT_STRINGZ, BASE_NONE, NULL, 0x0, "SPI Activate Input unknown2", HFILL }},
- { &hf_mq_spi_spai_msgid , {"Message Id", "mq.spai.msgid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "SPI Activate Input message id", HFILL }},
- { &hf_mq_spi_spgi_batchsz , {"Batch size", "mq.spgi.batchsize", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Get Input batch size", HFILL }},
- { &hf_mq_spi_spgi_batchint, {"Batch interval", "mq.spgi.batchint", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Get Input batch interval", HFILL }},
- { &hf_mq_spi_spgi_maxmsgsz, {"Max message size", "mq.spgi.maxmsgsize", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Get Input max message size", HFILL }},
-
- { &hf_mq_spi_spgo_options , {"Options", "mq.spgo.options", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Get Output options", HFILL }},
- { &hf_mq_spi_spgo_size , {"Size", "mq.spgo.size", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Get Output size", HFILL }},
- { &hf_mq_spi_opt_blank , {"Blank padded", "mq.spi.options.blank", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_SPI_OPTIONS_BLANK_PADDED, "SPI Options blank padded", HFILL }},
- { &hf_mq_spi_opt_syncp , {"Syncpoint", "mq.spi.options.sync", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_SPI_OPTIONS_SYNCPOINT, "SPI Options syncpoint", HFILL }},
- { &hf_mq_spi_opt_deferred , {"Deferred", "mq.spi.options.deferred", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_SPI_OPTIONS_DEFERRED, "SPI Options deferred", HFILL }},
-
- { &hf_mq_put_length , {"Data length", "mq.put.length", FT_UINT32, BASE_DEC, NULL, 0x0, "PUT Data length", HFILL }},
-
- { &hf_mq_close_options , {"Options", "mq.close.options", FT_UINT32, BASE_HEX, NULL, 0x0, "CLOSE options", HFILL }},
- { &hf_mq_close_options_DELETE , {"DELETE", "mq.close.options.Delete", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_DELETE, "CLOSE options DELETE", HFILL }},
- { &hf_mq_close_options_DELETE_PURGE, {"DELETE_PURGE", "mq.close.options.DeletePurge", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_DELETE_PURGE, "CLOSE options DELETE_PURGE", HFILL }},
- { &hf_mq_close_options_KEEP_SUB , {"KEEPSUB", "mq.close.options.KeepSub", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_KEEP_SUB, "CLOSE options KEEP_SUB", HFILL }},
- { &hf_mq_close_options_REMOVE_SUB , {"REMOVE_SUB", "mq.close.options.RemoveSub", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_REMOVE_SUB, "CLOSE options REMOVE_SUB", HFILL }},
- { &hf_mq_close_options_QUIESCE , {"QUIESCE", "mq.close.options.Quiesce", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_QUIESCE, "CLOSE options QUIESCE", HFILL }},
-
- { &hf_mq_open_options , {"Options", "mq.open.options", FT_UINT32, BASE_HEX, NULL, 0x0, "OPEN options", HFILL }},
- { &hf_mq_open_options_INPUT_AS_Q_DEF , {"INPUT_AS_Q_DEF", "mq.open.options.InputAsQDef", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_AS_Q_DEF, "OPEN options INPUT_AS_Q_DEF", HFILL }},
- { &hf_mq_open_options_INPUT_SHARED , {"INPUT_SHARED", "mq.open.options.InputShared", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_SHARED, "OPEN options INPUT_SHARED", HFILL }},
- { &hf_mq_open_options_INPUT_EXCLUSIVE, {"INPUT_EXCLUSIVE", "mq.open.options.InputExclusive", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_EXCLUSIVE, "OPEN options INPUT_EXCLUSIVE", HFILL }},
- { &hf_mq_open_options_BROWSE , {"BROWSE", "mq.open.options.Browse", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BROWSE, "OPEN options BROWSE", HFILL }},
- { &hf_mq_open_options_OUTPUT , {"OUTPUT", "mq.open.options.Output", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_OUTPUT, "OPEN options OUTPUT", HFILL }},
- { &hf_mq_open_options_INQUIRE , {"INQUIRE", "mq.open.options.Inquire", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INQUIRE, "OPEN options INQUIRE", HFILL }},
- { &hf_mq_open_options_SET , {"SET", "mq.open.options.Set", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET, "OPEN options SET", HFILL }},
- { &hf_mq_open_options_SAVE_ALL_CTX , {"SAVE_ALL_CONTEXT", "mq.open.options.SaveAllContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SAVE_ALL_CONTEXT, "OPEN options SAVE_ALL_CONTEXT", HFILL }},
- { &hf_mq_open_options_PASS_IDENT_CTX , {"PASS_IDENTITY_CONTEXT", "mq.open.options.PassIdentityContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_PASS_IDENTITY_CONTEXT, "OPEN options PASS_IDENTITY_CONTEXT", HFILL }},
- { &hf_mq_open_options_PASS_ALL_CTX , {"PASS_ALL_CONTEXT", "mq.open.options.PassAllContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_PASS_ALL_CONTEXT, "OPEN options PASS_ALL_CONTEXT", HFILL }},
- { &hf_mq_open_options_SET_IDENT_CTX , {"SET_IDENTITY_CONTEXT", "mq.open.options.SetIdentityContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET_IDENTITY_CONTEXT, "OPEN options SET_IDENTITY_CONTEXT", HFILL }},
- { &hf_mq_open_options_SET_ALL_CONTEXT, {"SET_ALL_CONTEXT", "mq.open.options.SetAllContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET_ALL_CONTEXT, "OPEN options SET_ALL_CONTEXT", HFILL }},
- { &hf_mq_open_options_ALT_USER_AUTH , {"ALTERNATE_USER_AUTHORITY", "mq.open.options.AlternateUserAuthority", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_ALTERNATE_USER_AUTHORITY, "OPEN options ALTERNATE_USER_AUTHORITY", HFILL }},
- { &hf_mq_open_options_FAIL_IF_QUIESC , {"FAIL_IF_QUIESCING", "mq.open.options.FailIfQuiescing", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_FAIL_IF_QUIESCING, "OPEN options FAIL_IF_QUIESCING", HFILL }},
- { &hf_mq_open_options_BIND_ON_OPEN , {"BIND_ON_OPEN", "mq.open.options.BindOnOpen", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_ON_OPEN, "OPEN options BIND_ON_OPEN", HFILL }},
- { &hf_mq_open_options_BIND_NOT_FIXED , {"BIND_NOT_FIXED", "mq.open.options.BindNotFixed", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_NOT_FIXED, "OPEN options BIND_NOT_FIXED", HFILL }},
- { &hf_mq_open_options_RESOLVE_NAMES , {"RESOLVE_NAMES", "mq.open.options.ResolveNames", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_RESOLVE_NAMES, "OPEN options RESOLVE_NAMES", HFILL }},
- { &hf_mq_open_options_CO_OP , {"CO_OP", "mq.open.options.CoOp", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_CO_OP, "OPEN options CO_OP", HFILL }},
- { &hf_mq_open_options_RESOLVE_LOCAL_Q, {"RESOLVE_LOCAL_Q", "mq.open.options.ResolveLocalQueueOrTopic", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_RESOLVE_LOCAL_Q, "OPEN options RESOLVE_LOCAL_Q", HFILL }},
- { &hf_mq_open_options_NO_READ_AHEAD , {"NO_READ_AHEAD", "mq.open.options.NoReadAhead", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_NO_READ_AHEAD, "OPEN options NO_READ_AHEAD", HFILL }},
- { &hf_mq_open_options_READ_AHEAD , {"READ_AHEAD", "mq.open.options.ReadAhead", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_READ_AHEAD, "OPEN options READ_AHEAD", HFILL }},
- { &hf_mq_open_options_NO_MULTICAST , {"NO_MULTICAST", "mq.open.options.NoMulticast", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_NO_MULTICAST, "OPEN options NO_MULTICAST", HFILL }},
- { &hf_mq_open_options_BIND_ON_GROUP , {"BIND_ON_GROUP", "mq.open.options.BindOnGroup", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_ON_GROUP, "OPEN options BIND_ON_GROUP", HFILL }},
-
- { &hf_mq_fopa_StructID, {"StructId", "mq.fopa.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_fopa_version , {"Version.", "mq.fopa.version", FT_UINT32, BASE_DEC, NULL, 0x0, "FOPA Version", HFILL }},
- { &hf_mq_fopa_length , {"Length..", "mq.fopa.length", FT_UINT32, BASE_DEC, NULL, 0x0, "FOPA Length", HFILL }},
- { &hf_mq_fopa_unknown1, {"Unknown1", "mq.fopa.unknown1", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown1", HFILL }},
- { &hf_mq_fopa_unknown2, {"Unknown2", "mq.fopa.unknown2", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown2", HFILL }},
- { &hf_mq_fopa_unknown3, {"Unknown3", "mq.fopa.unknown3", FT_STRINGZ, BASE_NONE, NULL, 0x0, "FOPA unknown3", HFILL }},
- { &hf_mq_fopa_qprotect, {"qprotect", "mq.fopa.qprotect", FT_STRINGZ, BASE_NONE, NULL, 0x0, "FOPA queue protection", HFILL }},
- { &hf_mq_fopa_unknown4, {"Unknown4", "mq.fopa.unknown4", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown4", HFILL }},
- { &hf_mq_fopa_unknown5, {"Unknown5", "mq.fopa.unknown5", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown5", HFILL }},
-
- { &hf_mq_msgreq_version , {"version..", "mq.msgreq.version" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ version", HFILL }},
- { &hf_mq_msgreq_handle , {"handle...", "mq.msgreq.handle" , FT_UINT32, BASE_HEX, NULL, 0x0, "MSGREQ handle", HFILL }},
- { &hf_mq_msgreq_RecvBytes, {"RecvBytes", "mq.msgreq.unknown1" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Received Bytes", HFILL }},
- { &hf_mq_msgreq_RqstBytes, {"RqstBytes", "mq.msgreq.rqstbytes", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Requesed Bytes", HFILL }},
- { &hf_mq_msgreq_MaxMsgLen, {"MaxMsgLen", "mq.msgreq.maxmsglen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Maximum Msg Length", HFILL }},
- { &hf_mq_msgreq_WaitIntrv, {"WaitIntrv", "mq.msgreq.waitintrv", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Wait Interval", HFILL }},
- { &hf_mq_msgreq_QueStatus, {"QueStatus", "mq.msgreq.questatus", FT_UINT32, BASE_HEX , NULL, 0x0, "MSGREQ Queue Status", HFILL }},
- { &hf_mq_msgreq_RqstFlags, {"RqstFlags", "mq.msgreq.rqstflags", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Request Flags", HFILL }},
- { &hf_mq_msgreq_GlbMsgIdx, {"GlbMsgIdx", "mq.msgreq.glbmsgidx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Global Message Index", HFILL }},
- { &hf_mq_msgreq_SelectIdx, {"SelectIdx", "mq.msgreq.selectIdx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Selection Index", HFILL }},
- { &hf_mq_msgreq_MQMDVers , {"MQMDVers.", "mq.msgreq.mqmdvers" , FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ MQMD Version", HFILL }},
- { &hf_mq_msgreq_ccsid , {"CCSID....", "mq.msgreq.ccsid" , FT_INT32 , BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "MSGREQ ccsid", HFILL }},
- { &hf_mq_msgreq_encoding , {"Encoding.", "mq.msgreq.encoding" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ encoding", HFILL }},
- { &hf_mq_msgreq_MsgSeqNum, {"MsgSeqNum", "mq.msgreq.msgseqnum", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Message Sequence Number", HFILL }},
- { &hf_mq_msgreq_offset , {"Offset...", "mq.msgreq.offset" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Offset", HFILL }},
- { &hf_mq_msgreq_mtchMsgId, {"mtchMsgId", "mq.msgreq.mtchMsgId", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match MsgID", HFILL }},
- { &hf_mq_msgreq_mtchCorId, {"mtchCorID", "mq.msgreq.mtchcorid", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match Correlation Id", HFILL }},
- { &hf_mq_msgreq_mtchGrpid, {"mtchGrpID", "mq.msgreq.mtchgrpid", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match Group ID", HFILL }},
- { &hf_mq_msgreq_mtchMsgTk, {"mtchMsgTk", "mq.msgreq.mtchmsgtk", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match Message Token", HFILL }},
-
- { &hf_mq_msgasy_version , {"version..", "mq.msgasy.version" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC version", HFILL }},
- { &hf_mq_msgasy_handle , {"handle...", "mq.msgasy.handle" , FT_UINT32, BASE_HEX, NULL, 0x0, "MSGASYNC handle", HFILL }},
- { &hf_mq_msgasy_MsgIndex , {"MsgIndex.", "mq.msgasy.msgindex" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Message Index", HFILL }},
- { &hf_mq_msgasy_GlbMsgIdx, {"GlbMsgIdx", "mq.msgasy.glbmsgidx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Global Message Index", HFILL }},
- { &hf_mq_msgasy_SegLength, {"SegLength", "mq.msgasy.seglength", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Segment Length", HFILL }},
- { &hf_mq_msgasy_SegmIndex, {"SegmIndex", "mq.msgasy.segmindex", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Segment Index", HFILL }},
- { &hf_mq_msgasy_SeleIndex, {"SeleIndex", "mq.msgasy.seleindex", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Selection Index", HFILL }},
- { &hf_mq_msgasy_ReasonCod, {"ReasonCod", "mq.msgasy.reasoncod", FT_UINT32, BASE_HEX , NULL, 0x0, "MSGASYNC Reason Code", HFILL }},
- { &hf_mq_msgasy_ActMsgLen, {"ActMsgLen", "mq.msgasy.actmsglen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Actual Message Length", HFILL }},
- { &hf_mq_msgasy_TotMsgLen, {"TotMsgLen", "mq.msgasy.totmsglen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Total Message Length", HFILL }},
- { &hf_mq_msgasy_MsgToken , {"MsgToken.", "mq.msgasy.msgtoken" , FT_BYTES , BASE_NONE , NULL, 0x0, "MSGASYNC Mesasage Token", HFILL }},
- { &hf_mq_msgasy_Status , {"status...", "mq.msgasy.status" , FT_UINT16, BASE_HEX , NULL, 0x0, "MSGASYNC Status", HFILL }},
- { &hf_mq_msgasy_resolQNLn, {"resolQNLn", "mq.msgasy.resolqnln", FT_UINT8 , BASE_DEC , NULL, 0x0, "MSGASYNC Resolved Queue Name Length", HFILL }},
- { &hf_mq_msgasy_resolQNme, {"resolQNme", "mq.msgasy.resolqnme", FT_STRINGZ, BASE_NONE , NULL, 0x0, "MSGASYNC Resolved Queue Name", HFILL }},
- { &hf_mq_msgasy_padding , {"Padding..", "mq.msgasy.padding" , FT_BYTES , BASE_NONE , NULL, 0x0, "MSGASYNC Padding", HFILL }},
-
- { &hf_mq_notif_vers , {"version.", "mq.notif.vers" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "NOTIFICATION version", HFILL }},
- { &hf_mq_notif_handle , {"handle..", "mq.notif.handle", FT_UINT32, BASE_HEX , NULL, 0x0, "NOTIFICATION handle", HFILL }},
- { &hf_mq_notif_code , {"code....", "mq.notif.code" , FT_UINT32, BASE_HEX_DEC, VALS(GET_VALSV(notifcode)), 0x0, "NOTIFICATION code", HFILL }},
- { &hf_mq_notif_value , {"value...", "mq.notif.value" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "NOTIFICATION MQRC", HFILL }},
-
- { &hf_mq_ping_length , {"Length", "mq.ping.length", FT_UINT32, BASE_DEC, NULL, 0x0, "PING length", HFILL }},
- { &hf_mq_ping_buffer , {"Buffer", "mq.ping.buffer", FT_BYTES, BASE_NONE, NULL, 0x0, "PING buffer", HFILL }},
-
- { &hf_mq_reset_length , {"Length", "mq.reset.length", FT_UINT32, BASE_DEC, NULL, 0x0, "RESET length", HFILL }},
- { &hf_mq_reset_seqnum , {"SeqNum", "mq.reset.seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, "RESET sequence number", HFILL }},
-
- { &hf_mq_status_length , {"Length", "mq.status.length", FT_UINT32, BASE_DEC, NULL, 0x0, "STATUS length", HFILL }},
- { &hf_mq_status_code , {"Code..", "mq.status.code" , FT_UINT32, BASE_DEC, VALS(GET_VALSV(status)), 0x0, "STATUS code", HFILL }},
- { &hf_mq_status_value , {"Value.", "mq.status.value" , FT_UINT32, BASE_DEC, NULL, 0x0, "STATUS value", HFILL }},
-
- { &hf_mq_od_StructID , {"StructID.........", "mq.od.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_od_version , {"version..........", "mq.od.version", FT_UINT32, BASE_DEC, NULL, 0x0, "OD version", HFILL }},
- { &hf_mq_od_objecttype , {"ObjType..........", "mq.od.objtype", FT_UINT32, BASE_DEC, VALS(GET_VALSV(objtype)), 0x0, "OD object type", HFILL }},
- { &hf_mq_od_objectname , {"ObjName..........", "mq.od.objname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD object name", HFILL }},
- { &hf_mq_od_objqmgrname , {"ObjQMgr..........", "mq.od.objqmgrname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD object queue manager name", HFILL }},
- { &hf_mq_od_dynqname , {"DynQName.........", "mq.od.dynqname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD dynamic queue name", HFILL }},
- { &hf_mq_od_altuserid , {"AltUserID........", "mq.od.altuserid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD alternate userid", HFILL }},
- { &hf_mq_od_recspresent , {"NbrRecord........", "mq.od.nbrrec", FT_UINT32, BASE_DEC, NULL, 0x0, "OD number of records", HFILL }},
- { &hf_mq_od_knowndstcnt , {"Known Dest Count.", "mq.od.kdestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "OD known destination count", HFILL }},
- { &hf_mq_od_unknowdstcnt, {"Unknown Dest Cnt.", "mq.od.udestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "OD unknown destination count", HFILL }},
- { &hf_mq_od_invaldstcnt , {"Invalid Dest Cnt.", "mq.od.idestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "OD invalid destination count", HFILL }},
- { &hf_mq_od_objrecofs , {"Offset of 1st OR.", "mq.od.offsetor", FT_UINT32, BASE_DEC, NULL, 0x0, "OD offset of first OR", HFILL }},
- { &hf_mq_od_resprecofs , {"Offset of 1st RR.", "mq.od.offsetrr", FT_UINT32, BASE_DEC, NULL, 0x0, "OD offset of first RR", HFILL }},
- { &hf_mq_od_objrecptr , {"Addr of 1st OR.", "mq.od.addror", FT_UINT32, BASE_HEX, NULL, 0x0, "OD address of first OR", HFILL }},
- { &hf_mq_od_resprecptr , {"Addr of 1st RR.", "mq.od.addrrr", FT_UINT32, BASE_HEX, NULL, 0x0, "OD address of first RR", HFILL }},
- { &hf_mq_od_altsecurid , {"Alt security id..", "mq.od.altsecid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD alternate security id", HFILL }},
- { &hf_mq_od_resolvqname , {"Resolved Q Name..", "mq.od.resolvq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD resolved queue name", HFILL }},
- { &hf_mq_od_resolvqmgrnm, {"Resolved QMgrName", "mq.od.resolvqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD resolved queue manager name", HFILL }},
- { &hf_mq_od_resolvobjtyp, {"Resolv Obj Type..", "mq.od.resolvedobjtype", FT_UINT32, BASE_DEC, VALS(GET_VALSV(objtype)), 0x0, "OD resolved object type", HFILL }},
-
- { &hf_mq_or_objname , {"Object name...", "mq.or.objname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OR object name", HFILL }},
- { &hf_mq_or_objqmgrname , {"Object QMgr Nm", "mq.or.objqmgrname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OR object queue manager name", HFILL }},
-
- { &hf_mq_rr_compcode , {"Comp Code", "mq.rr.completioncode", FT_UINT32, BASE_DEC, NULL, 0x0, "OR completion code", HFILL }},
- { &hf_mq_rr_reascode , {"Reas Code", "mq.rr.reasoncode", FT_UINT32, BASE_DEC, NULL, 0x0, "OR reason code", HFILL }},
-
- { &hf_mq_pmr_msgid , {"Message Id", "mq.pmr.msgid", FT_BYTES, BASE_NONE, NULL, 0x0, "PMR Message Id", HFILL }},
- { &hf_mq_pmr_correlid , {"Correlation Id", "mq.pmr.correlid", FT_BYTES, BASE_NONE, NULL, 0x0, "PMR Correlation Id", HFILL }},
- { &hf_mq_pmr_groupid , {"GroupId", "mq.pmr.groupid", FT_BYTES, BASE_NONE, NULL, 0x0, "PMR GroupId", HFILL }},
- { &hf_mq_pmr_feedback , {"Feedback", "mq.pmr.feedback", FT_UINT32, BASE_DEC, NULL, 0x0, "PMR Feedback", HFILL }},
- { &hf_mq_pmr_acttoken , {"Accounting token", "mq.pmr.acttoken", FT_BYTES, BASE_NONE, NULL, 0x0, "PMR accounting token", HFILL }},
-
- { &hf_mq_md_StructID , {"StructID.", "mq.md.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_md_version , {"Version..", "mq.md.version", FT_UINT32, BASE_DEC, NULL, 0x0, "MD version", HFILL }},
- { &hf_mq_md_report , {"Report...", "mq.md.report", FT_UINT32, BASE_DEC, NULL, 0x0, "MD report", HFILL }},
- { &hf_mq_md_msgtype , {"Msg Type.", "mq.md.msgtype", FT_UINT32, BASE_DEC, NULL, 0x0, "MD message type", HFILL }},
- { &hf_mq_md_expiry , {"Expiry .", "mq.md.expiry", FT_INT32, BASE_DEC, NULL, 0x0, "MD expiry", HFILL }},
- { &hf_mq_md_feedback , {"Feedback.", "mq.md.feedback", FT_UINT32, BASE_DEC, NULL, 0x0, "MD feedback", HFILL }},
- { &hf_mq_md_encoding , {"Encoding.", "mq.md.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "MD encoding", HFILL }},
- { &hf_mq_md_ccsid , {"CCSID....", "mq.md.ccsid", FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "MD character set", HFILL }},
- { &hf_mq_md_format , {"Format...", "mq.md.format", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD format", HFILL }},
- { &hf_mq_md_priority , {"Priority.", "mq.md.priority", FT_INT32, BASE_DEC, NULL, 0x0, "MD priority", HFILL }},
- { &hf_mq_md_persistence , {"Persist..", "mq.md.persistence", FT_UINT32, BASE_DEC, NULL, 0x0, "MD persistence", HFILL }},
- { &hf_mq_md_msgid , {"Msg ID...", "mq.md.msgid", FT_BYTES, BASE_NONE, NULL, 0x0, "MD Message Id", HFILL }},
- { &hf_mq_md_correlid , {"CorrelID.", "mq.md.correlid", FT_BYTES, BASE_NONE, NULL, 0x0, "MD Correlation Id", HFILL }},
- { &hf_mq_md_backoutcnt , {"BackoCnt.", "mq.md.backount", FT_UINT32, BASE_DEC, NULL, 0x0, "MD Backout count", HFILL }},
- { &hf_mq_md_replytoq , {"ReplyToQ.", "mq.md.replytoq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD ReplyTo queue", HFILL }},
- { &hf_mq_md_replytoqmgr , {"RepToQMgr", "mq.md.replytoqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD ReplyTo queue manager", HFILL }},
- { &hf_mq_md_userid , {"UserId...", "mq.md.userid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD UserId", HFILL }},
- { &hf_mq_md_acttoken , {"AccntTok.", "mq.md.acttoken", FT_BYTES, BASE_NONE, NULL, 0x0, "MD accounting token", HFILL }},
- { &hf_mq_md_appliddata , {"AppIdData", "mq.md.appldata", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put applicationId data", HFILL }},
- { &hf_mq_md_putappltype , {"PutAppTyp", "mq.md.appltype", FT_INT32, BASE_DEC, VALS(GET_VALSV(mqat)), 0x0, "MD Put application type", HFILL }},
- { &hf_mq_md_putapplname , {"PutAppNme", "mq.md.applname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put application name", HFILL }},
- { &hf_mq_md_putdate , {"PutDatGMT", "mq.md.date", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put date", HFILL }},
- { &hf_mq_md_puttime , {"PutTimGMT", "mq.md.time", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put time", HFILL }},
- { &hf_mq_md_apporigdata , {"AppOriDat", "mq.md.origdata", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Application original data", HFILL }},
- { &hf_mq_md_groupid , {"GroupId..", "mq.md.groupid", FT_BYTES, BASE_NONE, NULL, 0x0, "MD GroupId", HFILL }},
- { &hf_mq_md_msgseqnumber, {"MsgSeqNum", "mq.md.msgseqnumber", FT_UINT32, BASE_DEC, NULL, 0x0, "MD Message sequence number", HFILL }},
- { &hf_mq_md_offset , {"Offset...", "mq.md.offset", FT_UINT32, BASE_DEC, NULL, 0x0, "MD Offset", HFILL }},
- { &hf_mq_md_msgflags , {"Msg flags", "mq.md.msgflags", FT_UINT32, BASE_HEX, NULL, 0x0, "MD Message flags", HFILL }},
- { &hf_mq_md_origlen , {"Orig len.", "mq.md.origlength", FT_INT32, BASE_DEC, NULL, 0x0, "MD Original length", HFILL }},
-
- { &hf_mq_dlh_StructID , {"StructID.", "mq.dlh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_dlh_version , {"Version..", "mq.dlh.version", FT_UINT32, BASE_DEC, NULL, 0x0, "DLH version", HFILL }},
- { &hf_mq_dlh_reason , {"Reason...", "mq.dlh.reason", FT_UINT32, BASE_DEC, NULL, 0x0, "DLH reason", HFILL }},
- { &hf_mq_dlh_destq , {"Dest Q...", "mq.dlh.destq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH destination queue", HFILL }},
- { &hf_mq_dlh_destqmgr , {"DestQMgr.", "mq.dlh.destqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH destination queue manager", HFILL }},
- { &hf_mq_dlh_encoding , {"Encoding.", "mq.dlh.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "DLH encoding", HFILL }},
- { &hf_mq_dlh_ccsid , {"CCSID....", "mq.dlh.ccsid", FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "DLH character set", HFILL }},
- { &hf_mq_dlh_format , {"Format...", "mq.dlh.format", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH format", HFILL }},
- { &hf_mq_dlh_putappltype, {"PutAppTyp", "mq.dlh.putappltype", FT_INT32, BASE_DEC, VALS(GET_VALSV(mqat)), 0x0, "DLH put application type", HFILL }},
- { &hf_mq_dlh_putapplname, {"PutAppNme", "mq.dlh.putapplname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH put application name", HFILL }},
- { &hf_mq_dlh_putdate , {"PutDatGMT", "mq.dlh.putdate", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH put date", HFILL }},
- { &hf_mq_dlh_puttime , {"PutTimGMT", "mq.dlh.puttime", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH put time", HFILL }},
- { &hf_mq_dh_putmsgrecfld, {"Flags PMR", "mq.dh.flagspmr", FT_UINT32, BASE_DEC, NULL, 0x0, "DH flags PMR", HFILL }},
- { &hf_mq_dh_recspresent , {"NumOfRecs", "mq.dh.nbrrec", FT_UINT32, BASE_DEC, NULL, 0x0, "DH number of records", HFILL }},
- { &hf_mq_dh_objrecofs , {"Ofs1stOR.", "mq.dh.offsetor", FT_UINT32, BASE_DEC, NULL, 0x0, "DH offset of first OR", HFILL }},
- { &hf_mq_dh_putmsgrecofs, {"Ofs1stPMR", "mq.dh.offsetpmr", FT_UINT32, BASE_DEC, NULL, 0x0, "DH offset of first PMR", HFILL }},
-
- { &hf_mq_gmo_StructID , {"StructID.", "mq.gmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_gmo_version , {"Version..", "mq.gmo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "GMO version", HFILL }},
- { &hf_mq_gmo_options , {"GetMsgOpt", "mq.gmo.getmsgopt", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO Get Message Options", HFILL }},
-
- { &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY, {"PROPERTIES_COMPATIBILITY", "mq.gmo.options.PROPERTIES_COMPATIBILITY", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_COMPATIBILITY, "GMO options PROPERTIES_COMPATIBILITY", HFILL }},
- { &hf_mq_gmo_options_PROPERTIES_IN_HANDLE , {"PROPERTIES_IN_HANDLE", "mq.gmo.options.PROPERTIES_IN_HANDLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_IN_HANDLE , "GMO options PROPERTIES_IN_HANDLE", HFILL }},
- { &hf_mq_gmo_options_NO_PROPERTIES , {"NO_PROPERTIES", "mq.gmo.options.NO_PROPERTIES", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_PROPERTIES , "GMO options NO_PROPERTIES", HFILL }},
- { &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 , {"PROPERTIES_FORCE_MQRFH2", "mq.gmo.options.PROPERTIES_FORCE_MQRFH2", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_FORCE_MQRFH2 , "GMO options PROPERTIES_FORCE_MQRFH2", HFILL }},
- { &hf_mq_gmo_options_UNMARKED_BROWSE_MSG , {"UNMARKED_BROWSE_MSG", "mq.gmo.options.UNMARKED_BROWSE_MSG", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARKED_BROWSE_MSG , "GMO options UNMARKED_BROWSE_MSG", HFILL }},
- { &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE , {"UNMARK_BROWSE_HANDLE", "mq.gmo.options.UNMARK_BROWSE_HANDLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARK_BROWSE_HANDLE , "GMO options UNMARK_BROWSE_HANDLE", HFILL }},
- { &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP , {"UNMARK_BROWSE_CO_OP", "mq.gmo.options.UNMARK_BROWSE_CO_OP", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARK_BROWSE_CO_OP , "GMO options UNMARK_BROWSE_CO_OP", HFILL }},
- { &hf_mq_gmo_options_MARK_BROWSE_CO_OP , {"MARK_BROWSE_CO_OP", "mq.gmo.options.MARK_BROWSE_CO_OP", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_BROWSE_CO_OP , "GMO options MARK_BROWSE_CO_OP", HFILL }},
- { &hf_mq_gmo_options_MARK_BROWSE_HANDLE , {"MARK_BROWSE_HANDLE", "mq.gmo.options.MARK_BROWSE_HANDLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_BROWSE_HANDLE , "GMO options MARK_BROWSE_HANDLE", HFILL }},
- { &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE , {"ALL_SEGMENTS_AVAILABLE", "mq.gmo.options.ALL_SEGMENTS_AVAILABLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ALL_SEGMENTS_AVAILABLE , "GMO options ALL_SEGMENTS_AVAILABLE", HFILL }},
- { &hf_mq_gmo_options_ALL_MSGS_AVAILABLE , {"ALL_MSGS_AVAILABLE", "mq.gmo.options.ALL_MSGS_AVAILABLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ALL_MSGS_AVAILABLE , "GMO options ALL_MSGS_AVAILABLE", HFILL }},
- { &hf_mq_gmo_options_COMPLETE_MSG , {"COMPLETE_MSG", "mq.gmo.options.COMPLETE_MSG", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_COMPLETE_MSG , "GMO options COMPLETE_MSG", HFILL }},
- { &hf_mq_gmo_options_LOGICAL_ORDER , {"LOGICAL_ORDER", "mq.gmo.options.LOGICAL_ORDER", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_LOGICAL_ORDER , "GMO options LOGICAL_ORDER", HFILL }},
- { &hf_mq_gmo_options_CONVERT , {"CONVERT", "mq.gmo.options.CONVERT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_CONVERT , "GMO options CONVERT", HFILL }},
- { &hf_mq_gmo_options_FAIL_IF_QUIESCING , {"FAIL_IF_QUIESCING", "mq.gmo.options.FAIL_IF_QUIESCING", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_FAIL_IF_QUIESCING , "GMO options FAIL_IF_QUIESCING", HFILL }},
- { &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT , {"SYNCPOINT_IF_PERSISTENT", "mq.gmo.options.SYNCPOINT_IF_PERSISTENT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SYNCPOINT_IF_PERSISTENT , "GMO options SYNCPOINT_IF_PERSISTENT", HFILL }},
- { &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR , {"BROWSE_MSG_UNDER_CURSOR", "mq.gmo.options.BROWSE_MSG_UNDER_CURSOR", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_MSG_UNDER_CURSOR , "GMO options BROWSE_MSG_UNDER_CURSOR", HFILL }},
- { &hf_mq_gmo_options_UNLOCK , {"UNLOCK", "mq.gmo.options.UNLOCK", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNLOCK , "GMO options UNLOCK", HFILL }},
- { &hf_mq_gmo_options_LOCK , {"LOCK", "mq.gmo.options.LOCK", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_LOCK , "GMO options LOCK", HFILL }},
- { &hf_mq_gmo_options_MSG_UNDER_CURSOR , {"MSG_UNDER_CURSOR", "mq.gmo.options.MSG_UNDER_CURSOR", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MSG_UNDER_CURSOR , "GMO options MSG_UNDER_CURSOR", HFILL }},
- { &hf_mq_gmo_options_MARK_SKIP_BACKOUT , {"MARK_SKIP_BACKOUT", "mq.gmo.options.MARK_SKIP_BACKOUT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_SKIP_BACKOUT , "GMO options MARK_SKIP_BACKOUT", HFILL }},
- { &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG , {"ACCEPT_TRUNCATED_MSG", "mq.gmo.options.ACCEPT_TRUNCATED_MSG", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ACCEPT_TRUNCATED_MSG , "GMO options ACCEPT_TRUNCATED_MSG", HFILL }},
- { &hf_mq_gmo_options_BROWSE_NEXT , {"BROWSE_NEXT", "mq.gmo.options.BROWSE_NEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_NEXT , "GMO options BROWSE_NEXT", HFILL }},
- { &hf_mq_gmo_options_BROWSE_FIRST , {"BROWSE_FIRST", "mq.gmo.options.BROWSE_FIRST", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_FIRST , "GMO options BROWSE_FIRST", HFILL }},
- { &hf_mq_gmo_options_SET_SIGNAL , {"SET_SIGNAL", "mq.gmo.options.SET_SIGNAL", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SET_SIGNAL , "GMO options SET_SIGNAL", HFILL }},
- { &hf_mq_gmo_options_NO_SYNCPOINT , {"NO_SYNCPOINT", "mq.gmo.options.NO_SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_SYNCPOINT , "GMO options NO_SYNCPOINT", HFILL }},
- { &hf_mq_gmo_options_SYNCPOINT , {"SYNCPOINT", "mq.gmo.options.SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SYNCPOINT , "GMO options SYNCPOINT", HFILL }},
- { &hf_mq_gmo_options_WAIT , {"WAIT", "mq.gmo.options.WAIT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_WAIT , "GMO options WAIT", HFILL }},
-
- { &hf_mq_gmo_waitinterval, {"WaitIntv.", "mq.gmo.waitint", FT_INT32, BASE_DEC, NULL, 0x0, "GMO wait interval", HFILL }},
- { &hf_mq_gmo_signal1 , {"Signal 1.", "mq.gmo.signal1", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO signal 1", HFILL }},
- { &hf_mq_gmo_signal2 , {"Signal 2.", "mq.gmo.signal2", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO signal 2", HFILL }},
- { &hf_mq_gmo_resolvqname , {"ResQName.", "mq.gmo.resolvq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "GMO resolved queue name", HFILL }},
- { &hf_mq_gmo_matchoptions, {"MatchOpt.", "mq.gmo.matchopt", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO match options", HFILL }},
-
- { &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN , {"MATCH_MSG_TOKEN", "mq.gmo.matchoptions.MATCH_MSG_TOKEN", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_TOKEN , "GMO matchoptions MATCH_MSG_TOKEN", HFILL }},
- { &hf_mq_gmo_matchoptions_MATCH_OFFSET , {"MATCH_OFFSET", "mq.gmo.matchoptions.MATCH_OFFSET", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_OFFSET , "GMO matchoptions MATCH_OFFSET", HFILL }},
- { &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER, {"MATCH_MSG_SEQ_NUMBER", "mq.gmo.matchoptions.MATCH_MSG_SEQ_NUMBER", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_SEQ_NUMBER, "GMO matchoptions MATCH_MSG_SEQ_NUMBER", HFILL }},
- { &hf_mq_gmo_matchoptions_MATCH_GROUP_ID , {"MATCH_GROUP_ID", "mq.gmo.matchoptions.MATCH_GROUP_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_GROUP_ID , "GMO matchoptions MATCH_GROUP_ID", HFILL }},
- { &hf_mq_gmo_matchoptions_MATCH_CORREL_ID , {"MATCH_CORREL_ID", "mq.gmo.matchoptions.MATCH_CORREL_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_CORREL_ID , "GMO matchoptions MATCH_CORREL_ID", HFILL }},
- { &hf_mq_gmo_matchoptions_MATCH_MSG_ID , {"MATCH_MSG_ID", "mq.gmo.matchoptions.MATCH_MSG_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_ID , "GMO matchoptions MATCH_MSG_ID", HFILL }},
-
- { &hf_mq_gmo_groupstatus , {"GrpStatus", "mq.gmo.grpstat", FT_UINT8, BASE_HEX, NULL, 0x0, "GMO group status", HFILL }},
- { &hf_mq_gmo_segmstatus , {"SegStatus", "mq.gmo.sgmtstat", FT_UINT8, BASE_HEX, NULL, 0x0, "GMO segment status", HFILL }},
- { &hf_mq_gmo_segmentation, {"Segmentat", "mq.gmo.segmentation", FT_UINT8, BASE_HEX, NULL, 0x0, "GMO segmentation", HFILL }},
- { &hf_mq_gmo_reserved , {"Reserved.", "mq.gmo.reserved", FT_UINT8, BASE_HEX, NULL, 0x0, "GMO reserved", HFILL }},
- { &hf_mq_gmo_msgtoken , {"MsgToken.", "mq.gmo.msgtoken", FT_BYTES, BASE_NONE, NULL, 0x0, "GMO message token", HFILL }},
- { &hf_mq_gmo_returnedlen , {"RtnLength", "mq.gmo.retlen", FT_INT32, BASE_DEC, NULL, 0x0, "GMO returned length", HFILL }},
-
- { &hf_mq_lpoo_StructID , {"StructID......", "mq.lpoo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_lpoo_version , {"Version.......", "mq.lpoo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "LPOO version", HFILL }},
- { &hf_mq_lpoo_options , {"Options.......", "mq.lpoo.options", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO options", HFILL }},
- { &hf_mq_lpoo_lpiopts , {"LpiOpts.......", "mq.lpoo.lpioopts", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO Lpi Options", HFILL }},
-
- { &hf_mq_lpoo_lpiopts_SAVE_USER_CTXT , {"SAVE_USER_CTXT", "mq.lpoo.opts.SAVE_USER_CTXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_LPOO_SAVE_USER_CTXT, "LPOO options SAVE_USER_CTXT", HFILL }},
- { &hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT , {"SAVE_ORIGIN_CTXT", "mq.lpoo.opts.SAVE_ORIGIN_CTXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_LPOO_SAVE_ORIGIN_CTXT, "LPOO options SAVE_ORIGIN_CTXT", HFILL }},
- { &hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT, {"SAVE_IDENTITY_CTXT", "mq.lpoo.opts.SAVE_IDENTITY_CTXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_LPOO_SAVE_IDENTITY_CTXT, "LPOO options SAVE_IDENTITY_CTXT", HFILL }},
-
- { &hf_mq_lpoo_defpersist , {"DefPersitence.", "mq.lpoo.defpersist", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO Default Persitence", HFILL }},
- { &hf_mq_lpoo_defputresptype, {"DefPutRespType", "mq.lpoo.defputresptype", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO Default Put Response Type", HFILL }},
- { &hf_mq_lpoo_defreadahead , {"DefReadAHead..", "mq.lpoo.defreadahead", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO Default Read AHead", HFILL }},
-
- { &hf_mq_lpoo_qprotect , {"qprotect......", "mq.lpoo.qprotect", FT_STRINGZ, BASE_NONE, NULL, 0x0, "LPOO queue protection", HFILL }},
- { &hf_mq_lpoo_unknown6 , {"Unknown6......", "mq.lpoo.unknown6", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown6", HFILL }},
- /*{ &hf_mq_lpoo_unknown7 , {"Unknown7......", "mq.lpoo.unknown7", FT_UINT16, BASE_HEX, NULL, 0x0, "LPOO unknown7", HFILL }},*/
- { &hf_mq_lpoo_xtradata , {"ExtraData.....", "mq.lpoo.extradata", FT_UINT32, BASE_DEC, NULL, 0x0, "LPOO Extra Data", HFILL }},
-
- { &hf_mq_pmo_StructID , {"StructID.", "mq.pmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_pmo_version , {"Version..", "mq.pmo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO version", HFILL }},
- { &hf_mq_pmo_options , {"Options..", "mq.pmo.options", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO options", HFILL }},
- { &hf_mq_pmo_options_NOT_OWN_SUBS , {"NOT_OWN_SUBS", "mq.pmo.options.NOT_OWN_SUBS", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NOT_OWN_SUBS , "PMO options NOT_OWN_SUBS", HFILL }},
- { &hf_mq_pmo_options_SUPPRESS_REPLYTO , {"SUPPRESS_REPLYTO", "mq.pmo.options.SUPPRESS_REPLYTO", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SUPPRESS_REPLYTO , "PMO options SUPPRESS_REPLYTO", HFILL }},
- { &hf_mq_pmo_options_SCOPE_QMGR , {"SCOPE_QMGR", "mq.pmo.options.SCOPE_QMGR", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SCOPE_QMGR , "PMO options SCOPE_QMGR", HFILL }},
- { &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY , {"MD_FOR_OUTPUT_ONLY", "mq.pmo.options.MD_FOR_OUTPUT_ONLY", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_MD_FOR_OUTPUT_ONLY , "PMO options MD_FOR_OUTPUT_ONLY", HFILL }},
- { &hf_mq_pmo_options_RETAIN , {"RETAIN", "mq.pmo.options.RETAIN", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_RETAIN , "PMO options RETAIN", HFILL }},
- { &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED , {"WARN_IF_NO_SUBS_MATCHED", "mq.pmo.options.WARN_IF_NO_SUBS_MATCHED", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_WARN_IF_NO_SUBS_MATCHED , "PMO options WARN_IF_NO_SUBS_MATCHED", HFILL }},
- { &hf_mq_pmo_options_RESOLVE_LOCAL_Q , {"RESOLVE_LOCAL_Q", "mq.pmo.options.RESOLVE_LOCAL_Q", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_RESOLVE_LOCAL_Q , "PMO options RESOLVE_LOCAL_Q", HFILL }},
- { &hf_mq_pmo_options_SYNC_RESPONSE , {"SYNC_RESPONSE", "mq.pmo.options.SYNC_RESPONSE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SYNC_RESPONSE , "PMO options SYNC_RESPONSE", HFILL }},
- { &hf_mq_pmo_options_ASYNC_RESPONSE , {"ASYNC_RESPONSE", "mq.pmo.options.ASYNC_RESPONSE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_ASYNC_RESPONSE , "PMO options ASYNC_RESPONSE", HFILL }},
- { &hf_mq_pmo_options_LOGICAL_ORDER , {"LOGICAL_ORDER", "mq.pmo.options.LOGICAL_ORDER", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_LOGICAL_ORDER , "PMO options LOGICAL_ORDER", HFILL }},
- { &hf_mq_pmo_options_NO_CONTEXT , {"NO_CONTEXT", "mq.pmo.options.NO_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NO_CONTEXT , "PMO options NO_CONTEXT", HFILL }},
- { &hf_mq_pmo_options_FAIL_IF_QUIESCING , {"FAIL_IF_QUIESCING", "mq.pmo.options.FAIL_IF_QUIESCING", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_FAIL_IF_QUIESCING , "PMO options FAIL_IF_QUIESCING", HFILL }},
- { &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY, {"ALTERNATE_USER_AUTHORITY", "mq.pmo.options.ALTERNATE_USER_AUTHORITY", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_ALTERNATE_USER_AUTHORITY , "PMO options ALTERNATE_USER_AUTHORITY", HFILL }},
- { &hf_mq_pmo_options_SET_ALL_CONTEXT , {"SET_ALL_CONTEXT", "mq.pmo.options.SET_ALL_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SET_ALL_CONTEXT , "PMO options SET_ALL_CONTEXT", HFILL }},
- { &hf_mq_pmo_options_SET_IDENTITY_CONTEXT , {"SET_IDENTITY_CONTEXT", "mq.pmo.options.SET_IDENTITY_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SET_IDENTITY_CONTEXT , "PMO options SET_IDENTITY_CONTEXT", HFILL }},
- { &hf_mq_pmo_options_PASS_ALL_CONTEXT , {"PASS_ALL_CONTEXT", "mq.pmo.options.PASS_ALL_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_PASS_ALL_CONTEXT , "PMO options PASS_ALL_CONTEXT", HFILL }},
- { &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT , {"PASS_IDENTITY_CONTEXT", "mq.pmo.options.PASS_IDENTITY_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_PASS_IDENTITY_CONTEXT , "PMO options PASS_IDENTITY_CONTEXT", HFILL }},
- { &hf_mq_pmo_options_NEW_CORREL_ID , {"NEW_CORREL_ID", "mq.pmo.options.NEW_CORREL_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NEW_CORREL_ID , "PMO options NEW_CORREL_ID", HFILL }},
- { &hf_mq_pmo_options_NEW_MSG_ID , {"NEW_MSG_ID", "mq.pmo.options.NEW_MSG_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NEW_MSG_ID , "PMO options NEW_MSG_ID", HFILL }},
- { &hf_mq_pmo_options_DEFAULT_CONTEXT , {"DEFAULT_CONTEXT", "mq.pmo.options.DEFAULT_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_DEFAULT_CONTEXT , "PMO options DEFAULT_CONTEXT", HFILL }},
- { &hf_mq_pmo_options_NO_SYNCPOINT , {"NO_SYNCPOINT", "mq.pmo.options.NO_SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NO_SYNCPOINT , "PMO options NO_SYNCPOINT", HFILL }},
- { &hf_mq_pmo_options_SYNCPOINT , {"SYNCPOINT", "mq.pmo.options.SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SYNCPOINT , "PMO options SYNCPOINT", HFILL }},
-
- { &hf_mq_pmo_timeout , {"Timeout..", "mq.pmo.timeout", FT_INT32, BASE_DEC, NULL, 0x0, "PMO time out", HFILL }},
- { &hf_mq_pmo_context , {"Context..", "mq.pmo.context", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO context", HFILL }},
- { &hf_mq_pmo_knowndstcnt , {"KnDstCnt.", "mq.pmo.kdstcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO known destination count", HFILL }},
- { &hf_mq_pmo_unkndstcnt , {"UkDstCnt.", "mq.pmo.udestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO unknown destination count", HFILL }},
- { &hf_mq_pmo_invaldstcnt , {"InDstCnt.", "mq.pmo.idestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO invalid destination count", HFILL }},
- { &hf_mq_pmo_resolvqname , {"ResQName.", "mq.pmo.resolvq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "PMO resolved queue name", HFILL }},
- { &hf_mq_pmo_resolvqmgr , {"ResQMgr..", "mq.pmo.resolvqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "PMO resolved queue manager name", HFILL }},
- { &hf_mq_pmo_recspresent , {"NumRecs..", "mq.pmo.nbrrec", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO number of records", HFILL }},
- { &hf_mq_pmo_putmsgrecfld, {"PMR Flag.", "mq.pmo.flagspmr", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO flags PMR fields", HFILL }},
- { &hf_mq_pmo_putmsgrecofs, {"Ofs1stPMR", "mq.pmo.offsetpmr", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO offset of first PMR", HFILL }},
- { &hf_mq_pmo_resprecofs , {"Off1stRR.", "mq.pmo.offsetrr", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO offset of first RR", HFILL }},
- { &hf_mq_pmo_putmsgrecptr, {"Adr1stPMR", "mq.pmo.addrrec", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO address of first record", HFILL }},
- { &hf_mq_pmo_resprecptr , {"Adr1stRR.", "mq.pmo.addrres", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO address of first response record", HFILL }},
-
- { &hf_mq_head_StructID , {"Structid", "mq.head.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Header structid", HFILL }},
- { &hf_mq_head_version , {"version.", "mq.head.version", FT_UINT32, BASE_DEC, NULL, 0x0, "Header version", HFILL }},
- { &hf_mq_head_length , {"Length..", "mq.head.length", FT_UINT32, BASE_DEC, NULL, 0x0, "Header length", HFILL }},
- { &hf_mq_head_encoding , {"Encoding", "mq.head.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "Header encoding", HFILL }},
- { &hf_mq_head_ccsid , {"CCSID...", "mq.head.ccsid", FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "Header character set", HFILL }},
- { &hf_mq_head_format , {"Format..", "mq.head.format", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Header format", HFILL }},
- { &hf_mq_head_flags , {"Flags...", "mq.head.flags", FT_UINT32, BASE_DEC, NULL, 0x0, "Header flags", HFILL }},
- { &hf_mq_head_struct , {"Struct..", "mq.head.struct", FT_BYTES, BASE_NONE, NULL, 0x0, "Header struct", HFILL }},
-
- { &hf_mq_xa_length , {"Length.......", "mq.xa.length", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Length", HFILL }},
- { &hf_mq_xa_returnvalue , {"Return value.", "mq.xa.returnvalue", FT_INT32, BASE_DEC, VALS(mq_xaer_vals), 0x0, "XA Return Value", HFILL }},
- { &hf_mq_xa_tmflags , {"TransMgrFlags", "mq.xa.tmflags", FT_UINT32, BASE_HEX, NULL, 0x0, "XA Transaction Manager Flags", HFILL }},
- { &hf_mq_xa_rmid , {"ResourceMgrID", "mq.xa.rmid", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Resource Manager ID", HFILL }},
- { &hf_mq_xa_count , {"Number of Xid", "mq.xa.nbxid", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Number of Xid", HFILL }},
- { &hf_mq_xa_tmflags_join , {"JOIN", "mq.xa.tmflags.join", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMJOIN, "XA TM Flags JOIN", HFILL }},
- { &hf_mq_xa_tmflags_endrscan , {"ENDRSCAN", "mq.xa.tmflags.endrscan", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMENDRSCAN, "XA TM Flags ENDRSCAN", HFILL }},
- { &hf_mq_xa_tmflags_startrscan, {"STARTRSCAN", "mq.xa.tmflags.startrscan", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSTARTRSCAN, "XA TM Flags STARTRSCAN", HFILL }},
- { &hf_mq_xa_tmflags_suspend , {"SUSPEND", "mq.xa.tmflags.suspend", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSUSPEND, "XA TM Flags SUSPEND", HFILL }},
- { &hf_mq_xa_tmflags_success , {"SUCCESS", "mq.xa.tmflags.success", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSUCCESS, "XA TM Flags SUCCESS", HFILL }},
- { &hf_mq_xa_tmflags_resume , {"RESUME", "mq.xa.tmflags.resume", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMRESUME, "XA TM Flags RESUME", HFILL }},
- { &hf_mq_xa_tmflags_fail , {"FAIL", "mq.xa.tmflags.fail", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMFAIL, "XA TM Flags FAIL", HFILL }},
- { &hf_mq_xa_tmflags_onephase , {"ONEPHASE", "mq.xa.tmflags.onephase", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMONEPHASE, "XA TM Flags ONEPHASE", HFILL }},
-
- { &hf_mq_xa_xid_formatid , {"Format ID....", "mq.xa.xid.formatid", FT_INT32, BASE_DEC, NULL, 0x0, "XA Xid Format ID", HFILL }},
- { &hf_mq_xa_xid_glbxid_len, {"GlbTransIDLen", "mq.xa.xid.gxidl", FT_UINT8, BASE_DEC, NULL, 0x0, "XA Xid Global TransactionId Length", HFILL }},
- { &hf_mq_xa_xid_brq_length, {"BranchQualLen", "mq.xa.xid.bql", FT_UINT8, BASE_DEC, NULL, 0x0, "XA Xid Branch Qualifier Length", HFILL }},
- { &hf_mq_xa_xid_globalxid , {"GlbTransactID", "mq.xa.xid.gxid", FT_BYTES, BASE_NONE, NULL, 0x0, "XA Xid Global TransactionId", HFILL }},
- { &hf_mq_xa_xid_brq , {"BranchQualif.", "mq.xa.xid.bq", FT_BYTES, BASE_NONE, NULL, 0x0, "XA Xid Branch Qualifier", HFILL }},
- { &hf_mq_xa_xainfo_length , {"Length.......", "mq.xa.xainfo.length", FT_UINT8, BASE_DEC, NULL, 0x0, "XA XA_info Length", HFILL }},
- { &hf_mq_xa_xainfo_value , {"Value........", "mq.xa.xainfo.value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "XA XA_info Value", HFILL }},
-
- { &hf_mq_charv_vsptr , {"VLStr Addr.", "mq.charv.vsptr", FT_UINT32, BASE_HEX, NULL, 0x0, "VS Address", HFILL }},
- { &hf_mq_charv_vsoffset , {"VLStr Offs.", "mq.charv.vsoffset", FT_UINT32, BASE_DEC, NULL, 0x0, "VS Offset", HFILL }},
- { &hf_mq_charv_vsbufsize , {"VLStr BufSz", "mq.charv.vsbufsize", FT_UINT32, BASE_DEC, NULL, 0x0, "VS BufSize", HFILL }},
- { &hf_mq_charv_vslength , {"VLStr Len..", "mq.charv.vslength", FT_UINT32, BASE_DEC, NULL, 0x0, "VS Length", HFILL }},
- { &hf_mq_charv_vsccsid , {"VLStr Ccsid", "mq.charv.vsccsid", FT_INT32, BASE_DEC, NULL, 0x0, "VS CCSID", HFILL }},
- { &hf_mq_charv_vsvalue , {"VLStr Value", "mq.charv.vsvalue", FT_STRINGZ, BASE_NONE, NULL, 0x0, "VS value", HFILL }}
-
- };
- static gint *ett[] =
- {
- &ett_mq,
- &ett_mq_tsh,
- &ett_mq_tsh_tcf,
- &ett_mq_tsh_tcf2,
- &ett_mq_api,
- &ett_mq_socket,
- &ett_mq_msh,
- &ett_mq_caut,
- &ett_mq_xqh,
- &ett_mq_id,
- &ett_mq_id_icf1,
- &ett_mq_id_icf2,
- &ett_mq_id_icf3,
- &ett_mq_id_ief1,
- &ett_mq_id_ief2,
- &ett_mq_uid,
- &ett_mq_conn,
- &ett_mq_msg,
- &ett_mq_notif,
- &ett_mq_inq,
- &ett_mq_spi,
- &ett_mq_spi_base,
- &ett_mq_spi_options,
- &ett_mq_put,
- &ett_mq_open,
- &ett_mq_open_option,
- &ett_mq_close_option,
- &ett_mq_ping,
- &ett_mq_reset,
- &ett_mq_status,
- &ett_mq_od,
- &ett_mq_od_objstr,
- &ett_mq_od_selstr,
- &ett_mq_od_resobjstr,
- &ett_mq_or,
- &ett_mq_rr,
- &ett_mq_pmr,
- &ett_mq_md,
- &ett_mq_mde,
- &ett_mq_dlh,
- &ett_mq_dh,
- &ett_mq_gmo,
- &ett_mq_gmo_option,
- &ett_mq_gmo_matchoption,
- &ett_mq_pmo,
- &ett_mq_pmo_option,
- &ett_mq_fcno,
- &ett_mq_fopa,
- &ett_mq_lpoo,
- &ett_mq_lpoo_options,
- &ett_mq_lpoo_lpiopts,
- &ett_mq_head,
- &ett_mq_xa,
- &ett_mq_xa_tmflags,
- &ett_mq_xa_xid,
- &ett_mq_xa_info,
- &ett_mq_charv,
- &ett_mq_reaasemb
- };
-
- module_t *mq_module;
-
- proto_mq = proto_register_protocol("WebSphere MQ", "MQ", "mq");
- proto_register_field_array(proto_mq, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- register_heur_dissector_list("mq", &mq_heur_subdissector_list);
- register_init_routine(mq_init);
-
- mq_module = prefs_register_protocol(proto_mq, NULL);
- prefs_register_bool_preference(mq_module, "desegment",
- "Reassemble MQ messages spanning multiple TCP segments",
- "Whether the MQ dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
- &mq_desegment);
- prefs_register_bool_preference(mq_module, "reassembly",
- "Reassemble segmented MQ messages",
- "Whether the MQ dissector should reassemble MQ messages spanning multiple TSH segments",
- &mq_reassembly);
+ static hf_register_info hf[] =
+ {
+ { &hf_mq_tsh_StructID ,
+ {"StructID..", "mq.tsh.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_tsh_mqseglen ,
+ {"MQSegmLen.", "mq.tsh.seglength",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "TSH MQ Segment length", HFILL }
+ },
+ { &hf_mq_tsh_convid ,
+ {"Convers ID", "mq.tsh.convid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "TSH Conversation ID", HFILL }
+ },
+ { &hf_mq_tsh_requestid,
+ {"Request ID", "mq.tsh.requestid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "TSH Request ID", HFILL }
+ },
+ { &hf_mq_tsh_byteorder,
+ {"Byte order", "mq.tsh.byteorder",
+ FT_UINT8, BASE_HEX, VALS(GET_VALSV(byteorder)), 0x0,
+ "TSH Byte order", HFILL }
+ },
+ { &hf_mq_tsh_opcode ,
+ {"SegmType..", "mq.tsh.type",
+ FT_UINT8, BASE_HEX, VALS(GET_VALSV(opcode)), 0x0,
+ "TSH MQ segment type", HFILL }
+ },
+ { &hf_mq_tsh_ctlflgs1 ,
+ {"Ctl Flag 1", "mq.tsh.cflags1",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "TSH Control flags 1", HFILL }
+ },
+ { &hf_mq_tsh_ctlflgs2 ,
+ {"Ctl Flag 2", "mq.tsh.cflags2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "TSH Control flags 2", HFILL }
+ },
+ { &hf_mq_tsh_luwid ,
+ {"LUW Ident.", "mq.tsh.luwid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "TSH logical unit of work identifier", HFILL }
+ },
+ { &hf_mq_tsh_encoding ,
+ {"Encoding..", "mq.tsh.encoding",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "TSH Encoding", HFILL }
+ },
+ { &hf_mq_tsh_ccsid ,
+ {"CCSID.....", "mq.tsh.ccsid",
+ FT_INT16, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0,
+ "TSH CCSID", HFILL }
+ },
+ { &hf_mq_tsh_reserved ,
+ {"Reserved..", "mq.tsh.reserved",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "TSH Reserved", HFILL }
+ },
+
+ { &hf_mq_tsh_tcf_confirmreq,
+ {"Confirm Req", "mq.tsh.tcf.confirmreq",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_CONFIRM_REQUEST,
+ "TSH TCF Confirm request", HFILL }
+ },
+ { &hf_mq_tsh_tcf_error ,
+ {"Error", "mq.tsh.tcf.error",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_ERROR,
+ "TSH TCF Error", HFILL }
+ },
+ { &hf_mq_tsh_tcf_reqclose ,
+ {"Req close", "mq.tsh.tcf.reqclose",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_CLOSE,
+ "TSH TCF Request close", HFILL }
+ },
+ { &hf_mq_tsh_tcf_closechann,
+ {"Close Chnl", "mq.tsh.tcf.closechann",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_CLOSE_CHANNEL,
+ "TSH TCF Close channel", HFILL }
+ },
+ { &hf_mq_tsh_tcf_first ,
+ {"First Seg", "mq.tsh.tcf.first",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_FIRST,
+ "TSH TCF First", HFILL }
+ },
+ { &hf_mq_tsh_tcf_last ,
+ {"Last Seg", "mq.tsh.tcf.last",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_LAST,
+ "TSH TCF Last", HFILL }
+ },
+ { &hf_mq_tsh_tcf_reqacc ,
+ {"Req accept", "mq.tsh.tcf.reqacc",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_ACCEPTED,
+ "TSH TCF Request accepted", HFILL }
+ },
+ { &hf_mq_tsh_tcf_dlq ,
+ {"DLQ used", "mq.tsh.tcf.dlq",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_DLQ_USED,
+ "TSH TCF DLQ used", HFILL }
+ },
+
+ { &hf_mq_tsh_tcf2_HdrComp ,
+ {"HDR Comp", "mq.tsh.tcf2.hdrcomp",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_HDRCOMP ,
+ "TSH TCF2 Header Compressed", HFILL }
+ },
+ { &hf_mq_tsh_tcf2_MsgComp ,
+ {"MSG Comp", "mq.tsh.tcf2.msgcomp",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_MSGCOMP ,
+ "TSH TCF2 Message Compressed", HFILL }
+ },
+ { &hf_mq_tsh_tcf2_CSH ,
+ {"CSH", "mq.tsh.tcf2.csh" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_CSH ,
+ "TSH TCF2 CSH", HFILL }
+ },
+ { &hf_mq_tsh_tcf2_CmitIntv ,
+ {"ComitIntvl", "mq.tsh.tcf.cmitintv",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_CMIT_INTERVAL,
+ "TSH TCF2 Commit Interval", HFILL }
+ },
+
+ { &hf_mq_api_replylen ,
+ {"Reply len..", "mq.api.replylength",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "API Reply length", HFILL }
+ },
+ { &hf_mq_api_compcode ,
+ {"Compl Code.", "mq.api.completioncode",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(mqcc)), 0x0,
+ "API Completion code", HFILL }
+ },
+ { &hf_mq_api_reascode ,
+ {"Reason Code", "mq.api.reasoncode",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(mqrc)), 0x0,
+ "API Reason code", HFILL }
+ },
+ { &hf_mq_api_objecthdl,
+ {"Object Hdl.", "mq.api.hobj",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "API Object handle", HFILL }
+ },
+
+ { &hf_mq_socket_conversid,
+ {"ConversId", "mq.socket.conversid",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "Socket Conversation Id", HFILL }
+ },
+ { &hf_mq_socket_requestid,
+ {"RequestId", "mq.socket.requestid",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "Socket Request Id", HFILL }
+ },
+ { &hf_mq_socket_type ,
+ {"Type.....", "mq.socket.type",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "Socket Type", HFILL }
+ },
+ { &hf_mq_socket_parm1 ,
+ {"Parm1....", "mq.socket.parm1",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "Socket Parameter 1", HFILL }
+ },
+ { &hf_mq_socket_parm2 ,
+ {"Parm2....", "mq.socket.parm2",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "Socket Parameter 2", HFILL }
+ },
+
+ { &hf_mq_caut_StructID ,
+ {"StructID." , "mq.caut.structid" ,
+ FT_STRINGZ, BASE_NONE , NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_caut_AuthType ,
+ {"AuthType." , "mq.caut.authtype" ,
+ FT_UINT32 , BASE_HEX_DEC, NULL, 0x0,
+ "CAUT Authority Type", HFILL }
+ },
+ { &hf_mq_caut_UsrMaxLen,
+ {"UsrMaxLen", "mq.caut.usrmaxlen",
+ FT_UINT32 , BASE_HEX_DEC, NULL, 0x0,
+ "CAUT userid Maximum length", HFILL }
+ },
+ { &hf_mq_caut_PwdMaxLen,
+ {"PwdMaxLen", "mq.caut.pwdmaxlen",
+ FT_UINT32 , BASE_HEX_DEC, NULL, 0x0,
+ "CAUT password Maximum length", HFILL }
+ },
+ { &hf_mq_caut_UsrLength,
+ {"UsrLength", "mq.caut.usrlength",
+ FT_UINT32 , BASE_HEX_DEC, NULL, 0x0,
+ "CAUT userid length", HFILL }
+ },
+ { &hf_mq_caut_PwdLength,
+ {"PwdLength", "mq.caut.pswlength",
+ FT_UINT32 , BASE_HEX_DEC, NULL, 0x0,
+ "CAUT password length", HFILL }
+ },
+ { &hf_mq_caut_usr ,
+ {"userid...", "mq.msh.userid" ,
+ FT_STRINGZ, BASE_NONE , NULL, 0x0,
+ "CAUT UserId", HFILL }
+ },
+ { &hf_mq_caut_psw ,
+ {"password.", "mq.msh.password" ,
+ FT_STRINGZ, BASE_NONE , NULL, 0x0,
+ "CAUT Password", HFILL }
+ },
+
+ { &hf_mq_msh_StructID ,
+ {"StructID", "mq.msh.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_msh_seqnum ,
+ {"Seq Numb", "mq.msh.seqnum",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MSH sequence number", HFILL }
+ },
+ { &hf_mq_msh_datalength,
+ {"Buf len.", "mq.msh.buflength",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MSH buffer length", HFILL }
+ },
+ { &hf_mq_msh_unknown1 ,
+ {"Unknown1", "mq.msh.unknown1",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "MSH unknown1", HFILL }
+ },
+ { &hf_mq_msh_msglength ,
+ {"Msg len.", "mq.msh.msglength",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MSH message length", HFILL }
+ },
+
+ { &hf_mq_xqh_StructID ,
+ {"StructID", "mq.xqh.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_xqh_version ,
+ {"Version.", "mq.xqh.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "XQH version", HFILL }
+ },
+ { &hf_mq_xqh_remoteq ,
+ {"Remote Q", "mq.xqh.remoteq",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "XQH remote queue", HFILL }
+ },
+ { &hf_mq_xqh_remoteqmgr,
+ {"Rmt QMgr", "mq.xqh.remoteqmgr",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "XQH remote queue manager", HFILL }
+ },
+
+ { &hf_mq_id_StructID ,
+ {"Structid..", "mq.id.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_id_FapLevel ,
+ {"FAP level.", "mq.id.level",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "ID Formats And Protocols level", HFILL }
+ },
+ { &hf_mq_id_icf1 ,
+ {"CapFlag1..", "mq.id.idflags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "ID Capability Flags 1", HFILL }
+ },
+ { &hf_mq_id_Eicf1 ,
+ {"ECapFlag1.", "mq.id.ideflags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "ID E Capability Flags 1", HFILL }
+ },
+ { &hf_mq_id_ief1 ,
+ {"IniErrFlg1", "mq.id.ief",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "ID Initial Error Flags 1", HFILL }
+ },
+ { &hf_mq_id_Reserved ,
+ {"Reserved..", "mq.id.unknown04",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "ID Reserved", HFILL }
+ },
+ { &hf_mq_id_MaxMsgBatch,
+ {"MaxMsgBtch", "mq.id.MaxMsgBatch",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "ID max msg per batch", HFILL }
+ },
+ { &hf_mq_id_MaxTrSize ,
+ {"MaxTrSize.", "mq.id.MaxTrSize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ID max trans size", HFILL }
+ },
+ { &hf_mq_id_MaxMsgSize ,
+ {"MaxMsgSize", "mq.id.maxmsgsize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ID max msg size", HFILL }
+ },
+ { &hf_mq_id_SeqWrapVal ,
+ {"SeqWrapVal", "mq.id.seqwrap",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ID seq wrap value", HFILL }
+ },
+ { &hf_mq_id_channel ,
+ {"ChannelNme", "mq.id.channelname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "ID channel name", HFILL }
+ },
+ { &hf_mq_id_icf2 ,
+ {"CapFlag2..", "mq.id.idflags2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "ID Capability flags 2", HFILL }
+ },
+ { &hf_mq_id_Eicf2 ,
+ {"ECapFlag2.", "mq.id.ideflags2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "ID E Capabitlity flags 2", HFILL }
+ },
+ { &hf_mq_id_ccsid ,
+ {"ccsid.....", "mq.id.ccsid",
+ FT_INT16, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0,
+ "ID Coded Character Set ID", HFILL }
+ },
+ { &hf_mq_id_qmgrname ,
+ {"QMgrName..", "mq.id.qm",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "ID Queue Manager Name", HFILL }
+ },
+ { &hf_mq_id_HBInterval ,
+ {"HBInterval", "mq.id.hbint",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ID Heartbeat interval", HFILL }
+ },
+ { &hf_mq_id_EFLLength ,
+ {"EFLLength.", "mq.id.efllength",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ "ID EFL Length", HFILL }
+ },
+ { &hf_mq_id_ief2 ,
+ {"IniErrFlg2", "mq.id.inierrflg2",
+ FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
+ "ID Initial Error Flags 2", HFILL }
+ },
+ { &hf_mq_id_Reserved1 ,
+ {"Reserved1.", "mq.id.reserved1",
+ FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
+ "ID Reserved 1", HFILL }
+ },
+ { &hf_mq_id_HdrCprsLst ,
+ {"HdrCprsLst", "mq.id.hdrcprslst",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "ID Hdr Cprs Lst", HFILL }
+ },
+ { &hf_mq_id_MsgCprsLst ,
+ {"MsgCprsLst", "mq.id.msgcprslst",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "ID Msg Cprs Lst", HFILL }
+ },
+ { &hf_mq_id_Reserved2 ,
+ {"Reserved2.", "mq.id.reserved2",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ "ID Reserved 2", HFILL }
+ },
+ { &hf_mq_id_SSLKeyRst ,
+ {"SSLKeyRst.", "mq.id.sslkeyrst",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "ID SSL Key Reset", HFILL }
+ },
+ { &hf_mq_id_ConvBySkt ,
+ {"ConvBySkt.", "mq.id.convbyskt",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "ID Conv Per Socket", HFILL }
+ },
+ { &hf_mq_id_icf3 ,
+ {"CapFlag3..", "mq.id.idflags3",
+ FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
+ "ID Capability flags 3", HFILL }
+ },
+ { &hf_mq_id_Eicf3 ,
+ {"ECapFlag3.", "mq.id.ideflags3",
+ FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
+ "ID E Capability flags 3", HFILL }
+ },
+ { &hf_mq_id_Reserved3 ,
+ {"Reserved3.", "mq.id.reserved3",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ "ID Reserved 3", HFILL }
+ },
+ { &hf_mq_id_ProcessId ,
+ {"ProcessId.", "mq.id.processid",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "ID Process Identifier", HFILL }
+ },
+ { &hf_mq_id_ThreadId ,
+ {"ThreadId..", "mq.id.threadid",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "ID Thread Identifier", HFILL }
+ },
+ { &hf_mq_id_TraceId ,
+ {"TraceId...", "mq.id.traceid",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "ID Trace Identifier", HFILL }
+ },
+ { &hf_mq_id_ProdId ,
+ {"ProdId....", "mq.id.prodid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "ID Product Identifier", HFILL }
+ },
+ { &hf_mq_id_mqmid ,
+ {"MQM ID....", "mq.id.mqmid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "ID MQM ID", HFILL }
+ },
+
+ { &hf_mq_id_icf1_msgseq ,
+ {"Message sequence", "mq.id.icf.msgseq" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_MSG_SEQ,
+ "ID ICF Message sequence", HFILL }
+ },
+ { &hf_mq_id_icf1_convcap ,
+ {"Conversion capable", "mq.id.icf.convcap" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_CONVERSION_CAPABLE,
+ "ID ICF Conversion capable", HFILL }
+ },
+ { &hf_mq_id_icf1_splitmsg,
+ {"Split messages", "mq.id.icf.splitmsg",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_SPLIT_MESSAGE,
+ "ID ICF Split message", HFILL }
+ },
+ { &hf_mq_id_icf1_RqstInit,
+ {"Request Initiation", "mq.id.icf.rqstinit",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_REQUEST_INITIATION,
+ "ID ICF Request Initiation", HFILL }
+ },
+ { &hf_mq_id_icf1_RqstSecu,
+ {"Request Security", "mq.id.icf.rqstsecu",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_REQUEST_SECURITY,
+ "ID ICF Request Security", HFILL }
+ },
+ { &hf_mq_id_icf1_mqreq ,
+ {"MQ request", "mq.id.icf.mqreq" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_MQREQUEST,
+ "ID ICF MQ request", HFILL }
+ },
+ { &hf_mq_id_icf1_svrsec ,
+ {"Srvr Con security", "mq.id.icf.svrsec" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_SVRCONN_SECURITY,
+ "ID ICF Server connection security", HFILL }
+ },
+ { &hf_mq_id_icf1_runtime ,
+ {"Runtime applic", "mq.id.icf.runtime" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_RUNTIME,
+ "ID ICF Runtime application", HFILL }
+ },
+
+ { &hf_mq_id_icf2_CanDstLst,
+ {"DistListCapable", "mq.id.icf2.distlistcap" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_DIST_LIST_CAPABLE,
+ "ID ICF2 Distribution List Capable", HFILL }
+ },
+ { &hf_mq_id_icf2_FstMsgReq,
+ {"Fast Msg Reqrd", "mq.id.icf2.fastmsgrqrd" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_FAST_MESSAGES_REQUIRED,
+ "ID ICF2 Fast Message Required", HFILL }
+ },
+ { &hf_mq_id_icf2_RespConv ,
+ {"RspndrConversion", "mq.id.icf2.respndrconvers",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_RESPONDER_CONVERSION,
+ "ID ICF2 Responder Conversion", HFILL }
+ },
+ { &hf_mq_id_icf2_XARequest,
+ {"XARequest", "mq.id.icf2.xarequest" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_XAREQUEST,
+ "ID ICF2 XA Request", HFILL }
+ },
+ { &hf_mq_id_icf2_XARunTApp,
+ {"XARunTypApp", "mq.id.icf2.xaruntypapp" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_XARUNTIME_APP,
+ "ID ICF2 XA Runtime App", HFILL }
+ },
+ { &hf_mq_id_icf2_SPIRqst ,
+ {"SPIRequest", "mq.id.icf2.spirequest" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_SPIREQUEST,
+ "ID ICF2 SPI Request", HFILL }
+ },
+ { &hf_mq_id_icf2_DualUOW ,
+ {"DualUOW", "mq.id.icf2.dualuow" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_DUAL_UOW,
+ "ID ICF2 Dual UOW", HFILL }
+ },
+ { &hf_mq_id_icf2_CanTrcRte,
+ {"Trace Rte Capab", "mq.id.icf2.cantraceroute" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_TRACE_ROUTE_CAPABLE,
+ "ID ICF2 Trace Route Capable", HFILL }
+ },
+
+ { &hf_mq_id_icf3_CanMsgPrp,
+ {"Msg Property Cap", "mq.id.icf.msgprpcap",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_MSG_PROP_CAPABLE,
+ "ID ICF3 Message PropertyCapable", HFILL }
+ },
+ { &hf_mq_id_icf3_Unknown02,
+ {"Unknownx02", "mq.id.icf.unknown02",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_UNKNOWNX02,
+ "ID ICF3 Unknown Falg x02", HFILL }
+ },
+
+ { &hf_mq_id_ief1_ccsid ,
+ {"Invalid CCSID", "mq.id.ief1.ccsid",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_CCSID,
+ "ID invalid CCSID", HFILL }
+ },
+ { &hf_mq_id_ief1_enc ,
+ {"Invalid encoding", "mq.id.ief1.enc",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_ENCODING,
+ "ID invalid encoding", HFILL }
+ },
+ { &hf_mq_id_ief1_mxtrsz ,
+ {"Invalid Max Trans Size", "mq.id.ief1.mxtrsz",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_TRANSMISSION_SIZE,
+ "ID invalid maximum transmission size", HFILL }
+ },
+ { &hf_mq_id_ief1_fap ,
+ {"Invalid FAP level", "mq.id.ief1.fap",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_FAP_LEVEL,
+ "ID invalid FAP level", HFILL }
+ },
+ { &hf_mq_id_ief1_mxmsgsz,
+ {"Invalid message size", "mq.id.ief1.mxmsgsz",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_MSG_SIZE,
+ "ID invalid message size", HFILL }
+ },
+ { &hf_mq_id_ief1_mxmsgpb,
+ {"Invalid Max Msg batch", "mq.id.ief1.mxmsgpb",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_MSG_PER_BATCH,
+ "ID maximum message per batch", HFILL }
+ },
+ { &hf_mq_id_ief1_seqwrap,
+ {"Invalid Seq Wrap Value", "mq.id.ief1.seqwrap",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_SEQ_WRAP_VALUE,
+ "ID invalid sequence wrap value", HFILL }
+ },
+ { &hf_mq_id_ief1_hbint ,
+ {"Invalid HB interval", "mq.id.ief1.hbint",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_HEARTBEAT_INTERVAL,
+ "ID invalid heartbeat interval", HFILL }
+ },
+
+ { &hf_mq_id_ief2_HdrCmpLst,
+ {"Invalid HDR CompLst", "mq.id.ief2.hdrcomplst",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_HDRCOMPLIST,
+ "ID invalid Header Compression List", HFILL }
+ },
+ { &hf_mq_id_ief2_MsgCmpLst,
+ {"Invalid Msg CompLst", "mq.id.ief2.msgcomplst",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_MSGCOMPLIST,
+ "ID invalid Message Compression List", HFILL }
+ },
+ { &hf_mq_id_ief2_SSLReset ,
+ {"Invalid SSL Reset", "mq.id.ief2.sslreset" ,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_SSL_RESET ,
+ "ID invalid SSL Reset", HFILL }
+ },
+
+ { &hf_mq_uid_StructID ,
+ {"Structid", "mq.uid.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_uid_userid ,
+ {"User ID.", "mq.uid.userid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "UID structid", HFILL }
+ },
+ { &hf_mq_uid_password ,
+ {"Password", "mq.uid.password",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "UID password", HFILL }
+ },
+ { &hf_mq_uid_longuserid,
+ {"Long UID", "mq.uid.longuserid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "UID long user id", HFILL }
+ },
+
+ { &hf_mq_sidlen ,
+ {"SID Len.", "mq.uid.sidlen",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Sid Len", HFILL }
+ },
+ { &hf_mq_sidtyp ,
+ {"SIDType.", "mq.uid.sidtyp",
+ FT_UINT8, BASE_DEC, VALS(GET_VALSV(sidtype)), 0x0,
+ "Sid Typ", HFILL }
+ },
+ { &hf_mq_securityid ,
+ {"SecurID.", "mq.uid.securityid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Security ID", HFILL }
+ },
+
+ { &hf_mq_conn_QMgr ,
+ {"QMgr....", "mq.conn.qm",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "CONN queue manager", HFILL }
+ },
+ { &hf_mq_conn_appname ,
+ {"ApplName", "mq.conn.appname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "CONN application name", HFILL }
+ },
+ { &hf_mq_conn_apptype ,
+ {"ApplType", "mq.conn.apptype",
+ FT_INT32, BASE_DEC, VALS(GET_VALSV(mqat)), 0x0,
+ "CONN application type", HFILL }
+ },
+ { &hf_mq_conn_acttoken ,
+ {"AccntTok", "mq.conn.acttoken",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "CONN accounting token", HFILL }
+ },
+ { &hf_mq_conn_version ,
+ {"Version.", "mq.conn.version",
+ FT_UINT32, BASE_DEC, VALS(mq_conn_version_vals), 0x0,
+ "CONN version", HFILL }
+ },
+ { &hf_mq_conn_options ,
+ {"Options.", "mq.conn.options",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "CONN options", HFILL }
+ },
+
+ { &hf_mq_fcno_StructID ,
+ {"StructId.", "mq.fcno.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_fcno_unknown00,
+ {"unknown00", "mq.fcno.unknown00",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "FCNO unknown00", HFILL }
+ },
+ { &hf_mq_fcno_unknown01,
+ {"unknown01", "mq.fcno.unknown01",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "FCNO unknown01", HFILL }
+ },
+ { &hf_mq_fcno_unknown02,
+ {"unknown02", "mq.fcno.unknown02",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "FCNO unknown02", HFILL }
+ },
+ { &hf_mq_fcno_msgid ,
+ {"msgid....", "mq.fcno.msgid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "FCNO Msg ID", HFILL }
+ },
+ { &hf_mq_fcno_mqmid ,
+ {"MqmId....", "mq.fcno.mqmid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "FCNO Mqm ID", HFILL }
+ },
+
+ { &hf_mq_inq_nbsel ,
+ {"Selector count..", "mq.inq.nbsel",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "INQ Selector count", HFILL }
+ },
+ { &hf_mq_inq_nbint ,
+ {"Integer count...", "mq.inq.nbint",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "INQ Integer count", HFILL }
+ },
+ { &hf_mq_inq_charlen ,
+ {"Character length", "mq.inq.charlen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "INQ Character length", HFILL }
+ },
+ { &hf_mq_inq_sel ,
+ {"Selector........", "mq.inq.sel",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(selector)), 0x0,
+ "INQ Selector", HFILL }
+ },
+ { &hf_mq_inq_intvalue ,
+ {"Integer value...", "mq.inq.intvalue",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "INQ Integer value", HFILL }
+ },
+ { &hf_mq_inq_charvalues,
+ {"Char values.....", "mq.inq.charvalues",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "INQ Character values", HFILL }
+ },
+
+ { &hf_mq_spi_verb ,
+ {"SPI Verb", "mq.spi.verb",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(spi_verbs)), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_spi_version ,
+ {"Version", "mq.spi.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Version", HFILL }
+ },
+ { &hf_mq_spi_length ,
+ {"Max reply size", "mq.spi.replength",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Max reply size", HFILL }
+ },
+
+ { &hf_mq_spi_base_StructID,
+ {"SPI Structid", "mq.spib.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_spi_base_version ,
+ {"Version", "mq.spib.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Base Version", HFILL }
+ },
+ { &hf_mq_spi_base_length ,
+ {"Length", "mq.spib.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Base Length", HFILL }
+ },
+
+ { &hf_mq_spi_spqo_nbverb ,
+ {"Number of verbs", "mq.spqo.nbverb",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Query Output Number of verbs", HFILL }
+ },
+ { &hf_mq_spi_spqo_verbid ,
+ {"Verb", "mq.spqo.verb",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(spi_verbs)), 0x0,
+ "SPI Query Output VerbId", HFILL }
+ },
+ { &hf_mq_spi_spqo_maxiover,
+ {"Max InOut Version", "mq.spqo.maxiov",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Query Output Max InOut Version", HFILL }
+ },
+ { &hf_mq_spi_spqo_maxinver,
+ {"Max In Version", "mq.spqo.maxiv",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Query Output Max In Version", HFILL }
+ },
+ { &hf_mq_spi_spqo_maxouver,
+ {"Max Out Version", "mq.spqo.maxov",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Query Output Max Out Version", HFILL }
+ },
+ { &hf_mq_spi_spqo_flags ,
+ {"Flags", "mq.spqo.flags",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Query Output flags", HFILL }
+ },
+
+ { &hf_mq_spi_spai_mode ,
+ {"Mode", "mq.spai.mode",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(spi_activate)), 0x0,
+ "SPI Activate Input mode", HFILL }
+ },
+ { &hf_mq_spi_spai_unknown1,
+ {"Unknown1", "mq.spai.unknown1",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "SPI Activate Input unknown1", HFILL }
+ },
+ { &hf_mq_spi_spai_unknown2,
+ {"Unknown2", "mq.spai.unknown2",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "SPI Activate Input unknown2", HFILL }
+ },
+ { &hf_mq_spi_spai_msgid ,
+ {"Message Id", "mq.spai.msgid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "SPI Activate Input message id", HFILL }
+ },
+ { &hf_mq_spi_spgi_batchsz ,
+ {"Batch size", "mq.spgi.batchsize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Get Input batch size", HFILL }
+ },
+ { &hf_mq_spi_spgi_batchint,
+ {"Batch interval", "mq.spgi.batchint",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Get Input batch interval", HFILL }
+ },
+ { &hf_mq_spi_spgi_maxmsgsz,
+ {"Max message size", "mq.spgi.maxmsgsize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Get Input max message size", HFILL }
+ },
+
+ { &hf_mq_spi_spgo_options ,
+ {"Options", "mq.spgo.options",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Get Output options", HFILL }
+ },
+ { &hf_mq_spi_spgo_size ,
+ {"Size", "mq.spgo.size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SPI Get Output size", HFILL }
+ },
+ { &hf_mq_spi_opt_blank ,
+ {"Blank padded", "mq.spi.options.blank",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_SPI_OPTIONS_BLANK_PADDED,
+ "SPI Options blank padded", HFILL }
+ },
+ { &hf_mq_spi_opt_syncp ,
+ {"Syncpoint", "mq.spi.options.sync",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_SPI_OPTIONS_SYNCPOINT,
+ "SPI Options syncpoint", HFILL }
+ },
+ { &hf_mq_spi_opt_deferred ,
+ {"Deferred", "mq.spi.options.deferred",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_SPI_OPTIONS_DEFERRED,
+ "SPI Options deferred", HFILL }
+ },
+
+ { &hf_mq_put_length ,
+ {"Data length", "mq.put.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PUT Data length", HFILL }
+ },
+
+ { &hf_mq_close_options ,
+ {"Options", "mq.close.options",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "CLOSE options", HFILL }
+ },
+ { &hf_mq_close_options_DELETE ,
+ {"DELETE", "mq.close.options.Delete",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_DELETE,
+ "CLOSE options DELETE", HFILL }
+ },
+ { &hf_mq_close_options_DELETE_PURGE,
+ {"DELETE_PURGE", "mq.close.options.DeletePurge",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_DELETE_PURGE,
+ "CLOSE options DELETE_PURGE", HFILL }
+ },
+ { &hf_mq_close_options_KEEP_SUB ,
+ {"KEEPSUB", "mq.close.options.KeepSub",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_KEEP_SUB,
+ "CLOSE options KEEP_SUB", HFILL }
+ },
+ { &hf_mq_close_options_REMOVE_SUB ,
+ {"REMOVE_SUB", "mq.close.options.RemoveSub",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_REMOVE_SUB,
+ "CLOSE options REMOVE_SUB", HFILL }
+ },
+ { &hf_mq_close_options_QUIESCE ,
+ {"QUIESCE", "mq.close.options.Quiesce",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_QUIESCE,
+ "CLOSE options QUIESCE", HFILL }
+ },
+
+ { &hf_mq_open_options ,
+ {"Options", "mq.open.options",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "OPEN options", HFILL }
+ },
+ { &hf_mq_open_options_INPUT_AS_Q_DEF ,
+ {"INPUT_AS_Q_DEF", "mq.open.options.InputAsQDef",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_AS_Q_DEF,
+ "OPEN options INPUT_AS_Q_DEF", HFILL }
+ },
+ { &hf_mq_open_options_INPUT_SHARED ,
+ {"INPUT_SHARED", "mq.open.options.InputShared",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_SHARED,
+ "OPEN options INPUT_SHARED", HFILL }
+ },
+ { &hf_mq_open_options_INPUT_EXCLUSIVE,
+ {"INPUT_EXCLUSIVE", "mq.open.options.InputExclusive",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_EXCLUSIVE,
+ "OPEN options INPUT_EXCLUSIVE", HFILL }
+ },
+ { &hf_mq_open_options_BROWSE ,
+ {"BROWSE", "mq.open.options.Browse",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BROWSE,
+ "OPEN options BROWSE", HFILL }
+ },
+ { &hf_mq_open_options_OUTPUT ,
+ {"OUTPUT", "mq.open.options.Output",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_OUTPUT,
+ "OPEN options OUTPUT", HFILL }
+ },
+ { &hf_mq_open_options_INQUIRE ,
+ {"INQUIRE", "mq.open.options.Inquire",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INQUIRE,
+ "OPEN options INQUIRE", HFILL }
+ },
+ { &hf_mq_open_options_SET ,
+ {"SET", "mq.open.options.Set",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET,
+ "OPEN options SET", HFILL }
+ },
+ { &hf_mq_open_options_SAVE_ALL_CTX ,
+ {"SAVE_ALL_CONTEXT", "mq.open.options.SaveAllContext",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SAVE_ALL_CONTEXT,
+ "OPEN options SAVE_ALL_CONTEXT", HFILL }
+ },
+ { &hf_mq_open_options_PASS_IDENT_CTX ,
+ {"PASS_IDENTITY_CONTEXT", "mq.open.options.PassIdentityContext",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_PASS_IDENTITY_CONTEXT,
+ "OPEN options PASS_IDENTITY_CONTEXT", HFILL }
+ },
+ { &hf_mq_open_options_PASS_ALL_CTX ,
+ {"PASS_ALL_CONTEXT", "mq.open.options.PassAllContext",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_PASS_ALL_CONTEXT,
+ "OPEN options PASS_ALL_CONTEXT", HFILL }
+ },
+ { &hf_mq_open_options_SET_IDENT_CTX ,
+ {"SET_IDENTITY_CONTEXT", "mq.open.options.SetIdentityContext",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET_IDENTITY_CONTEXT,
+ "OPEN options SET_IDENTITY_CONTEXT", HFILL }
+ },
+ { &hf_mq_open_options_SET_ALL_CONTEXT,
+ {"SET_ALL_CONTEXT", "mq.open.options.SetAllContext",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET_ALL_CONTEXT,
+ "OPEN options SET_ALL_CONTEXT", HFILL }
+ },
+ { &hf_mq_open_options_ALT_USER_AUTH ,
+ {"ALTERNATE_USER_AUTHORITY", "mq.open.options.AlternateUserAuthority",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_ALTERNATE_USER_AUTHORITY,
+ "OPEN options ALTERNATE_USER_AUTHORITY", HFILL }
+ },
+ { &hf_mq_open_options_FAIL_IF_QUIESC ,
+ {"FAIL_IF_QUIESCING", "mq.open.options.FailIfQuiescing",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_FAIL_IF_QUIESCING,
+ "OPEN options FAIL_IF_QUIESCING", HFILL }
+ },
+ { &hf_mq_open_options_BIND_ON_OPEN ,
+ {"BIND_ON_OPEN", "mq.open.options.BindOnOpen",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_ON_OPEN,
+ "OPEN options BIND_ON_OPEN", HFILL }
+ },
+ { &hf_mq_open_options_BIND_NOT_FIXED ,
+ {"BIND_NOT_FIXED", "mq.open.options.BindNotFixed",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_NOT_FIXED,
+ "OPEN options BIND_NOT_FIXED", HFILL }
+ },
+ { &hf_mq_open_options_RESOLVE_NAMES ,
+ {"RESOLVE_NAMES", "mq.open.options.ResolveNames",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_RESOLVE_NAMES,
+ "OPEN options RESOLVE_NAMES", HFILL }
+ },
+ { &hf_mq_open_options_CO_OP ,
+ {"CO_OP", "mq.open.options.CoOp",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_CO_OP,
+ "OPEN options CO_OP", HFILL }
+ },
+ { &hf_mq_open_options_RESOLVE_LOCAL_Q,
+ {"RESOLVE_LOCAL_Q", "mq.open.options.ResolveLocalQueueOrTopic",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_RESOLVE_LOCAL_Q,
+ "OPEN options RESOLVE_LOCAL_Q", HFILL }
+ },
+ { &hf_mq_open_options_NO_READ_AHEAD ,
+ {"NO_READ_AHEAD", "mq.open.options.NoReadAhead",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_NO_READ_AHEAD,
+ "OPEN options NO_READ_AHEAD", HFILL }
+ },
+ { &hf_mq_open_options_READ_AHEAD ,
+ {"READ_AHEAD", "mq.open.options.ReadAhead",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_READ_AHEAD,
+ "OPEN options READ_AHEAD", HFILL }
+ },
+ { &hf_mq_open_options_NO_MULTICAST ,
+ {"NO_MULTICAST", "mq.open.options.NoMulticast",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_NO_MULTICAST,
+ "OPEN options NO_MULTICAST", HFILL }
+ },
+ { &hf_mq_open_options_BIND_ON_GROUP ,
+ {"BIND_ON_GROUP", "mq.open.options.BindOnGroup",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_ON_GROUP,
+ "OPEN options BIND_ON_GROUP", HFILL }
+ },
+
+ { &hf_mq_fopa_StructID,
+ {"StructId", "mq.fopa.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_fopa_version ,
+ {"Version.", "mq.fopa.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "FOPA Version", HFILL }
+ },
+ { &hf_mq_fopa_length ,
+ {"Length..", "mq.fopa.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "FOPA Length", HFILL }
+ },
+ { &hf_mq_fopa_unknown1,
+ {"Unknown1", "mq.fopa.unknown1",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "FOPA unknown1", HFILL }
+ },
+ { &hf_mq_fopa_unknown2,
+ {"Unknown2", "mq.fopa.unknown2",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "FOPA unknown2", HFILL }
+ },
+ { &hf_mq_fopa_unknown3,
+ {"Unknown3", "mq.fopa.unknown3",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "FOPA unknown3", HFILL }
+ },
+ { &hf_mq_fopa_qprotect,
+ {"qprotect", "mq.fopa.qprotect",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "FOPA queue protection", HFILL }
+ },
+ { &hf_mq_fopa_unknown4,
+ {"Unknown4", "mq.fopa.unknown4",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "FOPA unknown4", HFILL }
+ },
+ { &hf_mq_fopa_unknown5,
+ {"Unknown5", "mq.fopa.unknown5",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "FOPA unknown5", HFILL }
+ },
+
+ { &hf_mq_msgreq_version ,
+ {"version..", "mq.msgreq.version" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ version", HFILL }
+ },
+ { &hf_mq_msgreq_handle ,
+ {"handle...", "mq.msgreq.handle" ,
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "MSGREQ handle", HFILL }
+ },
+ { &hf_mq_msgreq_RecvBytes,
+ {"RecvBytes", "mq.msgreq.unknown1" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Received Bytes", HFILL }
+ },
+ { &hf_mq_msgreq_RqstBytes,
+ {"RqstBytes", "mq.msgreq.rqstbytes",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Requesed Bytes", HFILL }
+ },
+ { &hf_mq_msgreq_MaxMsgLen,
+ {"MaxMsgLen", "mq.msgreq.maxmsglen",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Maximum Msg Length", HFILL }
+ },
+ { &hf_mq_msgreq_WaitIntrv,
+ {"WaitIntrv", "mq.msgreq.waitintrv",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Wait Interval", HFILL }
+ },
+ { &hf_mq_msgreq_QueStatus,
+ {"QueStatus", "mq.msgreq.questatus",
+ FT_UINT32, BASE_HEX , NULL, 0x0,
+ "MSGREQ Queue Status", HFILL }
+ },
+ { &hf_mq_msgreq_RqstFlags,
+ {"RqstFlags", "mq.msgreq.rqstflags",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Request Flags", HFILL }
+ },
+ { &hf_mq_msgreq_GlbMsgIdx,
+ {"GlbMsgIdx", "mq.msgreq.glbmsgidx",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Global Message Index", HFILL }
+ },
+ { &hf_mq_msgreq_SelectIdx,
+ {"SelectIdx", "mq.msgreq.selectIdx",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Selection Index", HFILL }
+ },
+ { &hf_mq_msgreq_MQMDVers ,
+ {"MQMDVers.", "mq.msgreq.mqmdvers" ,
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ MQMD Version", HFILL }
+ },
+ { &hf_mq_msgreq_ccsid ,
+ {"CCSID....", "mq.msgreq.ccsid" ,
+ FT_INT32 , BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0,
+ "MSGREQ ccsid", HFILL }
+ },
+ { &hf_mq_msgreq_encoding ,
+ {"Encoding.", "mq.msgreq.encoding" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ encoding", HFILL }
+ },
+ { &hf_mq_msgreq_MsgSeqNum,
+ {"MsgSeqNum", "mq.msgreq.msgseqnum",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Message Sequence Number", HFILL }
+ },
+ { &hf_mq_msgreq_offset ,
+ {"Offset...", "mq.msgreq.offset" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGREQ Offset", HFILL }
+ },
+ { &hf_mq_msgreq_mtchMsgId,
+ {"mtchMsgId", "mq.msgreq.mtchMsgId",
+ FT_BYTES , BASE_NONE , NULL, 0x0,
+ "MSGREQ match MsgID", HFILL }
+ },
+ { &hf_mq_msgreq_mtchCorId,
+ {"mtchCorID", "mq.msgreq.mtchcorid",
+ FT_BYTES , BASE_NONE , NULL, 0x0,
+ "MSGREQ match Correlation Id", HFILL }
+ },
+ { &hf_mq_msgreq_mtchGrpid,
+ {"mtchGrpID", "mq.msgreq.mtchgrpid",
+ FT_BYTES , BASE_NONE , NULL, 0x0,
+ "MSGREQ match Group ID", HFILL }
+ },
+ { &hf_mq_msgreq_mtchMsgTk,
+ {"mtchMsgTk", "mq.msgreq.mtchmsgtk",
+ FT_BYTES , BASE_NONE , NULL, 0x0,
+ "MSGREQ match Message Token", HFILL }
+ },
+
+ { &hf_mq_msgasy_version ,
+ {"version..", "mq.msgasy.version" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC version", HFILL }
+ },
+ { &hf_mq_msgasy_handle ,
+ {"handle...", "mq.msgasy.handle" ,
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "MSGASYNC handle", HFILL }
+ },
+ { &hf_mq_msgasy_MsgIndex ,
+ {"MsgIndex.", "mq.msgasy.msgindex" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC Message Index", HFILL }
+ },
+ { &hf_mq_msgasy_GlbMsgIdx,
+ {"GlbMsgIdx", "mq.msgasy.glbmsgidx",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC Global Message Index", HFILL }
+ },
+ { &hf_mq_msgasy_SegLength,
+ {"SegLength", "mq.msgasy.seglength",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC Segment Length", HFILL }
+ },
+ { &hf_mq_msgasy_SegmIndex,
+ {"SegmIndex", "mq.msgasy.segmindex",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC Segment Index", HFILL }
+ },
+ { &hf_mq_msgasy_SeleIndex,
+ {"SeleIndex", "mq.msgasy.seleindex",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC Selection Index", HFILL }
+ },
+ { &hf_mq_msgasy_ReasonCod,
+ {"ReasonCod", "mq.msgasy.reasoncod",
+ FT_UINT32, BASE_HEX , NULL, 0x0,
+ "MSGASYNC Reason Code", HFILL }
+ },
+ { &hf_mq_msgasy_ActMsgLen,
+ {"ActMsgLen", "mq.msgasy.actmsglen",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC Actual Message Length", HFILL }
+ },
+ { &hf_mq_msgasy_TotMsgLen,
+ {"TotMsgLen", "mq.msgasy.totmsglen",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "MSGASYNC Total Message Length", HFILL }
+ },
+ { &hf_mq_msgasy_MsgToken ,
+ {"MsgToken.", "mq.msgasy.msgtoken" ,
+ FT_BYTES , BASE_NONE , NULL, 0x0,
+ "MSGASYNC Mesasage Token", HFILL }
+ },
+ { &hf_mq_msgasy_Status ,
+ {"status...", "mq.msgasy.status" ,
+ FT_UINT16, BASE_HEX , NULL, 0x0,
+ "MSGASYNC Status", HFILL }
+ },
+ { &hf_mq_msgasy_resolQNLn,
+ {"resolQNLn", "mq.msgasy.resolqnln",
+ FT_UINT8 , BASE_DEC , NULL, 0x0,
+ "MSGASYNC Resolved Queue Name Length", HFILL }
+ },
+ { &hf_mq_msgasy_resolQNme,
+ {"resolQNme", "mq.msgasy.resolqnme",
+ FT_STRINGZ, BASE_NONE , NULL, 0x0,
+ "MSGASYNC Resolved Queue Name", HFILL }
+ },
+ { &hf_mq_msgasy_padding ,
+ {"Padding..", "mq.msgasy.padding" ,
+ FT_BYTES , BASE_NONE , NULL, 0x0,
+ "MSGASYNC Padding", HFILL }
+ },
+
+ { &hf_mq_notif_vers ,
+ {"version.", "mq.notif.vers" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "NOTIFICATION version", HFILL }
+ },
+ { &hf_mq_notif_handle ,
+ {"handle..", "mq.notif.handle",
+ FT_UINT32, BASE_HEX , NULL, 0x0,
+ "NOTIFICATION handle", HFILL }
+ },
+ { &hf_mq_notif_code ,
+ {"code....", "mq.notif.code" ,
+ FT_UINT32, BASE_HEX_DEC, VALS(GET_VALSV(notifcode)), 0x0,
+ "NOTIFICATION code", HFILL }
+ },
+ { &hf_mq_notif_value ,
+ {"value...", "mq.notif.value" ,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ "NOTIFICATION MQRC", HFILL }
+ },
+
+ { &hf_mq_ping_length ,
+ {"Length", "mq.ping.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PING length", HFILL }
+ },
+ { &hf_mq_ping_buffer ,
+ {"Buffer", "mq.ping.buffer",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "PING buffer", HFILL }
+ },
+
+ { &hf_mq_reset_length ,
+ {"Length", "mq.reset.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "RESET length", HFILL }
+ },
+ { &hf_mq_reset_seqnum ,
+ {"SeqNum", "mq.reset.seqnum",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "RESET sequence number", HFILL }
+ },
+
+ { &hf_mq_status_length ,
+ {"Length", "mq.status.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "STATUS length", HFILL }
+ },
+ { &hf_mq_status_code ,
+ {"Code..", "mq.status.code" ,
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(status)), 0x0,
+ "STATUS code", HFILL }
+ },
+ { &hf_mq_status_value ,
+ {"Value.", "mq.status.value" ,
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "STATUS value", HFILL }
+ },
+
+ { &hf_mq_od_StructID ,
+ {"StructID.........", "mq.od.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_od_version ,
+ {"version..........", "mq.od.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OD version", HFILL }
+ },
+ { &hf_mq_od_objecttype ,
+ {"ObjType..........", "mq.od.objtype",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(objtype)), 0x0,
+ "OD object type", HFILL }
+ },
+ { &hf_mq_od_objectname ,
+ {"ObjName..........", "mq.od.objname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OD object name", HFILL }
+ },
+ { &hf_mq_od_objqmgrname ,
+ {"ObjQMgr..........", "mq.od.objqmgrname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OD object queue manager name", HFILL }
+ },
+ { &hf_mq_od_dynqname ,
+ {"DynQName.........", "mq.od.dynqname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OD dynamic queue name", HFILL }
+ },
+ { &hf_mq_od_altuserid ,
+ {"AltUserID........", "mq.od.altuserid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OD alternate userid", HFILL }
+ },
+ { &hf_mq_od_recspresent ,
+ {"NbrRecord........", "mq.od.nbrrec",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OD number of records", HFILL }
+ },
+ { &hf_mq_od_knowndstcnt ,
+ {"Known Dest Count.", "mq.od.kdestcount",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OD known destination count", HFILL }
+ },
+ { &hf_mq_od_unknowdstcnt,
+ {"Unknown Dest Cnt.", "mq.od.udestcount",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OD unknown destination count", HFILL }
+ },
+ { &hf_mq_od_invaldstcnt ,
+ {"Invalid Dest Cnt.", "mq.od.idestcount",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OD invalid destination count", HFILL }
+ },
+ { &hf_mq_od_objrecofs ,
+ {"Offset of 1st OR.", "mq.od.offsetor",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OD offset of first OR", HFILL }
+ },
+ { &hf_mq_od_resprecofs ,
+ {"Offset of 1st RR.", "mq.od.offsetrr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OD offset of first RR", HFILL }
+ },
+ { &hf_mq_od_objrecptr ,
+ {"Addr of 1st OR.", "mq.od.addror",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "OD address of first OR", HFILL }
+ },
+ { &hf_mq_od_resprecptr ,
+ {"Addr of 1st RR.", "mq.od.addrrr",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "OD address of first RR", HFILL }
+ },
+ { &hf_mq_od_altsecurid ,
+ {"Alt security id..", "mq.od.altsecid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OD alternate security id", HFILL }
+ },
+ { &hf_mq_od_resolvqname ,
+ {"Resolved Q Name..", "mq.od.resolvq",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OD resolved queue name", HFILL }
+ },
+ { &hf_mq_od_resolvqmgrnm,
+ {"Resolved QMgrName", "mq.od.resolvqmgr",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OD resolved queue manager name", HFILL }
+ },
+ { &hf_mq_od_resolvobjtyp,
+ {"Resolv Obj Type..", "mq.od.resolvedobjtype",
+ FT_UINT32, BASE_DEC, VALS(GET_VALSV(objtype)), 0x0,
+ "OD resolved object type", HFILL }
+ },
+
+ { &hf_mq_or_objname ,
+ {"Object name...", "mq.or.objname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OR object name", HFILL }
+ },
+ { &hf_mq_or_objqmgrname ,
+ {"Object QMgr Nm", "mq.or.objqmgrname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "OR object queue manager name", HFILL }
+ },
+
+ { &hf_mq_rr_compcode ,
+ {"Comp Code", "mq.rr.completioncode",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OR completion code", HFILL }
+ },
+ { &hf_mq_rr_reascode ,
+ {"Reas Code", "mq.rr.reasoncode",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OR reason code", HFILL }
+ },
+
+ { &hf_mq_pmr_msgid ,
+ {"Message Id", "mq.pmr.msgid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "PMR Message Id", HFILL }
+ },
+ { &hf_mq_pmr_correlid ,
+ {"Correlation Id", "mq.pmr.correlid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "PMR Correlation Id", HFILL }
+ },
+ { &hf_mq_pmr_groupid ,
+ {"GroupId", "mq.pmr.groupid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "PMR GroupId", HFILL }
+ },
+ { &hf_mq_pmr_feedback ,
+ {"Feedback", "mq.pmr.feedback",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMR Feedback", HFILL }
+ },
+ { &hf_mq_pmr_acttoken ,
+ {"Accounting token", "mq.pmr.acttoken",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "PMR accounting token", HFILL }
+ },
+
+ { &hf_mq_md_StructID ,
+ {"StructID.", "mq.md.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_md_version ,
+ {"Version..", "mq.md.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD version", HFILL }
+ },
+ { &hf_mq_md_report ,
+ {"Report...", "mq.md.report",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD report", HFILL }
+ },
+ { &hf_mq_md_msgtype ,
+ {"Msg Type.", "mq.md.msgtype",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD message type", HFILL }
+ },
+ { &hf_mq_md_expiry ,
+ {"Expiry .", "mq.md.expiry",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "MD expiry", HFILL }
+ },
+ { &hf_mq_md_feedback ,
+ {"Feedback.", "mq.md.feedback",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD feedback", HFILL }
+ },
+ { &hf_mq_md_encoding ,
+ {"Encoding.", "mq.md.encoding",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD encoding", HFILL }
+ },
+ { &hf_mq_md_ccsid ,
+ {"CCSID....", "mq.md.ccsid",
+ FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0,
+ "MD character set", HFILL }
+ },
+ { &hf_mq_md_format ,
+ {"Format...", "mq.md.format",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD format", HFILL }
+ },
+ { &hf_mq_md_priority ,
+ {"Priority.", "mq.md.priority",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "MD priority", HFILL }
+ },
+ { &hf_mq_md_persistence ,
+ {"Persist..", "mq.md.persistence",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD persistence", HFILL }
+ },
+ { &hf_mq_md_msgid ,
+ {"Msg ID...", "mq.md.msgid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "MD Message Id", HFILL }
+ },
+ { &hf_mq_md_correlid ,
+ {"CorrelID.", "mq.md.correlid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "MD Correlation Id", HFILL }
+ },
+ { &hf_mq_md_backoutcnt ,
+ {"BackoCnt.", "mq.md.backount",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD Backout count", HFILL }
+ },
+ { &hf_mq_md_replytoq ,
+ {"ReplyToQ.", "mq.md.replytoq",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD ReplyTo queue", HFILL }
+ },
+ { &hf_mq_md_replytoqmgr ,
+ {"RepToQMgr", "mq.md.replytoqmgr",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD ReplyTo queue manager", HFILL }
+ },
+ { &hf_mq_md_userid ,
+ {"UserId...", "mq.md.userid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD UserId", HFILL }
+ },
+ { &hf_mq_md_acttoken ,
+ {"AccntTok.", "mq.md.acttoken",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "MD accounting token", HFILL }
+ },
+ { &hf_mq_md_appliddata ,
+ {"AppIdData", "mq.md.appldata",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD Put applicationId data", HFILL }
+ },
+ { &hf_mq_md_putappltype ,
+ {"PutAppTyp", "mq.md.appltype",
+ FT_INT32, BASE_DEC, VALS(GET_VALSV(mqat)), 0x0,
+ "MD Put application type", HFILL }
+ },
+ { &hf_mq_md_putapplname ,
+ {"PutAppNme", "mq.md.applname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD Put application name", HFILL }
+ },
+ { &hf_mq_md_putdate ,
+ {"PutDatGMT", "mq.md.date",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD Put date", HFILL }
+ },
+ { &hf_mq_md_puttime ,
+ {"PutTimGMT", "mq.md.time",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD Put time", HFILL }
+ },
+ { &hf_mq_md_apporigdata ,
+ {"AppOriDat", "mq.md.origdata",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "MD Application original data", HFILL }
+ },
+ { &hf_mq_md_groupid ,
+ {"GroupId..", "mq.md.groupid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "MD GroupId", HFILL }
+ },
+ { &hf_mq_md_msgseqnumber,
+ {"MsgSeqNum", "mq.md.msgseqnumber",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD Message sequence number", HFILL }
+ },
+ { &hf_mq_md_offset ,
+ {"Offset...", "mq.md.offset",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MD Offset", HFILL }
+ },
+ { &hf_mq_md_msgflags ,
+ {"Msg flags", "mq.md.msgflags",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "MD Message flags", HFILL }
+ },
+ { &hf_mq_md_origlen ,
+ {"Orig len.", "mq.md.origlength",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "MD Original length", HFILL }
+ },
+
+ { &hf_mq_dlh_StructID ,
+ {"StructID.", "mq.dlh.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_dlh_version ,
+ {"Version..", "mq.dlh.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DLH version", HFILL }
+ },
+ { &hf_mq_dlh_reason ,
+ {"Reason...", "mq.dlh.reason",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DLH reason", HFILL }
+ },
+ { &hf_mq_dlh_destq ,
+ {"Dest Q...", "mq.dlh.destq",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "DLH destination queue", HFILL }
+ },
+ { &hf_mq_dlh_destqmgr ,
+ {"DestQMgr.", "mq.dlh.destqmgr",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "DLH destination queue manager", HFILL }
+ },
+ { &hf_mq_dlh_encoding ,
+ {"Encoding.", "mq.dlh.encoding",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DLH encoding", HFILL }
+ },
+ { &hf_mq_dlh_ccsid ,
+ {"CCSID....", "mq.dlh.ccsid",
+ FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0,
+ "DLH character set", HFILL }
+ },
+ { &hf_mq_dlh_format ,
+ {"Format...", "mq.dlh.format",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "DLH format", HFILL }
+ },
+ { &hf_mq_dlh_putappltype,
+ {"PutAppTyp", "mq.dlh.putappltype",
+ FT_INT32, BASE_DEC, VALS(GET_VALSV(mqat)), 0x0,
+ "DLH put application type", HFILL }
+ },
+ { &hf_mq_dlh_putapplname,
+ {"PutAppNme", "mq.dlh.putapplname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "DLH put application name", HFILL }
+ },
+ { &hf_mq_dlh_putdate ,
+ {"PutDatGMT", "mq.dlh.putdate",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "DLH put date", HFILL }
+ },
+ { &hf_mq_dlh_puttime ,
+ {"PutTimGMT", "mq.dlh.puttime",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "DLH put time", HFILL }
+ },
+ { &hf_mq_dh_putmsgrecfld,
+ {"Flags PMR", "mq.dh.flagspmr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DH flags PMR", HFILL }
+ },
+ { &hf_mq_dh_recspresent ,
+ {"NumOfRecs", "mq.dh.nbrrec",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DH number of records", HFILL }
+ },
+ { &hf_mq_dh_objrecofs ,
+ {"Ofs1stOR.", "mq.dh.offsetor",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DH offset of first OR", HFILL }
+ },
+ { &hf_mq_dh_putmsgrecofs,
+ {"Ofs1stPMR", "mq.dh.offsetpmr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DH offset of first PMR", HFILL }
+ },
+
+ { &hf_mq_gmo_StructID ,
+ {"StructID.", "mq.gmo.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_gmo_version ,
+ {"Version..", "mq.gmo.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "GMO version", HFILL }
+ },
+ { &hf_mq_gmo_options ,
+ {"GetMsgOpt", "mq.gmo.getmsgopt",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "GMO Get Message Options", HFILL }
+ },
+
+ { &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY,
+ {"PROPERTIES_COMPATIBILITY", "mq.gmo.options.PROPERTIES_COMPATIBILITY",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_COMPATIBILITY,
+ "GMO options PROPERTIES_COMPATIBILITY", HFILL }
+ },
+ { &hf_mq_gmo_options_PROPERTIES_IN_HANDLE ,
+ {"PROPERTIES_IN_HANDLE", "mq.gmo.options.PROPERTIES_IN_HANDLE",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_IN_HANDLE ,
+ "GMO options PROPERTIES_IN_HANDLE", HFILL }
+ },
+ { &hf_mq_gmo_options_NO_PROPERTIES ,
+ {"NO_PROPERTIES", "mq.gmo.options.NO_PROPERTIES",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_PROPERTIES ,
+ "GMO options NO_PROPERTIES", HFILL }
+ },
+ { &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 ,
+ {"PROPERTIES_FORCE_MQRFH2", "mq.gmo.options.PROPERTIES_FORCE_MQRFH2",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_FORCE_MQRFH2 ,
+ "GMO options PROPERTIES_FORCE_MQRFH2", HFILL }
+ },
+ { &hf_mq_gmo_options_UNMARKED_BROWSE_MSG ,
+ {"UNMARKED_BROWSE_MSG", "mq.gmo.options.UNMARKED_BROWSE_MSG",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARKED_BROWSE_MSG ,
+ "GMO options UNMARKED_BROWSE_MSG", HFILL }
+ },
+ { &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE ,
+ {"UNMARK_BROWSE_HANDLE", "mq.gmo.options.UNMARK_BROWSE_HANDLE",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARK_BROWSE_HANDLE ,
+ "GMO options UNMARK_BROWSE_HANDLE", HFILL }
+ },
+ { &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP ,
+ {"UNMARK_BROWSE_CO_OP", "mq.gmo.options.UNMARK_BROWSE_CO_OP",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARK_BROWSE_CO_OP ,
+ "GMO options UNMARK_BROWSE_CO_OP", HFILL }
+ },
+ { &hf_mq_gmo_options_MARK_BROWSE_CO_OP ,
+ {"MARK_BROWSE_CO_OP", "mq.gmo.options.MARK_BROWSE_CO_OP",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_BROWSE_CO_OP ,
+ "GMO options MARK_BROWSE_CO_OP", HFILL }
+ },
+ { &hf_mq_gmo_options_MARK_BROWSE_HANDLE ,
+ {"MARK_BROWSE_HANDLE", "mq.gmo.options.MARK_BROWSE_HANDLE",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_BROWSE_HANDLE ,
+ "GMO options MARK_BROWSE_HANDLE", HFILL }
+ },
+ { &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE ,
+ {"ALL_SEGMENTS_AVAILABLE", "mq.gmo.options.ALL_SEGMENTS_AVAILABLE",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ALL_SEGMENTS_AVAILABLE ,
+ "GMO options ALL_SEGMENTS_AVAILABLE", HFILL }
+ },
+ { &hf_mq_gmo_options_ALL_MSGS_AVAILABLE ,
+ {"ALL_MSGS_AVAILABLE", "mq.gmo.options.ALL_MSGS_AVAILABLE",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ALL_MSGS_AVAILABLE ,
+ "GMO options ALL_MSGS_AVAILABLE", HFILL }
+ },
+ { &hf_mq_gmo_options_COMPLETE_MSG ,
+ {"COMPLETE_MSG", "mq.gmo.options.COMPLETE_MSG",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_COMPLETE_MSG ,
+ "GMO options COMPLETE_MSG", HFILL }
+ },
+ { &hf_mq_gmo_options_LOGICAL_ORDER ,
+ {"LOGICAL_ORDER", "mq.gmo.options.LOGICAL_ORDER",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_LOGICAL_ORDER ,
+ "GMO options LOGICAL_ORDER", HFILL }
+ },
+ { &hf_mq_gmo_options_CONVERT ,
+ {"CONVERT", "mq.gmo.options.CONVERT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_CONVERT ,
+ "GMO options CONVERT", HFILL }
+ },
+ { &hf_mq_gmo_options_FAIL_IF_QUIESCING ,
+ {"FAIL_IF_QUIESCING", "mq.gmo.options.FAIL_IF_QUIESCING",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_FAIL_IF_QUIESCING ,
+ "GMO options FAIL_IF_QUIESCING", HFILL }
+ },
+ { &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT ,
+ {"SYNCPOINT_IF_PERSISTENT", "mq.gmo.options.SYNCPOINT_IF_PERSISTENT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SYNCPOINT_IF_PERSISTENT ,
+ "GMO options SYNCPOINT_IF_PERSISTENT", HFILL }
+ },
+ { &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR ,
+ {"BROWSE_MSG_UNDER_CURSOR", "mq.gmo.options.BROWSE_MSG_UNDER_CURSOR",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_MSG_UNDER_CURSOR ,
+ "GMO options BROWSE_MSG_UNDER_CURSOR", HFILL }
+ },
+ { &hf_mq_gmo_options_UNLOCK ,
+ {"UNLOCK", "mq.gmo.options.UNLOCK",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNLOCK ,
+ "GMO options UNLOCK", HFILL }
+ },
+ { &hf_mq_gmo_options_LOCK ,
+ {"LOCK", "mq.gmo.options.LOCK",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_LOCK ,
+ "GMO options LOCK", HFILL }
+ },
+ { &hf_mq_gmo_options_MSG_UNDER_CURSOR ,
+ {"MSG_UNDER_CURSOR", "mq.gmo.options.MSG_UNDER_CURSOR",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MSG_UNDER_CURSOR ,
+ "GMO options MSG_UNDER_CURSOR", HFILL }
+ },
+ { &hf_mq_gmo_options_MARK_SKIP_BACKOUT ,
+ {"MARK_SKIP_BACKOUT", "mq.gmo.options.MARK_SKIP_BACKOUT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_SKIP_BACKOUT ,
+ "GMO options MARK_SKIP_BACKOUT", HFILL }
+ },
+ { &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG ,
+ {"ACCEPT_TRUNCATED_MSG", "mq.gmo.options.ACCEPT_TRUNCATED_MSG",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ACCEPT_TRUNCATED_MSG ,
+ "GMO options ACCEPT_TRUNCATED_MSG", HFILL }
+ },
+ { &hf_mq_gmo_options_BROWSE_NEXT ,
+ {"BROWSE_NEXT", "mq.gmo.options.BROWSE_NEXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_NEXT ,
+ "GMO options BROWSE_NEXT", HFILL }
+ },
+ { &hf_mq_gmo_options_BROWSE_FIRST ,
+ {"BROWSE_FIRST", "mq.gmo.options.BROWSE_FIRST",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_FIRST ,
+ "GMO options BROWSE_FIRST", HFILL }
+ },
+ { &hf_mq_gmo_options_SET_SIGNAL ,
+ {"SET_SIGNAL", "mq.gmo.options.SET_SIGNAL",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SET_SIGNAL ,
+ "GMO options SET_SIGNAL", HFILL }
+ },
+ { &hf_mq_gmo_options_NO_SYNCPOINT ,
+ {"NO_SYNCPOINT", "mq.gmo.options.NO_SYNCPOINT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_SYNCPOINT ,
+ "GMO options NO_SYNCPOINT", HFILL }
+ },
+ { &hf_mq_gmo_options_SYNCPOINT ,
+ {"SYNCPOINT", "mq.gmo.options.SYNCPOINT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SYNCPOINT ,
+ "GMO options SYNCPOINT", HFILL }
+ },
+ { &hf_mq_gmo_options_WAIT ,
+ {"WAIT", "mq.gmo.options.WAIT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_WAIT ,
+ "GMO options WAIT", HFILL }
+ },
+
+ { &hf_mq_gmo_waitinterval,
+ {"WaitIntv.", "mq.gmo.waitint",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "GMO wait interval", HFILL }
+ },
+ { &hf_mq_gmo_signal1 ,
+ {"Signal 1.", "mq.gmo.signal1",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "GMO signal 1", HFILL }
+ },
+ { &hf_mq_gmo_signal2 ,
+ {"Signal 2.", "mq.gmo.signal2",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "GMO signal 2", HFILL }
+ },
+ { &hf_mq_gmo_resolvqname ,
+ {"ResQName.", "mq.gmo.resolvq",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "GMO resolved queue name", HFILL }
+ },
+ { &hf_mq_gmo_matchoptions,
+ {"MatchOpt.", "mq.gmo.matchopt",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "GMO match options", HFILL }
+ },
+
+ { &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN ,
+ {"MATCH_MSG_TOKEN", "mq.gmo.matchoptions.MATCH_MSG_TOKEN",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_TOKEN ,
+ "GMO matchoptions MATCH_MSG_TOKEN", HFILL }
+ },
+ { &hf_mq_gmo_matchoptions_MATCH_OFFSET ,
+ {"MATCH_OFFSET", "mq.gmo.matchoptions.MATCH_OFFSET",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_OFFSET ,
+ "GMO matchoptions MATCH_OFFSET", HFILL }
+ },
+ { &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER,
+ {"MATCH_MSG_SEQ_NUMBER", "mq.gmo.matchoptions.MATCH_MSG_SEQ_NUMBER",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_SEQ_NUMBER,
+ "GMO matchoptions MATCH_MSG_SEQ_NUMBER", HFILL }
+ },
+ { &hf_mq_gmo_matchoptions_MATCH_GROUP_ID ,
+ {"MATCH_GROUP_ID", "mq.gmo.matchoptions.MATCH_GROUP_ID",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_GROUP_ID ,
+ "GMO matchoptions MATCH_GROUP_ID", HFILL }
+ },
+ { &hf_mq_gmo_matchoptions_MATCH_CORREL_ID ,
+ {"MATCH_CORREL_ID", "mq.gmo.matchoptions.MATCH_CORREL_ID",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_CORREL_ID ,
+ "GMO matchoptions MATCH_CORREL_ID", HFILL }
+ },
+ { &hf_mq_gmo_matchoptions_MATCH_MSG_ID ,
+ {"MATCH_MSG_ID", "mq.gmo.matchoptions.MATCH_MSG_ID",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_ID ,
+ "GMO matchoptions MATCH_MSG_ID", HFILL }
+ },
+
+ { &hf_mq_gmo_groupstatus ,
+ {"GrpStatus", "mq.gmo.grpstat",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "GMO group status", HFILL }
+ },
+ { &hf_mq_gmo_segmstatus ,
+ {"SegStatus", "mq.gmo.sgmtstat",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "GMO segment status", HFILL }
+ },
+ { &hf_mq_gmo_segmentation,
+ {"Segmentat", "mq.gmo.segmentation",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "GMO segmentation", HFILL }
+ },
+ { &hf_mq_gmo_reserved ,
+ {"Reserved.", "mq.gmo.reserved",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "GMO reserved", HFILL }
+ },
+ { &hf_mq_gmo_msgtoken ,
+ {"MsgToken.", "mq.gmo.msgtoken",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "GMO message token", HFILL }
+ },
+ { &hf_mq_gmo_returnedlen ,
+ {"RtnLength", "mq.gmo.retlen",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "GMO returned length", HFILL }
+ },
+
+ { &hf_mq_lpoo_StructID ,
+ {"StructID......", "mq.lpoo.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_lpoo_version ,
+ {"Version.......", "mq.lpoo.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "LPOO version", HFILL }
+ },
+ { &hf_mq_lpoo_options ,
+ {"Options.......", "mq.lpoo.options",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "LPOO options", HFILL }
+ },
+ { &hf_mq_lpoo_lpiopts ,
+ {"LpiOpts.......", "mq.lpoo.lpioopts",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "LPOO Lpi Options", HFILL }
+ },
+
+ { &hf_mq_lpoo_lpiopts_SAVE_USER_CTXT ,
+ {"SAVE_USER_CTXT", "mq.lpoo.opts.SAVE_USER_CTXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_LPOO_SAVE_USER_CTXT,
+ "LPOO options SAVE_USER_CTXT", HFILL }
+ },
+ { &hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT ,
+ {"SAVE_ORIGIN_CTXT", "mq.lpoo.opts.SAVE_ORIGIN_CTXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_LPOO_SAVE_ORIGIN_CTXT,
+ "LPOO options SAVE_ORIGIN_CTXT", HFILL }
+ },
+ { &hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT,
+ {"SAVE_IDENTITY_CTXT", "mq.lpoo.opts.SAVE_IDENTITY_CTXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_LPOO_SAVE_IDENTITY_CTXT,
+ "LPOO options SAVE_IDENTITY_CTXT", HFILL }
+ },
+
+ { &hf_mq_lpoo_defpersist ,
+ {"DefPersitence.", "mq.lpoo.defpersist",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "LPOO Default Persitence", HFILL }
+ },
+ { &hf_mq_lpoo_defputresptype,
+ {"DefPutRespType", "mq.lpoo.defputresptype",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "LPOO Default Put Response Type", HFILL }
+ },
+ { &hf_mq_lpoo_defreadahead ,
+ {"DefReadAHead..", "mq.lpoo.defreadahead",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "LPOO Default Read AHead", HFILL }
+ },
+
+ { &hf_mq_lpoo_qprotect ,
+ {"qprotect......", "mq.lpoo.qprotect",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "LPOO queue protection", HFILL }
+ },
+ { &hf_mq_lpoo_unknown6 ,
+ {"Unknown6......", "mq.lpoo.unknown6",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "LPOO unknown6", HFILL }
+ },
+ /*{ &hf_mq_lpoo_unknown7 ,
+ {"Unknown7......", "mq.lpoo.unknown7",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "LPOO unknown7", HFILL }
+ },*/
+ { &hf_mq_lpoo_xtradata ,
+ {"ExtraData.....", "mq.lpoo.extradata",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "LPOO Extra Data", HFILL }
+ },
+
+ { &hf_mq_pmo_StructID ,
+ {"StructID.", "mq.pmo.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mq_pmo_version ,
+ {"Version..", "mq.pmo.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMO version", HFILL }
+ },
+ { &hf_mq_pmo_options ,
+ {"Options..", "mq.pmo.options",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "PMO options", HFILL }
+ },
+ { &hf_mq_pmo_options_NOT_OWN_SUBS ,
+ {"NOT_OWN_SUBS", "mq.pmo.options.NOT_OWN_SUBS",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NOT_OWN_SUBS ,
+ "PMO options NOT_OWN_SUBS", HFILL }
+ },
+ { &hf_mq_pmo_options_SUPPRESS_REPLYTO ,
+ {"SUPPRESS_REPLYTO", "mq.pmo.options.SUPPRESS_REPLYTO",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SUPPRESS_REPLYTO ,
+ "PMO options SUPPRESS_REPLYTO", HFILL }
+ },
+ { &hf_mq_pmo_options_SCOPE_QMGR ,
+ {"SCOPE_QMGR", "mq.pmo.options.SCOPE_QMGR",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SCOPE_QMGR ,
+ "PMO options SCOPE_QMGR", HFILL }
+ },
+ { &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY ,
+ {"MD_FOR_OUTPUT_ONLY", "mq.pmo.options.MD_FOR_OUTPUT_ONLY",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_MD_FOR_OUTPUT_ONLY ,
+ "PMO options MD_FOR_OUTPUT_ONLY", HFILL }
+ },
+ { &hf_mq_pmo_options_RETAIN ,
+ {"RETAIN", "mq.pmo.options.RETAIN",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_RETAIN ,
+ "PMO options RETAIN", HFILL }
+ },
+ { &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED ,
+ {"WARN_IF_NO_SUBS_MATCHED", "mq.pmo.options.WARN_IF_NO_SUBS_MATCHED",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_WARN_IF_NO_SUBS_MATCHED ,
+ "PMO options WARN_IF_NO_SUBS_MATCHED", HFILL }
+ },
+ { &hf_mq_pmo_options_RESOLVE_LOCAL_Q ,
+ {"RESOLVE_LOCAL_Q", "mq.pmo.options.RESOLVE_LOCAL_Q",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_RESOLVE_LOCAL_Q ,
+ "PMO options RESOLVE_LOCAL_Q", HFILL }
+ },
+ { &hf_mq_pmo_options_SYNC_RESPONSE ,
+ {"SYNC_RESPONSE", "mq.pmo.options.SYNC_RESPONSE",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SYNC_RESPONSE ,
+ "PMO options SYNC_RESPONSE", HFILL }
+ },
+ { &hf_mq_pmo_options_ASYNC_RESPONSE ,
+ {"ASYNC_RESPONSE", "mq.pmo.options.ASYNC_RESPONSE",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_ASYNC_RESPONSE ,
+ "PMO options ASYNC_RESPONSE", HFILL }
+ },
+ { &hf_mq_pmo_options_LOGICAL_ORDER ,
+ {"LOGICAL_ORDER", "mq.pmo.options.LOGICAL_ORDER",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_LOGICAL_ORDER ,
+ "PMO options LOGICAL_ORDER", HFILL }
+ },
+ { &hf_mq_pmo_options_NO_CONTEXT ,
+ {"NO_CONTEXT", "mq.pmo.options.NO_CONTEXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NO_CONTEXT ,
+ "PMO options NO_CONTEXT", HFILL }
+ },
+ { &hf_mq_pmo_options_FAIL_IF_QUIESCING ,
+ {"FAIL_IF_QUIESCING", "mq.pmo.options.FAIL_IF_QUIESCING",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_FAIL_IF_QUIESCING ,
+ "PMO options FAIL_IF_QUIESCING", HFILL }
+ },
+ { &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY,
+ {"ALTERNATE_USER_AUTHORITY", "mq.pmo.options.ALTERNATE_USER_AUTHORITY",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_ALTERNATE_USER_AUTHORITY ,
+ "PMO options ALTERNATE_USER_AUTHORITY", HFILL }
+ },
+ { &hf_mq_pmo_options_SET_ALL_CONTEXT ,
+ {"SET_ALL_CONTEXT", "mq.pmo.options.SET_ALL_CONTEXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SET_ALL_CONTEXT ,
+ "PMO options SET_ALL_CONTEXT", HFILL }
+ },
+ { &hf_mq_pmo_options_SET_IDENTITY_CONTEXT ,
+ {"SET_IDENTITY_CONTEXT", "mq.pmo.options.SET_IDENTITY_CONTEXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SET_IDENTITY_CONTEXT ,
+ "PMO options SET_IDENTITY_CONTEXT", HFILL }
+ },
+ { &hf_mq_pmo_options_PASS_ALL_CONTEXT ,
+ {"PASS_ALL_CONTEXT", "mq.pmo.options.PASS_ALL_CONTEXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_PASS_ALL_CONTEXT ,
+ "PMO options PASS_ALL_CONTEXT", HFILL }
+ },
+ { &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT ,
+ {"PASS_IDENTITY_CONTEXT", "mq.pmo.options.PASS_IDENTITY_CONTEXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_PASS_IDENTITY_CONTEXT ,
+ "PMO options PASS_IDENTITY_CONTEXT", HFILL }
+ },
+ { &hf_mq_pmo_options_NEW_CORREL_ID ,
+ {"NEW_CORREL_ID", "mq.pmo.options.NEW_CORREL_ID",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NEW_CORREL_ID ,
+ "PMO options NEW_CORREL_ID", HFILL }
+ },
+ { &hf_mq_pmo_options_NEW_MSG_ID ,
+ {"NEW_MSG_ID", "mq.pmo.options.NEW_MSG_ID",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NEW_MSG_ID ,
+ "PMO options NEW_MSG_ID", HFILL }
+ },
+ { &hf_mq_pmo_options_DEFAULT_CONTEXT ,
+ {"DEFAULT_CONTEXT", "mq.pmo.options.DEFAULT_CONTEXT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_DEFAULT_CONTEXT ,
+ "PMO options DEFAULT_CONTEXT", HFILL }
+ },
+ { &hf_mq_pmo_options_NO_SYNCPOINT ,
+ {"NO_SYNCPOINT", "mq.pmo.options.NO_SYNCPOINT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NO_SYNCPOINT ,
+ "PMO options NO_SYNCPOINT", HFILL }
+ },
+ { &hf_mq_pmo_options_SYNCPOINT ,
+ {"SYNCPOINT", "mq.pmo.options.SYNCPOINT",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SYNCPOINT ,
+ "PMO options SYNCPOINT", HFILL }
+ },
+
+ { &hf_mq_pmo_timeout ,
+ {"Timeout..", "mq.pmo.timeout",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "PMO time out", HFILL }
+ },
+ { &hf_mq_pmo_context ,
+ {"Context..", "mq.pmo.context",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "PMO context", HFILL }
+ },
+ { &hf_mq_pmo_knowndstcnt ,
+ {"KnDstCnt.", "mq.pmo.kdstcount",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMO known destination count", HFILL }
+ },
+ { &hf_mq_pmo_unkndstcnt ,
+ {"UkDstCnt.", "mq.pmo.udestcount",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMO unknown destination count", HFILL }
+ },
+ { &hf_mq_pmo_invaldstcnt ,
+ {"InDstCnt.", "mq.pmo.idestcount",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMO invalid destination count", HFILL }
+ },
+ { &hf_mq_pmo_resolvqname ,
+ {"ResQName.", "mq.pmo.resolvq",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "PMO resolved queue name", HFILL }
+ },
+ { &hf_mq_pmo_resolvqmgr ,
+ {"ResQMgr..", "mq.pmo.resolvqmgr",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "PMO resolved queue manager name", HFILL }
+ },
+ { &hf_mq_pmo_recspresent ,
+ {"NumRecs..", "mq.pmo.nbrrec",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMO number of records", HFILL }
+ },
+ { &hf_mq_pmo_putmsgrecfld,
+ {"PMR Flag.", "mq.pmo.flagspmr",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "PMO flags PMR fields", HFILL }
+ },
+ { &hf_mq_pmo_putmsgrecofs,
+ {"Ofs1stPMR", "mq.pmo.offsetpmr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMO offset of first PMR", HFILL }
+ },
+ { &hf_mq_pmo_resprecofs ,
+ {"Off1stRR.", "mq.pmo.offsetrr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PMO offset of first RR", HFILL }
+ },
+ { &hf_mq_pmo_putmsgrecptr,
+ {"Adr1stPMR", "mq.pmo.addrrec",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "PMO address of first record", HFILL }
+ },
+ { &hf_mq_pmo_resprecptr ,
+ {"Adr1stRR.", "mq.pmo.addrres",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "PMO address of first response record", HFILL }
+ },
+
+ { &hf_mq_head_StructID ,
+ {"Structid", "mq.head.structid",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Header structid", HFILL }
+ },
+ { &hf_mq_head_version ,
+ {"version.", "mq.head.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Header version", HFILL }
+ },
+ { &hf_mq_head_length ,
+ {"Length..", "mq.head.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Header length", HFILL }
+ },
+ { &hf_mq_head_encoding ,
+ {"Encoding", "mq.head.encoding",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Header encoding", HFILL }
+ },
+ { &hf_mq_head_ccsid ,
+ {"CCSID...", "mq.head.ccsid",
+ FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0,
+ "Header character set", HFILL }
+ },
+ { &hf_mq_head_format ,
+ {"Format..", "mq.head.format",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Header format", HFILL }
+ },
+ { &hf_mq_head_flags ,
+ {"Flags...", "mq.head.flags",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Header flags", HFILL }
+ },
+ { &hf_mq_head_struct ,
+ {"Struct..", "mq.head.struct",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Header struct", HFILL }
+ },
+
+ { &hf_mq_xa_length ,
+ {"Length.......", "mq.xa.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "XA Length", HFILL }
+ },
+ { &hf_mq_xa_returnvalue ,
+ {"Return value.", "mq.xa.returnvalue",
+ FT_INT32, BASE_DEC, VALS(mq_xaer_vals), 0x0,
+ "XA Return Value", HFILL }
+ },
+ { &hf_mq_xa_tmflags ,
+ {"TransMgrFlags", "mq.xa.tmflags",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "XA Transaction Manager Flags", HFILL }
+ },
+ { &hf_mq_xa_rmid ,
+ {"ResourceMgrID", "mq.xa.rmid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "XA Resource Manager ID", HFILL }
+ },
+ { &hf_mq_xa_count ,
+ {"Number of Xid", "mq.xa.nbxid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "XA Number of Xid", HFILL }
+ },
+ { &hf_mq_xa_tmflags_join ,
+ {"JOIN", "mq.xa.tmflags.join",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMJOIN,
+ "XA TM Flags JOIN", HFILL }
+ },
+ { &hf_mq_xa_tmflags_endrscan ,
+ {"ENDRSCAN", "mq.xa.tmflags.endrscan",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMENDRSCAN,
+ "XA TM Flags ENDRSCAN", HFILL }
+ },
+ { &hf_mq_xa_tmflags_startrscan,
+ {"STARTRSCAN", "mq.xa.tmflags.startrscan",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSTARTRSCAN,
+ "XA TM Flags STARTRSCAN", HFILL }
+ },
+ { &hf_mq_xa_tmflags_suspend ,
+ {"SUSPEND", "mq.xa.tmflags.suspend",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSUSPEND,
+ "XA TM Flags SUSPEND", HFILL }
+ },
+ { &hf_mq_xa_tmflags_success ,
+ {"SUCCESS", "mq.xa.tmflags.success",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSUCCESS,
+ "XA TM Flags SUCCESS", HFILL }
+ },
+ { &hf_mq_xa_tmflags_resume ,
+ {"RESUME", "mq.xa.tmflags.resume",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMRESUME,
+ "XA TM Flags RESUME", HFILL }
+ },
+ { &hf_mq_xa_tmflags_fail ,
+ {"FAIL", "mq.xa.tmflags.fail",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMFAIL,
+ "XA TM Flags FAIL", HFILL }
+ },
+ { &hf_mq_xa_tmflags_onephase ,
+ {"ONEPHASE", "mq.xa.tmflags.onephase",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMONEPHASE,
+ "XA TM Flags ONEPHASE", HFILL }
+ },
+
+ { &hf_mq_xa_xid_formatid ,
+ {"Format ID....", "mq.xa.xid.formatid",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "XA Xid Format ID", HFILL }
+ },
+ { &hf_mq_xa_xid_glbxid_len,
+ {"GlbTransIDLen", "mq.xa.xid.gxidl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "XA Xid Global TransactionId Length", HFILL }
+ },
+ { &hf_mq_xa_xid_brq_length,
+ {"BranchQualLen", "mq.xa.xid.bql",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "XA Xid Branch Qualifier Length", HFILL }
+ },
+ { &hf_mq_xa_xid_globalxid ,
+ {"GlbTransactID", "mq.xa.xid.gxid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "XA Xid Global TransactionId", HFILL }
+ },
+ { &hf_mq_xa_xid_brq ,
+ {"BranchQualif.", "mq.xa.xid.bq",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "XA Xid Branch Qualifier", HFILL }
+ },
+ { &hf_mq_xa_xainfo_length ,
+ {"Length.......", "mq.xa.xainfo.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "XA XA_info Length", HFILL }
+ },
+ { &hf_mq_xa_xainfo_value ,
+ {"Value........", "mq.xa.xainfo.value",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "XA XA_info Value", HFILL }
+ },
+
+ { &hf_mq_charv_vsptr ,
+ {"VLStr Addr.", "mq.charv.vsptr",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "VS Address", HFILL }
+ },
+ { &hf_mq_charv_vsoffset ,
+ {"VLStr Offs.", "mq.charv.vsoffset",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "VS Offset", HFILL }
+ },
+ { &hf_mq_charv_vsbufsize ,
+ {"VLStr BufSz", "mq.charv.vsbufsize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "VS BufSize", HFILL }
+ },
+ { &hf_mq_charv_vslength ,
+ {"VLStr Len..", "mq.charv.vslength",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "VS Length", HFILL }
+ },
+ { &hf_mq_charv_vsccsid ,
+ {"VLStr Ccsid", "mq.charv.vsccsid",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "VS CCSID", HFILL }
+ },
+ { &hf_mq_charv_vsvalue ,
+ {"VLStr Value", "mq.charv.vsvalue",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "VS value", HFILL }
+ }
+
+ };
+ static gint *ett[] =
+ {
+ &ett_mq,
+ &ett_mq_tsh,
+ &ett_mq_tsh_tcf,
+ &ett_mq_tsh_tcf2,
+ &ett_mq_api,
+ &ett_mq_socket,
+ &ett_mq_msh,
+ &ett_mq_caut,
+ &ett_mq_xqh,
+ &ett_mq_id,
+ &ett_mq_id_icf1,
+ &ett_mq_id_icf2,
+ &ett_mq_id_icf3,
+ &ett_mq_id_ief1,
+ &ett_mq_id_ief2,
+ &ett_mq_uid,
+ &ett_mq_conn,
+ &ett_mq_msg,
+ &ett_mq_notif,
+ &ett_mq_inq,
+ &ett_mq_spi,
+ &ett_mq_spi_base,
+ &ett_mq_spi_options,
+ &ett_mq_put,
+ &ett_mq_open,
+ &ett_mq_open_option,
+ &ett_mq_close_option,
+ &ett_mq_ping,
+ &ett_mq_reset,
+ &ett_mq_status,
+ &ett_mq_od,
+ &ett_mq_od_objstr,
+ &ett_mq_od_selstr,
+ &ett_mq_od_resobjstr,
+ &ett_mq_or,
+ &ett_mq_rr,
+ &ett_mq_pmr,
+ &ett_mq_md,
+ &ett_mq_mde,
+ &ett_mq_dlh,
+ &ett_mq_dh,
+ &ett_mq_gmo,
+ &ett_mq_gmo_option,
+ &ett_mq_gmo_matchoption,
+ &ett_mq_pmo,
+ &ett_mq_pmo_option,
+ &ett_mq_fcno,
+ &ett_mq_fopa,
+ &ett_mq_lpoo,
+ &ett_mq_lpoo_options,
+ &ett_mq_lpoo_lpiopts,
+ &ett_mq_head,
+ &ett_mq_xa,
+ &ett_mq_xa_tmflags,
+ &ett_mq_xa_xid,
+ &ett_mq_xa_info,
+ &ett_mq_charv,
+ &ett_mq_reaasemb
+ };
+
+ module_t *mq_module;
+
+ proto_mq = proto_register_protocol("WebSphere MQ", "MQ", "mq");
+ proto_register_field_array(proto_mq, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ register_heur_dissector_list("mq", &mq_heur_subdissector_list);
+ register_init_routine(mq_init);
+
+ mq_module = prefs_register_protocol(proto_mq, NULL);
+ prefs_register_bool_preference(mq_module, "desegment",
+ "Reassemble MQ messages spanning multiple TCP segments",
+ "Whether the MQ dissector should reassemble messages spanning multiple TCP segments."
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &mq_desegment);
+ prefs_register_bool_preference(mq_module, "reassembly",
+ "Reassemble segmented MQ messages",
+ "Whether the MQ dissector should reassemble MQ messages spanning multiple TSH segments",
+ &mq_reassembly);
}
void proto_reg_handoff_mq(void)
{
- /* Unlike some protocol (HTTP, POP3, ...) that clearly map to a standard
- * class of applications (web browser, e-mail client, ...) and have a very well
- * known port number, the MQ applications are most often specific to a business application */
-
- mq_tcp_handle = new_create_dissector_handle(dissect_mq_tcp, proto_mq);
- mq_spx_handle = create_dissector_handle(dissect_mq_spx, proto_mq);
-
- dissector_add_handle("tcp.port", mq_tcp_handle);
- heur_dissector_add("tcp", dissect_mq_heur_tcp, proto_mq);
- heur_dissector_add("netbios", dissect_mq_heur_netbios, proto_mq);
- heur_dissector_add("http", dissect_mq_heur_http, proto_mq);
- dissector_add_uint("spx.socket", MQ_SOCKET_SPX, mq_spx_handle);
- data_handle = find_dissector("data");
- mqpcf_handle = find_dissector("mqpcf");
+ /* Unlike some protocol (HTTP, POP3, ...) that clearly map to a standard
+ * class of applications (web browser, e-mail client, ...) and have a very well
+ * known port number, the MQ applications are most often specific to a business application */
+
+ mq_tcp_handle = new_create_dissector_handle(dissect_mq_tcp, proto_mq);
+ mq_spx_handle = create_dissector_handle(dissect_mq_spx, proto_mq);
+
+ dissector_add_handle("tcp.port", mq_tcp_handle);
+ heur_dissector_add("tcp", dissect_mq_heur_tcp, proto_mq);
+ heur_dissector_add("netbios", dissect_mq_heur_netbios, proto_mq);
+ heur_dissector_add("http", dissect_mq_heur_http, proto_mq);
+ dissector_add_uint("spx.socket", MQ_SOCKET_SPX, mq_spx_handle);
+ data_handle = find_dissector("data");
+ mqpcf_handle = find_dissector("mqpcf");
}
+
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: t
+ * tab-width: 8
+ * indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=4 tabstop=4 noexpandtab:
- * :indentSize=4:tabSize=4:noTabs=false:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/