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