diff options
author | Michael Mann <mmann78@netscape.net> | 2013-10-20 12:11:55 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-10-20 12:11:55 +0000 |
commit | 94c3d2155039015f833bd91c051e5d07c1fe1bfe (patch) | |
tree | 8be4eefff91b2e815c18b64effae4d4e044d70e1 /epan/dissectors/packet-mq.c | |
parent | bad81b517fc829ae90a65bc19f445bdee0c3d2bf (diff) |
Enhancement of the packet-mq dissector (WMQ 7.1-7.5). Bug 9267 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9267)
From robionekenobi
From me: Pass data through dissectors instead of using pinfo->private_data
svn path=/trunk/; revision=52707
Diffstat (limited to 'epan/dissectors/packet-mq.c')
-rw-r--r-- | epan/dissectors/packet-mq.c | 1678 |
1 files changed, 968 insertions, 710 deletions
diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c index f5c0441798..6b25906938 100644 --- a/epan/dissectors/packet-mq.c +++ b/epan/dissectors/packet-mq.c @@ -78,25 +78,31 @@ #include <epan/dissectors/packet-dcerpc.h> #include <epan/expert.h> #include <epan/dissector_filters.h> +#include <epan/show_exception.h> #include <epan/prefs.h> #include <epan/wmem/wmem.h> +#include <epan/strutil.h> + #include "packet-tcp.h" #include "packet-mq.h" static int proto_mq = -1; -static int hf_mq_tsh_structid = -1; +static int hf_mq_tsh_StructID = -1; static int hf_mq_tsh_mqseglen = -1; static int hf_mq_tsh_convid = -1; static int hf_mq_tsh_requestid = -1; static int hf_mq_tsh_byteorder = -1; static int hf_mq_tsh_opcode = -1; static int hf_mq_tsh_ctlflgs1 = -1; + static int hf_mq_tsh_ctlflgs2 = -1; static int hf_mq_tsh_luwid = -1; static int hf_mq_tsh_encoding = -1; static int hf_mq_tsh_ccsid = -1; -static int hf_mq_tsh_padding = -1; +static int hf_mq_tsh_reserved = -1; + +/* Transmission Segment Control Flags 1 */ static int hf_mq_tsh_tcf_confirmreq = -1; static int hf_mq_tsh_tcf_error = -1; static int hf_mq_tsh_tcf_reqclose = -1; @@ -105,71 +111,174 @@ static int hf_mq_tsh_tcf_first = -1; static int hf_mq_tsh_tcf_last = -1; static int hf_mq_tsh_tcf_reqacc = -1; static int hf_mq_tsh_tcf_dlq = -1; +static gint *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 +}; + +/* Transmission Segment Control Flags 2 */ +static int hf_mq_tsh_tcf2_HdrComp = -1; +static int hf_mq_tsh_tcf2_MsgComp = -1; +static int hf_mq_tsh_tcf2_CSH = -1; +static int hf_mq_tsh_tcf2_CmitIntv = -1; +static gint *pf_flds_tcf2[] = +{ + &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; static int hf_mq_api_compcode = -1; static int hf_mq_api_reascode = -1; static int hf_mq_api_objecthdl = -1; -static int hf_mq_socket_unknown1 = -1; -static int hf_mq_socket_unknown2 = -1; -static int hf_mq_socket_unknown3 = -1; -static int hf_mq_socket_unknown4 = -1; -static int hf_mq_socket_unknown5 = -1; -static int hf_mq_msh_structid = -1; +static int hf_mq_socket_conversid = -1; +static int hf_mq_socket_requestid = -1; +static int hf_mq_socket_type = -1; +static int hf_mq_socket_parm1 = -1; +static int hf_mq_socket_parm2 = -1; +static int hf_mq_msh_StructID = -1; static int hf_mq_msh_seqnum = -1; static int hf_mq_msh_datalength = -1; static int hf_mq_msh_unknown1 = -1; static int hf_mq_msh_msglength = -1; -static int hf_mq_xqh_structid = -1; +static int hf_mq_xqh_StructID = -1; static int hf_mq_xqh_version = -1; static int hf_mq_xqh_remoteq = -1; static int hf_mq_xqh_remoteqmgr = -1; -static int hf_mq_id_structid = -1; -static int hf_mq_id_level = -1; -static int hf_mq_id_flags = -1; -static int hf_mq_id_unknown02 = -1; -static int hf_mq_id_ieflags = -1; -static int hf_mq_id_unknown04 = -1; + +static int hf_mq_id_StructID = -1; +static int hf_mq_id_FapLevel = -1; +static int hf_mq_id_icf1 = -1; +static int hf_mq_id_Eicf1 = -1; +static int hf_mq_id_ief1 = -1; +static int hf_mq_id_Reserved = -1; static int hf_mq_id_MaxMsgBatch = -1; static int hf_mq_id_MaxTrSize = -1; -static int hf_mq_id_maxmsgsize = -1; +static int hf_mq_id_MaxMsgSize = -1; static int hf_mq_id_SeqWrapVal = -1; static int hf_mq_id_channel = -1; -static int hf_mq_id_capflags = -1; +static int hf_mq_id_icf2 = -1; +static int hf_mq_id_Eicf2 = -1; static int hf_mq_id_ccsid = -1; static int hf_mq_id_qmgrname = -1; static int hf_mq_id_HBInterval = -1; -static int hf_mq_id_unknown06 = -1; -static int hf_mq_id_mqmvers = -1; +static int hf_mq_id_EFLLength = -1; +static int hf_mq_id_ief2 = -1; +static int hf_mq_id_Reserved1 = -1; +static int hf_mq_id_HdrCprsLst = -1; +static int hf_mq_id_MsgCprsLst = -1; +static int hf_mq_id_Reserved2 = -1; +static int hf_mq_id_SSLKeyRst = -1; +static int hf_mq_id_ConvBySkt = -1; +static int hf_mq_id_icf3 = -1; +static int hf_mq_id_Eicf3 = -1; +static int hf_mq_id_Reserved3 = -1; +static int hf_mq_id_ProcessId = -1; +static int hf_mq_id_ThreadId = -1; +static int hf_mq_id_TraceId = -1; +static int hf_mq_id_ProdId = -1; static int hf_mq_id_mqmid = -1; -static int hf_mq_id_unknown07 = -1; -static int hf_mq_id_unknown08 = -1; -static int hf_mq_id_unknown09 = -1; -static int hf_mq_id_unknown10 = -1; -static int hf_mq_id_unknown11 = -1; -static int hf_mq_id_unknown12 = -1; -static int hf_mq_id_unknown13 = -1; -static int hf_mq_id_unknown14 = -1; -static int hf_mq_id_unknown15 = -1; -static int hf_mq_id_unknown16 = -1; -static int hf_mq_id_unknown17 = -1; -static int hf_mq_id_unknown18 = -1; -static int hf_mq_id_unknown19 = -1; - -static int hf_mq_id_icf_msgseq = -1; -static int hf_mq_id_icf_convcap = -1; -static int hf_mq_id_icf_splitmsg = -1; -static int hf_mq_id_icf_mqreq = -1; -static int hf_mq_id_icf_svrsec = -1; -static int hf_mq_id_icf_runtime = -1; -static int hf_mq_id_ief_ccsid = -1; -static int hf_mq_id_ief_enc = -1; -static int hf_mq_id_ief_mxtrsz = -1; -static int hf_mq_id_ief_fap = -1; -static int hf_mq_id_ief_mxmsgsz = -1; -static int hf_mq_id_ief_mxmsgpb = -1; -static int hf_mq_id_ief_seqwrap = -1; -static int hf_mq_id_ief_hbint = -1; -static int hf_mq_uid_structid = -1; + +/* Initial Data Capability Flag 1 */ +static int hf_mq_id_icf1_msgseq = -1; +static int hf_mq_id_icf1_convcap = -1; +static int hf_mq_id_icf1_splitmsg = -1; +static int hf_mq_id_icf1_RqstInit = -1; +static int hf_mq_id_icf1_RqstSecu = -1; +static int hf_mq_id_icf1_mqreq = -1; +static int hf_mq_id_icf1_svrsec = -1; +static int hf_mq_id_icf1_runtime = -1; +static gint *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 +}; + +/* Initial Data Error Flag 1 */ +static int hf_mq_id_ief1_ccsid = -1; +static int hf_mq_id_ief1_enc = -1; +static int hf_mq_id_ief1_mxtrsz = -1; +static int hf_mq_id_ief1_fap = -1; +static int hf_mq_id_ief1_mxmsgsz = -1; +static int hf_mq_id_ief1_mxmsgpb = -1; +static int hf_mq_id_ief1_seqwrap = -1; +static int hf_mq_id_ief1_hbint = -1; +static gint *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 +}; + +/* Initial Data Capability Flag 2 */ +static int hf_mq_id_icf2_CanDstLst = -1; +static int hf_mq_id_icf2_FstMsgReq = -1; +static int hf_mq_id_icf2_RespConv = -1; +static int hf_mq_id_icf2_XARequest = -1; +static int hf_mq_id_icf2_XARunTApp = -1; +static int hf_mq_id_icf2_SPIRqst = -1; +static int hf_mq_id_icf2_DualUOW = -1; +static int hf_mq_id_icf2_CanTrcRte = -1; +static gint *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 +}; + +/* Initial Data Error Flag 2 */ +static int hf_mq_id_ief2_HdrCmpLst = -1; +static int hf_mq_id_ief2_MsgCmpLst = -1; +static int hf_mq_id_ief2_SSLReset = -1; +static gint *pf_flds_ief2[] = +{ + &hf_mq_id_ief2_HdrCmpLst, + &hf_mq_id_ief2_MsgCmpLst, + &hf_mq_id_ief2_SSLReset , + NULL +}; + +/* Initial Data Capability Flag 3 */ +static int hf_mq_id_icf3_CanMsgPrp = -1; +static int hf_mq_id_icf3_Unknown02 = -1; +static gint *pf_flds_icf3[] = +{ + &hf_mq_id_icf3_Unknown02, + &hf_mq_id_icf3_CanMsgPrp, + NULL +}; + +static int hf_mq_uid_StructID = -1; static int hf_mq_uid_userid = -1; static int hf_mq_uid_password = -1; static int hf_mq_uid_longuserid = -1; @@ -183,7 +292,7 @@ static int hf_mq_conn_apptype = -1; static int hf_mq_conn_acttoken = -1; static int hf_mq_conn_version = -1; static int hf_mq_conn_options = -1; -static int hf_mq_fcno_structid = -1; +static int hf_mq_fcno_StructID = -1; static int hf_mq_fcno_msgid = -1; static int hf_mq_fcno_mqmid = -1; static int hf_mq_fcno_unknown00 = -1; @@ -196,10 +305,11 @@ static int hf_mq_inq_charlen = -1; static int hf_mq_inq_sel = -1; static int hf_mq_inq_intvalue = -1; static int hf_mq_inq_charvalues = -1; + static int hf_mq_spi_verb = -1; static int hf_mq_spi_version = -1; static int hf_mq_spi_length = -1; -static int hf_mq_spi_base_structid = -1; +static int hf_mq_spi_base_StructID = -1; static int hf_mq_spi_base_version = -1; static int hf_mq_spi_base_length = -1; static int hf_mq_spi_spqo_nbverb = -1; @@ -217,9 +327,18 @@ static int hf_mq_spi_spgi_batchint = -1; static int hf_mq_spi_spgi_maxmsgsz = -1; static int hf_mq_spi_spgo_options = -1; static int hf_mq_spi_spgo_size = -1; + static int hf_mq_spi_opt_blank = -1; static int hf_mq_spi_opt_syncp = -1; static int hf_mq_spi_opt_deferred = -1; +static gint *pf_flds_spiopt[] = +{ + &hf_mq_spi_opt_deferred, + &hf_mq_spi_opt_syncp, + &hf_mq_spi_opt_blank, + NULL +}; + static int hf_mq_put_length = -1; static int hf_mq_close_options = -1; @@ -228,22 +347,31 @@ static int hf_mq_close_options_DELETE_PURGE = -1; static int hf_mq_close_options_KEEP_SUB = -1; static int hf_mq_close_options_REMOVE_SUB = -1; static int hf_mq_close_options_QUIESCE = -1; +static gint *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 +}; static int hf_mq_open_options = -1; static int hf_mq_open_options_INPUT_SHARED = -1; -static int hf_mq_open_options_INPUT_AS_Q_DEF = -1; +static int hf_mq_open_options_INPUT_AS_Q_DEF = -1; static int hf_mq_open_options_INPUT_EXCLUSIVE = -1; static int hf_mq_open_options_BROWSE = -1; static int hf_mq_open_options_OUTPUT = -1; static int hf_mq_open_options_INQUIRE = -1; static int hf_mq_open_options_SET = -1; -static int hf_mq_open_options_SAVE_ALL_CTX = -1; -static int hf_mq_open_options_PASS_IDENT_CTX = -1; -static int hf_mq_open_options_PASS_ALL_CTX = -1; -static int hf_mq_open_options_SET_IDENT_CTX = -1; +static int hf_mq_open_options_SAVE_ALL_CTX = -1; +static int hf_mq_open_options_PASS_IDENT_CTX = -1; +static int hf_mq_open_options_PASS_ALL_CTX = -1; +static int hf_mq_open_options_SET_IDENT_CTX = -1; static int hf_mq_open_options_SET_ALL_CONTEXT = -1; -static int hf_mq_open_options_ALT_USER_AUTH= -1; -static int hf_mq_open_options_FAIL_IF_QUIESC = -1; +static int hf_mq_open_options_ALT_USER_AUTH = -1; +static int hf_mq_open_options_FAIL_IF_QUIESC = -1; static int hf_mq_open_options_BIND_ON_OPEN = -1; static int hf_mq_open_options_BIND_NOT_FIXED = -1; static int hf_mq_open_options_RESOLVE_NAMES = -1; @@ -253,8 +381,35 @@ static int hf_mq_open_options_NO_READ_AHEAD = -1; static int hf_mq_open_options_READ_AHEAD = -1; static int hf_mq_open_options_NO_MULTICAST = -1; static int hf_mq_open_options_BIND_ON_GROUP = -1; +static gint *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 +}; -static int hf_mq_fopa_structid = -1; +static int hf_mq_fopa_StructID = -1; static int hf_mq_fopa_version = -1; static int hf_mq_fopa_length = -1; static int hf_mq_fopa_unknown1 = -1; @@ -272,16 +427,16 @@ static int hf_mq_status_length = -1; static int hf_mq_status_code = -1; static int hf_mq_status_value = -1; -static int hf_mq_caut_structid = -1; -static int hf_mq_caut_unknown1 = -1; -static int hf_mq_caut_userlen1 = -1; -static int hf_mq_caut_pswdlen1 = -1; -static int hf_mq_caut_userlen2 = -1; -static int hf_mq_caut_pswdlen2 = -1; +static int hf_mq_caut_StructID = -1; +static int hf_mq_caut_AuthType = -1; +static int hf_mq_caut_UsrMaxLen = -1; +static int hf_mq_caut_PwdMaxLen = -1; +static int hf_mq_caut_UsrLength = -1; +static int hf_mq_caut_PwdLength = -1; static int hf_mq_caut_usr = -1; static int hf_mq_caut_psw = -1; -static int hf_mq_od_structid = -1; +static int hf_mq_od_StructID = -1; static int hf_mq_od_version = -1; static int hf_mq_od_objecttype = -1; static int hf_mq_od_objectname = -1; @@ -299,7 +454,6 @@ static int hf_mq_od_resprecptr = -1; static int hf_mq_od_altsecurid = -1; static int hf_mq_od_resolvqname = -1; static int hf_mq_od_resolvqmgrnm = -1; - static int hf_mq_od_resolvobjtyp = -1; static int hf_mq_or_objname= -1; @@ -311,7 +465,7 @@ static int hf_mq_pmr_correlid = -1; static int hf_mq_pmr_groupid = -1; static int hf_mq_pmr_feedback = -1; static int hf_mq_pmr_acttoken = -1; -static int hf_mq_md_structid = -1; +static int hf_mq_md_StructID = -1; static int hf_mq_md_version = -1; static int hf_mq_md_report = -1; static int hf_mq_md_msgtype = -1; @@ -340,8 +494,7 @@ static int hf_mq_md_msgseqnumber = -1; static int hf_mq_md_offset = -1; static int hf_mq_md_msgflags = -1; static int hf_mq_md_origlen = -1; -/* static int hf_mq_md_lastformat = -1; */ -static int hf_mq_dlh_structid = -1; +static int hf_mq_dlh_StructID = -1; static int hf_mq_dlh_version = -1; static int hf_mq_dlh_reason = -1; static int hf_mq_dlh_destq = -1; @@ -357,9 +510,21 @@ static int hf_mq_dh_putmsgrecfld = -1; static int hf_mq_dh_recspresent = -1; static int hf_mq_dh_objrecofs = -1; static int hf_mq_dh_putmsgrecofs = -1; -static int hf_mq_gmo_structid = -1; +static int hf_mq_gmo_StructID = -1; static int hf_mq_gmo_version = -1; static int hf_mq_gmo_options = -1; +static int hf_mq_gmo_waitinterval = -1; +static int hf_mq_gmo_signal1 = -1; +static int hf_mq_gmo_signal2 = -1; +static int hf_mq_gmo_resolvqname = -1; +static int hf_mq_gmo_matchoptions = -1; +static int hf_mq_gmo_groupstatus = -1; +static int hf_mq_gmo_segmstatus = -1; +static int hf_mq_gmo_segmentation = -1; +static int hf_mq_gmo_reserved = -1; +static int hf_mq_gmo_msgtoken = -1; +static int hf_mq_gmo_returnedlen = -1; + static int hf_mq_gmo_options_PROPERTIES_COMPATIBILITY= -1; static int hf_mq_gmo_options_PROPERTIES_IN_HANDLE = -1; static int hf_mq_gmo_options_NO_PROPERTIES = -1; @@ -388,25 +553,57 @@ static int hf_mq_gmo_options_SET_SIGNAL = -1; static int hf_mq_gmo_options_NO_SYNCPOINT = -1; static int hf_mq_gmo_options_SYNCPOINT = -1; static int hf_mq_gmo_options_WAIT = -1; -static int hf_mq_gmo_waitinterval = -1; -static int hf_mq_gmo_signal1 = -1; -static int hf_mq_gmo_signal2 = -1; -static int hf_mq_gmo_resolvqname = -1; -static int hf_mq_gmo_matchoptions = -1; +static gint *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 +}; + static int hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN = -1; static int hf_mq_gmo_matchoptions_MATCH_OFFSET = -1; static int hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER= -1; static int hf_mq_gmo_matchoptions_MATCH_GROUP_ID = -1; static int hf_mq_gmo_matchoptions_MATCH_CORREL_ID = -1; static int hf_mq_gmo_matchoptions_MATCH_MSG_ID = -1; -static int hf_mq_gmo_groupstatus = -1; -static int hf_mq_gmo_segmstatus = -1; -static int hf_mq_gmo_segmentation = -1; -static int hf_mq_gmo_reserved = -1; -static int hf_mq_gmo_msgtoken = -1; -static int hf_mq_gmo_returnedlen = -1; +static gint *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 +}; -static int hf_mq_lpoo_structid = -1; +static int hf_mq_lpoo_StructID = -1; static int hf_mq_lpoo_version = -1; static int hf_mq_lpoo_unknown1 = -1; static int hf_mq_lpoo_unknown2 = -1; @@ -424,31 +621,9 @@ static int hf_mq_charv_vslength = -1; static int hf_mq_charv_vsccsid = -1; static int hf_mq_charv_vsvalue = -1; -static int hf_mq_pmo_structid = -1; +static int hf_mq_pmo_StructID = -1; static int hf_mq_pmo_version = -1; static int hf_mq_pmo_options = -1; -static int hf_mq_pmo_options_NOT_OWN_SUBS = -1; -static int hf_mq_pmo_options_SUPPRESS_REPLYTO = -1; -static int hf_mq_pmo_options_SCOPE_QMGR = -1; -static int hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY = -1; -static int hf_mq_pmo_options_RETAIN = -1; -static int hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED = -1; -static int hf_mq_pmo_options_RESOLVE_LOCAL_Q = -1; -static int hf_mq_pmo_options_SYNC_RESPONSE = -1; -static int hf_mq_pmo_options_ASYNC_RESPONSE = -1; -static int hf_mq_pmo_options_LOGICAL_ORDER = -1; -static int hf_mq_pmo_options_NO_CONTEXT = -1; -static int hf_mq_pmo_options_FAIL_IF_QUIESCING = -1; -static int hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY= -1; -static int hf_mq_pmo_options_SET_ALL_CONTEXT = -1; -static int hf_mq_pmo_options_SET_IDENTITY_CONTEXT = -1; -static int hf_mq_pmo_options_PASS_ALL_CONTEXT = -1; -static int hf_mq_pmo_options_PASS_IDENTITY_CONTEXT = -1; -static int hf_mq_pmo_options_NEW_CORREL_ID = -1; -static int hf_mq_pmo_options_NEW_MSG_ID = -1; -static int hf_mq_pmo_options_DEFAULT_CONTEXT = -1; -static int hf_mq_pmo_options_NO_SYNCPOINT = -1; -static int hf_mq_pmo_options_SYNCPOINT = -1; static int hf_mq_pmo_timeout = -1; static int hf_mq_pmo_context = -1; static int hf_mq_pmo_knowndstcnt = -1; @@ -462,7 +637,7 @@ static int hf_mq_pmo_putmsgrecofs = -1; static int hf_mq_pmo_resprecofs = -1; static int hf_mq_pmo_putmsgrecptr = -1; static int hf_mq_pmo_resprecptr = -1; -static int hf_mq_head_structid = -1; +static int hf_mq_head_StructID = -1; static int hf_mq_head_version = -1; static int hf_mq_head_length = -1; static int hf_mq_head_encoding = -1; @@ -475,6 +650,63 @@ static int hf_mq_xa_returnvalue = -1; static int hf_mq_xa_tmflags = -1; static int hf_mq_xa_rmid = -1; static int hf_mq_xa_count = -1; +static int hf_mq_xa_xid_formatid = -1; +static int hf_mq_xa_xid_glbxid_len = -1; +static int hf_mq_xa_xid_brq_length = -1; +static int hf_mq_xa_xid_globalxid = -1; +static int hf_mq_xa_xid_brq = -1; +static int hf_mq_xa_xainfo_length = -1; +static int hf_mq_xa_xainfo_value = -1; + +static int hf_mq_pmo_options_NOT_OWN_SUBS = -1; +static int hf_mq_pmo_options_SUPPRESS_REPLYTO = -1; +static int hf_mq_pmo_options_SCOPE_QMGR = -1; +static int hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY = -1; +static int hf_mq_pmo_options_RETAIN = -1; +static int hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED = -1; +static int hf_mq_pmo_options_RESOLVE_LOCAL_Q = -1; +static int hf_mq_pmo_options_SYNC_RESPONSE = -1; +static int hf_mq_pmo_options_ASYNC_RESPONSE = -1; +static int hf_mq_pmo_options_LOGICAL_ORDER = -1; +static int hf_mq_pmo_options_NO_CONTEXT = -1; +static int hf_mq_pmo_options_FAIL_IF_QUIESCING = -1; +static int hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY= -1; +static int hf_mq_pmo_options_SET_ALL_CONTEXT = -1; +static int hf_mq_pmo_options_SET_IDENTITY_CONTEXT = -1; +static int hf_mq_pmo_options_PASS_ALL_CONTEXT = -1; +static int hf_mq_pmo_options_PASS_IDENTITY_CONTEXT = -1; +static int hf_mq_pmo_options_NEW_CORREL_ID = -1; +static int hf_mq_pmo_options_NEW_MSG_ID = -1; +static int hf_mq_pmo_options_DEFAULT_CONTEXT = -1; +static int hf_mq_pmo_options_NO_SYNCPOINT = -1; +static int hf_mq_pmo_options_SYNCPOINT = -1; +static gint *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 +}; + static int hf_mq_xa_tmflags_join = -1; static int hf_mq_xa_tmflags_endrscan = -1; static int hf_mq_xa_tmflags_startrscan = -1; @@ -483,69 +715,75 @@ static int hf_mq_xa_tmflags_success = -1; static int hf_mq_xa_tmflags_resume = -1; static int hf_mq_xa_tmflags_fail = -1; static int hf_mq_xa_tmflags_onephase = -1; -static int hf_mq_xa_xid_formatid = -1; -static int hf_mq_xa_xid_glbxid_len = -1; -static int hf_mq_xa_xid_brq_length = -1; -static int hf_mq_xa_xid_globalxid = -1; -static int hf_mq_xa_xid_brq = -1; -static int hf_mq_xa_xainfo_length = -1; -static int hf_mq_xa_xainfo_value = -1; +static gint *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 +}; static int hf_mq_msgreq_version = -1; static int hf_mq_msgreq_handle = -1; -static int hf_mq_msgreq_unknown1 = -1; -static int hf_mq_msgreq_unknown2 = -1; -static int hf_mq_msgreq_maxlen = -1; -static int hf_mq_msgreq_unknown4 = -1; -static int hf_mq_msgreq_timeout = -1; -static int hf_mq_msgreq_unknown5 = -1; -static int hf_mq_msgreq_flags = -1; -static int hf_mq_msgreq_lstseqnr = -1; -static int hf_mq_msgreq_msegver = -1; -static int hf_mq_msgreq_msegseq = -1; +static int hf_mq_msgreq_RecvBytes = -1; +static int hf_mq_msgreq_RqstBytes = -1; +static int hf_mq_msgreq_MaxMsgLen = -1; +static int hf_mq_msgreq_WaitIntrv = -1; +static int hf_mq_msgreq_QueStatus = -1; +static int hf_mq_msgreq_RqstFlags = -1; +static int hf_mq_msgreq_GlbMsgIdx = -1; +static int hf_mq_msgreq_SelectIdx = -1; +static int hf_mq_msgreq_MQMDVers = -1; static int hf_mq_msgreq_ccsid = -1; static int hf_mq_msgreq_encoding = -1; -static int hf_mq_msgreq_unknown6 = -1; -static int hf_mq_msgreq_unknown7 = -1; -static int hf_mq_msgreq_xfldflag = -1; -static int hf_mq_msgreq_msgid = -1; -static int hf_mq_msgreq_mqmid = -1; +static int hf_mq_msgreq_MsgSeqNum = -1; +static int hf_mq_msgreq_offset = -1; +static int hf_mq_msgreq_mtchMsgId = -1; +static int hf_mq_msgreq_mtchCorId = -1; +static int hf_mq_msgreq_mtchGrpid = -1; +static int hf_mq_msgreq_mtchMsgTk = -1; static int hf_mq_msgasy_version = -1; static int hf_mq_msgasy_handle = -1; -static int hf_mq_msgasy_unknown1 = -1; -static int hf_mq_msgasy_curseqnr = -1; -static int hf_mq_msgasy_payload = -1; -static int hf_mq_msgasy_msegseq = -1; -static int hf_mq_msgasy_msegver = -1; -static int hf_mq_msgasy_flags = -1; -static int hf_mq_msgasy_totlen1 = -1; -static int hf_mq_msgasy_totlen2 = -1; -static int hf_mq_msgasy_unknown2 = -1; -static int hf_mq_msgasy_unknown3 = -1; -static int hf_mq_msgasy_unknown4 = -1; -static int hf_mq_msgasy_unknown5 = -1; -static int hf_mq_msgasy_strFlg = -1; -static int hf_mq_msgasy_strLen = -1; -static int hf_mq_msgasy_strVal = -1; -static int hf_mq_msgasy_strPad = -1; - -static int hf_mq_notif_vers = -1; +static int hf_mq_msgasy_MsgIndex = -1; +static int hf_mq_msgasy_GlbMsgIdx = -1; +static int hf_mq_msgasy_SegLength = -1; +static int hf_mq_msgasy_SeleIndex = -1; +static int hf_mq_msgasy_SegmIndex = -1; +static int hf_mq_msgasy_ReasonCod = -1; +static int hf_mq_msgasy_ActMsgLen = -1; +static int hf_mq_msgasy_TotMsgLen = -1; +static int hf_mq_msgasy_MsgToken = -1; +static int hf_mq_msgasy_Status = -1; +static int hf_mq_msgasy_resolQNLn = -1; +static int hf_mq_msgasy_resolQNme = -1; +static int hf_mq_msgasy_padding = -1; + +static int hf_mq_notif_vers = -1; static int hf_mq_notif_handle = -1; -static int hf_mq_notif_code = -1; -static int hf_mq_notif_mqrc = -1; +static int hf_mq_notif_code = -1; +static int hf_mq_notif_value = -1; static gint ett_mq = -1; static gint ett_mq_tsh = -1; static gint ett_mq_tsh_tcf = -1; +static gint ett_mq_tsh_tcf2 = -1; static gint ett_mq_api = -1; static gint ett_mq_socket = -1; static gint ett_mq_caut = -1; static gint ett_mq_msh = -1; static gint ett_mq_xqh = -1; static gint ett_mq_id = -1; -static gint ett_mq_id_icf = -1; -static gint ett_mq_id_ief = -1; +static gint ett_mq_id_icf1 = -1; +static gint ett_mq_id_icf2 = -1; +static gint ett_mq_id_icf3 = -1; +static gint ett_mq_id_ief1 = -1; +static gint ett_mq_id_ief2 = -1; static gint ett_mq_uid = -1; static gint ett_mq_conn = -1; static gint ett_mq_fcno = -1; @@ -663,8 +901,8 @@ static reassembly_table mq_reassembly_table; #define MQ_STRUCTID_CAUT_EBCDIC 0xC3C1E4E3 #define MQ_STRUCTID_TSH_EBCDIC 0xE3E2C840 -#define MQ_STRUCTID_TSHC_EBCDIC 0xE3E2C84D -#define MQ_STRUCTID_TSHM_EBCDIC 0xE3E2C8C3 +#define MQ_STRUCTID_TSHC_EBCDIC 0xE3E2C8C3 +#define MQ_STRUCTID_TSHM_EBCDIC 0xE3E2C8D4 #define MQ_STRUCTID_TSHx_EBCDIC 0xE3E2C800 #define MQ_STRUCTID_UID_EBCDIC 0xE4C9C440 @@ -809,21 +1047,44 @@ static reassembly_table mq_reassembly_table; #define MQ_TCF_REQUEST_ACCEPTED 0x40 #define MQ_TCF_DLQ_USED 0x80 -#define MQ_ICF_MSG_SEQ 0x01 -#define MQ_ICF_CONVERSION_CAPABLE 0x02 -#define MQ_ICF_SPLIT_MESSAGE 0x04 -#define MQ_ICF_MQREQUEST 0x20 -#define MQ_ICF_SVRCONN_SECURITY 0x40 -#define MQ_ICF_RUNTIME 0x80 - -#define MQ_IEF_CCSID 0x01 -#define MQ_IEF_ENCODING 0x02 -#define MQ_IEF_MAX_TRANSMISSION_SIZE 0x04 -#define MQ_IEF_FAP_LEVEL 0x08 -#define MQ_IEF_MAX_MSG_SIZE 0x10 -#define MQ_IEF_MAX_MSG_PER_BATCH 0x20 -#define MQ_IEF_SEQ_WRAP_VALUE 0x40 -#define MQ_IEF_HEARTBEAT_INTERVAL 0x80 +#define MQ_TCF2_HDRCOMP 0x01 +#define MQ_TCF2_MSGCOMP 0x02 +#define MQ_TCF2_CSH 0x04 +#define MQ_TCF2_CMIT_INTERVAL 0x08 + +#define MQ_ICF1_MSG_SEQ 0x01 +#define MQ_ICF1_CONVERSION_CAPABLE 0x02 +#define MQ_ICF1_SPLIT_MESSAGE 0x04 +#define MQ_ICF1_REQUEST_INITIATION 0x08 +#define MQ_ICF1_REQUEST_SECURITY 0x10 +#define MQ_ICF1_MQREQUEST 0x20 +#define MQ_ICF1_SVRCONN_SECURITY 0x40 +#define MQ_ICF1_RUNTIME 0x80 + +#define MQ_ICF2_DIST_LIST_CAPABLE 0x01 +#define MQ_ICF2_FAST_MESSAGES_REQUIRED 0x02 +#define MQ_ICF2_RESPONDER_CONVERSION 0x04 +#define MQ_ICF2_DUAL_UOW 0x08 +#define MQ_ICF2_XAREQUEST 0x10 +#define MQ_ICF2_XARUNTIME_APP 0x20 +#define MQ_ICF2_SPIREQUEST 0x40 +#define MQ_ICF2_TRACE_ROUTE_CAPABLE 0x80 + +#define MQ_ICF3_MSG_PROP_CAPABLE 0x01 +#define MQ_ICF3_UNKNOWNX02 0x02 + +#define MQ_IEF1_CCSID 0x01 +#define MQ_IEF1_ENCODING 0x02 +#define MQ_IEF1_MAX_TRANSMISSION_SIZE 0x04 +#define MQ_IEF1_FAP_LEVEL 0x08 +#define MQ_IEF1_MAX_MSG_SIZE 0x10 +#define MQ_IEF1_MAX_MSG_PER_BATCH 0x20 +#define MQ_IEF1_SEQ_WRAP_VALUE 0x40 +#define MQ_IEF1_HEARTBEAT_INTERVAL 0x80 + +#define MQ_IEF2_HDRCOMPLIST 0x01 +#define MQ_IEF2_MSGCOMPLIST 0x02 +#define MQ_IEF2_SSL_RESET 0x04 #define MQ_BIG_ENDIAN 0x01 #define MQ_LITTLE_ENDIAN 0x02 @@ -864,6 +1125,11 @@ static reassembly_table mq_reassembly_table; #define MQ_STATUS_ERR_SOCKET_ACTION_TYPE 0x1F #define MQ_STATUS_ERR_STANDBY_Q_MGR 0x20 +#define MQ_STATUS_ERR_CCSID_NOT_SUPPORTED 0xF0 +#define MQ_STATUS_ERR_ENCODING_INVALID 0xF1 +#define MQ_STATUS_ERR_FAP_LEVEL 0xF2 +#define MQ_STATUS_ERR_NEGOTIATION_FAILED 0xF3 + /* These errors codes are documented in javax.transaction.xa.XAException */ #define MQ_XA_RBROLLBACK 100 #define MQ_XA_RBCOMMFAIL 101 @@ -985,14 +1251,40 @@ static reassembly_table mq_reassembly_table; #define MQ_NOTIF_FAILED 14 /* 0x0e */ #define MQ_NOTIF_NODATA 11 /* 0x0b */ -/* Msg Request Extended Field present */ -#define MQ_MSGREQ_MSGID_PRESENT 0x00000001 -#define MQ_MSGREQ_MQMID_PRESENT 0x00000002 +#define MQ_NC_GET_INHIBITED 1 +#define MQ_NC_GET_ALLOWED 2 +#define MQ_NC_CONN_STATE 3 +#define MQ_NC_CONN_STATE_REPLY 4 +#define MQ_NC_Q_STATE 5 +#define MQ_NC_Q_STATE_REPLY 6 +#define MQ_NC_QM_QUIESCING 7 +#define MQ_NC_TXN_ALLOWED 8 +#define MQ_NC_TXN_REVOKE 9 +#define MQ_NC_TXN_REVOKE_REPLY 10 +#define MQ_NC_CHECK_MSG 11 +#define MQ_NC_BROWSE_FIRST 12 +#define MQ_NC_MESSAGE_TOO_LARGE 13 +#define MQ_NC_STREAMING_FAILURE 14 +#define MQ_NC_CLIENT_ASYNC_EMPTY 15 +#define MQ_NC_STREAMING_TXN_PAUSED 16 +#define MQ_NC_RECONNECTION_COMPLETE 17 DEF_VALSB(notifcode) - DEF_VALS2(NOTIF_COMPLETED, "Completed"), - DEF_VALS2(NOTIF_FAILED, "Failed"), - DEF_VALS2(NOTIF_NODATA, "No Data"), + 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) @@ -1107,6 +1399,11 @@ DEF_VALSB(status) 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) @@ -1136,7 +1433,7 @@ DEF_VALSB(xaer) DEF_VALS2(XAER_OUTSIDE, "XAER_OUTSIDE"), DEF_VALSE; -DEF_VALSB(structid) +DEF_VALSB(StructID) DEF_VALS2(STRUCTID_CIH, MQ_TEXT_CIH), DEF_VALS2(STRUCTID_DH, MQ_TEXT_DH), DEF_VALS2(STRUCTID_DLH, MQ_TEXT_DLH), @@ -1232,7 +1529,8 @@ DEF_VALSB(sidtype) DEF_VALS1(MQSIDT_WAS_SECURITY_ID), DEF_VALSE; -struct mq_msg_properties { +struct mq_msg_properties +{ gint iOffsetEncoding; /* Message encoding */ gint iOffsetCcsid; /* Message character set */ gint iOffsetFormat; /* Message format */ @@ -1240,186 +1538,104 @@ struct mq_msg_properties { static gint dissect_mq_MQMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset,gint ett_subtree, mq_parm_t *p_mq_parm) { - - proto_item *ti = NULL; - proto_tree *mq_tree_sub = NULL; guint uMoOpt; - 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); 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_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN , tvb, offset, 4, uMoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_OFFSET , tvb, offset, 4, uMoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER, tvb, offset, 4, uMoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_GROUP_ID , tvb, offset, 4, uMoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_CORREL_ID , tvb, offset, 4, uMoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_MSG_ID , tvb, offset, 4, uMoOpt); + 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_MQGMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset,gint ett_subtree, mq_parm_t *p_mq_parm) { - - proto_item *ti = NULL; - proto_tree *mq_tree_sub = NULL; guint uGmoOpt; - 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); uGmoOpt= tvb_get_guint32_endian(tvb, offset,p_mq_parm->mq_int_enc); if (uGmoOpt==0) { - proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQGMO_NONE); + proto_item *ti; + proto_tree *mq_tree_sub; + proto_tree_add_text(mq_tree, tvb, offset, 4, MQ_TEXT_MQGMO_NONE); + 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); } else { - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_PROPERTIES_COMPATIBILITY, tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_PROPERTIES_IN_HANDLE , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_NO_PROPERTIES , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNMARKED_BROWSE_MSG , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNMARK_BROWSE_HANDLE , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNMARK_BROWSE_CO_OP , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MARK_BROWSE_CO_OP , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MARK_BROWSE_HANDLE , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_ALL_MSGS_AVAILABLE , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_COMPLETE_MSG , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_LOGICAL_ORDER , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_CONVERT , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_FAIL_IF_QUIESCING , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNLOCK , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_LOCK , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MSG_UNDER_CURSOR , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MARK_SKIP_BACKOUT , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_BROWSE_NEXT , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_BROWSE_FIRST , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_SET_SIGNAL , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_NO_SYNCPOINT , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_SYNCPOINT , tvb, offset, 4, uGmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_WAIT , tvb, offset, 4, uGmoOpt); - } + 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) { - - proto_item *ti = NULL; - proto_tree *mq_tree_sub = NULL; guint uPmoOpt; - 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); 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_boolean(mq_tree_sub, hf_mq_pmo_options_NOT_OWN_SUBS , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SUPPRESS_REPLYTO , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SCOPE_QMGR , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_RETAIN , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_RESOLVE_LOCAL_Q , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SYNC_RESPONSE , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_ASYNC_RESPONSE , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_LOGICAL_ORDER , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NO_CONTEXT , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_FAIL_IF_QUIESCING , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SET_ALL_CONTEXT , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SET_IDENTITY_CONTEXT , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_PASS_ALL_CONTEXT , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_PASS_IDENTITY_CONTEXT , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NEW_CORREL_ID , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NEW_MSG_ID , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_DEFAULT_CONTEXT , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NO_SYNCPOINT , tvb, offset, 4, uPmoOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SYNCPOINT , tvb, offset, 4, uPmoOpt); + 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, mq_parm_t *p_mq_parm) { - proto_item *ti = NULL; - proto_tree *mq_tree_sub = NULL; guint uOpenOpt; - ti = proto_tree_add_item(mq_tree, hf_mq_open_options, tvb, offset, 4, p_mq_parm->mq_int_enc); - mq_tree_sub = proto_item_add_subtree(ti, ett_subtree); 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, hf_mq_open_options, 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_boolean(mq_tree_sub, hf_mq_open_options_BIND_ON_GROUP , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_NO_MULTICAST , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_READ_AHEAD , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_NO_READ_AHEAD , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_RESOLVE_LOCAL_Q , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_CO_OP , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_RESOLVE_NAMES , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_BIND_NOT_FIXED , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_BIND_ON_OPEN , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_FAIL_IF_QUIESC , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_ALT_USER_AUTH, tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SET_ALL_CONTEXT , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SET_IDENT_CTX , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_PASS_ALL_CTX , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_PASS_IDENT_CTX , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SAVE_ALL_CTX , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SET , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INQUIRE , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_OUTPUT , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_BROWSE , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INPUT_EXCLUSIVE , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INPUT_SHARED , tvb, offset, 4, uOpenOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INPUT_AS_Q_DEF , tvb, offset, 4, uOpenOpt); + proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_open_options, 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) { - proto_item *ti = NULL; - proto_tree *mq_tree_sub = NULL; guint iCloseOpt; - 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); 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_boolean(mq_tree_sub, hf_mq_close_options_QUIESCE , tvb, offset, 4, iCloseOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_REMOVE_SUB , tvb, offset, 4, iCloseOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_KEEP_SUB , tvb, offset, 4, iCloseOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_DELETE_PURGE , tvb, offset, 4, iCloseOpt); - proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_DELETE , tvb, offset, 4, iCloseOpt); + proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_close_options, ett_mq_close_option, pf_flds_clsopt, ENC_BIG_ENDIAN); } return 4; } @@ -1596,7 +1812,7 @@ static gint dissect_mq_gmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, 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_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); @@ -1661,7 +1877,7 @@ static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, 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_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); @@ -1750,7 +1966,7 @@ static gint dissect_mq_od(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g 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_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); @@ -1880,7 +2096,7 @@ static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_ { 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); + 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); @@ -1900,76 +2116,55 @@ static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_ 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_level, tvb, offset + 4, 1, ENC_BIG_ENDIAN); - - /* ID flags */ - { - guint8 iIDFlags; - - ti = proto_tree_add_item(mq_tree, hf_mq_id_flags, tvb, offset + 5, 1, ENC_BIG_ENDIAN); - mq_tree_sub = proto_item_add_subtree(ti, ett_mq_id_icf); - iIDFlags = tvb_get_guint8(tvb, offset + 5); - - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_runtime, tvb, offset + 5, 1, iIDFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_svrsec, tvb, offset + 5, 1, iIDFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_mqreq, tvb, offset + 5, 1, iIDFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_splitmsg, tvb, offset + 5, 1, iIDFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_convcap, tvb, offset + 5, 1, iIDFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_msgseq, tvb, offset + 5, 1, iIDFlags); - } + 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); - proto_tree_add_item(mq_tree, hf_mq_id_unknown02, tvb, offset + 6, 1, p_mq_parm->mq_int_enc); + /* 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 */ - { - guint8 iErrorFlags; - - ti = proto_tree_add_item(mq_tree, hf_mq_id_ieflags, tvb, offset + 7, 1, p_mq_parm->mq_int_enc); - mq_tree_sub = proto_item_add_subtree(ti, ett_mq_id_ief); - iErrorFlags = tvb_get_guint8(tvb, offset + 7); - - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_hbint, tvb, offset + 7, 1, iErrorFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_seqwrap, tvb, offset + 7, 1, iErrorFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_mxmsgpb, tvb, offset + 7, 1, iErrorFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_mxmsgsz, tvb, offset + 7, 1, iErrorFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_fap, tvb, offset + 7, 1, iErrorFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_mxtrsz, tvb, offset + 7, 1, iErrorFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_enc, tvb, offset + 7, 1, iErrorFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_ccsid, tvb, offset + 7, 1, iErrorFlags); - } + /* 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_unknown04, tvb, offset + 8, 2, p_mq_parm->mq_int_enc); + 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_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) { - proto_tree_add_item(mq_tree, hf_mq_id_capflags, tvb, offset + 44, 2, 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_unknown06, tvb, offset + 100, 2, p_mq_parm->mq_int_enc); + /* 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) { - proto_tree_add_item(mq_tree, hf_mq_id_unknown07, tvb, offset + 102, 2, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown08, tvb, offset + 104, 2, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown09, tvb, offset + 106, 2, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown10, tvb, offset + 108, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown11, tvb, offset + 112, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown12, tvb, offset + 116, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown13, tvb, offset + 120, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown14, tvb, offset + 124, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown15, tvb, offset + 128, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown16, tvb, offset + 132, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown17, tvb, offset + 136, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown18, tvb, offset + 140, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_unknown19, tvb, offset + 144, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_id_mqmvers, 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); + /* 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); } } } @@ -2002,7 +2197,7 @@ static gint dissect_mq_md(tvbuff_t *tvb, proto_tree *tree, gint offset, struct m 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_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); @@ -2055,7 +2250,7 @@ static gint dissect_mq_fopa(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_par 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_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); @@ -2083,14 +2278,6 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) gint iDistributionListSize = 0; struct mq_msg_properties tMsgProps; mq_parm_t *p_mq_parm; - /* - guint32 p_mq_parm->mq_int_enc = ENC_BIG_ENDIAN; - guint32 p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA; - guint32 mq_encode = 0; - guint16 mq_ccsid = 0; - guint8 p_mq_parm->mq_ctlf = 0; - guint8 p_mq_parm->mq_opcode = 0; - */ p_mq_parm = wmem_new0(wmem_packet_scope(), mq_parm_t); @@ -2099,7 +2286,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA; p_mq_parm->mq_encode = 0; p_mq_parm->mq_ccsid = 0; - p_mq_parm->mq_ctlf = 0; + p_mq_parm->mq_ctlf1 = 0; + p_mq_parm->mq_ctlf2 = 0; p_mq_parm->mq_opcode = 0; col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ"); @@ -2120,7 +2308,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* An MQ packet always starts with this structure*/ gint iSizeTSH = 28; - gint iSizeMultiplexFields = 0; + gint iSizeMPF = 0; /* Size Of Multiplexed Field */ if ((p_mq_parm->mq_strucID & MQ_MASK_TSHx)==MQ_STRUCTID_TSHx_EBCDIC) { @@ -2133,22 +2321,23 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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; - iSizeMultiplexFields += 8; + iSizeMPF += 8; iSizeTSH = 36; } - p_mq_parm->mq_opcode = tvb_get_guint8(tvb, offset + iSizeMultiplexFields + 9); + 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) { - tMsgProps.iOffsetEncoding = offset + iSizeMultiplexFields + 20; - tMsgProps.iOffsetCcsid = offset + iSizeMultiplexFields + 24; + tMsgProps.iOffsetEncoding = offset + iSizeMPF + 20; + tMsgProps.iOffsetCcsid = offset + iSizeMPF + 24; tMsgProps.iOffsetFormat = offset ; } - p_mq_parm->mq_int_enc = (tvb_get_guint8(tvb, offset + iSizeMultiplexFields + 8) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN); - p_mq_parm->mq_ctlf = tvb_get_guint8(tvb, offset + iSizeMultiplexFields + 10); + 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_encode=tvb_get_guint32_endian(tvb, offset + iSizeMultiplexFields + 20, p_mq_parm->mq_int_enc); - p_mq_parm->mq_ccsid =tvb_get_guint16_endian(tvb, offset + iSizeMultiplexFields + 24, p_mq_parm->mq_int_enc); + p_mq_parm->mq_encode=tvb_get_guint32_endian(tvb, offset + iSizeMPF + 20, p_mq_parm->mq_int_enc); + p_mq_parm->mq_ccsid =tvb_get_guint16_endian(tvb, offset + iSizeMPF + 24, p_mq_parm->mq_int_enc); if (p_mq_parm->mq_ccsid==500 && !bEBCDIC) { @@ -2159,7 +2348,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (!mq_in_reassembly) { col_clear(pinfo->cinfo, COL_INFO); - col_append_sep_str(pinfo->cinfo, COL_INFO, " | ", val_to_str_ext(p_mq_parm->mq_opcode, &mq_opcode_vals_ext, "Unknown (0x%02x)")); + col_append_sep_fstr(pinfo->cinfo, COL_INFO, " | ", "%-17s", val_to_str_ext(p_mq_parm->mq_opcode, &mq_opcode_vals_ext, "Unknown (0x%02x)")); col_set_fence(pinfo->cinfo, COL_INFO); } @@ -2180,7 +2369,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_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_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) @@ -2189,31 +2378,16 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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 + iSizeMultiplexFields + 8, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(mq_tree, hf_mq_tsh_opcode, tvb, offset + iSizeMultiplexFields + 9, 1, 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); - /* Control flags */ - { - proto_tree *mq_tree_sub = NULL; - - ti = proto_tree_add_item(mq_tree, hf_mq_tsh_ctlflgs1, tvb, offset + iSizeMultiplexFields + 10, 1, ENC_BIG_ENDIAN); - mq_tree_sub = proto_item_add_subtree(ti, ett_mq_tsh_tcf); - - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_dlq, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_reqacc, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_last, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_first, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_closechann, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_reqclose, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_error, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_confirmreq, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf); - } + 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_ctlflgs2, tvb, offset + iSizeMultiplexFields + 11, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(mq_tree, hf_mq_tsh_luwid, tvb, offset + iSizeMultiplexFields + 12, 8, ENC_NA); - proto_tree_add_item(mq_tree, hf_mq_tsh_encoding, tvb, offset + iSizeMultiplexFields + 20, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_tsh_ccsid, tvb, offset + iSizeMultiplexFields + 24, 2, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_tsh_padding, tvb, offset + iSizeMultiplexFields + 26, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(mq_tree, hf_mq_tsh_luwid, tvb, offset + iSizeMPF + 12, 8, ENC_NA); + proto_tree_add_item(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, ENC_BIG_ENDIAN); } offset += iSizeTSH; @@ -2221,7 +2395,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (tvb_length_remaining(tvb, offset) >= 4) { p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset); - if (((p_mq_parm->mq_ctlf & MQ_TCF_FIRST) != 0) || p_mq_parm->mq_opcode < 0x80) + 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; @@ -2259,7 +2433,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_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); @@ -2273,20 +2447,20 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) gint iUsr = 0; gint iPsw = 0; - iUsr=tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc); - iPsw=tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc); + 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_unknown1, tvb, offset + 4, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_caut_userlen1, tvb, offset + 8, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_caut_pswdlen1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_caut_userlen2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_caut_pswdlen2, tvb, offset + 20, 4, p_mq_parm->mq_int_enc); + 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); @@ -2304,11 +2478,11 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_unknown1, tvb, offset, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_socket_unknown2, tvb, offset + 4, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_socket_unknown3, tvb, offset + 8, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_socket_unknown4, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_socket_unknown5, tvb, offset + 16, 4, p_mq_parm->mq_int_enc); + 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; @@ -2325,7 +2499,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (tvb_length_remaining(tvb, offset) >= iStatusLength) { if (iStatus != 0) - col_append_fstr(pinfo->cinfo, COL_INFO, ": Code=%s", val_to_str(iStatus, mq_status_vals, "Unknown (0x%08x)")); + col_append_fstr(pinfo->cinfo, COL_INFO, " Code=%s", val_to_str(iStatus, GET_VALSV(status), "Unknown (0x%08x)")); if (tree) { @@ -2404,12 +2578,12 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { guint8 *sApplicationName; guint8 *sQMgr; - sApplicationName = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 28, p_mq_parm->mq_str_enc); + 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); + col_append_fstr(pinfo->cinfo, COL_INFO, " App=%s", sApplicationName); } - sQMgr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 48, p_mq_parm->mq_str_enc); + 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); @@ -2422,10 +2596,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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)); + 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) { @@ -2439,7 +2613,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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_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)); @@ -2525,7 +2699,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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); + col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x", iHdl); if (tree) { @@ -2535,7 +2709,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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_mqrc, tvb, offset + 12, 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; @@ -2544,57 +2718,68 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { gint iHdl; gint iFlags; - gint iLstSeq; - gint iMaxLen; + gint iGlbMsgIdx; + gint iMaxMsgLen; gint xOfs; - gint iExt; + gint iOpt; xOfs=0; - iHdl = tvb_get_guint32_endian(tvb, offset+ 4, p_mq_parm->mq_int_enc); - iMaxLen = 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); - iLstSeq = tvb_get_guint32_endian(tvb, offset+ 36, p_mq_parm->mq_int_enc); + 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); - col_append_fstr(pinfo->cinfo, COL_INFO, ": Hdl=0x%08x, LstSeq=%d, MaxLen=%d", - iHdl, iLstSeq,iMaxLen); + 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_unknown1, tvb, offset + 8, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown2, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_maxlen , tvb, offset + 16, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown4, tvb, offset + 20, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_timeout , tvb, offset + 24, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown5, tvb, offset + 28, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_flags , tvb, offset + 32, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_lstseqnr, tvb, offset + 36, 4, p_mq_parm->mq_int_enc); + 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_msegver , tvb, offset + 40, 2, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_msegseq , tvb, offset + 42, 2, p_mq_parm->mq_int_enc); + 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); proto_tree_add_item(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_unknown6, tvb, offset + 52, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown7, tvb, offset + 56, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgreq_xfldflag, tvb, offset + 60, 4, p_mq_parm->mq_int_enc); - iExt=tvb_get_guint32_endian(tvb, offset + 60, 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 (iExt & MQ_MSGREQ_MSGID_PRESENT) + 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_msgid , tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc); + proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchCorId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc); xOfs+=24; } - if (iExt & MQ_MSGREQ_MQMID_PRESENT) + if (iOpt & MQ_MQMO_MATCH_GROUP_ID) { - proto_tree_add_item(mq_tree, hf_mq_msgreq_mqmid , tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc); + 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; @@ -2602,19 +2787,20 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } else if (p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE) { - gint imsegseq; - gint iCurSeq; + gint iSegmIndex; + gint iGlbMsgIdx; gint iPadLen; - gint iPayLod; + gint iSegLength; gint8 iStrLen; gint iHdl; gint iHdrL; - iHdl = tvb_get_guint32_endian(tvb, offset+4, p_mq_parm->mq_int_enc); - iCurSeq = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc); - imsegseq = tvb_get_guint16_endian(tvb, offset + 20, p_mq_parm->mq_int_enc); + 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 (p_mq_parm->mq_ctlf & MQ_TCF_FIRST) + if (iSegmIndex==0) { iStrLen = tvb_get_guint8(tvb,offset+54); iPadLen = (2+1+iStrLen) % 4; @@ -2626,13 +2812,12 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) iStrLen=0; } - iHdrL=(p_mq_parm->mq_ctlf & MQ_TCF_FIRST)?(54+1+iStrLen+iPadLen):24; - iPayLod=tvb_length_remaining(tvb, offset+iHdrL); + iHdrL=(iSegmIndex==0)?(54+1+iStrLen+iPadLen):24; if (!mq_in_reassembly) { - col_append_fstr(pinfo->cinfo, COL_INFO, ": Hdl=0x%08x, CurSeq=%d, SSeq=%d, PayLoad=%d", - iHdl, iCurSeq, imsegseq, iPayLod); + col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x, GlbMsgIdx=%d, SegIdx=%d, SegLen=%d", + iHdl, iGlbMsgIdx, iSegmIndex, iSegLength); } if (tree) @@ -2640,27 +2825,24 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_unknown1, tvb, offset + 8, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_curseqnr, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_payload , tvb, offset + 16, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_msegseq , tvb, offset + 20, 2, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_msegver , tvb, offset + 22, 2, p_mq_parm->mq_int_enc); - if (p_mq_parm->mq_ctlf & MQ_TCF_FIRST) + 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_flags , tvb, offset + 24, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_totlen1 , tvb, offset + 28, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_totlen2 , tvb, offset + 32, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown2, tvb, offset + 36, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown3, tvb, offset + 40, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown4, tvb, offset + 44, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown5, tvb, offset + 48, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_strFlg , tvb, offset + 52, 2, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_msgasy_strLen , tvb, offset + 54, 1, ENC_NA); - proto_tree_add_item(mq_tree, hf_mq_msgasy_strVal , tvb, offset + 55, iStrLen, p_mq_parm->mq_str_enc); + 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_strPad , tvb, offset + 55 + iStrLen, iPadLen, p_mq_parm->mq_str_enc); + proto_tree_add_item(mq_tree, hf_mq_msgasy_padding , tvb, offset + 55 + iStrLen, iPadLen, p_mq_parm->mq_str_enc); } } offset+=iHdrL; @@ -2705,7 +2887,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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_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); } @@ -2736,7 +2918,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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_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); } @@ -2796,19 +2978,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { if (tree) { - /* Options flags */ - { - proto_tree *mq_tree_sub = NULL; - gint iOptionsFlags; - - ti = proto_tree_add_item(mq_tree, hf_mq_spi_spgo_options, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); - mq_tree_sub = proto_item_add_subtree(ti, ett_mq_spi_options); - iOptionsFlags = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc); - - proto_tree_add_boolean(mq_tree_sub, hf_mq_spi_opt_deferred, tvb, offset + 12, 4, iOptionsFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_spi_opt_syncp, tvb, offset + 12, 4, iOptionsFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_spi_opt_blank, tvb, offset + 12, 4, iOptionsFlags); - } + 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); @@ -2835,24 +3005,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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); - /* Transaction Manager flags */ - { - proto_tree *mq_tree_sub = NULL; - guint32 iTMFlags; - - ti = proto_tree_add_item(mq_tree, hf_mq_xa_tmflags, tvb, offset + 8, 4, p_mq_parm->mq_int_enc); - mq_tree_sub = proto_item_add_subtree(ti, ett_mq_xa_tmflags); - iTMFlags = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc); - - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_onephase, tvb, offset + 8, 4, iTMFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_fail, tvb, offset + 8, 4, iTMFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_resume, tvb, offset + 8, 4, iTMFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_success, tvb, offset + 8, 4, iTMFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_suspend, tvb, offset + 8, 4, iTMFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_startrscan, tvb, offset + 8, 4, iTMFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_endrscan, tvb, offset + 8, 4, iTMFlags); - proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_join, tvb, offset + 8, 4, iTMFlags); - } + 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); } @@ -2921,7 +3074,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeID, 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_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_option, p_mq_parm); @@ -2962,7 +3115,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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); + col_append_fstr(pinfo->cinfo, COL_INFO, " User=%s", sUserId); } if (tree) @@ -2970,7 +3123,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_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); } @@ -3047,7 +3200,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_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); @@ -3081,7 +3234,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_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); proto_tree_add_item(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); @@ -3130,7 +3283,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_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); @@ -3159,7 +3312,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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_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); proto_tree_add_item(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); @@ -3199,10 +3352,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tMsgProps.iOffsetFormat = 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)")); + 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_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); proto_tree_add_item(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc); @@ -3219,32 +3372,12 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } } - /* - Removed as steted in macro PROTO_ITEM_SET_HIDDEN - *HIDING PROTOCOL FIELDS IS DEPRECATED, IT'S CONSIDERED TO BE BAD GUI DESIGN! - if (tMsgProps.iOffsetFormat != 0) - { - guint8* sFormat = NULL; - sFormat = tvb_get_string_enc(wmem_packet_scope(), tvb, tMsgProps.iOffsetFormat, 8, p_mq_parm->mq_str_enc); - if (strip_trailing_blanks(sFormat, 8) == 0) - sFormat = (guint8 *)wmem_strdup(wmem_packet_scope(),"MQNONE"); - - col_append_fstr(pinfo->cinfo, COL_INFO, " Fmt=%s", sFormat); - if (tree) - { - proto_item *hidden_item; - hidden_item = proto_tree_add_string(tree, hf_mq_md_lastformat, tvb, tMsgProps.iOffsetFormat, 8, (const char*)sFormat); - PROTO_ITEM_SET_HIDDEN(hidden_item); - } - } - */ col_append_fstr(pinfo->cinfo, COL_INFO, " (%d bytes)", iSizePayload - iHeadersLength); if (!mq_in_reassembly) { /* Call subdissector for the payload */ tvbuff_t* next_tvb = NULL; - void* pd_save; struct mqinfo *mqinfo; mqinfo = wmem_new0(wmem_packet_scope(), struct mqinfo); /* Format, encoding and character set are "data type" information, not subprotocol information */ @@ -3253,12 +3386,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) memcpy(mqinfo->format, tvb_get_string_enc(wmem_packet_scope(), tvb, tMsgProps.iOffsetFormat, sizeof(mqinfo->format), p_mq_parm->mq_str_enc), sizeof(mqinfo->format)); - pd_save = pinfo->private_data; - pinfo->private_data = mqinfo; + next_tvb = tvb_new_subset_remaining(tvb, offset); - if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, mqroot_tree, NULL)) + if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, mqroot_tree, mqinfo)) call_dissector(data_handle, next_tvb, pinfo, mqroot_tree); - pinfo->private_data = pd_save; } else { @@ -3275,7 +3406,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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)")); + proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)")); } } } @@ -3310,15 +3441,14 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) mq_parm.mq_strucID = tvb_get_ntohl(tvb, 0); mq_parm.mq_ccsid = 0; - mq_parm.mq_ctlf = 0; + mq_parm.mq_ctlf1 = 0; + mq_parm.mq_ctlf2 = 0; mq_parm.mq_encode = 0; mq_parm.mq_opcode = 0; mq_parm.mq_int_enc = 0; mq_parm.mq_str_enc = 0; - if (mq_parm.mq_strucID == MQ_STRUCTID_TSH || mq_parm.mq_strucID == MQ_STRUCTID_TSH_EBCDIC - || mq_parm.mq_strucID == MQ_STRUCTID_TSHC || mq_parm.mq_strucID == MQ_STRUCTID_TSHC_EBCDIC - || mq_parm.mq_strucID == MQ_STRUCTID_TSHM || mq_parm.mq_strucID == MQ_STRUCTID_TSHM_EBCDIC) + 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; @@ -3332,10 +3462,11 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) gboolean bSegLst = FALSE; gboolean bMore = FALSE; - guint32 uHdl = 0; - guint32 uCurS = 0; - guint32 uPayL = 0; - guint16 uMsgS = 0; + gint32 iHdl = 0; + gint32 iGlbMsgIdx = 0; + gint32 iSegLength = 0; + gint16 iSegmIndex = 0; + guint32 uStrL = 0; guint32 uPadL = 0; @@ -3344,7 +3475,7 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) iMulS=8; /* Get the Encoding scheme */ - iEnco = (tvb_get_guint8(tvb, 8+iMulS) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN); + 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 */ @@ -3366,23 +3497,24 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* 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 (uTot1) - and the total number of bytes of this reply (uTot2) + 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 is the followin: + this mean the flow seems to be : PUT REQUEST_MSG (MaxLen=4096) - ASYNC_MSG (1st/Lst Segment, uTot1=4096, uTot2=279420) - as uTot1!=uTot2, this mean the MSG is not complete, we only receive 4420 of 279420 bytes + 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, Seg#0 uTot1=279420, uTot2=279420) - ASYNC_MSG (0x segment, Seg#1) - ASYNC_MSG (0x segment, Seg#2) + ASYNC_MSG (1st Segment, SegIndex=0 ActMsgLen=279420, TotMsgLen=279420) + ASYNC_MSG (Mid Segment, SegIndex=1) + ASYNC_MSG (Mid Segment, SegIndex=2) . - ASYNC_MSG (Last Segment, Seg#7) + ASYNC_MSG (Lst Segment, SegIndex=n) End of reassembling (we have 279420 bytes to decode) */ + if (mq_reassembly) { fragment_head* fd_head; @@ -3390,17 +3522,19 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) iHdrL=28+iMulS; /* Get the MQ Handle of the Object */ - uHdl = tvb_get_guint32_endian(tvb, iHdrL + 4, iEnco); - /* Get the Current Seq Number */ - uCurS= tvb_get_guint32_endian(tvb, iHdrL +12, iEnco); - /* Get the MsgSegment Number */ - uMsgS= tvb_get_guint16_endian(tvb, iHdrL +20, iEnco); + 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 it is the 1st Segment, it has 55 bytes + the length and padding + if SegmIndex==0, it has 54 bytes + the length and padding of a variable string at the end of the Header */ - if (bSeg1st) + if (iSegmIndex==0) { uStrL = tvb_get_guint8(tvb,iHdrL+54); uPadL = ((((2+1+uStrL)/4)+1)*4)-(2+1+uStrL); @@ -3411,7 +3545,6 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) */ iNxtP = iHdrL + ((bSeg1st)?(54 + 1 + uStrL + uPadL):(24)); iNxtP += dissect_mq_md(tvb, NULL, iNxtP, NULL, &mq_parm, FALSE); - uPayL = tvb_length_remaining(tvb, iNxtP); /* if it is the 1st Segment, it means we are @@ -3428,11 +3561,13 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *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, CurS=%d, MsgS=%d, PayL=%d", - val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),uHdl,uCurS,uMsgS,uPayL); + 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, CurS=%d, MsgS=%d, PayL=%d", - val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),uHdl,uCurS,uMsgS,uPayL); + 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 @@ -3464,8 +3599,9 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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, CurS=%d, MsgS=%d, PayL=%d", - val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),uHdl,uCurS,uMsgS,uPayL); + 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; } @@ -3556,8 +3692,9 @@ static void mq_init(void) 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 }}, + 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 }}, @@ -3568,97 +3705,121 @@ void proto_register_mq(void) { &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_UINT16, BASE_DEC, NULL, 0x0, "TSH CCSID", HFILL }}, - { &hf_mq_tsh_padding ,{"Padding...", "mq.tsh.padding", FT_UINT16, BASE_HEX, NULL, 0x0, "TSH Padding", 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_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_unknown1,{"unknown1", "mq.socket.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown1", HFILL }}, - { &hf_mq_socket_unknown2,{"unknown2", "mq.socket.unknown2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown2", HFILL }}, - { &hf_mq_socket_unknown3,{"unknown3", "mq.socket.unknown3", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown3", HFILL }}, - { &hf_mq_socket_unknown4,{"unknown4", "mq.socket.unknown4", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown4", HFILL }}, - { &hf_mq_socket_unknown5,{"unknown5", "mq.socket.unknown5", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown5", HFILL }}, - - { &hf_mq_caut_structid ,{"structid", "mq.caut.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }}, - { &hf_mq_caut_unknown1 ,{"unknown1", "mq.caut.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT unknown1", HFILL }}, - { &hf_mq_caut_userlen1 ,{"userlen1", "mq.caut.userlen1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT userid length 1", HFILL }}, - { &hf_mq_caut_pswdlen1 ,{"pswdlen1", "mq.caut.pswdlen1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT password length 1", HFILL }}, - { &hf_mq_caut_userlen2 ,{"userlen2", "mq.caut.userlen2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT userid length 2", HFILL }}, - { &hf_mq_caut_pswdlen2 ,{"pswdlen2", "mq.caut.pswdlen2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT password length 5", 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_id_icf_msgseq ,{"Message sequence..", "mq.id.icf.msgseq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_MSG_SEQ, "ID ICF Message sequence", HFILL }}, - { &hf_mq_id_icf_convcap ,{"Conversion capable", "mq.id.icf.convcap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_CONVERSION_CAPABLE, "ID ICF Conversion capable", HFILL }}, - { &hf_mq_id_icf_splitmsg,{"Split messages....", "mq.id.icf.splitmsg", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_SPLIT_MESSAGE, "ID ICF Split message", HFILL }}, - { &hf_mq_id_icf_mqreq ,{"MQ request........", "mq.id.icf.mqreq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_MQREQUEST, "ID ICF MQ request", HFILL }}, - { &hf_mq_id_icf_svrsec ,{"Srvr Con security.", "mq.id.icf.svrsec", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_SVRCONN_SECURITY, "ID ICF Server connection security", HFILL }}, - { &hf_mq_id_icf_runtime ,{"Runtime applic....", "mq.id.icf.runtime", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_RUNTIME, "ID ICF Runtime application", HFILL }}, - - { &hf_mq_msh_structid ,{"structid", "mq.msh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, 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_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_level ,{"FAP level.", "mq.id.level", FT_UINT8, BASE_DEC, NULL, 0x0, "ID Formats And Protocols level", HFILL }}, - { &hf_mq_id_flags ,{"Flags.....", "mq.id.flags", FT_UINT8, BASE_HEX, NULL, 0x0, "ID flags", HFILL }}, - { &hf_mq_id_unknown02 ,{"Unknown02.", "mq.id.unknown02", FT_UINT8, BASE_HEX, NULL, 0x0, "ID unknown02", HFILL }}, - { &hf_mq_id_ieflags ,{"InitErrFlg", "mq.id.ief", FT_UINT8, BASE_HEX, NULL, 0x0, "ID initial error flags", HFILL }}, - { &hf_mq_id_unknown04 ,{"Unknown04.", "mq.id.unknown04", FT_UINT16, BASE_HEX, NULL, 0x0, "ID unknown04", 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_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_capflags ,{"CapabilFlg", "mq.id.capflags", FT_UINT16, BASE_HEX, NULL, 0x0, "ID Capability flags", HFILL }}, - { &hf_mq_id_ccsid ,{"ccsid.....", "mq.id.ccsid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID character set", HFILL }}, - { &hf_mq_id_qmgrname ,{"QMgrName..", "mq.id.qm", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID Queue manager", 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_UINT16, BASE_HEX_DEC, NULL, 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_unknown06 ,{"Unknown06.", "mq.id.unknown06", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown06", HFILL }}, - { &hf_mq_id_unknown07 ,{"Unknown07.", "mq.id.unknown07", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown07", HFILL }}, - { &hf_mq_id_unknown08 ,{"Unknown08.", "mq.id.unknown08", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown08", HFILL }}, - { &hf_mq_id_unknown09 ,{"Unknown09.", "mq.id.unknown09", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown09", HFILL }}, - { &hf_mq_id_unknown10 ,{"Unknown10.", "mq.id.unknown10", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown10", HFILL }}, - { &hf_mq_id_unknown11 ,{"Unknown11.", "mq.id.unknown11", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown11", HFILL }}, - { &hf_mq_id_unknown12 ,{"Unknown12.", "mq.id.unknown12", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown12", HFILL }}, - { &hf_mq_id_unknown13 ,{"Unknown13.", "mq.id.unknown13", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown13", HFILL }}, - { &hf_mq_id_unknown14 ,{"Unknown14.", "mq.id.unknown14", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown14", HFILL }}, - { &hf_mq_id_unknown15 ,{"Unknown15.", "mq.id.unknown15", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown15", HFILL }}, - { &hf_mq_id_unknown16 ,{"Unknown16.", "mq.id.unknown16", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown16", HFILL }}, - { &hf_mq_id_unknown17 ,{"Unknown17.", "mq.id.unknown17", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown17", HFILL }}, - { &hf_mq_id_unknown18 ,{"Unknown18.", "mq.id.unknown18", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown18", HFILL }}, - { &hf_mq_id_unknown19 ,{"Unknown19.", "mq.id.unknown19", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown19", HFILL }}, - { &hf_mq_id_mqmvers ,{"MQ Version", "mq.id.mqmvers", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID MQM Version", 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_ief_ccsid ,{"Invalid CCSID.........", "mq.id.ief.ccsid", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_CCSID, "ID invalid CCSID", HFILL }}, - { &hf_mq_id_ief_enc ,{"Invalid encoding......", "mq.id.ief.enc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_ENCODING, "ID invalid encoding", HFILL }}, - { &hf_mq_id_ief_mxtrsz ,{"Invalid Max Trans Size", "mq.id.ief.mxtrsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_MAX_TRANSMISSION_SIZE, "ID invalid maximum transmission size", HFILL }}, - { &hf_mq_id_ief_fap ,{"Invalid FAP level.....", "mq.id.ief.fap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_FAP_LEVEL, "ID invalid FAP level", HFILL }}, - { &hf_mq_id_ief_mxmsgsz,{"Invalid message size..", "mq.id.ief.mxmsgsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_MAX_MSG_SIZE, "ID invalid message size", HFILL }}, - { &hf_mq_id_ief_mxmsgpb,{"Invalid Max Msg batch.", "mq.id.ief.mxmsgpb", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_MAX_MSG_PER_BATCH, "ID maximum message per batch", HFILL }}, - { &hf_mq_id_ief_seqwrap,{"Invalid Seq Wrap Value", "mq.id.ief.seqwrap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_SEQ_WRAP_VALUE, "ID invalid sequence wrap value", HFILL }}, - { &hf_mq_id_ief_hbint ,{"Invalid HB interval...", "mq.id.ief.hbint", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_HEARTBEAT_INTERVAL, "ID invalid heartbeat interval", HFILL }}, - - { &hf_mq_uid_structid ,{"Structid", "mq.uid.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, 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 }}, @@ -3674,7 +3835,7 @@ void proto_register_mq(void) { &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_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 }}, @@ -3692,7 +3853,7 @@ void proto_register_mq(void) { &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_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 }}, @@ -3720,13 +3881,38 @@ void proto_register_mq(void) { &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 ,{"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_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_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 }}, @@ -3750,8 +3936,9 @@ void proto_register_mq(void) { &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_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 }}, @@ -3761,49 +3948,46 @@ void proto_register_mq(void) { &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_unknown1,{"unknown1", "mq.msgreq.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown1", HFILL }}, - { &hf_mq_msgreq_unknown2,{"unknown2", "mq.msgreq.unknown2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown2", HFILL }}, - { &hf_mq_msgreq_maxlen ,{"maxlen..", "mq.msgreq.maxlen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ End Position", HFILL }}, - { &hf_mq_msgreq_unknown4,{"unknown4", "mq.msgreq.unknown4", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown4", HFILL }}, - { &hf_mq_msgreq_timeout ,{"timeout.", "mq.msgreq.timeout", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ timeout", HFILL }}, - { &hf_mq_msgreq_unknown5,{"unknown5", "mq.msgreq.unknown5", FT_UINT32, BASE_HEX, NULL, 0x0, "MSGREQ unknown5", HFILL }}, - { &hf_mq_msgreq_flags ,{"flags...", "mq.msgreq.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ flags", HFILL }}, - { &hf_mq_msgreq_lstseqnr,{"lstseqnr", "mq.msgreq.lstseqnr", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Last Sequence Number", HFILL }}, - { &hf_mq_msgreq_msegver ,{"msegver.", "mq.msgreq.msegver", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ multi segment hdr version", HFILL }}, - { &hf_mq_msgreq_msegseq ,{"msegseq.", "mq.msgreq.msegseq", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ multi segment sequence number", HFILL }}, - { &hf_mq_msgreq_ccsid ,{"ccsid...", "mq.msgreq.ccsid", FT_UINT32, BASE_HEX_DEC, NULL, 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_unknown6,{"unknown6", "mq.msgreq.unknown6", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown6", HFILL }}, - { &hf_mq_msgreq_unknown7,{"unknown7", "mq.msgreq.unknown7", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown7", HFILL }}, - { &hf_mq_msgreq_xfldflag,{"xfldflag", "mq.msgreq.xfldflag", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Extended Field Flag", HFILL }}, - { &hf_mq_msgreq_msgid ,{"msgid...", "mq.msgreq.xfldmsgid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MSGREQ xfld msgid", HFILL }}, - { &hf_mq_msgreq_mqmid ,{"mqmid...", "mq.msgreq.xfldmqmid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MSGREQ xfld mqmid", 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_unknown1,{"unknown1", "mq.msgasy.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown1", HFILL }}, - { &hf_mq_msgasy_curseqnr,{"curseqnr", "mq.msgasy.curseqnr", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC curseqnr", HFILL }}, - { &hf_mq_msgasy_payload ,{"payload.", "mq.msgasy.payload", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC payload", HFILL }}, - { &hf_mq_msgasy_msegver ,{"msegver.", "mq.msgasy.msegver", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC multi segment hdr version", HFILL }}, - { &hf_mq_msgasy_msegseq ,{"msegseq.", "mq.msgasy.msegseq", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC multi segment sequence number", HFILL }}, - { &hf_mq_msgasy_flags ,{"flags...", "mq.msgasy.flags", FT_UINT32, BASE_HEX, NULL, 0x0, "MSGASYNC flags", HFILL }}, - { &hf_mq_msgasy_totlen1 ,{"totlen1.", "mq.msgasy.totlen1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC totlen1", HFILL }}, - { &hf_mq_msgasy_totlen2 ,{"totlen2.", "mq.msgasy.totlen2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC totlen2", HFILL }}, - { &hf_mq_msgasy_unknown2,{"unknown2", "mq.msgasy.unknown2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown2", HFILL }}, - { &hf_mq_msgasy_unknown3,{"unknown3", "mq.msgasy.unknown3", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown3", HFILL }}, - { &hf_mq_msgasy_unknown4,{"unknown4", "mq.msgasy.unknown4", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown4", HFILL }}, - { &hf_mq_msgasy_unknown5,{"unknown5", "mq.msgasy.unknown5", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown5", HFILL }}, - { &hf_mq_msgasy_strFlg ,{"strflg..", "mq.msgasy.strflg", FT_UINT16, BASE_HEX, NULL, 0x0, "MSGASYNC Str Flag", HFILL }}, - { &hf_mq_msgasy_strLen ,{"strlen..", "mq.msgasy.strlen", FT_UINT8, BASE_DEC, NULL, 0x0, "MSGASYNC Str Len", HFILL }}, - { &hf_mq_msgasy_strVal ,{"strval..", "mq.msgasy.strval", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MSGASYNC Str Val", HFILL }}, - { &hf_mq_msgasy_strPad ,{"strpad..", "mq.msgasy.strpad", FT_BYTES, BASE_NONE, NULL, 0x0, "MSGASYNC Str Pad", 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_mqrc ,{"mqrc....", "mq.notif.mqrc", FT_UINT32, BASE_HEX_DEC, VALS(GET_VALSV(mqrc)), 0x0, "NOTIFICATION MQRC", 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_UINT32, BASE_HEX_DEC, NULL, 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 }}, @@ -3812,10 +3996,10 @@ void proto_register_mq(void) { &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(mq_status_vals), 0x0, "STATUS code", HFILL }}, - { &hf_mq_status_value ,{"Value.", "mq.status.value", FT_UINT32, BASE_DEC, NULL, 0x0, "STATUS value", 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_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 }}, @@ -3847,7 +4031,7 @@ void proto_register_mq(void) { &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_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 }}, @@ -3878,7 +4062,7 @@ void proto_register_mq(void) { &hf_mq_md_origlen ,{"Orig len.", "mq.md.origlength", FT_INT32, BASE_DEC, NULL, 0x0, "MD Original length", HFILL }}, /*{ &hf_mq_md_lastformat ,{"Last format", "mq.md.lastformat", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Last format", HFILL }},*/ - { &hf_mq_dlh_structid ,{"structid.", "mq.dlh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, 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 }}, @@ -3895,11 +4079,40 @@ void proto_register_mq(void) { &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_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 ,{"Options..", "mq.gmo.options", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO options", 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_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 }}, @@ -3927,20 +4140,27 @@ void proto_register_mq(void) { &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_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 }}, @@ -3948,7 +4168,7 @@ void proto_register_mq(void) { &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_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_unknown1 ,{"Unknown1", "mq.lpoo.unknown1", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown1", HFILL }}, { &hf_mq_lpoo_unknown2 ,{"Unknown2", "mq.lpoo.unknown2", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown2", HFILL }}, @@ -3959,9 +4179,32 @@ void proto_register_mq(void) { &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_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown7", HFILL }}, - { &hf_mq_pmo_structid ,{"structid.", "mq.pmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, 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_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 }}, @@ -3984,7 +4227,7 @@ void proto_register_mq(void) { &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 }}, @@ -3999,7 +4242,7 @@ void proto_register_mq(void) { &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_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 }}, @@ -4013,6 +4256,15 @@ void proto_register_mq(void) { &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_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 }}, @@ -4021,6 +4273,7 @@ void proto_register_mq(void) { &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 }}, @@ -4037,18 +4290,23 @@ void proto_register_mq(void) { &hf_mq_charv_vsvalue ,{"VLStr Value", "mq.charv.vsvalue", FT_STRINGZ, BASE_NONE, NULL, 0x0, "VS value", HFILL }} }; - static gint *ett[] = { + 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_icf, - &ett_mq_id_ief, + &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, |