2 * Routines for IBM WebSphere MQ packet dissection
4 * metatech <metatechbe@gmail.com>
5 * Robert Grange <robionekenobi@bluewin.ch>
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * SPDX-License-Identifier: GPL-2.0-or-later
14 /* WebSphere MQ in a nutshell
16 * IBM WebSphere MQ (formerly IBM MQSeries) is an asynchronous proprietary messaging middleware that is
17 * based on message queues.
18 * MQ can run on more than 35 platforms, amongst which UNIX, Windows and mainframes.
19 * MQ can be transported on top of TCP, UDP, HTTP, NetBIOS, SPX, SNA LU 6.2, DECnet.
20 * MQ has language bindings for C, C++, Java, .NET, COBOL, PL/I, OS/390 assembler, TAL, Visual Basic.
22 * The basic MQ topology is on one side the queue manager which hosts the queues. On the other side the
23 * applications connect to the queue manager, open a queue, and put or get messages to/from that queue.
25 * The MQ middleware allows very generic operations (send, receive) and can be compared to the
26 * socket API in terms of genericity, but it is more abstract and offers higher-level functionalities
27 * (eg transactions, ...)
29 * The MQ middleware is not really intended to be run over public networks between parties
30 * that do not know each other in advance, but is rather used on private corporate networks
31 * between business applications (it can be compared to a database server for that aspect).
33 * The wire format of an MQ segment is a sequence of structures.
34 * Most structures start with a 4-letter struct identifier.
35 * MQ is a fixed-sized format, most fields have maximum lengths defined in the MQ API.
36 * MQ is popular on mainframes because it was available before TCP/IP.
37 * MQ supports both ASCII-based and EBCDIC-based character sets.
39 * MQ API documentation is called "WebSphere MQ Application Programming
44 * https://www.ibm.com/docs/en/ibm-mq/7.5?topic=structure-application-programming-reference
46 * Possible structures combinations :
47 * TSH [ ID ^ UID ^ CONN ^ INQ ^ OD ]
48 * TSH MSH XQH MD [ PAYLOAD ]
49 * TSH [OD] MD [ GMO ^ PMO ] [ [XQH MD] PAYLOAD ]
50 * TSH [ SPQU ^ SPPU ^ SPGU ^ SPAU [ SPQI ^ SPQO ^ SPPI ^ SPPO ^ SPGI ^ SPGO ^ SPAI ^ SPAO]]
51 * TSH [ XA ] [ XINFO | XID ]
52 * where PAYLOAD = [ DH ] [ DLH ] [ MDE ] BUFF
54 * This dissector is a beta version. To be improved
55 * - Translate the integers/flags into their descriptions
56 * - Find the semantics of the unknown fields
57 * - Display EBCDIC strings as ASCII
58 * - Packets which structures built on different platforms
63 #include <epan/packet.h>
64 #include <epan/ptvcursor.h>
65 #include <epan/reassemble.h>
66 #include <epan/expert.h>
67 #include <epan/prefs.h>
68 #include <epan/strutil.h>
70 #include <wsutil/array.h>
72 #include "packet-windows-common.h"
73 #include "packet-tcp.h"
74 #include "packet-tls.h"
76 #include "packet-mq.h"
78 void proto_register_mq(void);
79 void proto_reg_handoff_mq(void);
82 static int hf_mq_tsh_StructID
;
83 static int hf_mq_tsh_mqseglen
;
84 static int hf_mq_tsh_convid
;
85 static int hf_mq_tsh_requestid
;
86 static int hf_mq_tsh_byteorder
;
87 static int hf_mq_tsh_opcode
;
88 static int hf_mq_tsh_ctlflgs1
;
90 static int hf_mq_tsh_ctlflgs2
;
91 static int hf_mq_tsh_luwid
;
92 static int hf_mq_tsh_encoding
;
94 static int hf_mq_tsh_ccsid
;
95 static int hf_mq_tsh_reserved
;
97 /* Transmission Segment Control Flags 1 */
98 static int hf_mq_tsh_tcf_confirmreq
;
99 static int hf_mq_tsh_tcf_error
;
100 static int hf_mq_tsh_tcf_reqclose
;
101 static int hf_mq_tsh_tcf_closechann
;
102 static int hf_mq_tsh_tcf_first
;
103 static int hf_mq_tsh_tcf_last
;
104 static int hf_mq_tsh_tcf_reqacc
;
105 static int hf_mq_tsh_tcf_dlq
;
106 static int* const pf_flds_tcf
[] =
109 &hf_mq_tsh_tcf_reqacc
,
111 &hf_mq_tsh_tcf_first
,
112 &hf_mq_tsh_tcf_closechann
,
113 &hf_mq_tsh_tcf_reqclose
,
114 &hf_mq_tsh_tcf_error
,
115 &hf_mq_tsh_tcf_confirmreq
,
119 /* Transmission Segment Control Flags 2 */
120 static int hf_mq_tsh_tcf2_HdrComp
;
121 static int hf_mq_tsh_tcf2_MsgComp
;
122 static int hf_mq_tsh_tcf2_CSH
;
123 static int hf_mq_tsh_tcf2_CmitIntv
;
124 static int* const pf_flds_tcf2
[] =
126 &hf_mq_tsh_tcf2_CmitIntv
,
128 &hf_mq_tsh_tcf2_MsgComp
,
129 &hf_mq_tsh_tcf2_HdrComp
,
133 static int hf_mq_api_replylen
;
134 static int hf_mq_api_compcode
;
135 static int hf_mq_api_reascode
;
136 static int hf_mq_api_objecthdl
;
137 static int hf_mq_socket_conversid
;
138 static int hf_mq_socket_requestid
;
139 static int hf_mq_socket_type
;
140 static int hf_mq_socket_parm1
;
141 static int hf_mq_socket_parm2
;
142 static int hf_mq_msh_StructID
;
143 static int hf_mq_msh_seqnum
;
144 static int hf_mq_msh_datalength
;
145 static int hf_mq_msh_unknown1
;
146 static int hf_mq_msh_msglength
;
147 static int hf_mq_xqh_StructID
;
148 static int hf_mq_xqh_version
;
149 static int hf_mq_xqh_remoteq
;
150 static int hf_mq_xqh_remoteqmgr
;
152 static int hf_mq_id_StructID
;
153 static int hf_mq_id_FapLevel
;
154 static int hf_mq_id_cf1
;
155 static int hf_mq_id_ecf1
;
156 static int hf_mq_id_ief1
;
157 static int hf_mq_id_Reserved
;
158 static int hf_mq_id_MaxMsgBatch
;
159 static int hf_mq_id_MaxTrSize
;
160 static int hf_mq_id_MaxMsgSize
;
161 static int hf_mq_id_SeqWrapVal
;
162 static int hf_mq_id_channel
;
163 static int hf_mq_id_cf2
;
164 static int hf_mq_id_ecf2
;
165 static int hf_mq_id_ccsid
;
166 static int hf_mq_id_qmgrname
;
167 static int hf_mq_id_HBInterval
;
168 static int hf_mq_id_EFLLength
;
169 static int hf_mq_id_ief2
;
170 static int hf_mq_id_Reserved1
;
171 static int hf_mq_id_HdrCprsLst
;
172 static int hf_mq_id_MsgCprsLst
;
173 static int hf_mq_id_Reserved2
;
174 static int hf_mq_id_SSLKeyRst
;
175 static int hf_mq_id_ConvBySkt
;
176 static int hf_mq_id_cf3
;
177 static int hf_mq_id_ecf3
;
178 static int hf_mq_id_Reserved3
;
179 static int hf_mq_id_ProcessId
;
180 static int hf_mq_id_ThreadId
;
181 static int hf_mq_id_TraceId
;
182 static int hf_mq_id_ProdId
;
183 static int hf_mq_id_mqmid
;
184 static int hf_mq_id_pal
;
185 static int hf_mq_id_r
;
187 /* Initial Data - Capability Flag 1 */
188 static int hf_mq_id_cf1_msgseq
;
189 static int hf_mq_id_cf1_convcap
;
190 static int hf_mq_id_cf1_splitmsg
;
191 static int hf_mq_id_cf1_RqstInit
;
192 static int hf_mq_id_cf1_RqstSecu
;
193 static int hf_mq_id_cf1_mqreq
;
194 static int hf_mq_id_cf1_svrsec
;
195 static int hf_mq_id_cf1_runtime
;
196 static int* const pf_flds_cf1
[] =
198 &hf_mq_id_cf1_runtime
,
199 &hf_mq_id_cf1_svrsec
,
201 &hf_mq_id_cf1_RqstSecu
,
202 &hf_mq_id_cf1_RqstInit
,
203 &hf_mq_id_cf1_splitmsg
,
204 &hf_mq_id_cf1_convcap
,
205 &hf_mq_id_cf1_msgseq
,
209 /* Initial Data - Init Error Flag 1 */
210 static int hf_mq_id_ief1_ccsid
;
211 static int hf_mq_id_ief1_enc
;
212 static int hf_mq_id_ief1_mxtrsz
;
213 static int hf_mq_id_ief1_fap
;
214 static int hf_mq_id_ief1_mxmsgsz
;
215 static int hf_mq_id_ief1_mxmsgpb
;
216 static int hf_mq_id_ief1_seqwrap
;
217 static int hf_mq_id_ief1_hbint
;
218 static int* const pf_flds_ef1
[] =
220 &hf_mq_id_ief1_hbint
,
221 &hf_mq_id_ief1_seqwrap
,
222 &hf_mq_id_ief1_mxmsgpb
,
223 &hf_mq_id_ief1_mxmsgsz
,
225 &hf_mq_id_ief1_mxtrsz
,
227 &hf_mq_id_ief1_ccsid
,
231 /* Initial Data - Capability Flag 2 */
232 static int hf_mq_id_cf2_CanDstLst
;
233 static int hf_mq_id_cf2_FstMsgReq
;
234 static int hf_mq_id_cf2_RespConv
;
235 static int hf_mq_id_cf2_XARequest
;
236 static int hf_mq_id_cf2_XARunTApp
;
237 static int hf_mq_id_cf2_SPIRqst
;
238 static int hf_mq_id_cf2_DualUOW
;
239 static int hf_mq_id_cf2_CanTrcRte
;
240 static int* const pf_flds_cf2
[] =
242 &hf_mq_id_cf2_CanTrcRte
,
243 &hf_mq_id_cf2_SPIRqst
,
244 &hf_mq_id_cf2_XARunTApp
,
245 &hf_mq_id_cf2_XARequest
,
246 &hf_mq_id_cf2_DualUOW
,
247 &hf_mq_id_cf2_RespConv
,
248 &hf_mq_id_cf2_FstMsgReq
,
249 &hf_mq_id_cf2_CanDstLst
,
253 /* Initial Data - Init Error Flag 2 */
254 static int hf_mq_id_ief2_HdrCmpLst
;
255 static int hf_mq_id_ief2_MsgCmpLst
;
256 static int hf_mq_id_ief2_SSLReset
;
257 static int* const pf_flds_ef2
[] =
259 &hf_mq_id_ief2_SSLReset
,
260 &hf_mq_id_ief2_MsgCmpLst
,
261 &hf_mq_id_ief2_HdrCmpLst
,
265 /* Initial Data - Capability Flag 3 */
266 static int hf_mq_id_cf3_CanMsgPrp
;
267 static int hf_mq_id_cf3_CanMulticast
;
268 static int hf_mq_id_cf3_PropIntSep
;
269 static int hf_mq_id_cf3_MPlxSyGet
;
270 static int hf_mq_id_cf3_ProtAlgorit
;
271 static int hf_mq_id_cf3_CanGenConnTag
;
273 static int* const pf_flds_cf3
[] =
275 &hf_mq_id_cf3_ProtAlgorit
,
276 &hf_mq_id_cf3_MPlxSyGet
,
277 &hf_mq_id_cf3_PropIntSep
,
278 &hf_mq_id_cf3_CanMulticast
,
279 &hf_mq_id_cf3_CanMsgPrp
,
280 &hf_mq_id_cf3_CanGenConnTag
,
284 static int hf_mq_uid_StructID
;
285 static int hf_mq_uid_userid
;
286 static int hf_mq_uid_password
;
287 static int hf_mq_uid_longuserid
;
288 static int hf_mq_sidlen
;
289 static int hf_mq_sidtyp
;
290 static int hf_mq_securityid
;
292 static int hf_mq_conn_QMgr
;
293 static int hf_mq_conn_appname
;
294 static int hf_mq_conn_apptype
;
295 static int hf_mq_conn_acttoken
;
296 static int hf_mq_conn_Xoptions
;
297 static int hf_mq_conn_options
;
298 static int hf_mq_fcno_StructID
;
299 static int hf_mq_fcno_prodid
;
300 static int hf_mq_fcno_mqmid
;
301 static int hf_mq_fcno_version
;
302 static int hf_mq_fcno_capflag
;
303 static int hf_mq_fcno_conn_tag
;
304 static int hf_mq_fcno_retconn_tag
;
305 static int hf_mq_fcno_unknowb01
;
307 static int hf_mq_inq_nbsel
;
308 static int hf_mq_inq_nbint
;
309 static int hf_mq_inq_charlen
;
310 static int hf_mq_inq_sel
;
311 static int hf_mq_inq_intvalue
;
312 static int hf_mq_inq_charvalues
;
314 static int hf_mq_spi_verb
;
315 static int hf_mq_spi_version
;
316 static int hf_mq_spi_length
;
317 static int hf_mq_spi_base_StructID
;
318 static int hf_mq_spi_base_version
;
319 static int hf_mq_spi_base_length
;
320 static int hf_mq_spi_spqo_nbverb
;
321 static int hf_mq_spi_spqo_verbid
;
322 static int hf_mq_spi_spqo_maxiover
;
323 static int hf_mq_spi_spqo_maxinver
;
324 static int hf_mq_spi_spqo_maxouver
;
325 static int hf_mq_spi_spqo_flags
;
326 static int hf_mq_spi_spai_mode
;
327 static int hf_mq_spi_spai_unknown1
;
328 static int hf_mq_spi_spai_unknown2
;
329 static int hf_mq_spi_spai_msgid
;
330 static int hf_mq_spi_spgi_batchsz
;
331 static int hf_mq_spi_spgi_batchint
;
332 static int hf_mq_spi_spgi_maxmsgsz
;
333 static int hf_mq_spi_spgo_options
;
334 static int hf_mq_spi_spgo_size
;
336 static int hf_mq_spi_opt_blank
;
337 static int hf_mq_spi_opt_syncp
;
338 static int hf_mq_spi_opt_deferred
;
339 static int* const pf_flds_spiopt
[] =
341 &hf_mq_spi_opt_deferred
,
342 &hf_mq_spi_opt_syncp
,
343 &hf_mq_spi_opt_blank
,
347 static int hf_mq_put_length
;
349 static int hf_mq_close_options
;
350 static int hf_mq_close_options_DELETE
;
351 static int hf_mq_close_options_DELETE_PURGE
;
352 static int hf_mq_close_options_KEEP_SUB
;
353 static int hf_mq_close_options_REMOVE_SUB
;
354 static int hf_mq_close_options_QUIESCE
;
355 static int* const pf_flds_clsopt
[] =
357 &hf_mq_close_options_QUIESCE
,
358 &hf_mq_close_options_REMOVE_SUB
,
359 &hf_mq_close_options_KEEP_SUB
,
360 &hf_mq_close_options_DELETE_PURGE
,
361 &hf_mq_close_options_DELETE
,
365 static int hf_mq_open_options
;
366 static int hf_mq_open_options_INPUT_SHARED
;
367 static int hf_mq_open_options_INPUT_AS_Q_DEF
;
368 static int hf_mq_open_options_INPUT_EXCLUSIVE
;
369 static int hf_mq_open_options_BROWSE
;
370 static int hf_mq_open_options_OUTPUT
;
371 static int hf_mq_open_options_INQUIRE
;
372 static int hf_mq_open_options_SET
;
373 static int hf_mq_open_options_SAVE_ALL_CTX
;
374 static int hf_mq_open_options_PASS_IDENT_CTX
;
375 static int hf_mq_open_options_PASS_ALL_CTX
;
376 static int hf_mq_open_options_SET_IDENT_CTX
;
377 static int hf_mq_open_options_SET_ALL_CONTEXT
;
378 static int hf_mq_open_options_ALT_USER_AUTH
;
379 static int hf_mq_open_options_FAIL_IF_QUIESC
;
380 static int hf_mq_open_options_BIND_ON_OPEN
;
381 static int hf_mq_open_options_BIND_NOT_FIXED
;
382 static int hf_mq_open_options_RESOLVE_NAMES
;
383 static int hf_mq_open_options_CO_OP
;
384 static int hf_mq_open_options_RESOLVE_LOCAL_Q
;
385 static int hf_mq_open_options_NO_READ_AHEAD
;
386 static int hf_mq_open_options_READ_AHEAD
;
387 static int hf_mq_open_options_NO_MULTICAST
;
388 static int hf_mq_open_options_BIND_ON_GROUP
;
389 static int* const pf_flds_opnopt
[] =
391 &hf_mq_open_options_BIND_ON_GROUP
,
392 &hf_mq_open_options_NO_MULTICAST
,
393 &hf_mq_open_options_READ_AHEAD
,
394 &hf_mq_open_options_NO_READ_AHEAD
,
395 &hf_mq_open_options_RESOLVE_LOCAL_Q
,
396 &hf_mq_open_options_CO_OP
,
397 &hf_mq_open_options_RESOLVE_NAMES
,
398 &hf_mq_open_options_BIND_NOT_FIXED
,
399 &hf_mq_open_options_BIND_ON_OPEN
,
400 &hf_mq_open_options_FAIL_IF_QUIESC
,
401 &hf_mq_open_options_ALT_USER_AUTH
,
402 &hf_mq_open_options_SET_ALL_CONTEXT
,
403 &hf_mq_open_options_SET_IDENT_CTX
,
404 &hf_mq_open_options_PASS_ALL_CTX
,
405 &hf_mq_open_options_PASS_IDENT_CTX
,
406 &hf_mq_open_options_SAVE_ALL_CTX
,
407 &hf_mq_open_options_SET
,
408 &hf_mq_open_options_INQUIRE
,
409 &hf_mq_open_options_OUTPUT
,
410 &hf_mq_open_options_BROWSE
,
411 &hf_mq_open_options_INPUT_EXCLUSIVE
,
412 &hf_mq_open_options_INPUT_SHARED
,
413 &hf_mq_open_options_INPUT_AS_Q_DEF
,
417 static int hf_mq_fopa_StructID
;
418 static int hf_mq_fopa_version
;
419 static int hf_mq_fopa_length
;
420 static int hf_mq_fopa_DefPersistence
;
421 static int hf_mq_fopa_DefPutRespType
;
422 static int hf_mq_fopa_DefReadAhead
;
423 static int hf_mq_fopa_PropertyControl
;
424 static int hf_mq_fopa_Unknown
;
426 static int hf_mq_fcmi_StructID
;
427 static int hf_mq_fcmi_unknown
;
429 static int hf_mq_ping_length
;
430 static int hf_mq_ping_buffer
;
431 static int hf_mq_reset_length
;
432 static int hf_mq_reset_seqnum
;
433 static int hf_mq_status_length
;
434 static int hf_mq_status_code
;
435 static int hf_mq_status_value
;
437 static int hf_mq_caut_StructID
;
438 static int hf_mq_caut_AuthType
;
439 static int hf_mq_caut_UsrMaxLen
;
440 static int hf_mq_caut_PwdMaxLen
;
441 static int hf_mq_caut_UsrLength
;
442 static int hf_mq_caut_PwdLength
;
443 static int hf_mq_caut_usr
;
444 static int hf_mq_caut_psw
;
446 static int hf_mq_od_StructID
;
447 static int hf_mq_od_version
;
448 static int hf_mq_od_objecttype
;
449 static int hf_mq_od_objectname
;
450 static int hf_mq_od_objqmgrname
;
451 static int hf_mq_od_dynqname
;
452 static int hf_mq_od_altuserid
;
453 static int hf_mq_od_recspresent
;
454 static int hf_mq_od_knowndstcnt
;
455 static int hf_mq_od_unknowdstcnt
;
456 static int hf_mq_od_invaldstcnt
;
457 static int hf_mq_od_objrecofs
;
458 static int hf_mq_od_resprecofs
;
459 static int hf_mq_od_objrecptr
;
460 static int hf_mq_od_resprecptr
;
461 static int hf_mq_od_altsecurid
;
462 static int hf_mq_od_resolvqname
;
463 static int hf_mq_od_resolvqmgrnm
;
464 static int hf_mq_od_resolvobjtyp
;
466 static int hf_mq_or_objname
;
467 static int hf_mq_or_objqmgrname
;
468 static int hf_mq_rr_compcode
;
469 static int hf_mq_rr_reascode
;
470 static int hf_mq_pmr_msgid
;
471 static int hf_mq_pmr_correlid
;
472 static int hf_mq_pmr_groupid
;
473 static int hf_mq_pmr_feedback
;
474 static int hf_mq_pmr_acttoken
;
475 static int hf_mq_md_StructID
;
476 static int hf_mq_md_version
;
477 static int hf_mq_md_report
;
478 static int hf_mq_md_msgtype
;
479 static int hf_mq_md_expiry
;
480 static int hf_mq_md_feedback
;
481 static int hf_mq_md_encoding
;
482 static int hf_mq_md_ccsid
;
483 static int hf_mq_md_format
;
484 static int hf_mq_md_priority
;
485 static int hf_mq_md_persistence
;
486 static int hf_mq_md_msgid
;
487 static int hf_mq_md_correlid
;
488 static int hf_mq_md_backoutcnt
;
489 static int hf_mq_md_replytoq
;
490 static int hf_mq_md_replytoqmgr
;
491 static int hf_mq_md_userid
;
492 static int hf_mq_md_acttoken
;
493 static int hf_mq_md_appliddata
;
494 static int hf_mq_md_putappltype
;
495 static int hf_mq_md_putapplname
;
496 static int hf_mq_md_putdate
;
497 static int hf_mq_md_puttime
;
498 static int hf_mq_md_apporigdata
;
499 static int hf_mq_md_groupid
;
500 static int hf_mq_md_msgseqnumber
;
501 static int hf_mq_md_offset
;
502 static int hf_mq_md_msgflags
;
503 static int hf_mq_md_origlen
;
504 static int hf_mq_dlh_StructID
;
505 static int hf_mq_dlh_version
;
506 static int hf_mq_dlh_reason
;
507 static int hf_mq_dlh_destq
;
508 static int hf_mq_dlh_destqmgr
;
509 static int hf_mq_dlh_encoding
;
510 static int hf_mq_dlh_ccsid
;
511 static int hf_mq_dlh_format
;
512 static int hf_mq_dlh_putappltype
;
513 static int hf_mq_dlh_putapplname
;
514 static int hf_mq_dlh_putdate
;
515 static int hf_mq_dlh_puttime
;
517 static int hf_mq_gmo_StructID
;
518 static int hf_mq_gmo_version
;
519 static int hf_mq_gmo_options
;
520 static int hf_mq_gmo_waitinterval
;
521 static int hf_mq_gmo_signal1
;
522 static int hf_mq_gmo_signal2
;
523 static int hf_mq_gmo_resolvqname
;
524 static int hf_mq_gmo_matchoptions
;
525 static int hf_mq_gmo_groupstatus
;
526 static int hf_mq_gmo_segmstatus
;
527 static int hf_mq_gmo_segmentation
;
528 static int hf_mq_gmo_reserved
;
529 static int hf_mq_gmo_msgtoken
;
530 static int hf_mq_gmo_returnedlen
;
531 static int hf_mq_gmo_reserved2
;
532 static int hf_mq_gmo_msghandle
;
534 static int hf_mq_gmo_options_PROPERTIES_COMPATIBILITY
;
535 static int hf_mq_gmo_options_PROPERTIES_IN_HANDLE
;
536 static int hf_mq_gmo_options_NO_PROPERTIES
;
537 static int hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2
;
538 static int hf_mq_gmo_options_UNMARKED_BROWSE_MSG
;
539 static int hf_mq_gmo_options_UNMARK_BROWSE_HANDLE
;
540 static int hf_mq_gmo_options_UNMARK_BROWSE_CO_OP
;
541 static int hf_mq_gmo_options_MARK_BROWSE_CO_OP
;
542 static int hf_mq_gmo_options_MARK_BROWSE_HANDLE
;
543 static int hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE
;
544 static int hf_mq_gmo_options_ALL_MSGS_AVAILABLE
;
545 static int hf_mq_gmo_options_COMPLETE_MSG
;
546 static int hf_mq_gmo_options_LOGICAL_ORDER
;
547 static int hf_mq_gmo_options_CONVERT
;
548 static int hf_mq_gmo_options_FAIL_IF_QUIESCING
;
549 static int hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT
;
550 static int hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR
;
551 static int hf_mq_gmo_options_UNLOCK
;
552 static int hf_mq_gmo_options_LOCK
;
553 static int hf_mq_gmo_options_MSG_UNDER_CURSOR
;
554 static int hf_mq_gmo_options_MARK_SKIP_BACKOUT
;
555 static int hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG
;
556 static int hf_mq_gmo_options_BROWSE_NEXT
;
557 static int hf_mq_gmo_options_BROWSE_FIRST
;
558 static int hf_mq_gmo_options_SET_SIGNAL
;
559 static int hf_mq_gmo_options_NO_SYNCPOINT
;
560 static int hf_mq_gmo_options_SYNCPOINT
;
561 static int hf_mq_gmo_options_WAIT
;
562 static int* const pf_flds_gmoopt
[] =
564 &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY
,
565 &hf_mq_gmo_options_PROPERTIES_IN_HANDLE
,
566 &hf_mq_gmo_options_NO_PROPERTIES
,
567 &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2
,
568 &hf_mq_gmo_options_UNMARKED_BROWSE_MSG
,
569 &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE
,
570 &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP
,
571 &hf_mq_gmo_options_MARK_BROWSE_CO_OP
,
572 &hf_mq_gmo_options_MARK_BROWSE_HANDLE
,
573 &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE
,
574 &hf_mq_gmo_options_ALL_MSGS_AVAILABLE
,
575 &hf_mq_gmo_options_COMPLETE_MSG
,
576 &hf_mq_gmo_options_LOGICAL_ORDER
,
577 &hf_mq_gmo_options_CONVERT
,
578 &hf_mq_gmo_options_FAIL_IF_QUIESCING
,
579 &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT
,
580 &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR
,
581 &hf_mq_gmo_options_UNLOCK
,
582 &hf_mq_gmo_options_LOCK
,
583 &hf_mq_gmo_options_MSG_UNDER_CURSOR
,
584 &hf_mq_gmo_options_MARK_SKIP_BACKOUT
,
585 &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG
,
586 &hf_mq_gmo_options_BROWSE_NEXT
,
587 &hf_mq_gmo_options_BROWSE_FIRST
,
588 &hf_mq_gmo_options_SET_SIGNAL
,
589 &hf_mq_gmo_options_NO_SYNCPOINT
,
590 &hf_mq_gmo_options_SYNCPOINT
,
591 &hf_mq_gmo_options_WAIT
,
595 static int hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN
;
596 static int hf_mq_gmo_matchoptions_MATCH_OFFSET
;
597 static int hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER
;
598 static int hf_mq_gmo_matchoptions_MATCH_GROUP_ID
;
599 static int hf_mq_gmo_matchoptions_MATCH_CORREL_ID
;
600 static int hf_mq_gmo_matchoptions_MATCH_MSG_ID
;
601 static int* const pf_flds_mtchopt
[] =
603 &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN
,
604 &hf_mq_gmo_matchoptions_MATCH_OFFSET
,
605 &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER
,
606 &hf_mq_gmo_matchoptions_MATCH_GROUP_ID
,
607 &hf_mq_gmo_matchoptions_MATCH_CORREL_ID
,
608 &hf_mq_gmo_matchoptions_MATCH_MSG_ID
,
612 static int hf_mq_lpoo_StructID
;
613 static int hf_mq_lpoo_version
;
614 static int hf_mq_lpoo_lpiopts
;
615 static int hf_mq_lpoo_defpersist
;
616 static int hf_mq_lpoo_defputresptype
;
617 static int hf_mq_lpoo_defreadahead
;
618 static int hf_mq_lpoo_propertyctl
;
619 static int hf_mq_lpoo_qprotect
;
620 static int hf_mq_lpoo_qprotect_val1
;
621 static int hf_mq_lpoo_qprotect_val2
;
623 static int hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT
;
624 static int hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT
;
625 static int hf_mq_lpoo_lpiopts_SAVE_USER_CTXT
;
626 static int* const pf_flds_lpooopt
[] =
628 &hf_mq_lpoo_lpiopts_SAVE_USER_CTXT
,
629 &hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT
,
630 &hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT
,
635 static int hf_mq_charv_vsptr
;
636 static int hf_mq_charv_vsoffset
;
637 static int hf_mq_charv_vsbufsize
;
638 static int hf_mq_charv_vslength
;
639 static int hf_mq_charv_vsccsid
;
640 static int hf_mq_charv_vsvalue
;
642 static int hf_mq_pmo_StructID
;
643 static int hf_mq_pmo_version
;
644 static int hf_mq_pmo_options
;
645 static int hf_mq_pmo_timeout
;
646 static int hf_mq_pmo_context
;
647 static int hf_mq_pmo_knowndstcnt
;
648 static int hf_mq_pmo_unkndstcnt
;
649 static int hf_mq_pmo_invaldstcnt
;
650 static int hf_mq_pmo_resolvqname
;
651 static int hf_mq_pmo_resolvqmgr
;
652 static int hf_mq_pmo_recspresent
;
653 static int hf_mq_pmo_putmsgrecfld
;
654 static int hf_mq_pmo_putmsgrecofs
;
655 static int hf_mq_pmo_resprecofs
;
656 static int hf_mq_pmo_putmsgrecptr
;
657 static int hf_mq_pmo_resprecptr
;
658 static int hf_mq_pmo_originalmsghandle
;
659 static int hf_mq_pmo_newmsghandle
;
660 static int hf_mq_pmo_action
;
661 static int hf_mq_pmo_publevel
;
663 static int hf_mq_xa_length
;
664 static int hf_mq_xa_returnvalue
;
665 static int hf_mq_xa_tmflags
;
666 static int hf_mq_xa_rmid
;
667 static int hf_mq_xa_count
;
668 static int hf_mq_xa_xid_formatid
;
669 static int hf_mq_xa_xid_glbxid_len
;
670 static int hf_mq_xa_xid_brq_length
;
671 static int hf_mq_xa_xid_globalxid
;
672 static int hf_mq_xa_xid_brq
;
673 static int hf_mq_xa_xainfo_length
;
674 static int hf_mq_xa_xainfo_value
;
676 static int hf_mq_pmo_options_NOT_OWN_SUBS
;
677 static int hf_mq_pmo_options_SUPPRESS_REPLYTO
;
678 static int hf_mq_pmo_options_SCOPE_QMGR
;
679 static int hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY
;
680 static int hf_mq_pmo_options_RETAIN
;
681 static int hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED
;
682 static int hf_mq_pmo_options_RESOLVE_LOCAL_Q
;
683 static int hf_mq_pmo_options_SYNC_RESPONSE
;
684 static int hf_mq_pmo_options_ASYNC_RESPONSE
;
685 static int hf_mq_pmo_options_LOGICAL_ORDER
;
686 static int hf_mq_pmo_options_NO_CONTEXT
;
687 static int hf_mq_pmo_options_FAIL_IF_QUIESCING
;
688 static int hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY
;
689 static int hf_mq_pmo_options_SET_ALL_CONTEXT
;
690 static int hf_mq_pmo_options_SET_IDENTITY_CONTEXT
;
691 static int hf_mq_pmo_options_PASS_ALL_CONTEXT
;
692 static int hf_mq_pmo_options_PASS_IDENTITY_CONTEXT
;
693 static int hf_mq_pmo_options_NEW_CORREL_ID
;
694 static int hf_mq_pmo_options_NEW_MSG_ID
;
695 static int hf_mq_pmo_options_DEFAULT_CONTEXT
;
696 static int hf_mq_pmo_options_NO_SYNCPOINT
;
697 static int hf_mq_pmo_options_SYNCPOINT
;
698 static int* const pf_flds_pmoopt
[] =
700 &hf_mq_pmo_options_NOT_OWN_SUBS
,
701 &hf_mq_pmo_options_SUPPRESS_REPLYTO
,
702 &hf_mq_pmo_options_SCOPE_QMGR
,
703 &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY
,
704 &hf_mq_pmo_options_RETAIN
,
705 &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED
,
706 &hf_mq_pmo_options_RESOLVE_LOCAL_Q
,
707 &hf_mq_pmo_options_SYNC_RESPONSE
,
708 &hf_mq_pmo_options_ASYNC_RESPONSE
,
709 &hf_mq_pmo_options_LOGICAL_ORDER
,
710 &hf_mq_pmo_options_NO_CONTEXT
,
711 &hf_mq_pmo_options_FAIL_IF_QUIESCING
,
712 &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY
,
713 &hf_mq_pmo_options_SET_ALL_CONTEXT
,
714 &hf_mq_pmo_options_SET_IDENTITY_CONTEXT
,
715 &hf_mq_pmo_options_PASS_ALL_CONTEXT
,
716 &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT
,
717 &hf_mq_pmo_options_NEW_CORREL_ID
,
718 &hf_mq_pmo_options_NEW_MSG_ID
,
719 &hf_mq_pmo_options_DEFAULT_CONTEXT
,
720 &hf_mq_pmo_options_NO_SYNCPOINT
,
721 &hf_mq_pmo_options_SYNCPOINT
,
725 static int hf_mq_xa_tmflags_join
;
726 static int hf_mq_xa_tmflags_endrscan
;
727 static int hf_mq_xa_tmflags_startrscan
;
728 static int hf_mq_xa_tmflags_suspend
;
729 static int hf_mq_xa_tmflags_success
;
730 static int hf_mq_xa_tmflags_resume
;
731 static int hf_mq_xa_tmflags_fail
;
732 static int hf_mq_xa_tmflags_onephase
;
733 static int* const pf_flds_tmflags
[] =
735 &hf_mq_xa_tmflags_onephase
,
736 &hf_mq_xa_tmflags_fail
,
737 &hf_mq_xa_tmflags_resume
,
738 &hf_mq_xa_tmflags_success
,
739 &hf_mq_xa_tmflags_suspend
,
740 &hf_mq_xa_tmflags_startrscan
,
741 &hf_mq_xa_tmflags_endrscan
,
742 &hf_mq_xa_tmflags_join
,
746 static int hf_mq_msgreq_version
;
747 static int hf_mq_msgreq_handle
;
748 static int hf_mq_msgreq_RecvBytes
;
749 static int hf_mq_msgreq_RqstBytes
;
750 static int hf_mq_msgreq_MaxMsgLen
;
751 static int hf_mq_msgreq_WaitIntrv
;
752 static int hf_mq_msgreq_QueStatus
;
753 static int hf_mq_msgreq_RqstFlags
;
754 static int hf_mq_msgreq_GlbMsgIdx
;
755 static int hf_mq_msgreq_SelectIdx
;
756 static int hf_mq_msgreq_MQMDVers
;
757 static int hf_mq_msgreq_ccsid
;
758 static int hf_mq_msgreq_encoding
;
759 static int hf_mq_msgreq_MsgSeqNum
;
760 static int hf_mq_msgreq_offset
;
761 static int hf_mq_msgreq_mtchMsgId
;
762 static int hf_mq_msgreq_mtchCorId
;
763 static int hf_mq_msgreq_mtchGrpid
;
764 static int hf_mq_msgreq_mtchMsgTk
;
766 static int hf_mq_msgreq_flags_selection
;
767 static int hf_mq_msgreq_flags_F00000008
;
768 static int hf_mq_msgreq_flags_F00000004
;
769 static int hf_mq_msgreq_flags_F00000002
;
770 static int* const pf_flds_msgreq_flags
[] =
772 &hf_mq_msgreq_flags_selection
,
773 &hf_mq_msgreq_flags_F00000008
,
774 &hf_mq_msgreq_flags_F00000004
,
775 &hf_mq_msgreq_flags_F00000002
,
779 static int hf_mq_msgasy_version
;
780 static int hf_mq_msgasy_handle
;
781 static int hf_mq_msgasy_MsgIndex
;
782 static int hf_mq_msgasy_GlbMsgIdx
;
783 static int hf_mq_msgasy_SegLength
;
784 static int hf_mq_msgasy_SeleIndex
;
785 static int hf_mq_msgasy_SegmIndex
;
786 static int hf_mq_msgasy_ReasonCod
;
787 static int hf_mq_msgasy_ActMsgLen
;
788 static int hf_mq_msgasy_TotMsgLen
;
789 static int hf_mq_msgasy_MsgToken
;
790 static int hf_mq_msgasy_Status
;
791 static int hf_mq_msgasy_resolQNLn
;
792 static int hf_mq_msgasy_resolQNme
;
793 static int hf_mq_msgasy_padding
;
795 static int hf_mq_notif_vers
;
796 static int hf_mq_notif_handle
;
797 static int hf_mq_notif_code
;
798 static int hf_mq_notif_value
;
800 static int hf_mq_head_StructID
;
801 static int hf_mq_head_version
;
802 static int hf_mq_head_length
;
803 static int hf_mq_head_encoding
;
804 static int hf_mq_head_ccsid
;
805 static int hf_mq_head_format
;
806 static int hf_mq_head_flags
;
807 static int hf_mq_head_struct
;
809 static int hf_mq_dh_flags_newmsgid
;
810 static int* const pf_flds_dh_flags
[] =
812 &hf_mq_dh_flags_newmsgid
,
815 static int hf_mq_dh_putmsgrecfld
;
816 static int hf_mq_dh_recspresent
;
817 static int hf_mq_dh_objrecofs
;
818 static int hf_mq_dh_putmsgrecofs
;
820 static int hf_mq_iih_flags_passexpir
;
821 static int hf_mq_iih_flags_replyfmtnone
;
822 static int hf_mq_iih_flags_ignorepurg
;
823 static int hf_mq_iih_flags_cmqrqstresp
;
824 static int* const pf_flds_iih_flags
[] =
826 &hf_mq_iih_flags_cmqrqstresp
,
827 &hf_mq_iih_flags_ignorepurg
,
828 &hf_mq_iih_flags_replyfmtnone
,
829 &hf_mq_iih_flags_passexpir
,
832 static int hf_mq_iih_ltermoverride
;
833 static int hf_mq_iih_mfsmapname
;
834 static int hf_mq_iih_replytofmt
;
835 static int hf_mq_iih_authenticator
;
836 static int hf_mq_iih_transinstid
;
837 static int hf_mq_iih_transstate
;
838 static int hf_mq_iih_commimode
;
839 static int hf_mq_iih_securityscope
;
840 static int hf_mq_iih_reserved
;
842 static int hf_mq_ims_ll
;
843 static int hf_mq_ims_zz
;
844 static int hf_mq_ims_trx
;
845 static int hf_mq_ims_data
;
847 static int hf_mq_tm_StructID
;
848 static int hf_mq_tm_version
;
849 static int hf_mq_tm_QName
;
850 static int hf_mq_tm_ProcessNme
;
851 static int hf_mq_tm_TriggerData
;
852 static int hf_mq_tm_ApplType
;
853 static int hf_mq_tm_ApplId
;
854 static int hf_mq_tm_EnvData
;
855 static int hf_mq_tm_UserData
;
857 static int hf_mq_tmc2_StructID
;
858 static int hf_mq_tmc2_version
;
859 static int hf_mq_tmc2_QName
;
860 static int hf_mq_tmc2_ProcessNme
;
861 static int hf_mq_tmc2_TriggerData
;
862 static int hf_mq_tmc2_ApplType
;
863 static int hf_mq_tmc2_ApplId
;
864 static int hf_mq_tmc2_EnvData
;
865 static int hf_mq_tmc2_UserData
;
866 static int hf_mq_tmc2_QMgrName
;
868 static int hf_mq_cih_flags_synconret
;
869 static int hf_mq_cih_flags_replywonulls
;
870 static int hf_mq_cih_flags_passexpir
;
871 static int* const pf_flds_cih_flags
[] =
873 &hf_mq_cih_flags_synconret
,
874 &hf_mq_cih_flags_replywonulls
,
875 &hf_mq_cih_flags_passexpir
,
878 static int hf_mq_cih_returncode
;
879 static int hf_mq_cih_compcode
;
880 static int hf_mq_cih_reasoncode
;
881 static int hf_mq_cih_uowcontrols
;
882 static int hf_mq_cih_getwaitintv
;
883 static int hf_mq_cih_linktype
;
884 static int hf_mq_cih_outdatalen
;
885 static int hf_mq_cih_facilkeeptime
;
886 static int hf_mq_cih_adsdescriptor
;
887 static int hf_mq_cih_converstask
;
888 static int hf_mq_cih_taskendstatus
;
889 static int hf_mq_cih_bridgefactokn
;
890 static int hf_mq_cih_function
;
891 static int hf_mq_cih_abendcode
;
892 static int hf_mq_cih_authenticator
;
893 static int hf_mq_cih_reserved
;
894 static int hf_mq_cih_replytofmt
;
895 static int hf_mq_cih_remotesysid
;
896 static int hf_mq_cih_remotetransid
;
897 static int hf_mq_cih_transactionid
;
898 static int hf_mq_cih_facilitylike
;
899 static int hf_mq_cih_attentionid
;
900 static int hf_mq_cih_startcode
;
901 static int hf_mq_cih_cancelcode
;
902 static int hf_mq_cih_nexttransid
;
903 static int hf_mq_cih_reserved2
;
904 static int hf_mq_cih_reserved3
;
905 static int hf_mq_cih_cursorpos
;
906 static int hf_mq_cih_erroroffset
;
907 static int hf_mq_cih_inputitem
;
908 static int hf_mq_cih_reserved4
;
910 static int hf_mq_rfh_ccsid
;
911 static int hf_mq_rfh_length
;
912 static int hf_mq_rfh_string
;
914 static int hf_mq_rmh_flags_last
;
915 static int* const pf_flds_rmh_flags
[] =
917 &hf_mq_rmh_flags_last
,
920 static int hf_mq_rmh_objecttype
;
921 static int hf_mq_rmh_objectinstid
;
922 static int hf_mq_rmh_srcenvlen
;
923 static int hf_mq_rmh_srcenvofs
;
924 static int hf_mq_rmh_srcnamelen
;
925 static int hf_mq_rmh_srcnameofs
;
926 static int hf_mq_rmh_dstenvlen
;
927 static int hf_mq_rmh_dstenvofs
;
928 static int hf_mq_rmh_dstnamelen
;
929 static int hf_mq_rmh_dstnameofs
;
930 static int hf_mq_rmh_datalogiclen
;
931 static int hf_mq_rmh_datalogicofsl
;
932 static int hf_mq_rmh_datalogicofsh
;
934 static int hf_mq_wih_servicename
;
935 static int hf_mq_wih_servicestep
;
936 static int hf_mq_wih_msgtoken
;
937 static int hf_mq_wih_reserved
;
940 static int ett_mq_tsh
;
941 static int ett_mq_tsh_tcf
;
942 static int ett_mq_tsh_tcf2
;
943 static int ett_mq_api
;
944 static int ett_mq_socket
;
945 static int ett_mq_caut
;
946 static int ett_mq_msh
;
947 static int ett_mq_xqh
;
948 static int ett_mq_id
;
949 static int ett_mq_id_cf1
;
950 static int ett_mq_id_cf2
;
951 static int ett_mq_id_cf3
;
952 static int ett_mq_id_ecf1
;
953 static int ett_mq_id_ecf2
;
954 static int ett_mq_id_ecf3
;
955 static int ett_mq_id_ief1
;
956 static int ett_mq_id_ief2
;
957 static int ett_mq_uid
;
958 static int ett_mq_conn
;
959 static int ett_mq_fcno
;
960 static int ett_mq_msg
;
961 static int ett_mq_inq
;
962 static int ett_mq_spi
;
963 static int ett_mq_spi_base
; /* Factorisation of common SPI items */
964 static int ett_mq_spi_options
;
965 static int ett_mq_put
;
966 static int ett_mq_open
;
967 static int ett_mq_open_option
;
968 static int ett_mq_close_option
;
969 static int ett_mq_fopa
;
970 static int ett_mq_fcmi
;
971 static int ett_mq_ping
;
972 static int ett_mq_reset
;
973 static int ett_mq_status
;
974 static int ett_mq_od
;
975 static int ett_mq_od_objstr
;
976 static int ett_mq_od_selstr
;
977 static int ett_mq_od_resobjstr
;
978 static int ett_mq_or
;
979 static int ett_mq_rr
;
980 static int ett_mq_pmr
;
981 static int ett_mq_md
;
982 static int ett_mq_dlh
;
983 static int ett_mq_dh
;
984 static int ett_mq_gmo
;
985 static int ett_mq_gmo_option
;
986 static int ett_mq_gmo_matchoption
;
987 static int ett_mq_pmo
;
988 static int ett_mq_pmo_option
;
989 static int ett_mq_rfh_ValueName
;
990 static int ett_mq_msgreq_RqstFlags
;
992 static int ett_mq_lpoo
;
993 static int ett_mq_lpoo_lpiopts
;
995 static int ett_mq_head
; /* Factorisation of common Header structure items (DH, MDE, CIH, IIH, RFH, RMH, WIH, TM, TMC2 */
996 static int ett_mq_head_flags
;
997 static int ett_mq_ims
;
999 static int ett_mq_xa
;
1000 static int ett_mq_xa_tmflags
;
1001 static int ett_mq_xa_xid
;
1002 static int ett_mq_xa_info
;
1003 static int ett_mq_charv
;
1004 static int ett_mq_reassemb
;
1005 static int ett_mq_notif
;
1007 static int ett_mq_structid
;
1009 static expert_field ei_mq_reassembly_error
;
1011 static dissector_handle_t mq_handle
;
1012 static dissector_handle_t mq_spx_handle
;
1013 static dissector_handle_t mqpcf_handle
;
1015 static heur_dissector_list_t mq_heur_subdissector_list
;
1017 static bool mq_desegment
= true;
1018 static bool mq_reassembly
= true;
1020 static bool mq_in_reassembly
;
1022 static reassembly_table mq_reassembly_table
;
1024 DEF_VALSB(notifcode
)
1025 /* 1*/ DEF_VALS2(NC_GET_INHIBITED
, "GET_INHIBITED"),
1026 /* 2*/ DEF_VALS2(NC_GET_ALLOWED
, "GET_ALLOWED"),
1027 /* 3*/ DEF_VALS2(NC_CONN_STATE
, "CONN_STATE"),
1028 /* 4*/ DEF_VALS2(NC_CONN_STATE_REPLY
, "CONN_STATE_REPLY"),
1029 /* 5*/ DEF_VALS2(NC_Q_STATE
, "Q_STATE"),
1030 /* 6*/ DEF_VALS2(NC_Q_STATE_REPLY
, "Q_STATE_REPLY"),
1031 /* 7*/ DEF_VALS2(NC_QM_QUIESCING
, "QM_QUIESCING"),
1032 /* 8*/ DEF_VALS2(NC_TXN_ALLOWED
, "TXN_ALLOWED"),
1033 /* 9*/ DEF_VALS2(NC_TXN_REVOKE
, "TXN_REVOKE"),
1034 /* 10*/ DEF_VALS2(NC_TXN_REVOKE_REPLY
, "TXN_REVOKE_REPLY"),
1035 /* 11*/ DEF_VALS2(NC_CHECK_MSG
, "CHECK_MSG"),
1036 /* 12*/ DEF_VALS2(NC_BROWSE_FIRST
, "BROWSE_FIRST"),
1037 /* 13*/ DEF_VALS2(NC_MESSAGE_TOO_LARGE
, "MESSAGE_TOO_LARGE"),
1038 /* 14*/ DEF_VALS2(NC_STREAMING_FAILURE
, "STREAMING_FAILURE"),
1039 /* 15*/ DEF_VALS2(NC_CLIENT_ASYNC_EMPTY
, "CLIENT_ASYNC_EMPTY"),
1040 /* 16*/ DEF_VALS2(NC_STREAMING_TXN_PAUSED
, "STREAMING_TXN_PAUSED"),
1041 /* 17*/ DEF_VALS2(NC_RECONNECTION_COMPLETE
, "RECONNECTION_COMPLETE"),
1044 DEF_VALSB(spi_verbs
)
1045 /* 1*/ DEF_VALS2(SPI_QUERY
, "QUERY"),
1046 /* 2*/ DEF_VALS2(SPI_PUT
, "PUT"),
1047 /* 3*/ DEF_VALS2(SPI_GET
, "GET"),
1048 /* 4*/ DEF_VALS2(SPI_ACTIVATE
, "ACTIVATE"),
1049 /* 5*/ DEF_VALS2(SPI_SYNCHPOINT
, "SYNCHPOINT"),
1050 /* 6*/ DEF_VALS2(SPI_RESERVE
, "RESERVE"),
1051 /* 7*/ DEF_VALS2(SPI_SUBSCRIBE
, "SUBSCRIBE"),
1052 /* 11*/ DEF_VALS2(SPI_NOTIFY
, "NOTIFY"),
1053 /* 12*/ DEF_VALS2(SPI_OPEN
, "OPEN"),
1056 DEF_VALSB(spi_activate
)
1057 /* 1*/ DEF_VALS2(SPI_ACTIVATE_ENABLE
, "ENABLE"),
1058 /* 2*/ DEF_VALS2(SPI_ACTIVATE_DISABLE
, "DISABLE"),
1062 /* 1*/ DEF_VALS2(STATUS_ERR_NO_CHANNEL
, "NO_CHANNEL"),
1063 /* 2*/ DEF_VALS2(STATUS_ERR_CHANNEL_WRONG_TYPE
, "CHANNEL_WRONG_TYPE"),
1064 /* 3*/ DEF_VALS2(STATUS_ERR_QM_UNAVAILABLE
, "QM_UNAVAILABLE"),
1065 /* 4*/ DEF_VALS2(STATUS_ERR_MSG_SEQUENCE_ERROR
, "MSG_SEQUENCE_ERROR"),
1066 /* 5*/ DEF_VALS2(STATUS_ERR_QM_TERMINATING
, "QM_TERMINATING"),
1067 /* 6*/ DEF_VALS2(STATUS_ERR_CAN_NOT_STORE
, "CAN_NOT_STORE"),
1068 /* 7*/ DEF_VALS2(STATUS_ERR_USER_CLOSED
, "USER_CLOSED"),
1069 /* 10*/ DEF_VALS2(STATUS_ERR_PROTOCOL_SEGMENT_TYPE
, "REMOTE_PROTOCOL_ERROR"),
1070 /* 11*/ DEF_VALS2(STATUS_ERR_PROTOCOL_LENGTH_ERROR
, "BIND_FAILED"),
1071 /* 12*/ DEF_VALS2(STATUS_ERR_PROTOCOL_INVALID_DATA
, "MSGWRAP_DIFFERENT"),
1072 /* 14*/ DEF_VALS2(STATUS_ERR_PROTOCOL_ID_ERROR
, "REMOTE_CHANNEL_UNAVAILABLE"),
1073 /* 15*/ DEF_VALS2(STATUS_ERR_PROTOCOL_MSH_ERROR
, "TERMINATED_BY_REMOTE_EXIT"),
1074 /* 16*/ DEF_VALS2(STATUS_ERR_PROTOCOL_GENERAL
, "PROTOCOL_GENERAL"),
1075 /* 17*/ DEF_VALS2(STATUS_ERR_BATCH_FAILURE
, "BATCH_FAILURE"),
1076 /* 18*/ DEF_VALS2(STATUS_ERR_MESSAGE_LENGTH_ERROR
, "MESSAGE_LENGTH_ERROR"),
1077 /* 19*/ DEF_VALS2(STATUS_ERR_SEGMENT_NUMBER_ERROR
, "SEGMENT_NUMBER_ERROR"),
1078 /* 20*/ DEF_VALS2(STATUS_ERR_SECURITY_FAILURE
, "SECURITY_FAILURE"),
1079 /* 21*/ DEF_VALS2(STATUS_ERR_WRAP_VALUE_ERROR
, "WRAP_VALUE_ERROR"),
1080 /* 22*/ DEF_VALS2(STATUS_ERR_CHANNEL_UNAVAILABLE
, "CHANNEL_UNAVAILABLE"),
1081 /* 23*/ DEF_VALS2(STATUS_ERR_CLOSED_BY_EXIT
, "CLOSED_BY_EXIT"),
1082 /* 24*/ DEF_VALS2(STATUS_ERR_CIPHER_SPEC
, "CIPHER_SPEC"),
1083 /* 25*/ DEF_VALS2(STATUS_ERR_PEER_NAME
, "PEER_NAME"),
1084 /* 26*/ DEF_VALS2(STATUS_ERR_SSL_CLIENT_CERTIFICATE
, "SSL_CLIENT_CERTIFICATE"),
1085 /* 27*/ DEF_VALS2(STATUS_ERR_RMT_RSRCS_IN_RECOVERY
, "RMT_RSRCS_IN_RECOVERY"),
1086 /* 28*/ DEF_VALS2(STATUS_ERR_SSL_REFRESHING
, "SSL_REFRESHING"),
1087 /* 29*/ DEF_VALS2(STATUS_ERR_INVALID_HOBJ
, "INVALID_HOBJ"),
1088 /* 30*/ DEF_VALS2(STATUS_ERR_CONV_ID_ERROR
, "CONV_ID_ERROR"),
1089 /* 31*/ DEF_VALS2(STATUS_ERR_SOCKET_ACTION_TYPE
, "SOCKET_ACTION_TYPE"),
1090 /* 32*/ DEF_VALS2(STATUS_ERR_STANDBY_Q_MGR
, "STANDBY_Q_MGR"),
1091 /* 240*/ DEF_VALS2(STATUS_ERR_CCSID_NOT_SUPPORTED
, "CCSID_NOT_SUPPORTED"),
1092 /* 241*/ DEF_VALS2(STATUS_ERR_ENCODING_INVALID
, "ENCODING_INVALID"),
1093 /* 242*/ DEF_VALS2(STATUS_ERR_FAP_LEVEL
, "FAP_LEVEL"),
1094 /* 243*/ DEF_VALS2(STATUS_ERR_NEGOTIATION_FAILED
, "NEGOTIATION_FAILED"),
1096 DEF_VALS_EXTB(status
);
1099 /* 1*/ DEF_VALS2(TST_INITIAL
, "INITIAL_DATA"),
1100 /* 2*/ DEF_VALS2(TST_RESYNC
, "RESYNC_DATA"),
1101 /* 3*/ DEF_VALS2(TST_RESET
, "RESET_DATA"),
1102 /* 4*/ DEF_VALS2(TST_MESSAGE
, "MESSAGE_DATA"),
1103 /* 5*/ DEF_VALS2(TST_STATUS
, "STATUS_DATA"),
1104 /* 6*/ DEF_VALS2(TST_SECURITY
, "SECURITY_DATA"),
1105 /* 7*/ DEF_VALS2(TST_PING
, "PING_DATA"),
1106 /* 8*/ DEF_VALS2(TST_USERID
, "USERID_DATA"),
1107 /* 9*/ DEF_VALS2(TST_HEARTBEAT
, "HEARTBEAT"),
1108 /* 10*/ DEF_VALS2(TST_CONAUTH_INFO
, "CONAUTH_INFO"),
1109 /* 11*/ DEF_VALS2(TST_RENEGOTIATE_DATA
, "RENEGOTIATE_DATA"),
1110 /* 12*/ DEF_VALS2(TST_SOCKET_ACTION
, "SOCKET_ACTION"),
1111 /* 13*/ DEF_VALS2(TST_ASYNC_MESSAGE
, "ASYNC_MESSAGE"),
1112 /* 14*/ DEF_VALS2(TST_REQUEST_MSGS
, "REQUEST_MSGS"),
1113 /* 15*/ DEF_VALS2(TST_NOTIFICATION
, "NOTIFICATION"),
1114 /* 129*/ DEF_VALS2(TST_MQCONN
, "MQCONN"),
1115 /* 130*/ DEF_VALS2(TST_MQDISC
, "MQDISC"),
1116 /* 131*/ DEF_VALS2(TST_MQOPEN
, "MQOPEN"),
1117 /* 132*/ DEF_VALS2(TST_MQCLOSE
, "MQCLOSE"),
1118 /* 133*/ DEF_VALS2(TST_MQGET
, "MQGET"),
1119 /* 134*/ DEF_VALS2(TST_MQPUT
, "MQPUT"),
1120 /* 135*/ DEF_VALS2(TST_MQPUT1
, "MQPUT1"),
1121 /* 136*/ DEF_VALS2(TST_MQSET
, "MQSET"),
1122 /* 137*/ DEF_VALS2(TST_MQINQ
, "MQINQ"),
1123 /* 138*/ DEF_VALS2(TST_MQCMIT
, "MQCMIT"),
1124 /* 139*/ DEF_VALS2(TST_MQBACK
, "MQBACK"),
1125 /* 140*/ DEF_VALS2(TST_SPI
, "SPI"),
1126 /* 141*/ DEF_VALS2(TST_MQSTAT
, "MQSTAT"),
1127 /* 142*/ DEF_VALS2(TST_MQSUB
, "MQSUB"),
1128 /* 143*/ DEF_VALS2(TST_MQSUBRQ
, "MQSUBRQ"),
1129 /* 145*/ DEF_VALS2(TST_MQCONN_REPLY
, "MQCONN_REPLY"),
1130 /* 146*/ DEF_VALS2(TST_MQDISC_REPLY
, "MQDISC_REPLY"),
1131 /* 147*/ DEF_VALS2(TST_MQOPEN_REPLY
, "MQOPEN_REPLY"),
1132 /* 148*/ DEF_VALS2(TST_MQCLOSE_REPLY
, "MQCLOSE_REPLY"),
1133 /* 149*/ DEF_VALS2(TST_MQGET_REPLY
, "MQGET_REPLY"),
1134 /* 150*/ DEF_VALS2(TST_MQPUT_REPLY
, "MQPUT_REPLY"),
1135 /* 151*/ DEF_VALS2(TST_MQPUT1_REPLY
, "MQPUT1_REPLY"),
1136 /* 152*/ DEF_VALS2(TST_MQSET_REPLY
, "MQSET_REPLY"),
1137 /* 153*/ DEF_VALS2(TST_MQINQ_REPLY
, "MQINQ_REPLY"),
1138 /* 154*/ DEF_VALS2(TST_MQCMIT_REPLY
, "MQCMIT_REPLY"),
1139 /* 155*/ DEF_VALS2(TST_MQBACK_REPLY
, "MQBACK_REPLY"),
1140 /* 156*/ DEF_VALS2(TST_SPI_REPLY
, "SPI_REPLY"),
1141 /* 157*/ DEF_VALS2(TST_MQSTAT_REPLY
, "MQSTAT_REPLY"),
1142 /* 158*/ DEF_VALS2(TST_MQSUB_REPLY
, "MQSUB_REPLY"),
1143 /* 159*/ DEF_VALS2(TST_MQSUBRQ_REPLY
, "MQSUBRQ_REPLY"),
1144 /* 161*/ DEF_VALS2(TST_XA_START
, "XA_START"),
1145 /* 162*/ DEF_VALS2(TST_XA_END
, "XA_END"),
1146 /* 163*/ DEF_VALS2(TST_XA_OPEN
, "XA_OPEN"),
1147 /* 164*/ DEF_VALS2(TST_XA_CLOSE
, "XA_CLOSE"),
1148 /* 165*/ DEF_VALS2(TST_XA_PREPARE
, "XA_PREPARE"),
1149 /* 166*/ DEF_VALS2(TST_XA_COMMIT
, "XA_COMMIT"),
1150 /* 167*/ DEF_VALS2(TST_XA_ROLLBACK
, "XA_ROLLBACK"),
1151 /* 168*/ DEF_VALS2(TST_XA_FORGET
, "XA_FORGET"),
1152 /* 169*/ DEF_VALS2(TST_XA_RECOVER
, "XA_RECOVER"),
1153 /* 170*/ DEF_VALS2(TST_XA_COMPLETE
, "XA_COMPLETE"),
1154 /* 177*/ DEF_VALS2(TST_XA_START_REPLY
, "XA_START_REPLY"),
1155 /* 178*/ DEF_VALS2(TST_XA_END_REPLY
, "XA_END_REPLY"),
1156 /* 179*/ DEF_VALS2(TST_XA_OPEN_REPLY
, "XA_OPEN_REPLY"),
1157 /* 180*/ DEF_VALS2(TST_XA_CLOSE_REPLY
, "XA_CLOSE_REPLY"),
1158 /* 181*/ DEF_VALS2(TST_XA_PREPARE_REPLY
, "XA_PREPARE_REPLY"),
1159 /* 182*/ DEF_VALS2(TST_XA_COMMIT_REPLY
, "XA_COMMIT_REPLY"),
1160 /* 183*/ DEF_VALS2(TST_XA_ROLLBACK_REPLY
, "XA_ROLLBACK_REPLY"),
1161 /* 184*/ DEF_VALS2(TST_XA_FORGET_REPLY
, "XA_FORGET_REPLY"),
1162 /* 185*/ DEF_VALS2(TST_XA_RECOVER_REPLY
, "XA_RECOVER_REPLY"),
1163 /* 186*/ DEF_VALS2(TST_XA_COMPLETE_REPLY
, "XA_COMPLETE_REPLY"),
1165 DEF_VALS_EXTB(opcode
);
1168 /* 0*/ DEF_VALS2(XA_OK
, "XA_OK"),
1169 /* 3*/ DEF_VALS2(XA_RDONLY
, "XA_RDONLY"),
1170 /* 4*/ DEF_VALS2(XA_RETRY
, "XA_RETRY"),
1171 /* 5*/ DEF_VALS2(XA_HEURMIX
, "XA_HEURMIX"),
1172 /* 6*/ DEF_VALS2(XA_HEURRB
, "XA_HEURRB"),
1173 /* 7*/ DEF_VALS2(XA_HEURCOM
, "XA_HEURCOM"),
1174 /* 8*/ DEF_VALS2(XA_HEURHAZ
, "XA_HEURHAZ"),
1175 /* 9*/ DEF_VALS2(XA_NOMIGRATE
, "XA_NOMIGRATE"),
1176 /* 100*/ DEF_VALS2(XA_RBROLLBACK
, "XA_RBROLLBACK"),
1177 /* 101*/ DEF_VALS2(XA_RBCOMMFAIL
, "XA_RBCOMMFAIL"),
1178 /* 102*/ DEF_VALS2(XA_RBDEADLOCK
, "XA_RBDEADLOCK"),
1179 /* 103*/ DEF_VALS2(XA_RBINTEGRITY
, "XA_RBINTEGRITY"),
1180 /* 104*/ DEF_VALS2(XA_RBOTHER
, "XA_RBOTHER"),
1181 /* 105*/ DEF_VALS2(XA_RBPROTO
, "XA_RBPROTO"),
1182 /* 106*/ DEF_VALS2(XA_RBTIMEOUT
, "XA_RBTIMEOUT"),
1183 /* 107*/ DEF_VALS2(XA_RBTRANSIENT
, "XA_RBTRANSIENT"),
1184 /* -9*/ DEF_VALS2(XAER_OUTSIDE
, "XAER_OUTSIDE"),
1185 /* -8*/ DEF_VALS2(XAER_DUPID
, "XAER_DUPID"),
1186 /* -7*/ DEF_VALS2(XAER_RMFAIL
, "XAER_RMFAIL"),
1187 /* -6*/ DEF_VALS2(XAER_PROTO
, "XAER_PROTO"),
1188 /* -5*/ DEF_VALS2(XAER_INVAL
, "XAER_INVAL"),
1189 /* -4*/ DEF_VALS2(XAER_NOTA
, "XAER_NOTA"),
1190 /* -3*/ DEF_VALS2(XAER_RMERR
, "XAER_RMERR"),
1191 /* -2*/ DEF_VALS2(XAER_ASYNC
, "XAER_ASYNC"),
1195 /* CAUT*/ DEF_VALS2(STRUCTID_CAUT
, MQ_TEXT_CAUT
),
1196 /* CIH */ DEF_VALS2(STRUCTID_CIH
, MQ_TEXT_CIH
),
1197 /* DH */ DEF_VALS2(STRUCTID_DH
, MQ_TEXT_DH
),
1198 /* DLH */ DEF_VALS2(STRUCTID_DLH
, MQ_TEXT_DLH
),
1199 /* FCNO*/ DEF_VALS2(STRUCTID_FCNO
, MQ_TEXT_FCNO
),
1200 /* FOPA*/ DEF_VALS2(STRUCTID_FOPA
, MQ_TEXT_FOPA
),
1201 /* GMO */ DEF_VALS2(STRUCTID_GMO
, MQ_TEXT_GMO
),
1202 /* ID */ DEF_VALS2(STRUCTID_ID
, MQ_TEXT_ID
),
1203 /* IIH */ DEF_VALS2(STRUCTID_IIH
, MQ_TEXT_IIH
),
1204 /* LPOO*/ DEF_VALS2(STRUCTID_LPOO
, MQ_TEXT_LPOO
),
1205 /* MD */ DEF_VALS2(STRUCTID_MD
, MQ_TEXT_MD
),
1206 /* MDE */ DEF_VALS2(STRUCTID_MDE
, MQ_TEXT_MDE
),
1207 /* MSH */ DEF_VALS2(STRUCTID_MSH
, MQ_TEXT_MSH
),
1208 /* OD */ DEF_VALS2(STRUCTID_OD
, MQ_TEXT_OD
),
1209 /* PMO */ DEF_VALS2(STRUCTID_PMO
, MQ_TEXT_PMO
),
1210 /* RFH */ DEF_VALS2(STRUCTID_RFH
, MQ_TEXT_RFH
),
1211 /* RMH */ DEF_VALS2(STRUCTID_RMH
, MQ_TEXT_RMH
),
1212 /* SPAI*/ DEF_VALS2(STRUCTID_SPAI
, MQ_TEXT_SPAI
),
1213 /* SPAO*/ DEF_VALS2(STRUCTID_SPAO
, MQ_TEXT_SPAO
),
1214 /* SPAU*/ DEF_VALS2(STRUCTID_SPAU
, MQ_TEXT_SPAU
),
1215 /* SPGI*/ DEF_VALS2(STRUCTID_SPGI
, MQ_TEXT_SPGI
),
1216 /* SPGO*/ DEF_VALS2(STRUCTID_SPGO
, MQ_TEXT_SPGO
),
1217 /* SPGU*/ DEF_VALS2(STRUCTID_SPGU
, MQ_TEXT_SPGU
),
1218 /* SPOI*/ DEF_VALS2(STRUCTID_SPOI
, MQ_TEXT_SPOI
),
1219 /* SPOO*/ DEF_VALS2(STRUCTID_SPOO
, MQ_TEXT_SPOO
),
1220 /* SPOU*/ DEF_VALS2(STRUCTID_SPOU
, MQ_TEXT_SPOU
),
1221 /* SPPI*/ DEF_VALS2(STRUCTID_SPPI
, MQ_TEXT_SPPI
),
1222 /* SPPO*/ DEF_VALS2(STRUCTID_SPPO
, MQ_TEXT_SPPO
),
1223 /* SPPU*/ DEF_VALS2(STRUCTID_SPPU
, MQ_TEXT_SPPU
),
1224 /* SPQI*/ DEF_VALS2(STRUCTID_SPQI
, MQ_TEXT_SPQI
),
1225 /* SPQO*/ DEF_VALS2(STRUCTID_SPQO
, MQ_TEXT_SPQO
),
1226 /* SPQU*/ DEF_VALS2(STRUCTID_SPQU
, MQ_TEXT_SPQU
),
1227 /* TM */ DEF_VALS2(STRUCTID_TM
, MQ_TEXT_TM
),
1228 /* TMC2*/ DEF_VALS2(STRUCTID_TMC2
, MQ_TEXT_TMC2
),
1229 /* TSH */ DEF_VALS2(STRUCTID_TSH
, MQ_TEXT_TSH
),
1230 /* TSHC*/ DEF_VALS2(STRUCTID_TSHC
, MQ_TEXT_TSHC
),
1231 /* TSHM*/ DEF_VALS2(STRUCTID_TSHM
, MQ_TEXT_TSHM
),
1232 /* UID */ DEF_VALS2(STRUCTID_UID
, MQ_TEXT_UID
),
1233 /* WIH */ DEF_VALS2(STRUCTID_WIH
, MQ_TEXT_WIH
),
1234 /* XQH */ DEF_VALS2(STRUCTID_XQH
, MQ_TEXT_XQH
),
1236 /* CAUT*/ DEF_VALS2(STRUCTID_CAUT_EBCDIC
, MQ_TEXT_CAUT
),
1237 /* CIH */ DEF_VALS2(STRUCTID_CIH_EBCDIC
, MQ_TEXT_CIH
),
1238 /* DH */ DEF_VALS2(STRUCTID_DH_EBCDIC
, MQ_TEXT_DH
),
1239 /* DLH */ DEF_VALS2(STRUCTID_DLH_EBCDIC
, MQ_TEXT_DLH
),
1240 /* FCNO*/ DEF_VALS2(STRUCTID_FCNO_EBCDIC
, MQ_TEXT_FCNO
),
1241 /* FOPA*/ DEF_VALS2(STRUCTID_FOPA_EBCDIC
, MQ_TEXT_FOPA
),
1242 /* GMO */ DEF_VALS2(STRUCTID_GMO_EBCDIC
, MQ_TEXT_GMO
),
1243 /* ID */ DEF_VALS2(STRUCTID_ID_EBCDIC
, MQ_TEXT_ID
),
1244 /* IIH */ DEF_VALS2(STRUCTID_IIH_EBCDIC
, MQ_TEXT_IIH
),
1245 /* LPOO*/ DEF_VALS2(STRUCTID_LPOO_EBCDIC
, MQ_TEXT_LPOO
),
1246 /* MD */ DEF_VALS2(STRUCTID_MD_EBCDIC
, MQ_TEXT_MD
),
1247 /* MDE */ DEF_VALS2(STRUCTID_MDE_EBCDIC
, MQ_TEXT_MDE
),
1248 /* OD */ DEF_VALS2(STRUCTID_OD_EBCDIC
, MQ_TEXT_OD
),
1249 /* PMO */ DEF_VALS2(STRUCTID_PMO_EBCDIC
, MQ_TEXT_PMO
),
1250 /* RFH */ DEF_VALS2(STRUCTID_RFH_EBCDIC
, MQ_TEXT_RFH
),
1251 /* RMH */ DEF_VALS2(STRUCTID_RMH_EBCDIC
, MQ_TEXT_RMH
),
1252 /* SPAI*/ DEF_VALS2(STRUCTID_SPAI_EBCDIC
, MQ_TEXT_SPAI
),
1253 /* SPAO*/ DEF_VALS2(STRUCTID_SPAO_EBCDIC
, MQ_TEXT_SPAO
),
1254 /* SPAU*/ DEF_VALS2(STRUCTID_SPAU_EBCDIC
, MQ_TEXT_SPAU
),
1255 /* SPGI*/ DEF_VALS2(STRUCTID_SPGI_EBCDIC
, MQ_TEXT_SPGI
),
1256 /* SPGO*/ DEF_VALS2(STRUCTID_SPGO_EBCDIC
, MQ_TEXT_SPGO
),
1257 /* SPGU*/ DEF_VALS2(STRUCTID_SPGU_EBCDIC
, MQ_TEXT_SPGU
),
1258 /* SPOI*/ DEF_VALS2(STRUCTID_SPOI_EBCDIC
, MQ_TEXT_SPOI
),
1259 /* SPOO*/ DEF_VALS2(STRUCTID_SPOO_EBCDIC
, MQ_TEXT_SPOO
),
1260 /* SPOU*/ DEF_VALS2(STRUCTID_SPOU_EBCDIC
, MQ_TEXT_SPOU
),
1261 /* SPPI*/ DEF_VALS2(STRUCTID_SPPI_EBCDIC
, MQ_TEXT_SPPI
),
1262 /* SPPO*/ DEF_VALS2(STRUCTID_SPPO_EBCDIC
, MQ_TEXT_SPPO
),
1263 /* SPPU*/ DEF_VALS2(STRUCTID_SPPU_EBCDIC
, MQ_TEXT_SPPU
),
1264 /* SPQI*/ DEF_VALS2(STRUCTID_SPQI_EBCDIC
, MQ_TEXT_SPQI
),
1265 /* SPQO*/ DEF_VALS2(STRUCTID_SPQO_EBCDIC
, MQ_TEXT_SPQO
),
1266 /* SPQU*/ DEF_VALS2(STRUCTID_SPQU_EBCDIC
, MQ_TEXT_SPQU
),
1267 /* TM */ DEF_VALS2(STRUCTID_TM_EBCDIC
, MQ_TEXT_TM
),
1268 /* TMC2*/ DEF_VALS2(STRUCTID_TMC2_EBCDIC
, MQ_TEXT_TMC2
),
1269 /* TSH */ DEF_VALS2(STRUCTID_TSH_EBCDIC
, MQ_TEXT_TSH
),
1270 /* TSHC*/ DEF_VALS2(STRUCTID_TSHC_EBCDIC
, MQ_TEXT_TSHC
),
1271 /* TSHM*/ DEF_VALS2(STRUCTID_TSHM_EBCDIC
, MQ_TEXT_TSHM
),
1272 /* UID */ DEF_VALS2(STRUCTID_UID_EBCDIC
, MQ_TEXT_UID
),
1273 /* WIH */ DEF_VALS2(STRUCTID_WIH_EBCDIC
, MQ_TEXT_WIH
),
1274 /* XQH */ DEF_VALS2(STRUCTID_XQH_EBCDIC
, MQ_TEXT_XQH
),
1276 DEF_VALS_EXTB(StructID
);
1278 DEF_VALSB(byteorder
)
1279 /* 1*/ DEF_VALS2(BIG_ENDIAN
, "Big endian"),
1280 /* 2*/ DEF_VALS2(LITTLE_ENDIAN
, "Little endian"),
1283 DEF_VALSB(conn_options
)
1284 /* 1*/ DEF_VALS2(CONN_OPTION
, "MQCONN"),
1285 /* 3*/ DEF_VALS2(CONNX_OPTION
, "MQCONNX"),
1289 /* 0*/ DEF_VALS1(MQSIDT_NONE
),
1290 /* 1*/ DEF_VALS1(MQSIDT_NT_SECURITY_ID
),
1291 /* 2*/ DEF_VALS1(MQSIDT_WAS_SECURITY_ID
),
1294 static int dissect_mq_encoding(proto_tree
* tree
, int hfindex
, tvbuff_t
* tvb
, const int start
, int length
, const unsigned encoding
)
1296 char sEnc
[128] = "";
1302 uEnc
= (int)tvb_get_uint16(tvb
, start
, encoding
);
1306 uEnc
= tvb_get_uint32(tvb
, start
, encoding
);
1310 #define CHECK_ENC(M, T) ((uEnc & M) == T)
1311 #define DOPRT(A) pEnc += snprintf(pEnc, sizeof(sEnc)-1-(pEnc-sEnc), A);
1312 if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_UNDEFINED
))
1314 DOPRT("FLT_UNDEFINED");
1316 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_IEEE_NORMAL
))
1318 DOPRT("FLT_IEEE_NORMAL");
1320 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_IEEE_REVERSED
))
1322 DOPRT("FLT_IEEE_REVERSED");
1324 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_S390
))
1328 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_TNS
))
1334 DOPRT("FLT_UNKNOWN");
1338 if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK
, MQ_MQENC_DECIMAL_UNDEFINED
))
1340 DOPRT("DEC_UNDEFINED");
1342 else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK
, MQ_MQENC_DECIMAL_NORMAL
))
1344 DOPRT("DEC_NORMAL");
1346 else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK
, MQ_MQENC_DECIMAL_REVERSED
))
1348 DOPRT("DEC_REVERSED");
1352 DOPRT("DEC_UNKNOWN");
1356 if (CHECK_ENC(MQ_MQENC_INTEGER_MASK
, MQ_MQENC_INTEGER_UNDEFINED
))
1358 DOPRT("INT_UNDEFINED");
1360 else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK
, MQ_MQENC_INTEGER_NORMAL
))
1362 DOPRT("INT_NORMAL");
1364 else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK
, MQ_MQENC_INTEGER_REVERSED
))
1366 DOPRT("INT_REVERSED");
1370 DOPRT("INT_UNKNOWN");
1375 proto_tree_add_uint_format_value(tree
, hfindex
, tvb
, start
, length
, uEnc
,
1376 "%8x-%d (%s)", uEnc
, uEnc
, sEnc
);
1381 static int dissect_mq_MQMO(tvbuff_t
* tvb
, proto_tree
* mq_tree
, int offset
, int ett_subtree
, mq_parm_t
* p_mq_parm
)
1385 uMoOpt
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1390 proto_tree
* mq_tree_sub
;
1391 ti
= proto_tree_add_item(mq_tree
, hf_mq_gmo_matchoptions
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
); /* ENC_BIG_ENDIAN); */
1392 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1393 proto_tree_add_subtree_format(mq_tree_sub
, tvb
, offset
, 4, ett_subtree
, NULL
, MQ_TEXT_MQMO_NONE
);
1397 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_gmo_matchoptions
, ett_subtree
, pf_flds_mtchopt
, p_mq_parm
->mq_int_enc
);
1401 static int dissect_mq_LPOO_LPIOPTS(tvbuff_t
* tvb
, proto_tree
* mq_tree
, int offset
, int ett_subtree
, mq_parm_t
* p_mq_parm
)
1405 uLpiOpts
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1410 proto_tree
* mq_tree_sub
;
1411 ti
= proto_tree_add_item(mq_tree
, hf_mq_lpoo_lpiopts
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1412 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1413 proto_tree_add_subtree_format(mq_tree_sub
, tvb
, offset
, 4, ett_subtree
, NULL
, MQ_TEXT_LPOOOPT_NONE
);
1417 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_lpoo_lpiopts
, ett_subtree
, pf_flds_lpooopt
, p_mq_parm
->mq_int_enc
);
1421 static int dissect_mq_MQGMO(tvbuff_t
* tvb
, proto_tree
* mq_tree
, int offset
, int ett_subtree
, mq_parm_t
* p_mq_parm
)
1425 uGmoOpt
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1430 proto_tree
* mq_tree_sub
;
1431 ti
= proto_tree_add_item(mq_tree
, hf_mq_gmo_options
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
); /* ENC_BIG_ENDIAN); */
1432 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1433 proto_tree_add_subtree_format(mq_tree_sub
, tvb
, offset
, 4, ett_subtree
, NULL
, MQ_TEXT_MQGMO_NONE
);
1437 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_gmo_options
, ett_subtree
, pf_flds_gmoopt
, p_mq_parm
->mq_int_enc
);
1442 static int dissect_mq_MQPMO(tvbuff_t
* tvb
, proto_tree
* mq_tree
, int offset
, int ett_subtree
, mq_parm_t
* p_mq_parm
)
1446 uPmoOpt
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1451 proto_tree
* mq_tree_sub
;
1452 ti
= proto_tree_add_item(mq_tree
, hf_mq_pmo_options
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
); /* ENC_BIG_ENDIAN); */
1453 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1454 proto_tree_add_subtree_format(mq_tree_sub
, tvb
, offset
, 4, ett_subtree
, NULL
, MQ_TEXT_MQPMO_NONE
);
1458 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_pmo_options
, ett_subtree
, pf_flds_pmoopt
, p_mq_parm
->mq_int_enc
);
1463 static int dissect_mq_MQOO(tvbuff_t
* tvb
, proto_tree
* mq_tree
, int offset
, int ett_subtree
, int hfindex
, mq_parm_t
* p_mq_parm
)
1467 uOpenOpt
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1472 proto_tree
* mq_tree_sub
;
1473 ti
= proto_tree_add_item(mq_tree
, hfindex
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1474 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1475 proto_tree_add_subtree_format(mq_tree_sub
, tvb
, offset
, 4, ett_subtree
, NULL
, MQ_TEXT_BIND_READAHEAD_AS_Q_DEF
);
1479 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hfindex
, ett_subtree
, pf_flds_opnopt
, p_mq_parm
->mq_int_enc
);
1483 static int dissect_mq_MQCO(tvbuff_t
* tvb
, proto_tree
* mq_tree
, int offset
, mq_parm_t
* p_mq_parm
)
1487 iCloseOpt
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1492 proto_tree
* mq_tree_sub
;
1493 ti
= proto_tree_add_item(mq_tree
, hf_mq_close_options
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1494 mq_tree_sub
= proto_item_add_subtree(ti
, ett_mq_close_option
);
1495 proto_tree_add_subtree_format(mq_tree_sub
, tvb
, offset
, 4, ett_mq_close_option
, NULL
, MQ_TEXT_IMMEDIATE_NONE
);
1499 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_close_options
, ett_mq_close_option
, pf_flds_clsopt
, p_mq_parm
->mq_int_enc
);
1503 static int dissect_mq_charv(tvbuff_t
* tvb
, proto_tree
* tree
, int offset
, int iSize
, int idx
, const char* pStr
, mq_parm_t
* p_mq_parm
)
1505 proto_tree
* mq_tree_sub
;
1511 lStr
= tvb_get_uint32(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
1512 oStr
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
1513 eStr
= tvb_get_uint32(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
1516 sStr
= (const char*)tvb_get_string_enc(wmem_packet_scope(), tvb
, oStr
, lStr
, p_mq_parm
->mq_str_enc
);
1521 mq_tree_sub
= proto_tree_add_subtree_format(tree
, tvb
, offset
, iSize
, idx
, NULL
, "%s - %s", pStr
, (sStr
) ? sStr
: "[Empty]");
1523 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsptr
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1524 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsoffset
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1525 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsbufsize
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
1526 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vslength
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
1527 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsccsid
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1528 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsvalue
, tvb
, oStr
, lStr
, IS_EBCDIC(eStr
) ? ENC_EBCDIC
: ENC_ASCII
);
1532 static int dissect_mq_pmr(tvbuff_t
* tvb
, proto_tree
* tree
, int offset
, int iNbrRecords
, int offsetPMR
, uint32_t recFlags
, mq_parm_t
* p_mq_parm
)
1537 iSizePMR1
= ((((recFlags
& MQ_PMRF_MSG_ID
) != 0) * 24)
1538 + (((recFlags
& MQ_PMRF_CORREL_ID
) != 0) * 24)
1539 + (((recFlags
& MQ_PMRF_GROUP_ID
) != 0) * 24)
1540 + (((recFlags
& MQ_PMRF_FEEDBACK
) != 0) * 4)
1541 + (((recFlags
& MQ_PMRF_ACCOUNTING_TOKEN
) != 0) * 32));
1543 if (offsetPMR
!= 0 && iSizePMR1
!= 0)
1545 iSizePMR
= iNbrRecords
* iSizePMR1
;
1546 if (tvb_reported_length_remaining(tvb
, offset
) >= iSizePMR
)
1550 for (iRecord
= 0; iRecord
< iNbrRecords
; iRecord
++)
1552 proto_tree
* mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
+ iOffsetPMR
, iSizePMR1
, ett_mq_pmr
, NULL
, MQ_TEXT_PMR
);
1553 if ((recFlags
& MQ_PMRF_MSG_ID
) != 0)
1555 proto_tree_add_item(mq_tree
, hf_mq_pmr_msgid
, tvb
, offset
+ iOffsetPMR
, 24, ENC_NA
);
1558 if ((recFlags
& MQ_PMRF_CORREL_ID
) != 0)
1560 proto_tree_add_item(mq_tree
, hf_mq_pmr_correlid
, tvb
, offset
+ iOffsetPMR
, 24, ENC_NA
);
1563 if ((recFlags
& MQ_PMRF_GROUP_ID
) != 0)
1565 proto_tree_add_item(mq_tree
, hf_mq_pmr_groupid
, tvb
, offset
+ iOffsetPMR
, 24, ENC_NA
);
1568 if ((recFlags
& MQ_PMRF_FEEDBACK
) != 0)
1570 proto_tree_add_item(mq_tree
, hf_mq_pmr_feedback
, tvb
, offset
+ iOffsetPMR
, 4, p_mq_parm
->mq_int_enc
);
1573 if ((recFlags
& MQ_PMRF_ACCOUNTING_TOKEN
) != 0)
1575 proto_tree_add_item(mq_tree
, hf_mq_pmr_acttoken
, tvb
, offset
+ iOffsetPMR
, 32, ENC_NA
);
1584 static int dissect_mq_or(tvbuff_t
* tvb
, proto_tree
* tree
, int offset
, int iNbrRecords
, int offsetOR
, mq_parm_t
* p_mq_parm
)
1589 iSizeOR
= iNbrRecords
* 96;
1590 if (tvb_reported_length_remaining(tvb
, offset
) >= iSizeOR
)
1594 for (iRecord
= 0; iRecord
< iNbrRecords
; iRecord
++)
1596 proto_tree
* mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
+ iOffsetOR
, 96, ett_mq_or
, NULL
, MQ_TEXT_OR
);
1597 proto_tree_add_item(mq_tree
, hf_mq_or_objname
, tvb
, offset
+ iOffsetOR
, 48, p_mq_parm
->mq_str_enc
);
1598 proto_tree_add_item(mq_tree
, hf_mq_or_objqmgrname
, tvb
, offset
+ iOffsetOR
+ 48, 48, p_mq_parm
->mq_str_enc
);
1606 static int dissect_mq_rr(tvbuff_t
* tvb
, proto_tree
* tree
, int offset
, int iNbrRecords
, int offsetRR
, mq_parm_t
* p_mq_parm
)
1611 iSizeRR
= iNbrRecords
* 8;
1612 if (tvb_reported_length_remaining(tvb
, offset
) >= iSizeRR
)
1616 for (iRecord
= 0; iRecord
< iNbrRecords
; iRecord
++)
1618 proto_tree
* mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
+ iOffsetRR
, 8, ett_mq_rr
, NULL
, MQ_TEXT_RR
);
1619 proto_tree_add_item(mq_tree
, hf_mq_rr_compcode
, tvb
, offset
+ iOffsetRR
, 4, p_mq_parm
->mq_int_enc
);
1620 proto_tree_add_item(mq_tree
, hf_mq_rr_reascode
, tvb
, offset
+ iOffsetRR
+ 4, 4, p_mq_parm
->mq_int_enc
);
1628 static int dissect_mq_gmo(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int offset
, mq_parm_t
* p_mq_parm
)
1632 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
1633 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_GMO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_GMO_EBCDIC
)
1635 uint32_t iVersion
= 0;
1636 iVersion
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
1637 /* Compute length according to version */
1640 case 1: iSize
= 72; break;
1641 case 2: iSize
= 80; break;
1642 case 3: iSize
= 100; break;
1643 case 4: iSize
= 112; break;
1646 if (iSize
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSize
)
1649 sQueue
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 24, 48, p_mq_parm
->mq_str_enc
);
1650 if (strip_trailing_blanks(sQueue
, 48) > 0)
1653 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Q=%s", sQueue
);
1658 proto_tree
* mq_tree
;
1660 mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, iSize
, ett_mq_gmo
, NULL
, MQ_TEXT_GMO
);
1662 proto_tree_add_item(mq_tree
, hf_mq_gmo_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
1663 proto_tree_add_item(mq_tree
, hf_mq_gmo_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1665 dissect_mq_MQGMO(tvb
, mq_tree
, offset
+ 8, ett_mq_gmo_option
, p_mq_parm
);
1667 proto_tree_add_item(mq_tree
, hf_mq_gmo_waitinterval
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
1668 proto_tree_add_item(mq_tree
, hf_mq_gmo_signal1
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1669 proto_tree_add_item(mq_tree
, hf_mq_gmo_signal2
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
1670 proto_tree_add_item(mq_tree
, hf_mq_gmo_resolvqname
, tvb
, offset
+ 24, 48, p_mq_parm
->mq_str_enc
);
1674 dissect_mq_MQMO(tvb
, mq_tree
, offset
+ 72, ett_mq_gmo_matchoption
, p_mq_parm
);
1676 proto_tree_add_item(mq_tree
, hf_mq_gmo_groupstatus
, tvb
, offset
+ 76, 1, ENC_BIG_ENDIAN
);
1677 proto_tree_add_item(mq_tree
, hf_mq_gmo_segmstatus
, tvb
, offset
+ 77, 1, ENC_BIG_ENDIAN
);
1678 proto_tree_add_item(mq_tree
, hf_mq_gmo_segmentation
, tvb
, offset
+ 78, 1, ENC_BIG_ENDIAN
);
1679 proto_tree_add_item(mq_tree
, hf_mq_gmo_reserved
, tvb
, offset
+ 79, 1, ENC_BIG_ENDIAN
);
1684 proto_tree_add_item(mq_tree
, hf_mq_gmo_msgtoken
, tvb
, offset
+ 80, 16, ENC_NA
);
1685 proto_tree_add_item(mq_tree
, hf_mq_gmo_returnedlen
, tvb
, offset
+ 96, 4, p_mq_parm
->mq_int_enc
);
1689 proto_tree_add_item(mq_tree
, hf_mq_gmo_reserved2
, tvb
, offset
+ 100, 4, p_mq_parm
->mq_int_enc
);
1690 proto_tree_add_item(mq_tree
, hf_mq_gmo_msghandle
, tvb
, offset
+ 104, 8, p_mq_parm
->mq_int_enc
);
1698 static int dissect_mq_pmo(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int offset
, mq_parm_t
* p_mq_parm
, int* iDistributionListSize
)
1701 int iPosV2
= offset
+ 128;
1702 int offsetb
= offset
;
1704 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
1705 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_PMO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_PMO_EBCDIC
)
1707 uint32_t iVersion
= 0;
1708 iVersion
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
1709 /* Compute length according to version */
1712 case 1: iSize
= 128; break;
1713 case 2: iSize
= 152; break;
1714 case 3: iSize
= 176; break;
1717 if (iSize
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSize
)
1722 sQueueA
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 32, 48, 0);
1723 sQueue
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 32, 48, p_mq_parm
->mq_str_enc
);
1724 if (strip_trailing_blanks(sQueue
, 48) > 0 && strip_trailing_blanks(sQueueA
, 48) > 0)
1727 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Q=%s", sQueue
);
1732 proto_tree
* mq_tree
;
1734 mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, iSize
, ett_mq_pmo
, NULL
, MQ_TEXT_PMO
);
1735 proto_tree_add_item(mq_tree
, hf_mq_pmo_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
1736 proto_tree_add_item(mq_tree
, hf_mq_pmo_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1738 dissect_mq_MQPMO(tvb
, mq_tree
, offset
+ 8, ett_mq_pmo_option
, p_mq_parm
);
1740 proto_tree_add_item(mq_tree
, hf_mq_pmo_timeout
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
1741 proto_tree_add_item(mq_tree
, hf_mq_pmo_context
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1742 proto_tree_add_item(mq_tree
, hf_mq_pmo_knowndstcnt
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
1743 proto_tree_add_item(mq_tree
, hf_mq_pmo_unkndstcnt
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
1744 proto_tree_add_item(mq_tree
, hf_mq_pmo_invaldstcnt
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
1745 proto_tree_add_item(mq_tree
, hf_mq_pmo_resolvqname
, tvb
, offset
+ 32, 48, p_mq_parm
->mq_str_enc
);
1746 proto_tree_add_item(mq_tree
, hf_mq_pmo_resolvqmgr
, tvb
, offset
+ 80, 48, p_mq_parm
->mq_str_enc
);
1750 proto_tree_add_item(mq_tree
, hf_mq_pmo_recspresent
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1751 proto_tree_add_item(mq_tree
, hf_mq_pmo_putmsgrecfld
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1752 proto_tree_add_item(mq_tree
, hf_mq_pmo_putmsgrecofs
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
1753 proto_tree_add_item(mq_tree
, hf_mq_pmo_resprecofs
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
1754 proto_tree_add_item(mq_tree
, hf_mq_pmo_putmsgrecptr
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1755 proto_tree_add_item(mq_tree
, hf_mq_pmo_resprecptr
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
1760 proto_tree_add_item(mq_tree
, hf_mq_pmo_originalmsghandle
, tvb
, offset
, 8, p_mq_parm
->mq_int_enc
);
1761 proto_tree_add_item(mq_tree
, hf_mq_pmo_newmsghandle
, tvb
, offset
+ 8, 8, p_mq_parm
->mq_int_enc
);
1762 proto_tree_add_item(mq_tree
, hf_mq_pmo_action
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1763 proto_tree_add_item(mq_tree
, hf_mq_pmo_publevel
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
1768 int iNbrRecords
= 0;
1769 uint32_t iRecFlags
= 0;
1771 iNbrRecords
= tvb_get_uint32(tvb
, iPosV2
, p_mq_parm
->mq_int_enc
);
1772 iRecFlags
= tvb_get_uint32(tvb
, iPosV2
+ 4, p_mq_parm
->mq_int_enc
);
1774 if (iNbrRecords
> 0)
1779 if (iDistributionListSize
)
1780 *iDistributionListSize
= iNbrRecords
;
1781 iOffsetPMR
= tvb_get_uint32(tvb
, iPosV2
+ 8, p_mq_parm
->mq_int_enc
);
1782 iOffsetRR
= tvb_get_uint32(tvb
, iPosV2
+ 12, p_mq_parm
->mq_int_enc
);
1783 iSize
+= dissect_mq_pmr(tvb
, tree
, offsetb
+ iSize
, iNbrRecords
, iOffsetPMR
, iRecFlags
, p_mq_parm
);
1784 iSize
+= dissect_mq_rr(tvb
, tree
, offsetb
+ iSize
, iNbrRecords
, iOffsetRR
, p_mq_parm
);
1792 static int dissect_mq_od(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int offset
, mq_parm_t
* p_mq_parm
, int* iDistributionListSize
)
1796 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
1797 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_OD
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_OD_EBCDIC
)
1799 /* The OD struct can be present in several messages at different levels */
1800 uint32_t iVersion
= 0;
1801 iVersion
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
1802 /* Compute length according to version */
1805 case 1: iSize
= 168; break;
1806 case 2: iSize
= 200; break;
1807 case 3: iSize
= 336; break;
1808 case 4: iSize
= 336 + 3 * 20 + 4; break;
1811 if (iSize
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSize
)
1813 int iNbrRecords
= 0;
1818 iNbrRecords
= tvb_get_uint32(tvb
, offset
+ 168, p_mq_parm
->mq_int_enc
);
1820 uTyp
= tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
1821 sObj
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 12, 48, p_mq_parm
->mq_str_enc
);
1823 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Typ=%s", try_val_to_str_ext(uTyp
, GET_VALS_EXTP(objtype
)));
1824 if (strip_trailing_blanks(sObj
, 48) > 0)
1827 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Obj=%s", sObj
);
1832 proto_tree
* mq_tree
;
1834 mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, iSize
, ett_mq_od
, NULL
, MQ_TEXT_OD
);
1836 proto_tree_add_item(mq_tree
, hf_mq_od_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
1837 proto_tree_add_item(mq_tree
, hf_mq_od_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1838 proto_tree_add_item(mq_tree
, hf_mq_od_objecttype
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
1839 proto_tree_add_item(mq_tree
, hf_mq_od_objectname
, tvb
, offset
+ 12, 48, p_mq_parm
->mq_str_enc
);
1840 proto_tree_add_item(mq_tree
, hf_mq_od_objqmgrname
, tvb
, offset
+ 60, 48, p_mq_parm
->mq_str_enc
);
1841 proto_tree_add_item(mq_tree
, hf_mq_od_dynqname
, tvb
, offset
+ 108, 48, p_mq_parm
->mq_str_enc
);
1842 proto_tree_add_item(mq_tree
, hf_mq_od_altuserid
, tvb
, offset
+ 156, 12, p_mq_parm
->mq_str_enc
);
1846 proto_tree_add_item(mq_tree
, hf_mq_od_recspresent
, tvb
, offset
+ 168, 4, p_mq_parm
->mq_int_enc
);
1847 proto_tree_add_item(mq_tree
, hf_mq_od_knowndstcnt
, tvb
, offset
+ 172, 4, p_mq_parm
->mq_int_enc
);
1848 proto_tree_add_item(mq_tree
, hf_mq_od_unknowdstcnt
, tvb
, offset
+ 176, 4, p_mq_parm
->mq_int_enc
);
1849 proto_tree_add_item(mq_tree
, hf_mq_od_invaldstcnt
, tvb
, offset
+ 180, 4, p_mq_parm
->mq_int_enc
);
1850 proto_tree_add_item(mq_tree
, hf_mq_od_objrecofs
, tvb
, offset
+ 184, 4, p_mq_parm
->mq_int_enc
);
1851 proto_tree_add_item(mq_tree
, hf_mq_od_resprecofs
, tvb
, offset
+ 188, 4, p_mq_parm
->mq_int_enc
);
1852 proto_tree_add_item(mq_tree
, hf_mq_od_objrecptr
, tvb
, offset
+ 192, 4, p_mq_parm
->mq_int_enc
);
1853 proto_tree_add_item(mq_tree
, hf_mq_od_resprecptr
, tvb
, offset
+ 196, 4, p_mq_parm
->mq_int_enc
);
1857 proto_tree_add_item(mq_tree
, hf_mq_od_altsecurid
, tvb
, offset
+ 200, 40, p_mq_parm
->mq_str_enc
);
1858 proto_tree_add_item(mq_tree
, hf_mq_od_resolvqname
, tvb
, offset
+ 240, 48, p_mq_parm
->mq_str_enc
);
1859 proto_tree_add_item(mq_tree
, hf_mq_od_resolvqmgrnm
, tvb
, offset
+ 288, 48, p_mq_parm
->mq_str_enc
);
1863 dissect_mq_charv(tvb
, mq_tree
, offset
+ 336, 20, ett_mq_od_objstr
, "Object string", p_mq_parm
);
1864 dissect_mq_charv(tvb
, mq_tree
, offset
+ 356, 20, ett_mq_od_selstr
, "Selection string", p_mq_parm
);
1865 dissect_mq_charv(tvb
, mq_tree
, offset
+ 376, 20, ett_mq_od_resobjstr
, "Resolved object string", p_mq_parm
);
1866 proto_tree_add_item(mq_tree
, hf_mq_od_resolvobjtyp
, tvb
, offset
+ 396, 4, p_mq_parm
->mq_int_enc
);
1869 if (iNbrRecords
> 0)
1874 *iDistributionListSize
= iNbrRecords
;
1875 iOffsetOR
= tvb_get_uint32(tvb
, offset
+ 184, p_mq_parm
->mq_int_enc
);
1876 iOffsetRR
= tvb_get_uint32(tvb
, offset
+ 188, p_mq_parm
->mq_int_enc
);
1878 iSize
+= dissect_mq_or(tvb
, tree
, offset
, iNbrRecords
, iOffsetOR
, p_mq_parm
);
1879 iSize
+= dissect_mq_rr(tvb
, tree
, offset
, iNbrRecords
, iOffsetRR
, p_mq_parm
);
1886 static int dissect_mq_xid(tvbuff_t
* tvb
, proto_tree
* tree
, mq_parm_t
* p_mq_parm
, int offset
)
1889 if (tvb_reported_length_remaining(tvb
, offset
) >= 6)
1891 uint8_t iXidLength
= 0;
1892 uint8_t iBqLength
= 0;
1894 iXidLength
= tvb_get_uint8(tvb
, offset
+ 4);
1895 iBqLength
= tvb_get_uint8(tvb
, offset
+ 5);
1896 iSizeXid
= 6 + iXidLength
+ iBqLength
;
1898 if (tvb_reported_length_remaining(tvb
, offset
) >= iSizeXid
)
1900 proto_tree
* mq_tree
;
1902 mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, iSizeXid
, ett_mq_xa_xid
, NULL
, MQ_TEXT_XID
);
1904 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_formatid
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1905 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_glbxid_len
, tvb
, offset
+ 4, 1, p_mq_parm
->mq_int_enc
);
1906 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_brq_length
, tvb
, offset
+ 5, 1, p_mq_parm
->mq_int_enc
);
1907 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_globalxid
, tvb
, offset
+ 6, iXidLength
, ENC_NA
);
1908 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_brq
, tvb
, offset
+ 6 + iXidLength
, iBqLength
, ENC_NA
);
1910 iSizeXid
+= (4 - (iSizeXid
% 4)) % 4; /* Pad for alignment with 4 byte word boundary */
1911 if (tvb_reported_length_remaining(tvb
, offset
) < iSizeXid
)
1919 static int dissect_mq_sid(tvbuff_t
* tvb
, proto_tree
* tree
, mq_parm_t
* p_mq_parm
, int offset
)
1924 int bOffset
= offset
;
1926 iSIDL
= tvb_get_uint8(tvb
, offset
);
1927 proto_tree_add_item(tree
, hf_mq_sidlen
, tvb
, offset
, 1, p_mq_parm
->mq_int_enc
);
1931 iSID
= tvb_get_uint8(tvb
, offset
);
1932 proto_tree_add_item(tree
, hf_mq_sidtyp
, tvb
, offset
, 1, p_mq_parm
->mq_int_enc
);
1934 if (iSID
== MQ_MQSIDT_NT_SECURITY_ID
)
1936 offset
= dissect_nt_sid(tvb
, offset
, tree
, "SID", &sid_str
, -1);
1940 proto_tree_add_item(tree
, hf_mq_securityid
, tvb
, offset
, 40, ENC_NA
);
1944 return offset
- bOffset
;
1946 static void dissect_mq_addCR_colinfo(packet_info
* pinfo
, mq_parm_t
* p_mq_parm
)
1948 if (p_mq_parm
->mq_convID
)
1949 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " C.R=%d.%d", p_mq_parm
->mq_convID
, p_mq_parm
->mq_rqstID
);
1951 static int dissect_mq_id(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* mqroot_tree
, int offset
, mq_parm_t
* p_mq_parm
)
1957 iPktSz
= tvb_reported_length_remaining(tvb
, offset
);
1958 iFAPLvl
= tvb_get_uint8(tvb
, offset
+ 4);
1962 else if (iFAPLvl
< 9)
1964 else if (iFAPLvl
< 11)
1968 iSize
= MIN(iSize
, iPktSz
);
1970 if (iSize
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSize
)
1973 sChannel
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 24, 20, p_mq_parm
->mq_str_enc
);
1974 dissect_mq_addCR_colinfo(pinfo
, p_mq_parm
);
1975 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " FAPLvl=%d", iFAPLvl
);
1976 if (strip_trailing_blanks(sChannel
, 20) > 0)
1978 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", CHL=%s", sChannel
);
1983 sQMgr
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 48, 48, p_mq_parm
->mq_str_enc
);
1984 if (strip_trailing_blanks(sQMgr
, 48) > 0)
1986 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", QM=%s", sQMgr
);
1988 p_mq_parm
->mq_id_ccsid
.ccsid
= (uint32_t)tvb_get_uint16(tvb
, offset
+ 46, p_mq_parm
->mq_int_enc
);
1992 proto_tree
* mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSize
, ett_mq_id
, NULL
, MQ_TEXT_ID
);
1994 proto_tree_add_item(mq_tree
, hf_mq_id_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
1995 proto_tree_add_item(mq_tree
, hf_mq_id_FapLevel
, tvb
, offset
+ 4, 1, ENC_BIG_ENDIAN
);
1997 /* ID Capability flags 1 */
1998 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 5, hf_mq_id_cf1
, ett_mq_id_cf1
, pf_flds_cf1
, ENC_BIG_ENDIAN
);
1999 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 6, hf_mq_id_ecf1
, ett_mq_id_ecf1
, pf_flds_cf1
, ENC_BIG_ENDIAN
);
2002 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 7, hf_mq_id_ief1
, ett_mq_id_ief1
, pf_flds_ef1
, ENC_BIG_ENDIAN
);
2004 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved
, tvb
, offset
+ 8, 2, p_mq_parm
->mq_int_enc
);
2005 proto_tree_add_item(mq_tree
, hf_mq_id_MaxMsgBatch
, tvb
, offset
+ 10, 2, p_mq_parm
->mq_int_enc
);
2006 proto_tree_add_item(mq_tree
, hf_mq_id_MaxTrSize
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2007 proto_tree_add_item(mq_tree
, hf_mq_id_MaxMsgSize
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2008 proto_tree_add_item(mq_tree
, hf_mq_id_SeqWrapVal
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2009 proto_tree_add_item(mq_tree
, hf_mq_id_channel
, tvb
, offset
+ 24, 20, p_mq_parm
->mq_str_enc
);
2011 if (iSize
> 44 || (iPktSz
> iSize
&& iPktSz
> 44))
2013 /* ID Capability flags 2 */
2014 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 44, hf_mq_id_cf2
, ett_mq_id_cf2
, pf_flds_cf2
, ENC_BIG_ENDIAN
);
2015 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 45, hf_mq_id_ecf2
, ett_mq_id_ecf2
, pf_flds_cf2
, ENC_BIG_ENDIAN
);
2017 proto_tree_add_item(mq_tree
, hf_mq_id_ccsid
, tvb
, offset
+ 46, 2, p_mq_parm
->mq_int_enc
);
2018 proto_tree_add_item(mq_tree
, hf_mq_id_qmgrname
, tvb
, offset
+ 48, 48, p_mq_parm
->mq_str_enc
);
2019 proto_tree_add_item(mq_tree
, hf_mq_id_HBInterval
, tvb
, offset
+ 96, 4, p_mq_parm
->mq_int_enc
);
2020 proto_tree_add_item(mq_tree
, hf_mq_id_EFLLength
, tvb
, offset
+ 100, 2, p_mq_parm
->mq_int_enc
);
2021 if (iSize
> 102 || (iPktSz
> iSize
&& iPktSz
> 102))
2024 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 102, hf_mq_id_ief2
, ett_mq_id_ief2
, pf_flds_ef2
, ENC_BIG_ENDIAN
);
2025 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved1
, tvb
, offset
+ 103, 1, ENC_BIG_ENDIAN
);
2027 if (iSize
> 104 || (iPktSz
> iSize
&& iPktSz
> 104))
2029 proto_tree_add_item(mq_tree
, hf_mq_id_HdrCprsLst
, tvb
, offset
+ 104, 2, p_mq_parm
->mq_int_enc
);
2030 proto_tree_add_item(mq_tree
, hf_mq_id_MsgCprsLst
, tvb
, offset
+ 106, 16, p_mq_parm
->mq_int_enc
);
2031 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved2
, tvb
, offset
+ 122, 2, p_mq_parm
->mq_int_enc
);
2032 proto_tree_add_item(mq_tree
, hf_mq_id_SSLKeyRst
, tvb
, offset
+ 124, 4, p_mq_parm
->mq_int_enc
);
2033 if (iSize
> 128 || (iPktSz
> iSize
&& iPktSz
> 128))
2035 proto_tree_add_item(mq_tree
, hf_mq_id_ConvBySkt
, tvb
, offset
+ 128, 4, p_mq_parm
->mq_int_enc
);
2037 /* ID Capability flags 3 */
2038 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 132, hf_mq_id_cf3
, ett_mq_id_cf3
, pf_flds_cf3
, ENC_BIG_ENDIAN
);
2039 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 133, hf_mq_id_ecf3
, ett_mq_id_ecf3
, pf_flds_cf3
, ENC_BIG_ENDIAN
);
2041 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved3
, tvb
, offset
+ 134, 2, p_mq_parm
->mq_int_enc
);
2042 proto_tree_add_item(mq_tree
, hf_mq_id_ProcessId
, tvb
, offset
+ 136, 4, p_mq_parm
->mq_int_enc
);
2043 proto_tree_add_item(mq_tree
, hf_mq_id_ThreadId
, tvb
, offset
+ 140, 4, p_mq_parm
->mq_int_enc
);
2044 proto_tree_add_item(mq_tree
, hf_mq_id_TraceId
, tvb
, offset
+ 144, 4, p_mq_parm
->mq_int_enc
);
2045 proto_tree_add_item(mq_tree
, hf_mq_id_ProdId
, tvb
, offset
+ 148, 12, p_mq_parm
->mq_str_enc
);
2049 if (iSize
> 160 || (iPktSz
> iSize
&& iPktSz
> 160))
2051 proto_tree_add_item(mq_tree
, hf_mq_id_mqmid
, tvb
, offset
+ 160, 48, p_mq_parm
->mq_str_enc
);
2053 if (iSize
> 208 || (iPktSz
> iSize
&& iPktSz
> 208))
2055 proto_tree_add_item(mq_tree
, hf_mq_id_pal
, tvb
, offset
+ 208, 20, p_mq_parm
->mq_str_enc
);
2056 proto_tree_add_item(mq_tree
, hf_mq_id_r
, tvb
, offset
+ 228, 12, p_mq_parm
->mq_str_enc
);
2063 static int dissect_mq_md(tvbuff_t
* tvb
, proto_tree
* tree
, int offset
, mq_parm_t
* p_mq_parm
, bool bDecode
)
2067 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2068 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_MD
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_MD_EBCDIC
)
2070 uint32_t iVersion
= 0;
2071 iVersion
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2072 /* Compute length according to version */
2075 case 1: iSize
= 324; break;
2076 case 2: iSize
= 364; break;
2079 if (bDecode
&& iSize
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSize
)
2081 p_mq_parm
->iOfsEnc
= offset
+ 24;
2082 p_mq_parm
->iOfsCcs
= offset
+ 28;
2083 p_mq_parm
->iOfsFmt
= offset
+ 32;
2085 p_mq_parm
->mq_md_ccsid
.encod
= tvb_get_uint32(tvb
, offset
+ 24, p_mq_parm
->mq_int_enc
);
2086 p_mq_parm
->mq_md_ccsid
.ccsid
= tvb_get_uint32(tvb
, offset
+ 28, p_mq_parm
->mq_int_enc
);
2089 proto_tree
* mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, iSize
, ett_mq_md
, NULL
, MQ_TEXT_MD
);
2091 proto_tree_add_item(mq_tree
, hf_mq_md_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2092 proto_tree_add_item(mq_tree
, hf_mq_md_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2093 proto_tree_add_item(mq_tree
, hf_mq_md_report
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2094 proto_tree_add_item(mq_tree
, hf_mq_md_msgtype
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2095 proto_tree_add_item(mq_tree
, hf_mq_md_expiry
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2096 proto_tree_add_item(mq_tree
, hf_mq_md_feedback
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2097 dissect_mq_encoding(mq_tree
, hf_mq_md_encoding
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
2098 proto_tree_add_item(mq_tree
, hf_mq_md_ccsid
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
2099 proto_tree_add_item(mq_tree
, hf_mq_md_format
, tvb
, offset
+ 32, 8, p_mq_parm
->mq_str_enc
);
2100 proto_tree_add_item(mq_tree
, hf_mq_md_priority
, tvb
, offset
+ 40, 4, p_mq_parm
->mq_int_enc
);
2101 proto_tree_add_item(mq_tree
, hf_mq_md_persistence
, tvb
, offset
+ 44, 4, p_mq_parm
->mq_int_enc
);
2102 proto_tree_add_item(mq_tree
, hf_mq_md_msgid
, tvb
, offset
+ 48, 24, ENC_NA
);
2103 proto_tree_add_item(mq_tree
, hf_mq_md_correlid
, tvb
, offset
+ 72, 24, ENC_NA
);
2104 proto_tree_add_item(mq_tree
, hf_mq_md_backoutcnt
, tvb
, offset
+ 96, 4, p_mq_parm
->mq_int_enc
);
2105 proto_tree_add_item(mq_tree
, hf_mq_md_replytoq
, tvb
, offset
+ 100, 48, p_mq_parm
->mq_str_enc
);
2106 proto_tree_add_item(mq_tree
, hf_mq_md_replytoqmgr
, tvb
, offset
+ 148, 48, p_mq_parm
->mq_str_enc
);
2107 proto_tree_add_item(mq_tree
, hf_mq_md_userid
, tvb
, offset
+ 196, 12, p_mq_parm
->mq_str_enc
);
2108 proto_tree_add_item(mq_tree
, hf_mq_md_acttoken
, tvb
, offset
+ 208, 32, ENC_NA
);
2109 proto_tree_add_item(mq_tree
, hf_mq_md_appliddata
, tvb
, offset
+ 240, 32, p_mq_parm
->mq_str_enc
);
2110 proto_tree_add_item(mq_tree
, hf_mq_md_putappltype
, tvb
, offset
+ 272, 4, p_mq_parm
->mq_int_enc
);
2111 proto_tree_add_item(mq_tree
, hf_mq_md_putapplname
, tvb
, offset
+ 276, 28, p_mq_parm
->mq_str_enc
);
2112 proto_tree_add_item(mq_tree
, hf_mq_md_putdate
, tvb
, offset
+ 304, 8, p_mq_parm
->mq_str_enc
);
2113 proto_tree_add_item(mq_tree
, hf_mq_md_puttime
, tvb
, offset
+ 312, 8, p_mq_parm
->mq_str_enc
);
2114 proto_tree_add_item(mq_tree
, hf_mq_md_apporigdata
, tvb
, offset
+ 320, 4, p_mq_parm
->mq_str_enc
);
2118 proto_tree_add_item(mq_tree
, hf_mq_md_groupid
, tvb
, offset
+ 324, 24, ENC_NA
);
2119 proto_tree_add_item(mq_tree
, hf_mq_md_msgseqnumber
, tvb
, offset
+ 348, 4, p_mq_parm
->mq_int_enc
);
2120 proto_tree_add_item(mq_tree
, hf_mq_md_offset
, tvb
, offset
+ 352, 4, p_mq_parm
->mq_int_enc
);
2121 proto_tree_add_item(mq_tree
, hf_mq_md_msgflags
, tvb
, offset
+ 356, 4, p_mq_parm
->mq_int_enc
);
2122 proto_tree_add_item(mq_tree
, hf_mq_md_origlen
, tvb
, offset
+ 360, 4, p_mq_parm
->mq_int_enc
);
2129 static int dissect_mq_fopa(tvbuff_t
* tvb
, proto_tree
* tree
, int offset
, mq_parm_t
* p_mq_parm
)
2134 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2135 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_FOPA
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_FOPA_EBCDIC
)
2137 iVers
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2138 iSize
= tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2139 if (iSize
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSize
)
2141 proto_tree
* mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, iSize
, ett_mq_fopa
, NULL
, MQ_TEXT_FOPA
);
2143 proto_tree_add_item(mq_tree
, hf_mq_fopa_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2144 proto_tree_add_item(mq_tree
, hf_mq_fopa_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2145 proto_tree_add_item(mq_tree
, hf_mq_fopa_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2147 proto_tree_add_item(mq_tree
, hf_mq_fopa_DefPersistence
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2148 proto_tree_add_item(mq_tree
, hf_mq_fopa_DefPutRespType
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2149 proto_tree_add_item(mq_tree
, hf_mq_fopa_DefReadAhead
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2150 proto_tree_add_item(mq_tree
, hf_mq_fopa_PropertyControl
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
2152 if ((iVers
> 1) && (iSize
> 28))
2153 proto_tree_add_item(mq_tree
, hf_mq_fopa_Unknown
, tvb
, offset
+ 28, iSize
- 28, p_mq_parm
->mq_int_enc
);
2158 static int dissect_mq_fcmi(tvbuff_t
* tvb
, proto_tree
* tree
, int offset
, mq_parm_t
* p_mq_parm
)
2162 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2163 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_FCMI
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_FCMI_EBCDIC
)
2166 if (iSize
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSize
)
2168 proto_tree
* mq_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, iSize
, ett_mq_fcmi
, NULL
, MQ_TEXT_FCMI
);
2170 proto_tree_add_item(mq_tree
, hf_mq_fcmi_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2171 proto_tree_add_item(mq_tree
, hf_mq_fcmi_unknown
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2176 static void dissect_mq_pdu(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
2179 uint32_t iSegmentLength
= 0;
2180 uint32_t iSizePayload
= 0;
2182 bool bPayload
= false;
2183 bool bEBCDIC
= false;
2185 int iDistributionListSize
= 0;
2187 mq_parm_t
* p_mq_parm
;
2188 heur_dtbl_entry_t
* hdtbl_entry
;
2190 p_mq_parm
= wmem_new0(wmem_packet_scope(), mq_parm_t
);
2192 p_mq_parm
->mq_strucID
= MQ_STRUCTID_NULL
;
2193 p_mq_parm
->mq_int_enc
= ENC_BIG_ENDIAN
;
2194 p_mq_parm
->mq_str_enc
= ENC_UTF_8
| ENC_NA
;
2196 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "MQ");
2198 p_mq_parm
->iOfsEnc
= 0;
2199 p_mq_parm
->iOfsFmt
= 0;
2200 p_mq_parm
->iOfsCcs
= 0;
2202 if (tvb_reported_length(tvb
) >= 4)
2204 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
2205 if (((p_mq_parm
->mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
||
2206 (p_mq_parm
->mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
2207 && tvb_reported_length_remaining(tvb
, offset
) >= 28)
2209 proto_tree
* mq_tree
= NULL
;
2210 proto_tree
* mqroot_tree
= NULL
;
2211 proto_item
* ti
= NULL
;
2213 /* An MQ packet always starts with this structure*/
2215 int iSizeMPF
= 0; /* Size Of Multiplexed Field */
2217 strid_enc
= ENC_ASCII
| ENC_NA
;
2218 if ((p_mq_parm
->mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
2221 strid_enc
= ENC_EBCDIC
| ENC_NA
;
2222 p_mq_parm
->mq_str_enc
= ENC_EBCDIC
| ENC_NA
;
2225 iSegmentLength
= tvb_get_ntohl(tvb
, offset
+ 4);
2227 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_TSHM
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_TSHM_EBCDIC
)
2229 if (tvb_reported_length_remaining(tvb
, offset
) < 36)
2232 iSizeTSH
+= iSizeMPF
;
2233 p_mq_parm
->mq_convID
= tvb_get_ntohl(tvb
, offset
+ 8);
2234 p_mq_parm
->mq_rqstID
= tvb_get_ntohl(tvb
, offset
+ 12);
2236 p_mq_parm
->mq_opcode
= tvb_get_uint8(tvb
, offset
+ iSizeMPF
+ 9);
2238 if (p_mq_parm
->mq_opcode
== MQ_TST_REQUEST_MSGS
|| p_mq_parm
->mq_opcode
== MQ_TST_ASYNC_MESSAGE
)
2240 p_mq_parm
->iOfsEnc
= offset
+ iSizeMPF
+ 20;
2241 p_mq_parm
->iOfsCcs
= offset
+ iSizeMPF
+ 24;
2242 p_mq_parm
->iOfsFmt
= offset
;
2244 p_mq_parm
->mq_int_enc
= (tvb_get_uint8(tvb
, offset
+ iSizeMPF
+ 8) == MQ_LITTLE_ENDIAN
? ENC_LITTLE_ENDIAN
: ENC_BIG_ENDIAN
);
2245 p_mq_parm
->mq_ctlf1
= tvb_get_uint8(tvb
, offset
+ iSizeMPF
+ 10);
2246 p_mq_parm
->mq_ctlf2
= tvb_get_uint8(tvb
, offset
+ iSizeMPF
+ 11);
2248 p_mq_parm
->mq_tsh_ccsid
.encod
= tvb_get_uint32(tvb
, offset
+ iSizeMPF
+ 20, p_mq_parm
->mq_int_enc
);
2249 p_mq_parm
->mq_tsh_ccsid
.ccsid
= tvb_get_uint16(tvb
, offset
+ iSizeMPF
+ 24, p_mq_parm
->mq_int_enc
);
2251 if (IS_EBCDIC(p_mq_parm
->mq_tsh_ccsid
.ccsid
) && !bEBCDIC
)
2254 p_mq_parm
->mq_str_enc
= ENC_EBCDIC
| ENC_NA
;
2257 if (!mq_in_reassembly
)
2259 col_clear_fence(pinfo
->cinfo
, COL_INFO
);
2260 col_clear(pinfo
->cinfo
, COL_INFO
);
2261 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "%-17s", val_to_str_ext(p_mq_parm
->mq_opcode
, GET_VALS_EXTP(opcode
), "Unknown (0x%02x)"));
2266 if (p_mq_parm
->mq_opcode
!= MQ_TST_ASYNC_MESSAGE
)
2268 ti
= proto_tree_add_item(tree
, proto_mq
, tvb
, offset
, -1, ENC_NA
);
2269 proto_item_append_text(ti
, " (%s)", val_to_str_ext(p_mq_parm
->mq_opcode
, GET_VALS_EXTP(opcode
), "Unknown (0x%02x)"));
2270 if (bEBCDIC
== true)
2271 proto_item_append_text(ti
, " (EBCDIC)");
2272 mqroot_tree
= proto_item_add_subtree(ti
, ett_mq
);
2279 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeTSH
, ett_mq_tsh
, NULL
, MQ_TEXT_TSH
);
2281 proto_tree_add_item(mq_tree
, hf_mq_tsh_StructID
, tvb
, offset
+ 0, 4, strid_enc
);
2282 proto_tree_add_item(mq_tree
, hf_mq_tsh_mqseglen
, tvb
, offset
+ 4, 4, ENC_BIG_ENDIAN
);
2286 proto_tree_add_item(mq_tree
, hf_mq_tsh_convid
, tvb
, offset
+ 8, 4, ENC_BIG_ENDIAN
);
2287 proto_tree_add_item(mq_tree
, hf_mq_tsh_requestid
, tvb
, offset
+ 12, 4, ENC_BIG_ENDIAN
);
2290 proto_tree_add_item(mq_tree
, hf_mq_tsh_byteorder
, tvb
, offset
+ iSizeMPF
+ 8, 1, ENC_BIG_ENDIAN
);
2291 proto_tree_add_item(mq_tree
, hf_mq_tsh_opcode
, tvb
, offset
+ iSizeMPF
+ 9, 1, ENC_BIG_ENDIAN
);
2293 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ iSizeMPF
+ 10, hf_mq_tsh_ctlflgs1
, ett_mq_tsh_tcf
, pf_flds_tcf
, ENC_BIG_ENDIAN
);
2294 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ iSizeMPF
+ 11, hf_mq_tsh_ctlflgs2
, ett_mq_tsh_tcf2
, pf_flds_tcf2
, ENC_BIG_ENDIAN
);
2296 proto_tree_add_item(mq_tree
, hf_mq_tsh_luwid
, tvb
, offset
+ iSizeMPF
+ 12, 8, ENC_NA
);
2297 dissect_mq_encoding(mq_tree
, hf_mq_tsh_encoding
, tvb
, offset
+ iSizeMPF
+ 20, 4, p_mq_parm
->mq_int_enc
);
2298 proto_tree_add_item(mq_tree
, hf_mq_tsh_ccsid
, tvb
, offset
+ iSizeMPF
+ 24, 2, p_mq_parm
->mq_int_enc
);
2299 proto_tree_add_item(mq_tree
, hf_mq_tsh_reserved
, tvb
, offset
+ iSizeMPF
+ 26, 2, p_mq_parm
->mq_int_enc
);
2303 /* Now dissect the embedded structures */
2304 if (tvb_reported_length_remaining(tvb
, offset
) >= 4)
2306 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
2307 if (((p_mq_parm
->mq_ctlf1
& MQ_TCF_FIRST
) != 0) || p_mq_parm
->mq_opcode
< 0x80)
2309 /* First MQ segment (opcodes below 0x80 never span several TSH) */
2311 if (p_mq_parm
->mq_opcode
>= 0x80 && p_mq_parm
->mq_opcode
<= 0x9F && tvb_reported_length_remaining(tvb
, offset
) >= 16)
2313 uint32_t iReturnCode
= 0;
2315 iReturnCode
= tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2316 iHdl
= tvb_get_uint32(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
2317 if (!mq_in_reassembly
)
2318 dissect_mq_addCR_colinfo(pinfo
, p_mq_parm
);
2319 if (iHdl
!= 0 && iHdl
!= 0xffffffff && !mq_in_reassembly
)
2320 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%04x", iHdl
);
2321 if (iReturnCode
!= 0)
2322 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " [RC=%d]", iReturnCode
);
2324 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeAPI
, ett_mq_api
, NULL
, MQ_TEXT_API
);
2326 proto_tree_add_item(mq_tree
, hf_mq_api_replylen
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2327 proto_tree_add_item(mq_tree
, hf_mq_api_compcode
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2328 proto_tree_add_item(mq_tree
, hf_mq_api_reascode
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2329 proto_tree_add_item(mq_tree
, hf_mq_api_objecthdl
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2332 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2334 capLen
= tvb_reported_length_remaining(tvb
, offset
);
2335 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_MSH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_MSH_EBCDIC
) && capLen
>= 20)
2338 iSizePayload
= tvb_get_uint32(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2341 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSize
, ett_mq_msh
, NULL
, MQ_TEXT_MSH
);
2343 proto_tree_add_item(mq_tree
, hf_mq_msh_StructID
, tvb
, offset
+ 0, 4, p_mq_parm
->mq_str_enc
);
2344 proto_tree_add_item(mq_tree
, hf_mq_msh_seqnum
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2345 proto_tree_add_item(mq_tree
, hf_mq_msh_datalength
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2346 proto_tree_add_item(mq_tree
, hf_mq_msh_unknown1
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2347 proto_tree_add_item(mq_tree
, hf_mq_msh_msglength
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2351 else if (p_mq_parm
->mq_opcode
== MQ_TST_CONAUTH_INFO
&& capLen
>= 20)
2357 iUsr
= tvb_get_uint32(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2358 iPsw
= tvb_get_uint32(tvb
, offset
+ 20, p_mq_parm
->mq_int_enc
);
2360 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSize
, ett_mq_caut
, NULL
, MQ_TEXT_CAUT
);
2362 proto_tree_add_item(mq_tree
, hf_mq_caut_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2363 proto_tree_add_item(mq_tree
, hf_mq_caut_AuthType
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2364 proto_tree_add_item(mq_tree
, hf_mq_caut_UsrMaxLen
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2365 proto_tree_add_item(mq_tree
, hf_mq_caut_PwdMaxLen
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2366 proto_tree_add_item(mq_tree
, hf_mq_caut_UsrLength
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2367 proto_tree_add_item(mq_tree
, hf_mq_caut_PwdLength
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2370 proto_tree_add_item(mq_tree
, hf_mq_caut_usr
, tvb
, offset
+ 24, iUsr
, p_mq_parm
->mq_str_enc
);
2372 proto_tree_add_item(mq_tree
, hf_mq_caut_psw
, tvb
, offset
+ 24 + iUsr
, iPsw
, p_mq_parm
->mq_str_enc
);
2374 offset
+= iSize
+ iUsr
+ iPsw
;
2375 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2377 else if (p_mq_parm
->mq_opcode
== MQ_TST_SOCKET_ACTION
&& capLen
>= 20)
2384 p_mq_parm
->mq_convID
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
2385 p_mq_parm
->mq_rqstID
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2386 dissect_mq_addCR_colinfo(pinfo
, p_mq_parm
);
2387 iTy
= tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2388 iP1
= tvb_get_uint32(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
2389 iP2
= tvb_get_uint32(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2390 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Type=%d, P1=%d, P2=%d", iTy
, iP1
, iP2
);
2392 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeAPI
, ett_mq_socket
, NULL
, MQ_TEXT_SOCKET
);
2394 proto_tree_add_item(mq_tree
, hf_mq_socket_conversid
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2395 proto_tree_add_item(mq_tree
, hf_mq_socket_requestid
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2396 proto_tree_add_item(mq_tree
, hf_mq_socket_type
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2397 proto_tree_add_item(mq_tree
, hf_mq_socket_parm1
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2398 proto_tree_add_item(mq_tree
, hf_mq_socket_parm2
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2401 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2403 else if (p_mq_parm
->mq_opcode
== MQ_TST_STATUS
&& capLen
>= 8)
2405 /* Some status are 28 bytes long and some are 36 bytes long */
2407 int iStatusLength
= 0;
2409 iStatus
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2410 iStatusLength
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
2412 if (tvb_reported_length_remaining(tvb
, offset
) >= iStatusLength
)
2415 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Code=%s", val_to_str_ext(iStatus
, GET_VALS_EXTP(status
), "Unknown (0x%08x)"));
2417 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, 8, ett_mq_status
, NULL
, MQ_TEXT_STAT
);
2419 proto_tree_add_item(mq_tree
, hf_mq_status_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2420 proto_tree_add_item(mq_tree
, hf_mq_status_code
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2422 if (iStatusLength
>= 12)
2423 proto_tree_add_item(mq_tree
, hf_mq_status_value
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2425 offset
+= iStatusLength
;
2428 else if (p_mq_parm
->mq_opcode
== MQ_TST_PING
&& capLen
> 4)
2430 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, -1, ett_mq_ping
, NULL
, MQ_TEXT_PING
);
2432 proto_tree_add_item(mq_tree
, hf_mq_ping_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2433 proto_tree_add_item(mq_tree
, hf_mq_ping_buffer
, tvb
, offset
+ 4, -1, ENC_NA
);
2435 offset
= tvb_reported_length(tvb
);
2437 else if (p_mq_parm
->mq_opcode
== MQ_TST_RESET
&& capLen
>= 8)
2439 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, -1, ett_mq_reset
, NULL
, MQ_TEXT_RESET
);
2441 proto_tree_add_item(mq_tree
, hf_mq_reset_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2442 proto_tree_add_item(mq_tree
, hf_mq_reset_seqnum
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2444 offset
= tvb_reported_length(tvb
);
2446 else if ((p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE
||
2447 p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN_REPLY
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE_REPLY
) && capLen
>= 4)
2449 offset
+= dissect_mq_od(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
2452 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, 4, ett_mq_open
, NULL
, MQ_TEXT_OPEN
);
2453 if (p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN
|| p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN_REPLY
)
2455 dissect_mq_MQOO(tvb
, mq_tree
, offset
, ett_mq_open_option
, hf_mq_open_options
, p_mq_parm
);
2457 if (p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE_REPLY
)
2459 dissect_mq_MQCO(tvb
, mq_tree
, offset
, p_mq_parm
);
2463 offset
+= dissect_mq_fopa(tvb
, mqroot_tree
, offset
, p_mq_parm
);
2464 offset
+= dissect_mq_fcmi(tvb
, mqroot_tree
, offset
, p_mq_parm
);
2466 else if ((p_mq_parm
->mq_opcode
== MQ_TST_MQCONN
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCONN_REPLY
) && capLen
> 0)
2470 /*iSizeCONN = ((iVersionID == 4 || iVersionID == 6) ? 120 : 112);*/ /* guess */
2471 /* The iVersionID is available in the previous ID segment, we should keep a state
2472 * Instead we rely on the segment length announced in the TSH */
2473 /* The MQCONN structure is special because it does not start with a structid */
2474 iSizeCONN
= iSegmentLength
- iSizeTSH
- iSizeAPI
;
2475 if (iSizeCONN
!= 120 && /*FAPLvl <= 5 - 6 Version 1 */
2476 iSizeCONN
!= 260 && /*FAPLvl == 7 - 11 Version 1 */
2477 iSizeCONN
!= 332 && /*FAPLvl == 12 -13 Version 2 */
2478 iSizeCONN
!= 460) /*FAPLvl == 14 Version 3 */
2481 if (iSizeCONN
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSizeCONN
)
2483 char* sApplicationName
;
2491 We have to handle the ccsid/coding of the MQCONN REPLY
2492 on z/OS it is always EBCDIC
2493 integer are always BIG_ENDIAN
2495 if (p_mq_parm
->mq_opcode
== MQ_TST_MQCONN_REPLY
)
2497 iApp
= tvb_get_letohl(tvb
, offset
+ 48 + 28);
2499 iCod
= ENC_LITTLE_ENDIAN
;
2501 iCod
= ENC_BIG_ENDIAN
;
2502 cChr
= tvb_get_uint8(tvb
, offset
+ 48);
2503 if ((cChr
>= 'A' && cChr
<= 'Z') ||
2504 (cChr
>= 'a' && cChr
<= 'z') ||
2505 (cChr
>= '0' && cChr
<= '9') ||
2508 iEnc
= p_mq_parm
->mq_str_enc
;
2517 iCod
= p_mq_parm
->mq_int_enc
;
2518 iEnc
= p_mq_parm
->mq_str_enc
;
2520 iApp
= tvb_get_uint32(tvb
, offset
+ 48 + 28, iCod
);
2522 sApplicationName
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 48, 28, iEnc
);
2523 sApplicationName
= format_text_chr(wmem_packet_scope(), sApplicationName
, strlen(sApplicationName
), '.');
2524 if (strip_trailing_blanks((uint8_t*)sApplicationName
, (uint32_t)strlen(sApplicationName
)) > 0)
2526 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " App=%s", sApplicationName
);
2528 sQMgr
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
, 48, iEnc
);
2529 sQMgr
= format_text_chr(wmem_packet_scope(), sQMgr
, strlen(sQMgr
), '.');
2530 if (strip_trailing_blanks((uint8_t*)sQMgr
, (uint32_t)strlen(sQMgr
)) > 0)
2532 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " QM=%s", sQMgr
);
2537 ptvcursor_t
* cursor
;
2538 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeCONN
, ett_mq_conn
, NULL
, MQ_TEXT_CONN
);
2540 cursor
= ptvcursor_new(pinfo
->pool
, mq_tree
, tvb
, offset
);
2542 ptvcursor_add(cursor
, hf_mq_conn_QMgr
, 48, iEnc
);
2543 ptvcursor_add(cursor
, hf_mq_conn_appname
, 28, iEnc
);
2544 ptvcursor_add(cursor
, hf_mq_conn_apptype
, 4, iCod
);
2545 ptvcursor_add(cursor
, hf_mq_conn_acttoken
, 32, ENC_NA
);
2547 ptvcursor_add(cursor
, hf_mq_conn_options
, 4, iCod
);
2548 ptvcursor_add(cursor
, hf_mq_conn_Xoptions
, 4, iCod
);
2549 if (iSizeCONN
== 120)
2551 int tRemain
= tvb_reported_length_remaining(tvb
, ptvcursor_current_offset(cursor
));
2554 if (tRemain
>= 24 && iApp
!= MQ_MQAT_JAVA
)
2556 ptvcursor_add(cursor
, hf_mq_fcno_prodid
, 24, iEnc
);
2559 if (tRemain
>= 48 && iApp
!= MQ_MQAT_JAVA
)
2561 ptvcursor_add(cursor
, hf_mq_fcno_mqmid
, 48, iEnc
);
2565 ptvcursor_add(cursor
, hf_mq_fcno_unknowb01
, tRemain
, ENC_NA
);
2570 proto_tree
* mq_tree_sub
;
2573 int nofs
= ptvcursor_current_offset(cursor
);
2575 iVersion
= tvb_get_uint32(tvb
, nofs
+ 4, iCod
);
2576 iOption
= tvb_get_uint32(tvb
, nofs
+ 8, iCod
);
2577 mq_tree_sub
= proto_tree_add_subtree(mq_tree
, tvb
, nofs
, iSizeCONN
- nofs
, ett_mq_fcno
, NULL
, MQ_TEXT_FCNO
);
2579 ptvcursor_set_tree(cursor
, mq_tree_sub
);
2581 ptvcursor_add(cursor
, hf_mq_fcno_StructID
, 4, iEnc
);
2582 ptvcursor_add(cursor
, hf_mq_fcno_version
, 4, iCod
);
2583 ptvcursor_add(cursor
, hf_mq_fcno_capflag
, 4, iCod
);
2586 ptvcursor_add(cursor
, hf_mq_fcno_conn_tag
, 128, ENC_NA
);
2590 ptvcursor_add(cursor
, hf_mq_fcno_retconn_tag
, 128, ENC_NA
);
2592 int tRemain
= tvb_reported_length_remaining(tvb
, ptvcursor_current_offset(cursor
));
2595 if (tRemain
>= 24 && iApp
!= MQ_MQAT_JAVA
)
2597 ptvcursor_add(cursor
, hf_mq_fcno_prodid
, 24, iEnc
);
2600 if (tRemain
>= 48 && iApp
!= MQ_MQAT_JAVA
)
2602 ptvcursor_add(cursor
, hf_mq_fcno_mqmid
, 48, iEnc
);
2609 uint32_t tUsed
= dissect_mqpcf_parm(tvb
, pinfo
, mq_tree_sub
, ptvcursor_current_offset(cursor
), tRemain
, iCod
, true);
2613 ptvcursor_add(cursor
, hf_mq_fcno_unknowb01
, tRemain
, ENC_NA
);
2617 iSizeCONN
= ptvcursor_current_offset(cursor
) - offset
;
2619 ptvcursor_free(cursor
);
2621 offset
+= iSizeCONN
;
2624 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
) && capLen
>= 12)
2626 /* The MQINQ/MQSET structure is special because it does not start with a structid */
2633 iNbSelectors
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
2634 iNbIntegers
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2635 iCharLen
= tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2637 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, -1, ett_mq_inq
, NULL
, MQ_TEXT_INQ
);
2639 proto_tree_add_item(mq_tree
, hf_mq_inq_nbsel
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2640 proto_tree_add_item(mq_tree
, hf_mq_inq_nbint
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2641 proto_tree_add_item(mq_tree
, hf_mq_inq_charlen
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2644 if (tvb_reported_length_remaining(tvb
, offset
+ iOffsetINQ
) >= iNbSelectors
* 4)
2646 unsigned _posSel
= offset
+ iOffsetINQ
;
2647 unsigned _posSelE
= _posSel
+ iNbSelectors
* 4 + 4;
2648 const uint8_t* _pVal
= NULL
;
2649 for (iSelector
= 0; iSelector
< iNbSelectors
; iSelector
++)
2651 proto_tree_add_item(mq_tree
, hf_mq_inq_sel
, tvb
, offset
+ iOffsetINQ
+ iSelector
* 4, 4, p_mq_parm
->mq_int_enc
);
2653 iOffsetINQ
+= iNbSelectors
* 4;
2654 if (p_mq_parm
->mq_opcode
== MQ_TST_MQINQ_REPLY
|| p_mq_parm
->mq_opcode
== MQ_TST_MQSET
)
2657 iSizeINQValues
= iNbIntegers
* 4 + iCharLen
;
2658 if (tvb_reported_length_remaining(tvb
, offset
+ iOffsetINQ
) >= iSizeINQValues
)
2663 for (iInteger
= 0; iInteger
< iNbIntegers
; iInteger
++)
2665 _lSel
= tvb_get_uint32(tvb
, _posSel
, p_mq_parm
->mq_int_enc
);
2666 while (_posSel
< _posSelE
&& (_lSel
< MQ_MQIA_FIRST
|| _lSel
> MQ_MQIA_LAST
))
2669 _lSel
= tvb_get_uint32(tvb
, _posSel
, p_mq_parm
->mq_int_enc
);
2671 _lVal
= tvb_get_uint32(tvb
, offset
+ iOffsetINQ
+ iInteger
* 4, p_mq_parm
->mq_int_enc
);
2672 _pVal
= dissect_mqpcf_parm_getintval(_lSel
, _lVal
);
2675 proto_tree_add_uint_format(mq_tree
, hf_mq_inq_intvalue
, tvb
, offset
+ iOffsetINQ
+ iInteger
* 4, 4, 0,
2676 "Integer value...: %s (%d)", _pVal
, _lVal
);
2678 proto_tree_add_item(mq_tree
, hf_mq_inq_intvalue
, tvb
, offset
+ iOffsetINQ
+ iInteger
* 4, 4, p_mq_parm
->mq_int_enc
);
2680 iOffsetINQ
+= iNbIntegers
* 4;
2683 proto_tree_add_item(mq_tree
, hf_mq_inq_charvalues
, tvb
, offset
+ iOffsetINQ
, iCharLen
, p_mq_parm
->mq_str_enc
);
2688 offset
+= tvb_reported_length(tvb
);
2690 else if (p_mq_parm
->mq_opcode
== MQ_TST_NOTIFICATION
)
2695 uHdl
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2696 uCod
= tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2698 dissect_mq_addCR_colinfo(pinfo
, p_mq_parm
);
2699 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%04x Cod=%s(0x%x)",
2700 uHdl
, try_val_to_str(uCod
, GET_VALSV(notifcode
)), uCod
);
2702 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, -1, ett_mq_notif
, NULL
, MQ_TEXT_NOTIFICATION
);
2704 proto_tree_add_item(mq_tree
, hf_mq_notif_vers
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2705 proto_tree_add_item(mq_tree
, hf_mq_notif_handle
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2706 proto_tree_add_item(mq_tree
, hf_mq_notif_code
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2707 proto_tree_add_item(mq_tree
, hf_mq_notif_value
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2710 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2712 else if (p_mq_parm
->mq_opcode
== MQ_TST_REQUEST_MSGS
)
2720 iHdl
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2721 iMaxMsgLen
= tvb_get_uint32(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2722 iFlags
= tvb_get_uint32(tvb
, offset
+ 32, p_mq_parm
->mq_int_enc
);
2723 iGlbMsgIdx
= tvb_get_uint32(tvb
, offset
+ 36, p_mq_parm
->mq_int_enc
);
2724 if (iFlags
& MQ_REQUEST_MSG_SELECTION
)
2726 p_mq_parm
->mq_msgreq_ccsid
.encod
= tvb_get_uint32(tvb
, offset
+ 44, p_mq_parm
->mq_int_enc
);
2727 p_mq_parm
->mq_msgreq_ccsid
.ccsid
= tvb_get_uint32(tvb
, offset
+ 48, p_mq_parm
->mq_int_enc
);
2729 dissect_mq_addCR_colinfo(pinfo
, p_mq_parm
);
2730 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%04x RqstFlags=%08x GlbMsgIdx=%d MaxLen=%d ",
2731 iHdl
, iFlags
, iGlbMsgIdx
, iMaxMsgLen
);
2735 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, -1, ett_mq_msg
, NULL
, MQ_TEXT_REQMSG
);
2737 proto_tree_add_item(mq_tree
, hf_mq_msgreq_version
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2738 proto_tree_add_item(mq_tree
, hf_mq_msgreq_handle
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2739 proto_tree_add_item(mq_tree
, hf_mq_msgreq_RecvBytes
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2740 proto_tree_add_item(mq_tree
, hf_mq_msgreq_RqstBytes
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2741 proto_tree_add_item(mq_tree
, hf_mq_msgreq_MaxMsgLen
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2742 dissect_mq_MQGMO(tvb
, mq_tree
, offset
+ 20, ett_mq_gmo_option
, p_mq_parm
);
2744 proto_tree_add_item(mq_tree
, hf_mq_msgreq_WaitIntrv
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
2745 proto_tree_add_item(mq_tree
, hf_mq_msgreq_QueStatus
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
2746 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 32, hf_mq_msgreq_RqstFlags
, ett_mq_msgreq_RqstFlags
, pf_flds_msgreq_flags
, p_mq_parm
->mq_int_enc
);
2748 proto_tree_add_item(mq_tree
, hf_mq_msgreq_GlbMsgIdx
, tvb
, offset
+ 36, 4, p_mq_parm
->mq_int_enc
);
2750 if (iFlags
& MQ_REQUEST_MSG_SELECTION
)
2752 proto_tree_add_item(mq_tree
, hf_mq_msgreq_SelectIdx
, tvb
, offset
+ 40, 2, p_mq_parm
->mq_int_enc
);
2753 proto_tree_add_item(mq_tree
, hf_mq_msgreq_MQMDVers
, tvb
, offset
+ 42, 2, p_mq_parm
->mq_int_enc
);
2754 proto_tree_add_item(mq_tree
, hf_mq_msgreq_ccsid
, tvb
, offset
+ 44, 4, p_mq_parm
->mq_int_enc
);
2755 dissect_mq_encoding(mq_tree
, hf_mq_msgreq_encoding
, tvb
, offset
+ 48, 4, p_mq_parm
->mq_int_enc
);
2756 proto_tree_add_item(mq_tree
, hf_mq_msgreq_MsgSeqNum
, tvb
, offset
+ 52, 4, p_mq_parm
->mq_int_enc
);
2757 proto_tree_add_item(mq_tree
, hf_mq_msgreq_offset
, tvb
, offset
+ 56, 4, p_mq_parm
->mq_int_enc
);
2758 dissect_mq_MQMO(tvb
, mq_tree
, offset
+ 60, ett_mq_gmo_matchoption
, p_mq_parm
);
2759 iOpt
= tvb_get_uint32(tvb
, offset
+ 60, p_mq_parm
->mq_int_enc
);
2761 offset
+= MQ_REQUEST_MSG_SIZE_V1_SELECTION_FIXED_PART
;
2762 if (iOpt
& MQ_MQMO_MATCH_MSG_ID
)
2764 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchMsgId
, tvb
, offset
, 24, p_mq_parm
->mq_str_enc
);
2767 if (iOpt
& MQ_MQMO_MATCH_CORREL_ID
)
2769 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchCorId
, tvb
, offset
, 24, p_mq_parm
->mq_str_enc
);
2772 if (iOpt
& MQ_MQMO_MATCH_GROUP_ID
)
2774 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchGrpid
, tvb
, offset
, 24, p_mq_parm
->mq_str_enc
);
2777 if (iOpt
& MQ_MQMO_MATCH_MSG_TOKEN
)
2779 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchMsgTk
, tvb
, offset
, 16, p_mq_parm
->mq_str_enc
);
2785 offset
+= MQ_REQUEST_MSG_SIZE_V1_NO_SELECTION
;
2788 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2790 else if (p_mq_parm
->mq_opcode
== MQ_TST_ASYNC_MESSAGE
)
2801 iHdl
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2802 iGlbMsgIdx
= tvb_get_uint32(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
2803 iSegmIndex
= tvb_get_uint16(tvb
, offset
+ 20, p_mq_parm
->mq_int_enc
);
2805 if (p_mq_parm
->mq_ctlf1
& MQ_TCF_FIRST
)
2807 iReasnCode
= tvb_get_uint32(tvb
, offset
+ 24, p_mq_parm
->mq_int_enc
);
2810 if (iSegmIndex
== 0)
2812 iStrLen
= tvb_get_uint8(tvb
, offset
+ 54);
2813 iPadLen
= (2 + 1 + iStrLen
) % 4;
2814 iPadLen
= (iPadLen
) ? 4 - iPadLen
: 0;
2822 iHdrL
= (iSegmIndex
== 0) ? (54 + 1 + iStrLen
+ iPadLen
) : 24;
2824 if (!mq_in_reassembly
)
2826 dissect_mq_addCR_colinfo(pinfo
, p_mq_parm
);
2827 col_append_fstr(pinfo
->cinfo
, COL_INFO
,
2828 " Hdl=0x%04x GlbMsgIdx=%d, Full Message",
2830 if (iReasnCode
!= MQ_MQRC_NONE
)
2831 col_append_fstr(pinfo
->cinfo
, COL_INFO
,
2832 ", RC=%d(0x%x) - %s",
2833 iReasnCode
, iReasnCode
,
2834 val_to_str_ext(iReasnCode
, GET_VALS_EXTP(MQRC
), "Unknown (0x%02x)"));
2837 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iHdrL
, ett_mq_msg
, NULL
, MQ_TEXT_ASYMSG
);
2839 proto_tree_add_item(mq_tree
, hf_mq_msgasy_version
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2840 proto_tree_add_item(mq_tree
, hf_mq_msgasy_handle
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2841 proto_tree_add_item(mq_tree
, hf_mq_msgasy_MsgIndex
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2842 proto_tree_add_item(mq_tree
, hf_mq_msgasy_GlbMsgIdx
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2843 proto_tree_add_item(mq_tree
, hf_mq_msgasy_SegLength
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2844 proto_tree_add_item(mq_tree
, hf_mq_msgasy_SegmIndex
, tvb
, offset
+ 20, 2, p_mq_parm
->mq_int_enc
);
2845 proto_tree_add_item(mq_tree
, hf_mq_msgasy_SeleIndex
, tvb
, offset
+ 22, 2, p_mq_parm
->mq_int_enc
);
2846 if (p_mq_parm
->mq_ctlf1
& MQ_TCF_FIRST
)
2848 proto_tree_add_item(mq_tree
, hf_mq_msgasy_ReasonCod
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
2849 proto_tree_add_item(mq_tree
, hf_mq_msgasy_TotMsgLen
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
2850 proto_tree_add_item(mq_tree
, hf_mq_msgasy_ActMsgLen
, tvb
, offset
+ 32, 4, p_mq_parm
->mq_int_enc
);
2851 proto_tree_add_item(mq_tree
, hf_mq_msgasy_MsgToken
, tvb
, offset
+ 36, 16, p_mq_parm
->mq_int_enc
);
2852 proto_tree_add_item(mq_tree
, hf_mq_msgasy_Status
, tvb
, offset
+ 52, 2, p_mq_parm
->mq_int_enc
);
2853 proto_tree_add_item(mq_tree
, hf_mq_msgasy_resolQNLn
, tvb
, offset
+ 54, 1, ENC_NA
);
2854 proto_tree_add_item(mq_tree
, hf_mq_msgasy_resolQNme
, tvb
, offset
+ 55, iStrLen
, p_mq_parm
->mq_str_enc
);
2856 proto_tree_add_item(mq_tree
, hf_mq_msgasy_padding
, tvb
, offset
+ 55 + iStrLen
, iPadLen
, p_mq_parm
->mq_str_enc
);
2859 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2861 iSizePayload
= tvb_reported_length_remaining(tvb
, offset
);
2862 bPayload
= (iSizePayload
> 0);
2864 else if ((p_mq_parm
->mq_opcode
== MQ_TST_SPI
|| p_mq_parm
->mq_opcode
== MQ_TST_SPI_REPLY
) && capLen
>= 12)
2867 uint32_t iSpiVerb
= 0;
2869 p_mq_parm
->iOfsEnc
= offset
+ 12;
2870 p_mq_parm
->iOfsCcs
= offset
+ 16;
2871 p_mq_parm
->iOfsFmt
= offset
+ 20;
2873 iSpiVerb
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
2874 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " (%s)", val_to_str(iSpiVerb
, mq_spi_verbs_vals
, "Unknown (0x%08x)"));
2876 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, 12, ett_mq_spi
, NULL
, MQ_TEXT_SPI
);
2878 proto_tree_add_item(mq_tree
, hf_mq_spi_verb
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2879 proto_tree_add_item(mq_tree
, hf_mq_spi_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2880 proto_tree_add_item(mq_tree
, hf_mq_spi_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2883 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2884 if (((p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxU
||
2885 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxU_EBCDIC
)
2886 && tvb_reported_length_remaining(tvb
, offset
) >= 12)
2891 if ((p_mq_parm
->mq_strucID
& MQ_MASK_SPxx
) == MQ_STRUCTID_SPxx
)
2893 strid_enc
= ENC_ASCII
| ENC_NA
;
2897 strid_enc
= ENC_EBCDIC
| ENC_NA
;
2899 sStructId
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
, 4, strid_enc
);
2900 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, 12, ett_mq_spi_base
, NULL
, (const char*)sStructId
);
2902 proto_tree_add_item(mq_tree
, hf_mq_spi_base_StructID
, tvb
, offset
, 4, strid_enc
);
2903 proto_tree_add_item(mq_tree
, hf_mq_spi_base_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2904 proto_tree_add_item(mq_tree
, hf_mq_spi_base_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2907 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2909 if ((iSizeSPIMD
= dissect_mq_md(tvb
, mqroot_tree
, offset
, p_mq_parm
, true)) != 0)
2911 offset
+= iSizeSPIMD
;
2912 offset
+= dissect_mq_gmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
);
2913 offset
+= dissect_mq_pmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
2914 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2917 offset
+= dissect_mq_od(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
2919 if (((p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxO
||
2920 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxO_EBCDIC
||
2921 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxI
||
2922 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxI_EBCDIC
)
2923 && tvb_reported_length_remaining(tvb
, offset
) >= 12)
2925 /* Dissect the common part of these structures */
2926 if ((p_mq_parm
->mq_strucID
& MQ_MASK_SPxx
) == MQ_STRUCTID_SPxx
)
2928 strid_enc
= ENC_ASCII
| ENC_NA
;
2932 strid_enc
= ENC_EBCDIC
| ENC_NA
;
2934 sStructId
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
, 4, strid_enc
);
2935 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, -1, ett_mq_spi_base
, NULL
, (const char*)sStructId
);
2937 proto_tree_add_item(mq_tree
, hf_mq_spi_base_StructID
, tvb
, offset
, 4, strid_enc
);
2938 proto_tree_add_item(mq_tree
, hf_mq_spi_base_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2939 proto_tree_add_item(mq_tree
, hf_mq_spi_base_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2941 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPQO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPQO_EBCDIC
)
2942 && tvb_reported_length_remaining(tvb
, offset
) >= 16)
2946 int iVerbNumber
= 0;
2947 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_nbverb
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2948 iVerbNumber
= tvb_get_uint32(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
2950 if (tvb_reported_length_remaining(tvb
, offset
) >= iVerbNumber
* 20 + 16)
2953 iOffsetSPI
= offset
+ 16;
2954 for (iVerb
= 0; iVerb
< iVerbNumber
; iVerb
++)
2956 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_verbid
, tvb
, iOffsetSPI
, 4, p_mq_parm
->mq_int_enc
);
2957 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_maxiover
, tvb
, iOffsetSPI
+ 4, 4, p_mq_parm
->mq_int_enc
);
2958 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_maxinver
, tvb
, iOffsetSPI
+ 8, 4, p_mq_parm
->mq_int_enc
);
2959 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_maxouver
, tvb
, iOffsetSPI
+ 12, 4, p_mq_parm
->mq_int_enc
);
2960 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_flags
, tvb
, iOffsetSPI
+ 16, 4, p_mq_parm
->mq_int_enc
);
2963 offset
+= iVerbNumber
* 20 + 16;
2967 else if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPAI
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPAI_EBCDIC
)
2968 && tvb_reported_length_remaining(tvb
, offset
) >= 136)
2970 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_mode
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2971 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_unknown1
, tvb
, offset
+ 16, 48, p_mq_parm
->mq_str_enc
);
2972 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_unknown2
, tvb
, offset
+ 64, 48, p_mq_parm
->mq_str_enc
);
2973 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_msgid
, tvb
, offset
+ 112, 24, p_mq_parm
->mq_str_enc
);
2976 else if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGI
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGI_EBCDIC
)
2977 && tvb_reported_length_remaining(tvb
, offset
) >= 24)
2979 proto_tree_add_item(mq_tree
, hf_mq_spi_spgi_batchsz
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2980 proto_tree_add_item(mq_tree
, hf_mq_spi_spgi_batchint
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2981 proto_tree_add_item(mq_tree
, hf_mq_spi_spgi_maxmsgsz
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2984 else if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPPI
||
2985 p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGO_EBCDIC
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPPI_EBCDIC
)
2986 && tvb_reported_length_remaining(tvb
, offset
) >= 20)
2988 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 12, hf_mq_spi_spgo_options
, ett_mq_spi_options
, pf_flds_spiopt
, ENC_BIG_ENDIAN
);
2989 proto_tree_add_item(mq_tree
, hf_mq_spi_spgo_size
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2990 iSizePayload
= tvb_get_uint32(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2998 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3002 else if ((p_mq_parm
->mq_opcode
>= 0xA0 && p_mq_parm
->mq_opcode
<= 0xB9) && capLen
>= 16)
3004 /* The XA structures are special because they do not start with a structid */
3005 mq_tree
= proto_tree_add_subtree_format(mqroot_tree
, tvb
, offset
, 16, ett_mq_xa
, NULL
,
3006 "%s (%s)", MQ_TEXT_XA
, val_to_str_ext(p_mq_parm
->mq_opcode
, GET_VALS_EXTP(opcode
), "Unknown (0x%02x)"));
3008 proto_tree_add_item(mq_tree
, hf_mq_xa_length
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
3009 proto_tree_add_item(mq_tree
, hf_mq_xa_returnvalue
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3011 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 8, hf_mq_xa_tmflags
, ett_mq_xa_tmflags
, pf_flds_tmflags
, ENC_BIG_ENDIAN
);
3013 proto_tree_add_item(mq_tree
, hf_mq_xa_rmid
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3015 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
3016 || 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
3017 || p_mq_parm
->mq_opcode
== MQ_TST_XA_COMPLETE
)
3020 if ((iSizeXid
= dissect_mq_xid(tvb
, mqroot_tree
, p_mq_parm
, offset
)) != 0)
3023 else if ((p_mq_parm
->mq_opcode
== MQ_TST_XA_OPEN
|| p_mq_parm
->mq_opcode
== MQ_TST_XA_CLOSE
)
3024 && tvb_reported_length_remaining(tvb
, offset
) >= 1)
3026 uint8_t iXAInfoLength
= 0;
3027 iXAInfoLength
= tvb_get_uint8(tvb
, offset
);
3028 if (tvb_reported_length_remaining(tvb
, offset
) >= iXAInfoLength
+ 1)
3030 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iXAInfoLength
+ 1, ett_mq_xa_info
, NULL
, MQ_TEXT_XINF
);
3032 proto_tree_add_item(mq_tree
, hf_mq_xa_xainfo_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3033 proto_tree_add_item(mq_tree
, hf_mq_xa_xainfo_value
, tvb
, offset
+ 1, iXAInfoLength
, p_mq_parm
->mq_str_enc
);
3035 offset
+= 1 + iXAInfoLength
;
3037 else if ((p_mq_parm
->mq_opcode
== MQ_TST_XA_RECOVER
|| p_mq_parm
->mq_opcode
== MQ_TST_XA_RECOVER_REPLY
)
3038 && tvb_reported_length_remaining(tvb
, offset
) >= 4)
3041 iNbXid
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
3042 proto_tree_add_item(mq_tree
, hf_mq_xa_count
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
3044 if (p_mq_parm
->mq_opcode
== MQ_TST_XA_RECOVER_REPLY
)
3047 for (iXid
= 0; iXid
< iNbXid
; iXid
++)
3050 if ((iSizeXid
= dissect_mq_xid(tvb
, mqroot_tree
, p_mq_parm
, offset
)) != 0)
3058 /* LPOO seems to be a bug for SPOO */
3059 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_LPOO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_LPOO_EBCDIC
) && tvb_reported_length_remaining(tvb
, offset
) >= 32)
3062 unsigned iXtraData
= 0;
3065 int iSegSize
= tvb_reported_length_remaining(tvb
, offset
);
3066 iVersion
= tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
3067 if (iSegSize
>= 488)
3070 iXtraData
= tvb_get_uint32(tvb
, offset
+ 84, p_mq_parm
->mq_int_enc
);
3073 if (iSize
!= 0 && iSegSize
>= iSize
)
3075 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSize
, ett_mq_lpoo
, NULL
, MQ_TEXT_LPOO
);
3077 proto_tree_add_item(mq_tree
, hf_mq_lpoo_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3078 proto_tree_add_item(mq_tree
, hf_mq_lpoo_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3079 dissect_mq_MQOO(tvb
, mq_tree
, offset
+ 8, ett_mq_open_option
, hf_mq_open_options
, p_mq_parm
);
3080 dissect_mq_LPOO_LPIOPTS(tvb
, mq_tree
, offset
+ 12, ett_mq_lpoo_lpiopts
, p_mq_parm
);
3082 proto_tree_add_item(mq_tree
, hf_mq_lpoo_defpersist
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
3083 proto_tree_add_item(mq_tree
, hf_mq_lpoo_defputresptype
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
3084 proto_tree_add_item(mq_tree
, hf_mq_lpoo_defreadahead
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
3085 proto_tree_add_item(mq_tree
, hf_mq_lpoo_propertyctl
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3089 proto_tree_add_item(mq_tree
, hf_mq_lpoo_qprotect
, tvb
, offset
+ iPos
, 48, p_mq_parm
->mq_str_enc
);
3090 proto_tree_add_item(mq_tree
, hf_mq_lpoo_qprotect_val1
, tvb
, offset
+ iPos
+ 48, 4, p_mq_parm
->mq_str_enc
);
3091 proto_tree_add_item(mq_tree
, hf_mq_lpoo_qprotect_val2
, tvb
, offset
+ iPos
+ 52, 4, p_mq_parm
->mq_str_enc
);
3096 unsigned iDistributionListSize2
;
3097 iSize
= dissect_mq_od(tvb
, pinfo
, mqroot_tree
, offset
+ iPos
, p_mq_parm
, &iDistributionListSize2
);
3099 offset
+= iPos
+ iSize
;
3100 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3103 if (p_mq_parm
->mq_opcode
== MQ_TST_SPI_REPLY
)
3106 iSizePayload
= iXtraData
;
3107 p_mq_parm
->iOfsFmt
= (offset
- iSize
);
3112 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_ID
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_ID_EBCDIC
) && tvb_reported_length_remaining(tvb
, offset
) >= 5)
3114 offset
+= dissect_mq_id(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
);
3115 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3117 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_UID
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_UID_EBCDIC
) && tvb_reported_length_remaining(tvb
, offset
) > 0)
3120 /* iSizeUID = (iVersionID < 5 ? 28 : 132); guess */
3121 /* The iVersionID is available in the previous ID segment, we should keep a state *
3122 * Instead we rely on the segment length announced in the TSH */
3123 iSizeUID
= iSegmentLength
- iSizeTSH
;
3124 if (iSizeUID
!= 28 && iSizeUID
!= 132)
3127 if (iSizeUID
!= 0 && tvb_reported_length_remaining(tvb
, offset
) >= iSizeUID
)
3130 sUserId
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 4, 12, p_mq_parm
->mq_str_enc
);
3131 dissect_mq_addCR_colinfo(pinfo
, p_mq_parm
);
3132 if (strip_trailing_blanks(sUserId
, 12) > 0)
3134 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " User=%s", sUserId
);
3137 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeUID
, ett_mq_uid
, NULL
, MQ_TEXT_UID
);
3139 proto_tree_add_item(mq_tree
, hf_mq_uid_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3140 proto_tree_add_item(mq_tree
, hf_mq_uid_userid
, tvb
, offset
+ 4, 12, p_mq_parm
->mq_str_enc
);
3141 proto_tree_add_item(mq_tree
, hf_mq_uid_password
, tvb
, offset
+ 16, 12, p_mq_parm
->mq_str_enc
);
3143 if (iSizeUID
== 132)
3145 proto_tree_add_item(mq_tree
, hf_mq_uid_longuserid
, tvb
, offset
+ 28, 64, p_mq_parm
->mq_str_enc
);
3146 dissect_mq_sid(tvb
, mq_tree
, p_mq_parm
, offset
+ 92);
3150 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3153 offset
+= dissect_mq_od(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
3155 if ((iSizeMD
= dissect_mq_md(tvb
, mqroot_tree
, offset
, p_mq_parm
, true)) != 0)
3161 if ((iSizeGMO
= dissect_mq_gmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
)) != 0)
3166 else if ((iSizePMO
= dissect_mq_pmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
)) != 0)
3171 if (tvb_reported_length_remaining(tvb
, offset
) >= 4)
3173 if (bPayload
== true && (p_mq_parm
->mq_opcode
!= MQ_TST_ASYNC_MESSAGE
))
3175 iSizePayload
= tvb_get_uint32(tvb
, offset
, p_mq_parm
->mq_int_enc
);
3178 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, 4, ett_mq_put
, NULL
, MQ_TEXT_PUT
);
3179 proto_tree_add_item(mq_tree
, hf_mq_put_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
3185 if (iDistributionListSize
> 0)
3187 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " (Distribution List, Size=%d)", iDistributionListSize
);
3189 if (bPayload
== true)
3191 if (iSizePayload
!= 0 && tvb_reported_length_remaining(tvb
, offset
) > 0)
3193 /* For the following header structures, each structure has a "format" field
3194 which announces the type of the following structure. For dissection we
3195 do not use it and rely on the structid instead. */
3196 uint32_t iHeadersLength
= 0;
3197 if (tvb_reported_length_remaining(tvb
, offset
) >= 4)
3200 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
3202 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_XQH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_XQH_EBCDIC
) && tvb_reported_length_remaining(tvb
, offset
) >= 104)
3204 /* if MD.format == MQXMIT */
3208 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeXQH
, ett_mq_xqh
, NULL
, MQ_TEXT_XQH
);
3210 proto_tree_add_item(mq_tree
, hf_mq_xqh_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3211 proto_tree_add_item(mq_tree
, hf_mq_xqh_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3212 proto_tree_add_item(mq_tree
, hf_mq_xqh_remoteq
, tvb
, offset
+ 8, 48, p_mq_parm
->mq_str_enc
);
3213 proto_tree_add_item(mq_tree
, hf_mq_xqh_remoteqmgr
, tvb
, offset
+ 56, 48, p_mq_parm
->mq_str_enc
);
3216 iHeadersLength
+= iSizeXQH
;
3218 if ((iSizeMD2
= dissect_mq_md(tvb
, mqroot_tree
, offset
, p_mq_parm
, true)) != 0)
3221 iHeadersLength
+= iSizeMD2
;
3224 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3226 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_DLH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_DLH_EBCDIC
) && tvb_reported_length_remaining(tvb
, offset
) >= 172)
3228 /* if MD.format == MQDEAD */
3230 p_mq_parm
->iOfsEnc
= offset
+ 108;
3231 p_mq_parm
->iOfsCcs
= offset
+ 112;
3232 p_mq_parm
->iOfsFmt
= offset
+ 116;
3234 p_mq_parm
->mq_dlh_ccsid
.encod
= tvb_get_uint32(tvb
, offset
+ 108, p_mq_parm
->mq_int_enc
);
3235 p_mq_parm
->mq_dlh_ccsid
.ccsid
= tvb_get_uint32(tvb
, offset
+ 112, p_mq_parm
->mq_int_enc
);
3239 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeDLH
, ett_mq_dlh
, NULL
, MQ_TEXT_DLH
);
3241 proto_tree_add_item(mq_tree
, hf_mq_dlh_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3242 proto_tree_add_item(mq_tree
, hf_mq_dlh_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3243 proto_tree_add_item(mq_tree
, hf_mq_dlh_reason
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3244 proto_tree_add_item(mq_tree
, hf_mq_dlh_destq
, tvb
, offset
+ 12, 48, p_mq_parm
->mq_str_enc
);
3245 proto_tree_add_item(mq_tree
, hf_mq_dlh_destqmgr
, tvb
, offset
+ 60, 48, p_mq_parm
->mq_str_enc
);
3246 dissect_mq_encoding(mq_tree
, hf_mq_dlh_encoding
, tvb
, offset
+ 108, 4, p_mq_parm
->mq_int_enc
);
3247 proto_tree_add_item(mq_tree
, hf_mq_dlh_ccsid
, tvb
, offset
+ 112, 4, p_mq_parm
->mq_int_enc
);
3248 proto_tree_add_item(mq_tree
, hf_mq_dlh_format
, tvb
, offset
+ 116, 8, p_mq_parm
->mq_str_enc
);
3249 proto_tree_add_item(mq_tree
, hf_mq_dlh_putappltype
, tvb
, offset
+ 124, 4, p_mq_parm
->mq_int_enc
);
3250 proto_tree_add_item(mq_tree
, hf_mq_dlh_putapplname
, tvb
, offset
+ 128, 28, p_mq_parm
->mq_str_enc
);
3251 proto_tree_add_item(mq_tree
, hf_mq_dlh_putdate
, tvb
, offset
+ 156, 8, p_mq_parm
->mq_str_enc
);
3252 proto_tree_add_item(mq_tree
, hf_mq_dlh_puttime
, tvb
, offset
+ 164, 8, p_mq_parm
->mq_str_enc
);
3255 iHeadersLength
+= iSizeDLH
;
3256 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3258 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_TM
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_TM_EBCDIC
)
3259 && tvb_reported_length_remaining(tvb
, offset
) >= 8)
3264 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_mq_head
, NULL
,
3265 val_to_str_ext(p_mq_parm
->mq_strucID
, GET_VALS_EXTP(StructID
), "Unknown (0x%08x)"));
3267 proto_tree_add_item(mq_tree
, hf_mq_tm_StructID
, tvb
, offset
+ 0, 4, p_mq_parm
->mq_str_enc
);
3268 proto_tree_add_item(mq_tree
, hf_mq_tm_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3269 proto_tree_add_item(mq_tree
, hf_mq_tm_QName
, tvb
, offset
+ 8, 48, p_mq_parm
->mq_str_enc
);
3270 proto_tree_add_item(mq_tree
, hf_mq_tm_ProcessNme
, tvb
, offset
+ 56, 48, p_mq_parm
->mq_str_enc
);
3271 proto_tree_add_item(mq_tree
, hf_mq_tm_TriggerData
, tvb
, offset
+ 104, 64, p_mq_parm
->mq_str_enc
);
3272 proto_tree_add_item(mq_tree
, hf_mq_tm_ApplType
, tvb
, offset
+ 168, 4, p_mq_parm
->mq_int_enc
);
3273 proto_tree_add_item(mq_tree
, hf_mq_tm_ApplId
, tvb
, offset
+ 172, 256, p_mq_parm
->mq_str_enc
);
3274 proto_tree_add_item(mq_tree
, hf_mq_tm_EnvData
, tvb
, offset
+ 428, 128, p_mq_parm
->mq_str_enc
);
3275 proto_tree_add_item(mq_tree
, hf_mq_tm_UserData
, tvb
, offset
+ 556, 128, p_mq_parm
->mq_str_enc
);
3278 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_TMC2
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_TMC2_EBCDIC
)
3279 && tvb_reported_length_remaining(tvb
, offset
) >= 8)
3283 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_mq_head
, NULL
,
3284 val_to_str_ext(p_mq_parm
->mq_strucID
, GET_VALS_EXTP(StructID
), "Unknown (0x%08x)"));
3286 proto_tree_add_item(mq_tree
, hf_mq_tmc2_StructID
, tvb
, offset
+ 0, 4, p_mq_parm
->mq_str_enc
);
3287 proto_tree_add_item(mq_tree
, hf_mq_tmc2_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_str_enc
);
3288 proto_tree_add_item(mq_tree
, hf_mq_tmc2_QName
, tvb
, offset
+ 8, 48, p_mq_parm
->mq_str_enc
);
3289 proto_tree_add_item(mq_tree
, hf_mq_tmc2_ProcessNme
, tvb
, offset
+ 56, 48, p_mq_parm
->mq_str_enc
);
3290 proto_tree_add_item(mq_tree
, hf_mq_tmc2_TriggerData
, tvb
, offset
+ 104, 64, p_mq_parm
->mq_str_enc
);
3291 proto_tree_add_item(mq_tree
, hf_mq_tmc2_ApplType
, tvb
, offset
+ 168, 4, p_mq_parm
->mq_str_enc
);
3292 proto_tree_add_item(mq_tree
, hf_mq_tmc2_ApplId
, tvb
, offset
+ 172, 256, p_mq_parm
->mq_str_enc
);
3293 proto_tree_add_item(mq_tree
, hf_mq_tmc2_EnvData
, tvb
, offset
+ 428, 128, p_mq_parm
->mq_str_enc
);
3294 proto_tree_add_item(mq_tree
, hf_mq_tmc2_UserData
, tvb
, offset
+ 556, 128, p_mq_parm
->mq_str_enc
);
3295 proto_tree_add_item(mq_tree
, hf_mq_tmc2_QMgrName
, tvb
, offset
+ 684, 48, p_mq_parm
->mq_str_enc
);
3298 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_MDE
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_MDE_EBCDIC
3299 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_CIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_CIH_EBCDIC
3300 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_IIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_IIH_EBCDIC
3301 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_RFH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_RFH_EBCDIC
3302 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_RMH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_RMH_EBCDIC
3303 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_WIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_WIH_EBCDIC
3305 && tvb_reported_length_remaining(tvb
, offset
) >= 12)
3307 /* Dissect the generic part of the other pre-defined headers */
3308 /* We assume that only one such header is present */
3310 int oIntEnc
= p_mq_parm
->mq_int_enc
;
3311 /* Use MD encoding */
3312 p_mq_parm
->mq_int_enc
= ((p_mq_parm
->mq_md_ccsid
.encod
& MQ_MQENC_INTEGER_MASK
) == MQ_MQENC_INTEGER_NORMAL
) ? ENC_BIG_ENDIAN
: ENC_LITTLE_ENDIAN
;
3313 iSizeHeader
= (int)tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
3314 /* XXX - 32 is inferred from the code below. What's the
3315 * correct minimum? */
3316 if (iSizeHeader
<= 32)
3319 p_mq_parm
->mq_head_ccsid
.encod
= tvb_get_uint32(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
3320 p_mq_parm
->mq_head_ccsid
.ccsid
= tvb_get_uint32(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
3322 if (tvb_reported_length_remaining(tvb
, offset
) >= iSizeHeader
)
3327 int oStrEnc
= p_mq_parm
->mq_str_enc
;
3329 p_mq_parm
->iOfsEnc
= offset
+ 12;
3330 p_mq_parm
->iOfsCcs
= offset
+ 16;
3331 p_mq_parm
->iOfsFmt
= offset
+ 20;
3333 iVer
= (int)tvb_get_uint32(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
3334 iLen
= (int)tvb_get_uint32(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
3335 iTmp
= p_mq_parm
->mq_head_ccsid
.ccsid
;
3337 iTmp
= p_mq_parm
->mq_md_ccsid
.ccsid
;
3339 if (IS_EBCDIC(iTmp
))
3340 p_mq_parm
->mq_str_enc
= ENC_EBCDIC
| ENC_NA
;
3342 p_mq_parm
->mq_str_enc
= ENC_UTF_8
| ENC_NA
;
3346 mq_tree
= proto_tree_add_subtree(mqroot_tree
, tvb
, offset
, iSizeHeader
, ett_mq_head
, NULL
,
3347 val_to_str_ext(p_mq_parm
->mq_strucID
, GET_VALS_EXTP(StructID
), "Unknown (0x%08x)"));
3349 proto_tree_add_item(mq_tree
, hf_mq_head_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3350 proto_tree_add_item(mq_tree
, hf_mq_head_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3351 proto_tree_add_item(mq_tree
, hf_mq_head_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3352 dissect_mq_encoding(mq_tree
, hf_mq_head_encoding
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3353 proto_tree_add_item(mq_tree
, hf_mq_head_ccsid
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
3354 proto_tree_add_item(mq_tree
, hf_mq_head_format
, tvb
, offset
+ 20, 8, p_mq_parm
->mq_str_enc
);
3356 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_DH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_DH_EBCDIC
)
3359 iRec
= tvb_get_uint32(tvb
, offset
+ 36, p_mq_parm
->mq_int_enc
);
3361 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 28, hf_mq_head_flags
, ett_mq_head_flags
, pf_flds_dh_flags
, ENC_BIG_ENDIAN
);
3362 proto_tree_add_item(mq_tree
, hf_mq_dh_putmsgrecfld
, tvb
, offset
+ 32, 4, p_mq_parm
->mq_int_enc
);
3363 proto_tree_add_item(mq_tree
, hf_mq_dh_recspresent
, tvb
, offset
+ 36, 4, p_mq_parm
->mq_int_enc
);
3364 proto_tree_add_item(mq_tree
, hf_mq_dh_objrecofs
, tvb
, offset
+ 40, 4, p_mq_parm
->mq_int_enc
);
3365 proto_tree_add_item(mq_tree
, hf_mq_dh_putmsgrecofs
, tvb
, offset
+ 44, 4, p_mq_parm
->mq_int_enc
);
3374 iFlgs
= (int)tvb_get_uint32(tvb
, offset
+ 32, p_mq_parm
->mq_int_enc
);
3375 iOfs1
= (int)tvb_get_uint32(tvb
, offset
+ 40, p_mq_parm
->mq_int_enc
);
3376 iOfs2
= (int)tvb_get_uint32(tvb
, offset
+ 44, p_mq_parm
->mq_int_enc
);
3378 iSize
= dissect_mq_or(tvb
, mq_tree
, offset
+ 48, iRec
, iOfs1
, p_mq_parm
);
3379 /*iSize = */dissect_mq_pmr(tvb
, mqroot_tree
, offset
+ 48 + iSize
, iRec
, iOfs2
, iFlgs
, p_mq_parm
);
3382 else if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_MDE
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_MDE_EBCDIC
)
3384 proto_tree_add_item(mq_tree
, hf_mq_head_flags
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3385 proto_tree_add_item(mq_tree
, hf_mq_md_groupid
, tvb
, offset
+ 32, 24, ENC_NA
);
3386 proto_tree_add_item(mq_tree
, hf_mq_md_msgseqnumber
, tvb
, offset
+ 56, 4, p_mq_parm
->mq_int_enc
);
3387 proto_tree_add_item(mq_tree
, hf_mq_md_offset
, tvb
, offset
+ 60, 4, p_mq_parm
->mq_int_enc
);
3388 proto_tree_add_item(mq_tree
, hf_mq_md_msgflags
, tvb
, offset
+ 64, 4, p_mq_parm
->mq_int_enc
);
3389 proto_tree_add_item(mq_tree
, hf_mq_md_origlen
, tvb
, offset
+ 68, 4, p_mq_parm
->mq_int_enc
);
3391 else if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_IIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_IIH_EBCDIC
)
3397 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 28, hf_mq_head_flags
, ett_mq_head_flags
, pf_flds_iih_flags
, ENC_BIG_ENDIAN
);
3398 proto_tree_add_item(mq_tree
, hf_mq_iih_ltermoverride
, tvb
, offset
+ 32, 8, p_mq_parm
->mq_str_enc
);
3399 proto_tree_add_item(mq_tree
, hf_mq_iih_mfsmapname
, tvb
, offset
+ 40, 8, p_mq_parm
->mq_str_enc
);
3400 proto_tree_add_item(mq_tree
, hf_mq_iih_replytofmt
, tvb
, offset
+ 48, 8, p_mq_parm
->mq_str_enc
);
3401 proto_tree_add_item(mq_tree
, hf_mq_iih_authenticator
, tvb
, offset
+ 56, 8, p_mq_parm
->mq_str_enc
);
3402 proto_tree_add_item(mq_tree
, hf_mq_iih_transinstid
, tvb
, offset
+ 64, 16, ENC_NA
);
3403 proto_tree_add_item(mq_tree
, hf_mq_iih_transstate
, tvb
, offset
+ 80, 1, p_mq_parm
->mq_str_enc
);
3404 proto_tree_add_item(mq_tree
, hf_mq_iih_commimode
, tvb
, offset
+ 81, 1, p_mq_parm
->mq_str_enc
);
3405 proto_tree_add_item(mq_tree
, hf_mq_iih_securityscope
, tvb
, offset
+ 82, 1, p_mq_parm
->mq_str_enc
);
3406 proto_tree_add_item(mq_tree
, hf_mq_iih_reserved
, tvb
, offset
+ 83, 1, p_mq_parm
->mq_str_enc
);
3408 iPos
= offset
+ iSizeHeader
;
3409 sLen
= tvb_get_uint16(tvb
, iPos
, p_mq_parm
->mq_int_enc
);
3410 mq_ims
= proto_tree_add_subtree(mq_tree
, tvb
, iPos
, sLen
, ett_mq_ims
, NULL
, "IMS Message");
3411 proto_tree_add_item(mq_ims
, hf_mq_ims_ll
, tvb
, iPos
+ 0, 2, p_mq_parm
->mq_int_enc
);
3412 proto_tree_add_item(mq_ims
, hf_mq_ims_zz
, tvb
, iPos
+ 2, 2, p_mq_parm
->mq_int_enc
);
3413 proto_tree_add_item(mq_ims
, hf_mq_ims_trx
, tvb
, iPos
+ 4, 8, p_mq_parm
->mq_str_enc
);
3414 proto_tree_add_item(mq_ims
, hf_mq_ims_data
, tvb
, iPos
+ 12, sLen
- 12, ENC_NA
);
3417 else if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_CIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_CIH_EBCDIC
)
3419 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 28, hf_mq_head_flags
, ett_mq_head_flags
, pf_flds_cih_flags
, ENC_BIG_ENDIAN
);
3420 proto_tree_add_item(mq_tree
, hf_mq_cih_returncode
, tvb
, offset
+ 32, 4, p_mq_parm
->mq_int_enc
);
3421 proto_tree_add_item(mq_tree
, hf_mq_cih_compcode
, tvb
, offset
+ 36, 4, p_mq_parm
->mq_int_enc
);
3422 proto_tree_add_item(mq_tree
, hf_mq_cih_reasoncode
, tvb
, offset
+ 40, 4, p_mq_parm
->mq_int_enc
);
3423 proto_tree_add_item(mq_tree
, hf_mq_cih_uowcontrols
, tvb
, offset
+ 44, 4, p_mq_parm
->mq_int_enc
);
3424 proto_tree_add_item(mq_tree
, hf_mq_cih_getwaitintv
, tvb
, offset
+ 48, 4, p_mq_parm
->mq_int_enc
);
3425 proto_tree_add_item(mq_tree
, hf_mq_cih_linktype
, tvb
, offset
+ 52, 4, p_mq_parm
->mq_int_enc
);
3426 proto_tree_add_item(mq_tree
, hf_mq_cih_outdatalen
, tvb
, offset
+ 56, 4, p_mq_parm
->mq_int_enc
);
3427 proto_tree_add_item(mq_tree
, hf_mq_cih_facilkeeptime
, tvb
, offset
+ 60, 4, p_mq_parm
->mq_int_enc
);
3428 proto_tree_add_item(mq_tree
, hf_mq_cih_adsdescriptor
, tvb
, offset
+ 64, 4, p_mq_parm
->mq_int_enc
);
3429 proto_tree_add_item(mq_tree
, hf_mq_cih_converstask
, tvb
, offset
+ 68, 4, p_mq_parm
->mq_int_enc
);
3430 proto_tree_add_item(mq_tree
, hf_mq_cih_taskendstatus
, tvb
, offset
+ 72, 4, p_mq_parm
->mq_int_enc
);
3431 proto_tree_add_item(mq_tree
, hf_mq_cih_bridgefactokn
, tvb
, offset
+ 76, 8, ENC_NA
);
3432 proto_tree_add_item(mq_tree
, hf_mq_cih_function
, tvb
, offset
+ 84, 4, p_mq_parm
->mq_str_enc
);
3433 proto_tree_add_item(mq_tree
, hf_mq_cih_abendcode
, tvb
, offset
+ 88, 4, p_mq_parm
->mq_str_enc
);
3434 proto_tree_add_item(mq_tree
, hf_mq_cih_authenticator
, tvb
, offset
+ 92, 8, p_mq_parm
->mq_str_enc
);
3435 proto_tree_add_item(mq_tree
, hf_mq_cih_reserved
, tvb
, offset
+ 100, 8, p_mq_parm
->mq_str_enc
);
3436 proto_tree_add_item(mq_tree
, hf_mq_cih_replytofmt
, tvb
, offset
+ 108, 8, p_mq_parm
->mq_str_enc
);
3437 proto_tree_add_item(mq_tree
, hf_mq_cih_remotesysid
, tvb
, offset
+ 116, 4, p_mq_parm
->mq_str_enc
);
3438 proto_tree_add_item(mq_tree
, hf_mq_cih_remotetransid
, tvb
, offset
+ 120, 4, p_mq_parm
->mq_str_enc
);
3439 proto_tree_add_item(mq_tree
, hf_mq_cih_transactionid
, tvb
, offset
+ 124, 4, p_mq_parm
->mq_str_enc
);
3440 proto_tree_add_item(mq_tree
, hf_mq_cih_facilitylike
, tvb
, offset
+ 128, 4, p_mq_parm
->mq_str_enc
);
3441 proto_tree_add_item(mq_tree
, hf_mq_cih_attentionid
, tvb
, offset
+ 132, 4, p_mq_parm
->mq_str_enc
);
3442 proto_tree_add_item(mq_tree
, hf_mq_cih_startcode
, tvb
, offset
+ 136, 4, p_mq_parm
->mq_str_enc
);
3443 proto_tree_add_item(mq_tree
, hf_mq_cih_cancelcode
, tvb
, offset
+ 140, 4, p_mq_parm
->mq_str_enc
);
3444 proto_tree_add_item(mq_tree
, hf_mq_cih_nexttransid
, tvb
, offset
+ 144, 4, p_mq_parm
->mq_str_enc
);
3445 proto_tree_add_item(mq_tree
, hf_mq_cih_reserved2
, tvb
, offset
+ 148, 8, p_mq_parm
->mq_str_enc
);
3446 proto_tree_add_item(mq_tree
, hf_mq_cih_reserved3
, tvb
, offset
+ 156, 8, p_mq_parm
->mq_str_enc
);
3449 proto_tree_add_item(mq_tree
, hf_mq_cih_cursorpos
, tvb
, offset
+ 164, 4, p_mq_parm
->mq_int_enc
);
3450 proto_tree_add_item(mq_tree
, hf_mq_cih_erroroffset
, tvb
, offset
+ 168, 4, p_mq_parm
->mq_int_enc
);
3451 proto_tree_add_item(mq_tree
, hf_mq_cih_inputitem
, tvb
, offset
+ 172, 4, p_mq_parm
->mq_int_enc
);
3452 proto_tree_add_item(mq_tree
, hf_mq_cih_reserved4
, tvb
, offset
+ 176, 4, p_mq_parm
->mq_int_enc
);
3455 else if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_RMH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_RMH_EBCDIC
)
3457 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 28, hf_mq_head_flags
, ett_mq_head_flags
, pf_flds_rmh_flags
, ENC_BIG_ENDIAN
);
3458 proto_tree_add_item(mq_tree
, hf_mq_rmh_objecttype
, tvb
, offset
+ 32, 8, p_mq_parm
->mq_str_enc
);
3459 proto_tree_add_item(mq_tree
, hf_mq_rmh_objectinstid
, tvb
, offset
+ 36, 24, ENC_NA
);
3460 proto_tree_add_item(mq_tree
, hf_mq_rmh_srcenvlen
, tvb
, offset
+ 60, 4, p_mq_parm
->mq_int_enc
);
3461 proto_tree_add_item(mq_tree
, hf_mq_rmh_srcenvofs
, tvb
, offset
+ 64, 4, p_mq_parm
->mq_int_enc
);
3462 proto_tree_add_item(mq_tree
, hf_mq_rmh_srcnamelen
, tvb
, offset
+ 68, 4, p_mq_parm
->mq_int_enc
);
3463 proto_tree_add_item(mq_tree
, hf_mq_rmh_srcnameofs
, tvb
, offset
+ 72, 4, p_mq_parm
->mq_int_enc
);
3464 proto_tree_add_item(mq_tree
, hf_mq_rmh_dstenvlen
, tvb
, offset
+ 76, 4, p_mq_parm
->mq_int_enc
);
3465 proto_tree_add_item(mq_tree
, hf_mq_rmh_dstenvofs
, tvb
, offset
+ 80, 4, p_mq_parm
->mq_int_enc
);
3466 proto_tree_add_item(mq_tree
, hf_mq_rmh_dstnamelen
, tvb
, offset
+ 84, 4, p_mq_parm
->mq_int_enc
);
3467 proto_tree_add_item(mq_tree
, hf_mq_rmh_dstnameofs
, tvb
, offset
+ 88, 4, p_mq_parm
->mq_int_enc
);
3468 proto_tree_add_item(mq_tree
, hf_mq_rmh_datalogiclen
, tvb
, offset
+ 92, 4, p_mq_parm
->mq_int_enc
);
3469 proto_tree_add_item(mq_tree
, hf_mq_rmh_datalogicofsl
, tvb
, offset
+ 96, 4, p_mq_parm
->mq_int_enc
);
3470 proto_tree_add_item(mq_tree
, hf_mq_rmh_datalogicofsh
, tvb
, offset
+ 100, 4, p_mq_parm
->mq_int_enc
);
3472 else if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_WIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_WIH_EBCDIC
)
3474 proto_tree_add_item(mq_tree
, hf_mq_head_flags
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3475 proto_tree_add_item(mq_tree
, hf_mq_wih_servicename
, tvb
, offset
+ 32, 32, p_mq_parm
->mq_str_enc
);
3476 proto_tree_add_item(mq_tree
, hf_mq_wih_servicestep
, tvb
, offset
+ 64, 8, p_mq_parm
->mq_str_enc
);
3477 proto_tree_add_item(mq_tree
, hf_mq_wih_msgtoken
, tvb
, offset
+ 72, 16, ENC_NA
);
3478 proto_tree_add_item(mq_tree
, hf_mq_wih_reserved
, tvb
, offset
+ 88, 32, p_mq_parm
->mq_str_enc
);
3480 else if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_RFH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_RFH_EBCDIC
)
3482 int iPos
, iEnd
, iCCSID
;
3486 proto_tree
* rfh_tree
;
3488 proto_tree_add_item(mq_tree
, hf_mq_head_flags
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3490 iEnd
= offset
+ iLen
;
3493 iCCSID
= (int)tvb_get_uint32(tvb
, iPos
, p_mq_parm
->mq_int_enc
);
3494 proto_tree_add_item(mq_tree
, hf_mq_rfh_ccsid
, tvb
, iPos
, 4, p_mq_parm
->mq_int_enc
);
3502 iLenStr
= (int)tvb_get_uint32(tvb
, iPos
, p_mq_parm
->mq_int_enc
);
3503 sStr
= tvb_get_string_enc(wmem_packet_scope(), tvb
, iPos
+ 4, iLenStr
, IS_EBCDIC(iCCSID
) ? ENC_EBCDIC
: ENC_ASCII
);
3505 strip_trailing_blanks(sStr
, iLenStr
);
3507 sStr
= (uint8_t*)format_text_chr(wmem_packet_scope(), sStr
, strlen((const char*)sStr
), '.');
3509 rfh_tree
= proto_tree_add_subtree_format(mq_tree
, tvb
, iPos
, iLenStr
+ 4, ett_mq_rfh_ValueName
, NULL
, "NameValue: %s", sStr
);
3511 proto_tree_add_item(rfh_tree
, hf_mq_rfh_length
, tvb
, iPos
, 4, p_mq_parm
->mq_int_enc
);
3512 proto_tree_add_item(rfh_tree
, hf_mq_rfh_string
, tvb
, iPos
+ 4, iLenStr
, p_mq_parm
->mq_str_enc
);
3513 iPos
+= (iLenStr
+ 4);
3518 proto_tree_add_item(mq_tree
, hf_mq_head_flags
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3519 proto_tree_add_item(mq_tree
, hf_mq_head_struct
, tvb
, offset
+ 32, iSizeHeader
- 32, ENC_NA
);
3522 offset
+= iSizeHeader
;
3523 iHeadersLength
+= iSizeHeader
;
3524 p_mq_parm
->mq_strucID
= (tvb_reported_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3525 p_mq_parm
->mq_str_enc
= oStrEnc
;
3527 p_mq_parm
->mq_int_enc
= oIntEnc
;
3531 if (!mq_in_reassembly
)
3533 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " (Data %d bytes)", iSizePayload
- iHeadersLength
);
3535 /* Call subdissector for the payload */
3537 p_mq_parm
->mq_cur_ccsid
.encod
= tvb_get_uint32(tvb
, p_mq_parm
->iOfsEnc
, p_mq_parm
->mq_int_enc
);
3538 p_mq_parm
->mq_cur_ccsid
.ccsid
= tvb_get_uint32(tvb
, p_mq_parm
->iOfsCcs
, p_mq_parm
->mq_int_enc
);
3539 memcpy(p_mq_parm
->mq_format
,
3540 tvb_get_string_enc(wmem_packet_scope(), tvb
, p_mq_parm
->iOfsFmt
, sizeof(p_mq_parm
->mq_format
), p_mq_parm
->mq_str_enc
),
3541 sizeof(p_mq_parm
->mq_format
));
3543 next_tvb
= tvb_new_subset_remaining(tvb
, offset
);
3544 if (!dissector_try_heuristic(mq_heur_subdissector_list
, next_tvb
, pinfo
, mqroot_tree
, &hdtbl_entry
, p_mq_parm
))
3545 call_data_dissector(next_tvb
, pinfo
, mqroot_tree
);
3550 next_tvb
= tvb_new_subset_remaining(tvb
, offset
);
3551 call_data_dissector(next_tvb
, pinfo
, mqroot_tree
);
3554 offset
= tvb_reported_length(tvb
);
3556 /* After all recognised structures have been dissected, process remaining structure*/
3557 if (tvb_reported_length_remaining(tvb
, offset
) >= 4)
3559 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
3560 proto_tree_add_subtree_format(mqroot_tree
, tvb
, offset
, -1, ett_mq_structid
, NULL
,
3561 "%s", val_to_str_ext(p_mq_parm
->mq_strucID
, GET_VALS_EXTP(StructID
), "Unknown (0x%08x)"));
3566 /* This is a MQ segment continuation (if MQ reassembly is not enabled) */
3567 if (!mq_in_reassembly
)
3568 col_append_str(pinfo
->cinfo
, COL_INFO
, " [Unreassembled MQ]");
3569 call_data_dissector(tvb_new_subset_remaining(tvb
, offset
), pinfo
, (mqroot_tree
) ? mqroot_tree
: tree
);
3575 /* This packet is a TCP continuation of a segment (if desegmentation is not enabled) */
3576 col_append_str(pinfo
->cinfo
, COL_INFO
, " [Undesegmented]");
3579 proto_tree_add_item(tree
, proto_mq
, tvb
, offset
, -1, ENC_NA
);
3581 call_data_dissector(tvb_new_subset_remaining(tvb
, offset
), pinfo
, tree
);
3586 static int reassemble_mq(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
3590 /* Reassembly of the MQ messages that span several PDU (several TSH) */
3591 /* Typically a TCP PDU is 1460 bytes and a MQ PDU is 32766 bytes */
3592 if (tvb_reported_length(tvb
) < 28)
3595 memset(&mq_parm
, 0, sizeof(mq_parm_t
));
3596 mq_parm
.mq_strucID
= tvb_get_ntohl(tvb
, 0);
3598 if ((mq_parm
.mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
|| (mq_parm
.mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
3608 bool bSeg1st
= false;
3609 bool bSegLst
= false;
3613 int32_t iGlbMsgIdx
= 0;
3614 int32_t iSegLength
= 0;
3615 int16_t iSegmIndex
= 0;
3620 /* TSHM structure as 8 bytes more after the length (convid/requestid) */
3621 if (mq_parm
.mq_strucID
== MQ_STRUCTID_TSHM
|| mq_parm
.mq_strucID
== MQ_STRUCTID_TSHM_EBCDIC
)
3624 /* Get the Segment Length */
3625 iSegL
= tvb_get_ntohl(tvb
, 4);
3628 mq_parm
.mq_convID
= tvb_get_ntohl(tvb
, 8);
3629 mq_parm
.mq_rqstID
= tvb_get_ntohl(tvb
, 12);
3633 mq_parm
.mq_convID
= 0;
3634 mq_parm
.mq_rqstID
= 0;
3637 /* Get the Encoding scheme */
3638 iEnco
= (tvb_get_uint8(tvb
, 8 + iMulS
) == MQ_LITTLE_ENDIAN
? ENC_LITTLE_ENDIAN
: ENC_BIG_ENDIAN
);
3639 mq_parm
.mq_int_enc
= iEnco
;
3640 /* Get the Operation Code */
3641 iOpcd
= tvb_get_uint8(tvb
, 9 + iMulS
);
3642 mq_parm
.mq_opcode
= iOpcd
;
3643 /* Get the Control Flag */
3644 iCtlF
= tvb_get_uint8(tvb
, 10 + iMulS
);
3645 mq_parm
.mq_ctlf1
= iCtlF
;
3646 /* First Segment ? */
3647 bSeg1st
= ((iCtlF
& MQ_TCF_FIRST
) != 0);
3649 bSegLst
= ((iCtlF
& MQ_TCF_LAST
) != 0);
3651 mq_in_reassembly
= false;
3653 if ((iOpcd
> 0x80 && !(bSeg1st
&& bSegLst
)) || iOpcd
== MQ_TST_ASYNC_MESSAGE
)
3655 proto_tree
* mq_tree
= NULL
;
3657 /* Optimisation : only fragmented segments go through the reassembly process */
3659 It seems that after a PUT on a Queue, when doing a GET, MQ first get
3660 a small part of the response (4096 bytes)
3661 The response contain the number of bytes returned for this request (ActMsgLen)
3662 and the total number of bytes of this reply (TotMsgLen)
3664 this mean the flow seems to be :
3667 REQUEST_MSG (MaxLen=4096)
3668 ASYNC_MSG (1st/Lst Segment, ActMsgLen=4096, TotMsgLen=279420)
3669 as ActMsgLen!=TotMsgLen, this mean the MSG is not complete, we only receive some of 279420 bytes
3670 REQUEST_MSG (MaxLen=279420)
3671 ASYNC_MSG (1st Segment, SegIndex=0 ActMsgLen=279420, TotMsgLen=279420)
3672 ASYNC_MSG (Mid Segment, SegIndex=1)
3673 ASYNC_MSG (Mid Segment, SegIndex=2)
3675 ASYNC_MSG (Lst Segment, SegIndex=n)
3676 End of reassembling (we have 279420 bytes to decode)
3679 GET with Reassembly not using ASYNC_MSG
3684 fragment_head
* fd_head
;
3685 uint32_t iConnectionId
= ((pinfo
->srcport
<< 16) + pinfo
->destport
);
3686 bool reassembly_error
= false;
3687 uint8_t* pTmp
= "Full";
3688 if (bSeg1st
&& !bSegLst
)
3690 if (!bSeg1st
&& bSegLst
)
3692 if (!bSeg1st
&& !bSegLst
)
3697 if (iOpcd
== MQ_TST_ASYNC_MESSAGE
)
3699 /* Get the MQ Handle of the Object */
3700 iHdl
= tvb_get_uint32(tvb
, iHdrL
+ 4, iEnco
);
3701 /* Get the Global Message Index */
3702 iGlbMsgIdx
= tvb_get_uint32(tvb
, iHdrL
+ 12, iEnco
);
3703 /* Get the Segment Length */
3704 iSegLength
= tvb_get_uint32(tvb
, iHdrL
+ 16, iEnco
);
3705 /* Get the Segment Index */
3706 iSegmIndex
= tvb_get_uint16(tvb
, iHdrL
+ 20, iEnco
);
3709 if SegmIndex == 0, it has 54 bytes + the length and padding
3710 of a variable string at the end of the Header
3713 if (iSegmIndex
== 0)
3715 mq_parm
.mq_AsyMsgRsn
= tvb_get_uint32(tvb
, iHdrL
+ 24, iEnco
);
3716 mq_parm
.mq_MsgActLen
= tvb_get_uint32(tvb
, iHdrL
+ 28, iEnco
);
3717 mq_parm
.mq_MsgTotLen
= tvb_get_uint32(tvb
, iHdrL
+ 32, iEnco
);
3718 uStrL
= tvb_get_uint8(tvb
, iHdrL
+ 54);
3719 uPadL
= ((((2 + 1 + uStrL
) / 4) + 1) * 4) - (2 + 1 + uStrL
);
3720 mq_parm
.mq_MsgActLen
= iSegL
- iHdrL
;
3723 First segment has a longer header
3725 iNxtP
= iHdrL
+ ((bSeg1st
) ? (54 + 1 + uStrL
+ uPadL
) : (24));
3726 mq_parm
.mq_MsgActLen
-= ((bSeg1st
) ? (54 + 1 + uStrL
+ uPadL
) : (24));
3732 uStrL
= mq_parm
.mq_API_Len
= tvb_get_uint32(tvb
, iHdrL
, ENC_BIG_ENDIAN
);
3733 mq_parm
.mq_API_CC
= tvb_get_uint32(tvb
, iHdrL
+ 4, iEnco
);
3734 mq_parm
.mq_API_RC
= tvb_get_uint32(tvb
, iHdrL
+ 8, iEnco
);
3735 iHdl
= mq_parm
.mq_API_Hdl
= tvb_get_uint32(tvb
, iHdrL
+ 12, iEnco
);
3736 mq_parm
.mq_MsgTotLen
= uStrL
;
3737 mq_parm
.mq_MsgActLen
= iSegL
- iHdrL
;
3738 mq_parm
.mq_MsgActLen
-= 16; /* API */
3742 fragment_head
* _head
= fragment_get_reassembled_id(&mq_reassembly_table
, pinfo
, iConnectionId
);
3745 uStrL
= mq_parm
.mq_API_Len
= tvb_get_uint32(_head
->tvb_data
, iHdrL
, ENC_BIG_ENDIAN
);
3746 mq_parm
.mq_API_CC
= tvb_get_uint32(_head
->tvb_data
, iHdrL
+ 4, iEnco
);
3747 mq_parm
.mq_API_RC
= tvb_get_uint32(_head
->tvb_data
, iHdrL
+ 8, iEnco
);
3748 iHdl
= mq_parm
.mq_API_Hdl
= tvb_get_uint32(_head
->tvb_data
, iHdrL
+ 12, iEnco
);
3749 mq_parm
.mq_MsgTotLen
= uStrL
;
3753 iNxtP
= iHdrL
+ ((bSeg1st
) ? 16 : 0);
3757 First segment has a longer header (API Header)
3759 If it is a PUT1 Message Type TSHx + API + OD + MD + PMO
3760 If it is a PUT Message Type TSHx + API + MD + PMO
3761 If it is a GET Message Type TSHx + API + MD + GMO
3766 if (iOpcd
== MQ_TST_MQPUT1
|| iOpcd
== MQ_TST_MQPUT1_REPLY
)
3768 unsigned iDistributionListSize2
;
3769 _iLen
= dissect_mq_od(tvb
, NULL
, NULL
, iNxtP
, &mq_parm
, &iDistributionListSize2
);
3771 mq_parm
.mq_MsgActLen
-= _iLen
;
3774 _iLen
= dissect_mq_md(tvb
, NULL
, iNxtP
, &mq_parm
, false);
3776 mq_parm
.mq_MsgActLen
-= _iLen
;
3778 if (iOpcd
== MQ_TST_MQGET
|| iOpcd
== MQ_TST_MQGET_REPLY
)
3779 _iLen
= dissect_mq_gmo(tvb
, NULL
, NULL
, iNxtP
, &mq_parm
);
3781 _iLen
= dissect_mq_pmo(tvb
, NULL
, NULL
, iNxtP
, &mq_parm
, NULL
);
3783 mq_parm
.mq_MsgActLen
-= _iLen
;
3787 if it is the 1st Segment, it means we are
3788 of the beginning of a reassembling. We must take the whole segment (with TSHM, and headers)
3790 iBegL
= (bSeg1st
) ? 0 : iNxtP
;
3794 /* negative or null fragment length - something is wrong; skip reassembly */
3796 reassembly_error
= true;
3800 fd_head
= fragment_add_seq_next(&mq_reassembly_table
,
3802 pinfo
, iConnectionId
, NULL
,
3803 iSegL
- iBegL
, bMore
);
3808 proto_item
* ti
= proto_tree_add_item(tree
, proto_mq
, tvb
, 0, -1, ENC_NA
);
3810 if (fd_head
&& !fd_head
->next
&& mq_parm
.mq_MsgActLen
== mq_parm
.mq_MsgTotLen
)
3812 proto_item_append_text(ti
, " %s %s Segment",
3813 val_to_str_ext(iOpcd
, GET_VALS_EXTP(opcode
), "Unknown (0x%02x)"),
3815 if (mq_parm
.mq_API_RC
!= MQ_MQRC_NONE
)
3816 proto_item_append_text(ti
, ", Reason=%d(0x%x) - %s",
3817 mq_parm
.mq_API_RC
, mq_parm
.mq_API_RC
,
3818 val_to_str_ext(mq_parm
.mq_API_RC
, GET_VALS_EXTP(MQRC
), "Unknown (0x%02x)"));
3822 proto_item_append_text(ti
, " [%s %s Segment]",
3823 val_to_str_ext(iOpcd
, GET_VALS_EXTP(opcode
), "Unknown (0x%02x)"),
3826 if (iOpcd
== MQ_TST_ASYNC_MESSAGE
)
3827 proto_item_append_text(ti
, ", Hdl=0x%04x, GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
3828 iHdl
, iGlbMsgIdx
, iSegmIndex
, iSegLength
);
3830 proto_item_append_text(ti
, ", Hdl=0x%04x, Len=%d",
3831 mq_parm
.mq_API_Hdl
, mq_parm
.mq_MsgTotLen
);
3832 if (reassembly_error
)
3834 expert_add_info_format(pinfo
, ti
, &ei_mq_reassembly_error
,
3835 "Wrong fragment length (%d) - skipping reassembly", iSegL
- iBegL
);
3837 mq_tree
= proto_item_add_subtree(ti
, ett_mq_reassemb
);
3844 if (fd_head
!= NULL
&& pinfo
->num
== fd_head
->reassembled_in
&& !bMore
)
3848 /* Reassembly finished */
3849 if (fd_head
->next
!= NULL
)
3853 /* dissect the last(s) MQ segment received */
3854 /* Reassembly in progress, so no decode */
3856 mq_in_reassembly
= true;
3857 dissect_mq_pdu(tvb
, pinfo
, mq_tree
);
3858 mq_in_reassembly
= false;
3861 2 or more fragments.
3862 Build Up the full pdu to be dissected correwctly
3864 next_tvb
= tvb_new_chain(tvb
, fd_head
->tvb_data
);
3865 add_new_data_source(pinfo
, next_tvb
, "Reassembled MQ");
3867 /* Create the tree element for the full reassembled MQ Msg */
3868 ti
= proto_tree_add_item(tree
, proto_mq
, tvb
, 0, -1, ENC_NA
);
3869 proto_item_append_text(ti
, " %s Full Segment",
3870 val_to_str_ext(iOpcd
, GET_VALS_EXTP(opcode
), "Unknown (0x%02x)"));
3871 if (iOpcd
== MQ_TST_ASYNC_MESSAGE
)
3873 proto_item_append_text(ti
, ", Hdl=0x%04x, GlbMsgIdx=%d, Len=%d",
3875 tvb_reported_length_remaining(next_tvb
, 0));
3876 if (mq_parm
.mq_AsyMsgRsn
!= MQ_MQRC_NONE
)
3877 proto_item_append_text(ti
, ", Reason=%d(0x%x) - %s",
3878 mq_parm
.mq_AsyMsgRsn
, mq_parm
.mq_AsyMsgRsn
,
3879 val_to_str_ext(mq_parm
.mq_AsyMsgRsn
, GET_VALS_EXTP(MQRC
), "Unknown (0x%02x)"));
3883 proto_item_append_text(ti
, ", Hdl=0x%04x, Len=%d",
3885 tvb_reported_length_remaining(next_tvb
, 0));
3886 if (mq_parm
.mq_API_RC
!= MQ_MQRC_NONE
)
3887 proto_item_append_text(ti
, ", RC=%d(0x%x) - %s",
3888 mq_parm
.mq_API_RC
, mq_parm
.mq_API_RC
,
3889 val_to_str_ext(mq_parm
.mq_API_RC
, GET_VALS_EXTP(MQRC
), "Unknown (0x%02x)"));
3891 mq_tree
= proto_item_add_subtree(ti
, ett_mq_reassemb
);
3895 /* Only 1 fragment */
3898 dissect_mq_pdu(next_tvb
, pinfo
, mq_tree
);
3899 return tvb_reported_length(tvb
);
3903 mq_in_reassembly
= true;
3904 /* Reassembly in progress */
3906 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "[%s %s Segment]",
3907 val_to_str_ext(iOpcd
, GET_VALS_EXTP(opcode
), "Unknown (0x%02x)"),
3909 dissect_mq_addCR_colinfo(pinfo
, &mq_parm
);
3910 if (iOpcd
== MQ_TST_ASYNC_MESSAGE
)
3911 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%04x, GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
3912 iHdl
, iGlbMsgIdx
, iSegmIndex
, iSegLength
);
3914 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%04x, Len=%d",
3915 mq_parm
.mq_API_Hdl
, mq_parm
.mq_MsgTotLen
);
3916 dissect_mq_pdu(tvb
, pinfo
, mq_tree
);
3917 return tvb_reported_length(tvb
);
3922 dissect_mq_pdu(tvb
, pinfo
, tree
);
3925 /* MQ segment is the first of a unreassembled series */
3926 col_append_str(pinfo
->cinfo
, COL_INFO
, " [Unreassembled MQ]");
3928 return tvb_reported_length(tvb
);
3931 /* Reassembly not enabled or non-fragmented message */
3932 dissect_mq_pdu(tvb
, pinfo
, tree
);
3935 return tvb_reported_length(tvb
);
3938 static unsigned get_mq_pdu_len(packet_info
* pinfo _U_
, tvbuff_t
* tvb
,
3939 int offset
, void* data _U_
)
3941 unsigned uLen
= tvb_reported_length_remaining(tvb
, offset
);
3944 uint32_t mq_strucID
= tvb_get_ntohl(tvb
, offset
+ 0);
3945 if ((mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
|| (mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
3947 uLen
= tvb_get_ntohl(tvb
, offset
+ 4);
3953 static int dissect_mq_tcp(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data
)
3955 tcp_dissect_pdus(tvb
, pinfo
, tree
, mq_desegment
, 28, get_mq_pdu_len
, reassemble_mq
, data
);
3956 return tvb_captured_length(tvb
);
3959 static int dissect_mq_spx(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
3961 /* Since SPX has no standard desegmentation, MQ cannot be performed as well */
3962 dissect_mq_pdu(tvb
, pinfo
, tree
);
3963 return tvb_captured_length(tvb
);
3966 static bool dissect_mq_heur(tvbuff_t
* tvb
, packet_info
* pinfo
,
3967 proto_tree
* tree
, bool is_tcp
, dissector_handle_t
* ssl_app_handle
)
3969 if ((tvb_captured_length(tvb
) >= 4) && (tvb_reported_length(tvb
) >= 28))
3971 uint32_t mq_strucID
= tvb_get_ntohl(tvb
, 0);
3972 if ((mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
|| (mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
3974 /* Register this dissector for this conversation */
3975 conversation_t
* conversation
;
3977 conversation
= find_or_create_conversation(pinfo
);
3979 conversation_set_dissector(conversation
, mq_handle
);
3980 else if (ssl_app_handle
)
3981 *ssl_app_handle
= mq_handle
;
3983 /* Dissect the packet */
3984 reassemble_mq(tvb
, pinfo
, tree
, NULL
);
3991 static bool dissect_mq_heur_tcp(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
3993 return dissect_mq_heur(tvb
, pinfo
, tree
, true, NULL
);
3996 static bool dissect_mq_heur_nontcp(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
3998 return dissect_mq_heur(tvb
, pinfo
, tree
, false, NULL
);
4001 static bool dissect_mq_heur_ssl(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data
)
4003 struct tlsinfo
*tlsinfo
= (struct tlsinfo
*)data
;
4004 return dissect_mq_heur(tvb
, pinfo
, tree
, false, tlsinfo
->app_handle
);
4007 void proto_register_mq(void)
4009 static hf_register_info hf
[] =
4011 {&hf_mq_tsh_StructID
, {"StructID..", "mq.tsh.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4012 {&hf_mq_tsh_mqseglen
, {"MQSegmLen.", "mq.tsh.seglength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH MQ Segment length", HFILL
}},
4013 {&hf_mq_tsh_convid
, {"Convers ID", "mq.tsh.convid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH Conversation ID", HFILL
}},
4014 {&hf_mq_tsh_requestid
, {"Request ID", "mq.tsh.requestid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH Request ID", HFILL
}},
4015 {&hf_mq_tsh_byteorder
, {"Byte order", "mq.tsh.byteorder", FT_UINT8
, BASE_HEX
, VALS(GET_VALSV(byteorder
)), 0x0, "TSH Byte order", HFILL
}},
4016 {&hf_mq_tsh_opcode
, {"SegmType..", "mq.tsh.type", FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, GET_VALS_EXTP(opcode
), 0x0, "TSH MQ segment type", HFILL
}},
4017 {&hf_mq_tsh_ctlflgs1
, {"Ctl Flag 1", "mq.tsh.cflags1", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "TSH Control flags 1", HFILL
}},
4018 {&hf_mq_tsh_ctlflgs2
, {"Ctl Flag 2", "mq.tsh.cflags2", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "TSH Control flags 2", HFILL
}},
4019 {&hf_mq_tsh_luwid
, {"LUW Ident.", "mq.tsh.luwid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "TSH logical unit of work identifier", HFILL
}},
4020 {&hf_mq_tsh_encoding
, {"Encoding..", "mq.tsh.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH Encoding", HFILL
}},
4021 {&hf_mq_tsh_ccsid
, {"CCSID.....", "mq.tsh.ccsid", FT_INT16
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(ccsid
)), 0x0, "TSH CCSID", HFILL
}},
4022 {&hf_mq_tsh_reserved
, {"Reserved..", "mq.tsh.reserved", FT_UINT16
, BASE_HEX
, NULL
, 0x0, "TSH Reserved", HFILL
}},
4024 {&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
}},
4025 {&hf_mq_tsh_tcf_error
, {"Error", "mq.tsh.tcf.error", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_TCF_ERROR
, "TSH TCF Error", HFILL
}},
4026 {&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
}},
4027 {&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
}},
4028 {&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
}},
4029 {&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
}},
4030 {&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
}},
4031 {&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
}},
4033 {&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
}},
4034 {&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
}},
4035 {&hf_mq_tsh_tcf2_CSH
, {"CSH", "mq.tsh.tcf2.csh", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_TCF2_CSH
, "TSH TCF2 CSH", HFILL
}},
4036 {&hf_mq_tsh_tcf2_CmitIntv
, {"CommitIntvl", "mq.tsh.tcf.cmitintv", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_TCF2_CMIT_INTERVAL
, "TSH TCF2 Commit Interval", HFILL
}},
4038 {&hf_mq_api_replylen
, {"Reply len..", "mq.api.replylength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "API Reply length", HFILL
}},
4039 {&hf_mq_api_compcode
, {"Compl Code.", "mq.api.completioncode", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(mqcc
)), 0x0, "API Completion code", HFILL
}},
4040 {&hf_mq_api_reascode
, {"Reason Code", "mq.api.reasoncode", FT_UINT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(MQRC
), 0x0, "API Reason code", HFILL
}},
4041 {&hf_mq_api_objecthdl
, {"Object Hdl.", "mq.api.hobj", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "API Object handle", HFILL
}},
4043 {&hf_mq_socket_conversid
, {"ConversId", "mq.socket.conversid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Conversation Id", HFILL
}},
4044 {&hf_mq_socket_requestid
, {"RequestId", "mq.socket.requestid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Request Id", HFILL
}},
4045 {&hf_mq_socket_type
, {"Type.....", "mq.socket.type", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Type", HFILL
}},
4046 {&hf_mq_socket_parm1
, {"Parm1....", "mq.socket.parm1", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Parameter 1", HFILL
}},
4047 {&hf_mq_socket_parm2
, {"Parm2....", "mq.socket.parm2", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Parameter 2", HFILL
}},
4049 {&hf_mq_caut_StructID
, {"StructID.", "mq.caut.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4050 {&hf_mq_caut_AuthType
, {"AuthType.", "mq.caut.authtype", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT Authority Type", HFILL
}},
4051 {&hf_mq_caut_UsrMaxLen
, {"UsrMaxLen", "mq.caut.usrmaxlen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT userid Maximum length", HFILL
}},
4052 {&hf_mq_caut_PwdMaxLen
, {"PwdMaxLen", "mq.caut.pwdmaxlen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT password Maximum length", HFILL
}},
4053 {&hf_mq_caut_UsrLength
, {"UsrLength", "mq.caut.usrlength", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT userid length", HFILL
}},
4054 {&hf_mq_caut_PwdLength
, {"PwdLength", "mq.caut.pswlength", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT password length", HFILL
}},
4055 {&hf_mq_caut_usr
, {"userid...", "mq.msh.userid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "CAUT UserId", HFILL
}},
4056 {&hf_mq_caut_psw
, {"password.", "mq.msh.password", FT_STRING
, BASE_NONE
, NULL
, 0x0, "CAUT Password", HFILL
}},
4058 {&hf_mq_msh_StructID
, {"StructID", "mq.msh.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4059 {&hf_mq_msh_seqnum
, {"Seq Numb", "mq.msh.seqnum", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MSH sequence number", HFILL
}},
4060 {&hf_mq_msh_datalength
, {"Buf len.", "mq.msh.buflength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MSH buffer length", HFILL
}},
4061 {&hf_mq_msh_unknown1
, {"Unknown1", "mq.msh.unknown1", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSH unknown1", HFILL
}},
4062 {&hf_mq_msh_msglength
, {"Msg len.", "mq.msh.msglength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MSH message length", HFILL
}},
4064 {&hf_mq_xqh_StructID
, {"StructID", "mq.xqh.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4065 {&hf_mq_xqh_version
, {"Version.", "mq.xqh.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XQH version", HFILL
}},
4066 {&hf_mq_xqh_remoteq
, {"Remote Q", "mq.xqh.remoteq", FT_STRING
, BASE_NONE
, NULL
, 0x0, "XQH remote queue", HFILL
}},
4067 {&hf_mq_xqh_remoteqmgr
, {"Rmt QMgr", "mq.xqh.remoteqmgr", FT_STRING
, BASE_NONE
, NULL
, 0x0, "XQH remote queue manager", HFILL
}},
4069 {&hf_mq_id_StructID
, {"Structid..", "mq.id.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4070 {&hf_mq_id_FapLevel
, {"FAP level.", "mq.id.faplevel", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "ID Formats And Protocols level", HFILL
}},
4071 {&hf_mq_id_cf1
, {"CapFlag1..", "mq.id.cflags", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID Capability Flags 1", HFILL
}},
4072 {&hf_mq_id_ecf1
, {"ECapFlag1.", "mq.id.ecflags", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID E Capability Flags 1", HFILL
}},
4073 {&hf_mq_id_ief1
, {"IniErrFlg1", "mq.id.inierrflg1", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID Initial Error Flags 1", HFILL
}},
4074 {&hf_mq_id_Reserved
, {"Reserved..", "mq.id.reserved", FT_UINT16
, BASE_HEX
, NULL
, 0x0, "ID Reserved", HFILL
}},
4075 {&hf_mq_id_MaxMsgBatch
, {"MaxMsgBtch", "mq.id.maxmsgbatch", FT_UINT16
, BASE_DEC
, NULL
, 0x0, "ID max msg per batch", HFILL
}},
4076 {&hf_mq_id_MaxTrSize
, {"MaxTrSize.", "mq.id.maxtrsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID max trans size", HFILL
}},
4077 {&hf_mq_id_MaxMsgSize
, {"MaxMsgSize", "mq.id.maxmsgsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID max msg size", HFILL
}},
4078 {&hf_mq_id_SeqWrapVal
, {"SeqWrapVal", "mq.id.seqwrap", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID seq wrap value", HFILL
}},
4079 {&hf_mq_id_channel
, {"ChannelNme", "mq.id.channelname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "ID channel name", HFILL
}},
4080 {&hf_mq_id_cf2
, {"CapFlag2..", "mq.id.cflags2", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID Capability flags 2", HFILL
}},
4081 {&hf_mq_id_ecf2
, {"ECapFlag2.", "mq.id.ecflags2", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID E Capability flags 2", HFILL
}},
4082 {&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
}},
4083 {&hf_mq_id_qmgrname
, {"QMgrName..", "mq.id.qm", FT_STRING
, BASE_NONE
, NULL
, 0x0, "ID Queue Manager Name", HFILL
}},
4084 {&hf_mq_id_HBInterval
, {"HBInterval", "mq.id.hbint", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID Heartbeat interval", HFILL
}},
4085 {&hf_mq_id_EFLLength
, {"EFLLength.", "mq.id.efllength", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "ID EFL Length", HFILL
}},
4086 {&hf_mq_id_ief2
, {"IniErrFlg2", "mq.id.inierrflg2", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID Initial Error Flags 2", HFILL
}},
4087 {&hf_mq_id_Reserved1
, {"Reserved1.", "mq.id.reserved1", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID Reserved 1", HFILL
}},
4088 {&hf_mq_id_HdrCprsLst
, {"HdrCprsLst", "mq.id.hdrcprslst", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "ID Hdr Cprs Lst", HFILL
}},
4089 {&hf_mq_id_MsgCprsLst
, {"MsgCprsLst", "mq.id.msgcprslst", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "ID Msg Cprs Lst", HFILL
}},
4090 {&hf_mq_id_Reserved2
, {"Reserved2.", "mq.id.reserved2", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "ID Reserved 2", HFILL
}},
4091 {&hf_mq_id_SSLKeyRst
, {"SSLKeyRst.", "mq.id.sslkeyrst", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID SSL Key Reset", HFILL
}},
4092 {&hf_mq_id_ConvBySkt
, {"ConvBySkt.", "mq.id.convbyskt", FT_INT32
, BASE_DEC
, NULL
, 0x0, "ID Conv Per Socket", HFILL
}},
4093 {&hf_mq_id_cf3
, {"CapFlag3..", "mq.id.cflags3", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID Capability flags 3", HFILL
}},
4094 {&hf_mq_id_ecf3
, {"ECapFlag3.", "mq.id.ecflags3", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID E Capability flags 3", HFILL
}},
4095 {&hf_mq_id_Reserved3
, {"Reserved3.", "mq.id.reserved3", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "ID Reserved 3", HFILL
}},
4096 {&hf_mq_id_ProcessId
, {"ProcessId.", "mq.id.processid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID Process Identifier", HFILL
}},
4097 {&hf_mq_id_ThreadId
, {"ThreadId..", "mq.id.threadid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID Thread Identifier", HFILL
}},
4098 {&hf_mq_id_TraceId
, {"TraceId...", "mq.id.traceid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID Trace Identifier", HFILL
}},
4099 {&hf_mq_id_ProdId
, {"ProdId....", "mq.id.prodid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "ID Product Identifier", HFILL
}},
4100 {&hf_mq_id_mqmid
, {"MQM ID....", "mq.id.mqmid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "ID MQM ID", HFILL
}},
4101 {&hf_mq_id_pal
, {"PAL.......", "mq.id.pal", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "ID PAL", HFILL
}},
4102 {&hf_mq_id_r
, {"R.........", "mq.id.r", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "ID R", HFILL
}},
4104 {&hf_mq_id_cf1_msgseq
, {"Message sequence", "mq.id.icf.msgseq", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_MSG_SEQ
, "ID ICF Message sequence", HFILL
}},
4105 {&hf_mq_id_cf1_convcap
, {"Conversion capable", "mq.id.icf.convcap", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_CONVERSION_CAPABLE
, "ID ICF Conversion capable", HFILL
}},
4106 {&hf_mq_id_cf1_splitmsg
, {"Split messages", "mq.id.icf.splitmsg", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_SPLIT_MESSAGE
, "ID ICF Split message", HFILL
}},
4107 {&hf_mq_id_cf1_RqstInit
, {"Request Initiation", "mq.id.icf.rqstinit", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_REQUEST_INITIATION
, "ID ICF Request Initiation", HFILL
}},
4108 {&hf_mq_id_cf1_RqstSecu
, {"Request Security", "mq.id.icf.rqstsecu", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_REQUEST_SECURITY
, "ID ICF Request Security", HFILL
}},
4109 {&hf_mq_id_cf1_mqreq
, {"MQ request", "mq.id.icf.mqreq", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_MQREQUEST
, "ID ICF MQ request", HFILL
}},
4110 {&hf_mq_id_cf1_svrsec
, {"Srvr Con security", "mq.id.icf.svrsec", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_SVRCONN_SECURITY
, "ID ICF Server connection security", HFILL
}},
4111 {&hf_mq_id_cf1_runtime
, {"Runtime applic", "mq.id.icf.runtime", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF1_RUNTIME
, "ID ICF Runtime application", HFILL
}},
4113 {&hf_mq_id_cf2_CanDstLst
, {"DistListCapable", "mq.id.icf2.distlistcap", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_DIST_LIST_CAPABLE
, "ID ICF2 Distribution List Capable", HFILL
}},
4114 {&hf_mq_id_cf2_FstMsgReq
, {"Fast Msg Reqrd", "mq.id.icf2.fastmsgrqrd", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_FAST_MESSAGES_REQUIRED
, "ID ICF2 Fast Message Required", HFILL
}},
4115 {&hf_mq_id_cf2_RespConv
, {"RspndrConversion", "mq.id.icf2.respndrconvers", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_RESPONDER_CONVERSION
, "ID ICF2 Responder Conversion", HFILL
}},
4116 {&hf_mq_id_cf2_XARequest
, {"XARequest", "mq.id.icf2.xarequest", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_XAREQUEST
, "ID ICF2 XA Request", HFILL
}},
4117 {&hf_mq_id_cf2_XARunTApp
, {"XARunTypApp", "mq.id.icf2.xaruntypapp", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_XARUNTIME_APP
, "ID ICF2 XA Runtime App", HFILL
}},
4118 {&hf_mq_id_cf2_SPIRqst
, {"SPIRequest", "mq.id.icf2.spirequest", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_SPIREQUEST
, "ID ICF2 SPI Request", HFILL
}},
4119 {&hf_mq_id_cf2_DualUOW
, {"DualUOW", "mq.id.icf2.dualuow", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_DUAL_UOW
, "ID ICF2 Dual UOW", HFILL
}},
4120 {&hf_mq_id_cf2_CanTrcRte
, {"Trace Rte Capab", "mq.id.icf2.cantraceroute", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF2_TRACE_ROUTE_CAPABLE
, "ID ICF2 Trace Route Capable", HFILL
}},
4122 {&hf_mq_id_cf3_CanMsgPrp
, {"Msg Property Cap", "mq.id.ief3.msgpropertycap", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF3_MSG_PROP_CAPABLE
, "ID ICF3 Message PropertyCapable", HFILL
}},
4123 {&hf_mq_id_cf3_CanMulticast
, {"Multicast Cap", "mq.id.ief3.multicastcap", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF3_MULTICAST_CAPABLE
, "ID ICF3 Mutlicast Capabilities", HFILL
}},
4124 {&hf_mq_id_cf3_PropIntSep
, {"Prop Int Separate", "mq.id.ief3.propintseparate", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF3_MSG_PROP_INT_SEPARATE
, "ID ICF3 Property Int Separate", HFILL
}},
4125 {&hf_mq_id_cf3_MPlxSyGet
, {"Multiplex_synchget", "mq.id.ief3.multiplexsynchget", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF3_MULTIPLEX_SYNCGET
, "ID ICF3 MULTIPLEX_SYNCGET", HFILL
}},
4126 {&hf_mq_id_cf3_ProtAlgorit
, {"Prot Algorithms", "mq.id.ief3.protalgorithms", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF3_PROT_ALGORITHMS
, "ID ICF3 Prot Algorithms", HFILL
}},
4127 {&hf_mq_id_cf3_CanGenConnTag
, {"Gen ConnTag Cap", "mq.id.ief3.genconntagcap", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_CF3_GEN_CONNTAG_CAP
, "ID ICF3 Generate ConnTag Capable", HFILL
}},
4129 {&hf_mq_id_ief1_ccsid
, {"Invalid CCSID", "mq.id.ief1.ccsid", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_IEF1_CCSID_NOT_SUPPORTED
, "ID invalid CCSID", HFILL
}},
4130 {&hf_mq_id_ief1_enc
, {"Invalid encoding", "mq.id.ief1.enc", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_IEF1_ENCODING_INVALID
, "ID invalid encoding", HFILL
}},
4131 {&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
}},
4132 {&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
}},
4133 {&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
}},
4134 {&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
}},
4135 {&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
}},
4136 {&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
}},
4138 {&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
}},
4139 {&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
}},
4140 {&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
}},
4142 {&hf_mq_uid_StructID
, {"Structid", "mq.uid.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4143 {&hf_mq_uid_userid
, {"User ID.", "mq.uid.userid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "UID structid", HFILL
}},
4144 {&hf_mq_uid_password
, {"Password", "mq.uid.password", FT_STRING
, BASE_NONE
, NULL
, 0x0, "UID password", HFILL
}},
4145 {&hf_mq_uid_longuserid
, {"Long UID", "mq.uid.longuserid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "UID long user id", HFILL
}},
4147 {&hf_mq_sidlen
, {"SID Len.", "mq.uid.sidlen", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "Sid Len", HFILL
}},
4148 {&hf_mq_sidtyp
, {"SIDType.", "mq.uid.sidtyp", FT_UINT8
, BASE_DEC
, VALS(GET_VALSV(sidtype
)), 0x0, "Sid Typ", HFILL
}},
4149 {&hf_mq_securityid
, {"SecurID.", "mq.uid.securityid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Security ID", HFILL
}},
4151 {&hf_mq_conn_QMgr
, {"QMgr....", "mq.conn.qm", FT_STRING
, BASE_NONE
, NULL
, 0x0, "CONN queue manager", HFILL
}},
4152 {&hf_mq_conn_appname
, {"ApplName", "mq.conn.appname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "CONN application name", HFILL
}},
4153 {&hf_mq_conn_apptype
, {"ApplType", "mq.conn.apptype", FT_INT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(MQAT
), 0x0, "CONN application type", HFILL
}},
4154 {&hf_mq_conn_acttoken
, {"AccntTok", "mq.conn.acttoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "CONN accounting token", HFILL
}},
4155 {&hf_mq_conn_options
, {"Options.", "mq.conn.options", FT_UINT32
, BASE_DEC
, VALS(mq_conn_options_vals
), 0x0, "CONN options", HFILL
}},
4156 {&hf_mq_conn_Xoptions
, {"XOptions", "mq.conn.xoptions", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "CONN Xoptions", HFILL
}},
4158 {&hf_mq_fcno_StructID
, {"StructId..", "mq.fcno.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4159 {&hf_mq_fcno_version
, {"version...", "mq.fcno.version", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "FCNO version", HFILL
}},
4160 {&hf_mq_fcno_capflag
, {"CapFlag...", "mq.fcno.capflag", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "FCNO Capability Flag", HFILL
}},
4162 {&hf_mq_fcno_prodid
, {"prodid....", "mq.fcno.prodid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "FCNO Product Id", HFILL
}},
4163 {&hf_mq_fcno_mqmid
, {"MqmId.....", "mq.fcno.mqmid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "FCNO Mqm ID", HFILL
}},
4165 {&hf_mq_fcno_conn_tag
, {"conntag...", "mq.fcno.conntag", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "FCNO Connection Tag", HFILL
}},
4166 {&hf_mq_fcno_retconn_tag
, {"retconntag", "mq.fcno.retconntag", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "FCNO Retry Connection Tag", HFILL
}},
4167 {&hf_mq_fcno_unknowb01
, {"unknowb01.", "mq.fcno.unknowb01", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "FCNO unknown bytes 01", HFILL
}},
4170 {&hf_mq_inq_nbsel
, {"Selector count..", "mq.inq.nbsel", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Selector count", HFILL
}},
4171 {&hf_mq_inq_nbint
, {"Integer count...", "mq.inq.nbint", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Integer count", HFILL
}},
4172 {&hf_mq_inq_charlen
, {"Character length", "mq.inq.charlen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Character length", HFILL
}},
4173 {&hf_mq_inq_sel
, {"Selector........", "mq.inq.sel", FT_UINT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(selector
), 0x0, "INQ Selector", HFILL
}},
4174 {&hf_mq_inq_intvalue
, {"Integer value...", "mq.inq.intvalue", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Integer value", HFILL
}},
4175 {&hf_mq_inq_charvalues
, {"Char values.....", "mq.inq.charvalues", FT_STRING
, BASE_NONE
, NULL
, 0x0, "INQ Character values", HFILL
}},
4177 {&hf_mq_spi_verb
, {"SPI Verb", "mq.spi.verb", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(spi_verbs
)), 0x0, NULL
, HFILL
}},
4178 {&hf_mq_spi_version
, {"Version", "mq.spi.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Version", HFILL
}},
4179 {&hf_mq_spi_length
, {"Max reply size", "mq.spi.replength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Max reply size", HFILL
}},
4181 {&hf_mq_spi_base_StructID
, {"SPI Structid", "mq.spib.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4182 {&hf_mq_spi_base_version
, {"Version", "mq.spib.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Base Version", HFILL
}},
4183 {&hf_mq_spi_base_length
, {"Length", "mq.spib.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Base Length", HFILL
}},
4185 {&hf_mq_spi_spqo_nbverb
, {"Number of verbs", "mq.spqo.nbverb", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Number of verbs", HFILL
}},
4186 {&hf_mq_spi_spqo_verbid
, {"Verb", "mq.spqo.verb", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(spi_verbs
)), 0x0, "SPI Query Output VerbId", HFILL
}},
4187 {&hf_mq_spi_spqo_maxiover
, {"Max InOut Version", "mq.spqo.maxiov", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Max InOut Version", HFILL
}},
4188 {&hf_mq_spi_spqo_maxinver
, {"Max In Version", "mq.spqo.maxiv", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Max In Version", HFILL
}},
4189 {&hf_mq_spi_spqo_maxouver
, {"Max Out Version", "mq.spqo.maxov", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Max Out Version", HFILL
}},
4190 {&hf_mq_spi_spqo_flags
, {"Flags", "mq.spqo.flags", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output flags", HFILL
}},
4192 {&hf_mq_spi_spai_mode
, {"Mode", "mq.spai.mode", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(spi_activate
)), 0x0, "SPI Activate Input mode", HFILL
}},
4193 {&hf_mq_spi_spai_unknown1
, {"Unknown1", "mq.spai.unknown1", FT_STRING
, BASE_NONE
, NULL
, 0x0, "SPI Activate Input unknown1", HFILL
}},
4194 {&hf_mq_spi_spai_unknown2
, {"Unknown2", "mq.spai.unknown2", FT_STRING
, BASE_NONE
, NULL
, 0x0, "SPI Activate Input unknown2", HFILL
}},
4195 {&hf_mq_spi_spai_msgid
, {"Message Id", "mq.spai.msgid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "SPI Activate Input message id", HFILL
}},
4196 {&hf_mq_spi_spgi_batchsz
, {"Batch size", "mq.spgi.batchsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Input batch size", HFILL
}},
4197 {&hf_mq_spi_spgi_batchint
, {"Batch interval", "mq.spgi.batchint", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Input batch interval", HFILL
}},
4198 {&hf_mq_spi_spgi_maxmsgsz
, {"Max message size", "mq.spgi.maxmsgsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Input max message size", HFILL
}},
4200 {&hf_mq_spi_spgo_options
, {"Options", "mq.spgo.options", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Output options", HFILL
}},
4201 {&hf_mq_spi_spgo_size
, {"Size", "mq.spgo.size", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Output size", HFILL
}},
4202 {&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
}},
4203 {&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
}},
4204 {&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
}},
4206 {&hf_mq_put_length
, {"Data length", "mq.put.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PUT Data length", HFILL
}},
4208 {&hf_mq_close_options
, {"Options", "mq.close.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "CLOSE options", HFILL
}},
4209 {&hf_mq_close_options_DELETE
, {"DELETE", "mq.close.options.Delete", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQCO_DELETE
, "CLOSE options DELETE", HFILL
}},
4210 {&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
}},
4211 {&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
}},
4212 {&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
}},
4213 {&hf_mq_close_options_QUIESCE
, {"QUIESCE", "mq.close.options.Quiesce", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQCO_QUIESCE
, "CLOSE options QUIESCE", HFILL
}},
4215 {&hf_mq_open_options
, {"Options", "mq.open.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "OPEN options", HFILL
}},
4216 {&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
}},
4217 {&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
}},
4218 {&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
}},
4219 {&hf_mq_open_options_BROWSE
, {"BROWSE", "mq.open.options.Browse", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_BROWSE
, "OPEN options BROWSE", HFILL
}},
4220 {&hf_mq_open_options_OUTPUT
, {"OUTPUT", "mq.open.options.Output", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_OUTPUT
, "OPEN options OUTPUT", HFILL
}},
4221 {&hf_mq_open_options_INQUIRE
, {"INQUIRE", "mq.open.options.Inquire", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_INQUIRE
, "OPEN options INQUIRE", HFILL
}},
4222 {&hf_mq_open_options_SET
, {"SET", "mq.open.options.Set", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_SET
, "OPEN options SET", HFILL
}},
4223 {&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
}},
4224 {&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
}},
4225 {&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
}},
4226 {&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
}},
4227 {&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
}},
4228 {&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
}},
4229 {&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
}},
4230 {&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
}},
4231 {&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
}},
4232 {&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
}},
4233 {&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
}},
4234 {&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
}},
4235 {&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
}},
4236 {&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
}},
4237 {&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
}},
4238 {&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
}},
4240 {&hf_mq_fopa_StructID
, {"StructId.......", "mq.fopa.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4241 {&hf_mq_fopa_version
, {"Version........", "mq.fopa.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "FOPA Version", HFILL
}},
4242 {&hf_mq_fopa_length
, {"Length.........", "mq.fopa.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "FOPA Length", HFILL
}},
4243 {&hf_mq_fopa_DefPersistence
, {"DefPersistence.", "mq.fopa.defpersistence", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(MQPER
)), 0x0, "FOPA DefPersistence", HFILL
}},
4244 {&hf_mq_fopa_DefPutRespType
, {"DefPutRespType.", "mq.fopa.defputresponsetype", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(MQPRT
)), 0x0, "FOPA DefPutRespType", HFILL
}},
4245 {&hf_mq_fopa_DefReadAhead
, {"DefReadAhead...", "mq.fopa.defreadahaed", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(MQREADA
)), 0x0, "FOPA DefReadAhead", HFILL
}},
4246 {&hf_mq_fopa_PropertyControl
, {"PropertyControl", "mq.fopa.propertycontrol", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(MQPROP
)), 0x0, "FOPA PropertyControl", HFILL
}},
4247 {&hf_mq_fopa_Unknown
, {"Unknown........", "mq.fopa.unknown", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "FOPA Unknown", HFILL
}},
4249 {&hf_mq_fcmi_StructID
, {"StructId.......", "mq.fcmi.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4250 {&hf_mq_fcmi_unknown
, {"Unknown........", "mq.fcmi.unknown", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "FCMI Unknown", HFILL
}},
4252 {&hf_mq_msgreq_version
, {"version..", "mq.msgreq.version", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ version", HFILL
}},
4253 {&hf_mq_msgreq_handle
, {"handle...", "mq.msgreq.handle", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSGREQ handle", HFILL
}},
4254 {&hf_mq_msgreq_RecvBytes
, {"RecvBytes", "mq.msgreq.unknown1", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Received Bytes", HFILL
}},
4255 {&hf_mq_msgreq_RqstBytes
, {"RqstBytes", "mq.msgreq.rqstbytes", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Requested Bytes", HFILL
}},
4256 {&hf_mq_msgreq_MaxMsgLen
, {"MaxMsgLen", "mq.msgreq.maxmsglen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Maximum Msg Length", HFILL
}},
4257 {&hf_mq_msgreq_WaitIntrv
, {"WaitIntrv", "mq.msgreq.waitintrv", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Wait Interval", HFILL
}},
4258 {&hf_mq_msgreq_QueStatus
, {"QueStatus", "mq.msgreq.questatus", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSGREQ Queue Status", HFILL
}},
4259 {&hf_mq_msgreq_RqstFlags
, {"RqstFlags", "mq.msgreq.rqstflags", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Request Flags", HFILL
}},
4260 {&hf_mq_msgreq_flags_selection
, {"REQ_MSG_SELECTION", "mq.msgreq.rqstflags.SELECTION", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_REQUEST_MSG_SELECTION
, "Request Message flag SELECTION", HFILL
}},
4261 {&hf_mq_msgreq_flags_F00000008
, {"REQ_MSG_F00000008", "mq.msgreq.rqstflags.F00000008", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_REQUEST_MSG_F00000008
, "Request Message flag F00000008", HFILL
}},
4262 {&hf_mq_msgreq_flags_F00000004
, {"REQ_MSG_F00000004", "mq.msgreq.rqstflags.F00000004", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_REQUEST_MSG_F00000004
, "Request Message flag F00000004", HFILL
}},
4263 {&hf_mq_msgreq_flags_F00000002
, {"REQ_MSG_F00000002", "mq.msgreq.rqstflags.F00000002", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_REQUEST_MSG_F00000002
, "Request Message flag F00000002", HFILL
}},
4265 {&hf_mq_msgreq_GlbMsgIdx
, {"GlbMsgIdx", "mq.msgreq.glbmsgidx", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Global Message Index", HFILL
}},
4266 {&hf_mq_msgreq_SelectIdx
, {"SelectIdx", "mq.msgreq.selectIdx", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Selection Index", HFILL
}},
4267 {&hf_mq_msgreq_MQMDVers
, {"MQMDVers.", "mq.msgreq.mqmdvers", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ MQMD Version", HFILL
}},
4268 {&hf_mq_msgreq_ccsid
, {"CCSID....", "mq.msgreq.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(ccsid
)), 0x0, "MSGREQ ccsid", HFILL
}},
4269 {&hf_mq_msgreq_encoding
, {"Encoding.", "mq.msgreq.encoding", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ encoding", HFILL
}},
4270 {&hf_mq_msgreq_MsgSeqNum
, {"MsgSeqNum", "mq.msgreq.msgseqnum", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Message Sequence Number", HFILL
}},
4271 {&hf_mq_msgreq_offset
, {"Offset...", "mq.msgreq.offset", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Offset", HFILL
}},
4272 {&hf_mq_msgreq_mtchMsgId
, {"mtchMsgId", "mq.msgreq.mtchMsgId", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match MsgID", HFILL
}},
4273 {&hf_mq_msgreq_mtchCorId
, {"mtchCorID", "mq.msgreq.mtchcorid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match Correlation Id", HFILL
}},
4274 {&hf_mq_msgreq_mtchGrpid
, {"mtchGrpID", "mq.msgreq.mtchgrpid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match Group ID", HFILL
}},
4275 {&hf_mq_msgreq_mtchMsgTk
, {"mtchMsgTk", "mq.msgreq.mtchmsgtk", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match Message Token", HFILL
}},
4277 {&hf_mq_msgasy_version
, {"version..", "mq.msgasy.version", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC version", HFILL
}},
4278 {&hf_mq_msgasy_handle
, {"handle...", "mq.msgasy.handle", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSGASYNC handle", HFILL
}},
4279 {&hf_mq_msgasy_MsgIndex
, {"MsgIndex.", "mq.msgasy.msgindex", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Message Index", HFILL
}},
4280 {&hf_mq_msgasy_GlbMsgIdx
, {"GlbMsgIdx", "mq.msgasy.glbmsgidx", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Global Message Index", HFILL
}},
4281 {&hf_mq_msgasy_SegLength
, {"SegLength", "mq.msgasy.seglength", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Segment Length", HFILL
}},
4282 {&hf_mq_msgasy_SegmIndex
, {"SegmIndex", "mq.msgasy.segmindex", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Segment Index", HFILL
}},
4283 {&hf_mq_msgasy_SeleIndex
, {"SeleIndex", "mq.msgasy.seleindex", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Selection Index", HFILL
}},
4284 {&hf_mq_msgasy_ReasonCod
, {"ReasonCod", "mq.msgasy.reasoncod", FT_UINT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(MQRC
), 0x0, "MSGASYNC Reason Code", HFILL
}},
4285 {&hf_mq_msgasy_ActMsgLen
, {"ActMsgLen", "mq.msgasy.actmsglen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Actual Message Length", HFILL
}},
4286 {&hf_mq_msgasy_TotMsgLen
, {"TotMsgLen", "mq.msgasy.totmsglen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Total Message Length", HFILL
}},
4287 {&hf_mq_msgasy_MsgToken
, {"MsgToken.", "mq.msgasy.msgtoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGASYNC Mesasage Token", HFILL
}},
4288 {&hf_mq_msgasy_Status
, {"status...", "mq.msgasy.status", FT_UINT16
, BASE_HEX
, NULL
, 0x0, "MSGASYNC Status", HFILL
}},
4289 {&hf_mq_msgasy_resolQNLn
, {"resolQNLn", "mq.msgasy.resolqnln", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "MSGASYNC Resolved Queue Name Length", HFILL
}},
4290 {&hf_mq_msgasy_resolQNme
, {"resolQNme", "mq.msgasy.resolqnme", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MSGASYNC Resolved Queue Name", HFILL
}},
4291 {&hf_mq_msgasy_padding
, {"Padding..", "mq.msgasy.padding", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGASYNC Padding", HFILL
}},
4293 {&hf_mq_notif_vers
, {"version.", "mq.notif.vers", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "NOTIFICATION version", HFILL
}},
4294 {&hf_mq_notif_handle
, {"handle..", "mq.notif.handle", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "NOTIFICATION handle", HFILL
}},
4295 {&hf_mq_notif_code
, {"code....", "mq.notif.code", FT_UINT32
, BASE_HEX_DEC
, VALS(GET_VALSV(notifcode
)), 0x0, "NOTIFICATION code", HFILL
}},
4296 {&hf_mq_notif_value
, {"value...", "mq.notif.value", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "NOTIFICATION MQRC", HFILL
}},
4298 {&hf_mq_ping_length
, {"Length", "mq.ping.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PING length", HFILL
}},
4299 {&hf_mq_ping_buffer
, {"Buffer", "mq.ping.buffer", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PING buffer", HFILL
}},
4301 {&hf_mq_reset_length
, {"Length", "mq.reset.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "RESET length", HFILL
}},
4302 {&hf_mq_reset_seqnum
, {"SeqNum", "mq.reset.seqnum", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "RESET sequence number", HFILL
}},
4304 {&hf_mq_status_length
, {"Length", "mq.status.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "STATUS length", HFILL
}},
4305 {&hf_mq_status_code
, {"Code..", "mq.status.code", FT_UINT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(status
), 0x0, "STATUS code", HFILL
}},
4306 {&hf_mq_status_value
, {"Value.", "mq.status.value", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "STATUS value", HFILL
}},
4308 {&hf_mq_od_StructID
, {"StructID.........", "mq.od.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4309 {&hf_mq_od_version
, {"version..........", "mq.od.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD version", HFILL
}},
4310 {&hf_mq_od_objecttype
, {"ObjType..........", "mq.od.objtype", FT_UINT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(objtype
), 0x0, "OD object type", HFILL
}},
4311 {&hf_mq_od_objectname
, {"ObjName..........", "mq.od.objname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OD object name", HFILL
}},
4312 {&hf_mq_od_objqmgrname
, {"ObjQMgr..........", "mq.od.objqmgrname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OD object queue manager name", HFILL
}},
4313 {&hf_mq_od_dynqname
, {"DynQName.........", "mq.od.dynqname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OD dynamic queue name", HFILL
}},
4314 {&hf_mq_od_altuserid
, {"AltUserID........", "mq.od.altuserid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OD alternate userid", HFILL
}},
4315 {&hf_mq_od_recspresent
, {"NbrRecord........", "mq.od.nbrrec", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD number of records", HFILL
}},
4316 {&hf_mq_od_knowndstcnt
, {"Known Dest Count.", "mq.od.kdestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD known destination count", HFILL
}},
4317 {&hf_mq_od_unknowdstcnt
, {"Unknown Dest Cnt.", "mq.od.udestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD unknown destination count", HFILL
}},
4318 {&hf_mq_od_invaldstcnt
, {"Invalid Dest Cnt.", "mq.od.idestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD invalid destination count", HFILL
}},
4319 {&hf_mq_od_objrecofs
, {"Offset of 1st OR.", "mq.od.offsetor", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD offset of first OR", HFILL
}},
4320 {&hf_mq_od_resprecofs
, {"Offset of 1st RR.", "mq.od.offsetrr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD offset of first RR", HFILL
}},
4321 {&hf_mq_od_objrecptr
, {"Addr of 1st OR.", "mq.od.addror", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "OD address of first OR", HFILL
}},
4322 {&hf_mq_od_resprecptr
, {"Addr of 1st RR.", "mq.od.addrrr", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "OD address of first RR", HFILL
}},
4323 {&hf_mq_od_altsecurid
, {"Alt security id..", "mq.od.altsecid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OD alternate security id", HFILL
}},
4324 {&hf_mq_od_resolvqname
, {"Resolved Q Name..", "mq.od.resolvq", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OD resolved queue name", HFILL
}},
4325 {&hf_mq_od_resolvqmgrnm
, {"Resolved QMgrName", "mq.od.resolvqmgr", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OD resolved queue manager name", HFILL
}},
4326 {&hf_mq_od_resolvobjtyp
, {"Resolv Obj Type..", "mq.od.resolvedobjtype", FT_UINT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(objtype
), 0x0, "OD resolved object type", HFILL
}},
4328 {&hf_mq_or_objname
, {"Object name...", "mq.or.objname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OR object name", HFILL
}},
4329 {&hf_mq_or_objqmgrname
, {"Object QMgr Nm", "mq.or.objqmgrname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "OR object queue manager name", HFILL
}},
4331 {&hf_mq_rr_compcode
, {"Comp Code", "mq.rr.completioncode", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OR completion code", HFILL
}},
4332 {&hf_mq_rr_reascode
, {"Reas Code", "mq.rr.reasoncode", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OR reason code", HFILL
}},
4334 {&hf_mq_pmr_msgid
, {"Message Id", "mq.pmr.msgid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR Message Id", HFILL
}},
4335 {&hf_mq_pmr_correlid
, {"Correlation Id", "mq.pmr.correlid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR Correlation Id", HFILL
}},
4336 {&hf_mq_pmr_groupid
, {"GroupId", "mq.pmr.groupid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR GroupId", HFILL
}},
4337 {&hf_mq_pmr_feedback
, {"Feedback", "mq.pmr.feedback", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMR Feedback", HFILL
}},
4338 {&hf_mq_pmr_acttoken
, {"Accounting token", "mq.pmr.acttoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR accounting token", HFILL
}},
4340 {&hf_mq_md_StructID
, {"StructID.", "mq.md.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4341 {&hf_mq_md_version
, {"Version..", "mq.md.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD version", HFILL
}},
4342 {&hf_mq_md_report
, {"Report...", "mq.md.report", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD report", HFILL
}},
4343 {&hf_mq_md_msgtype
, {"Msg Type.", "mq.md.msgtype", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(MQMT
)), 0x0, "MD message type", HFILL
}},
4344 {&hf_mq_md_expiry
, {"Expiry .", "mq.md.expiry", FT_INT32
, BASE_DEC
, NULL
, 0x0, "MD expiry", HFILL
}},
4345 {&hf_mq_md_feedback
, {"Feedback.", "mq.md.feedback", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD feedback", HFILL
}},
4346 {&hf_mq_md_encoding
, {"Encoding.", "mq.md.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD encoding", HFILL
}},
4347 {&hf_mq_md_ccsid
, {"CCSID....", "mq.md.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(ccsid
)), 0x0, "MD character set", HFILL
}},
4348 {&hf_mq_md_format
, {"Format...", "mq.md.format", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD format", HFILL
}},
4349 {&hf_mq_md_priority
, {"Priority.", "mq.md.priority", FT_INT32
, BASE_DEC
, NULL
, 0x0, "MD priority", HFILL
}},
4350 {&hf_mq_md_persistence
, {"Persist..", "mq.md.persistence", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(MQPER
)), 0x0, "MD persistence", HFILL
}},
4351 {&hf_mq_md_msgid
, {"Msg ID...", "mq.md.msgid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD Message Id", HFILL
}},
4352 {&hf_mq_md_correlid
, {"CorrelID.", "mq.md.correlid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD Correlation Id", HFILL
}},
4353 {&hf_mq_md_backoutcnt
, {"BackoCnt.", "mq.md.backoutcnt", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD Backout count", HFILL
}},
4354 {&hf_mq_md_replytoq
, {"ReplyToQ.", "mq.md.replytoq", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD ReplyTo queue", HFILL
}},
4355 {&hf_mq_md_replytoqmgr
, {"RepToQMgr", "mq.md.replytoqmgr", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD ReplyTo queue manager", HFILL
}},
4356 {&hf_mq_md_userid
, {"UserId...", "mq.md.userid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD UserId", HFILL
}},
4357 {&hf_mq_md_acttoken
, {"AccntTok.", "mq.md.acttoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD accounting token", HFILL
}},
4358 {&hf_mq_md_appliddata
, {"AppIdData", "mq.md.appldata", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD Put applicationId data", HFILL
}},
4359 {&hf_mq_md_putappltype
, {"PutAppTyp", "mq.md.appltype", FT_INT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(MQAT
), 0x0, "MD Put application type", HFILL
}},
4360 {&hf_mq_md_putapplname
, {"PutAppNme", "mq.md.applname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD Put application name", HFILL
}},
4361 {&hf_mq_md_putdate
, {"PutDatGMT", "mq.md.date", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD Put date", HFILL
}},
4362 {&hf_mq_md_puttime
, {"PutTimGMT", "mq.md.time", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD Put time", HFILL
}},
4363 {&hf_mq_md_apporigdata
, {"AppOriDat", "mq.md.origdata", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MD Application original data", HFILL
}},
4364 {&hf_mq_md_groupid
, {"GroupId..", "mq.md.groupid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD GroupId", HFILL
}},
4365 {&hf_mq_md_msgseqnumber
, {"MsgSeqNum", "mq.md.msgseqnumber", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD Message sequence number", HFILL
}},
4366 {&hf_mq_md_offset
, {"Offset...", "mq.md.offset", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD Offset", HFILL
}},
4367 {&hf_mq_md_msgflags
, {"Msg flags", "mq.md.msgflags", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MD Message flags", HFILL
}},
4368 {&hf_mq_md_origlen
, {"Orig len.", "mq.md.origlength", FT_INT32
, BASE_DEC
, NULL
, 0x0, "MD Original length", HFILL
}},
4370 {&hf_mq_dlh_StructID
, {"StructID.", "mq.dlh.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4371 {&hf_mq_dlh_version
, {"Version..", "mq.dlh.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DLH version", HFILL
}},
4372 {&hf_mq_dlh_reason
, {"Reason...", "mq.dlh.reason", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DLH reason", HFILL
}},
4373 {&hf_mq_dlh_destq
, {"Dest Q...", "mq.dlh.destq", FT_STRING
, BASE_NONE
, NULL
, 0x0, "DLH destination queue", HFILL
}},
4374 {&hf_mq_dlh_destqmgr
, {"DestQMgr.", "mq.dlh.destqmgr", FT_STRING
, BASE_NONE
, NULL
, 0x0, "DLH destination queue manager", HFILL
}},
4375 {&hf_mq_dlh_encoding
, {"Encoding.", "mq.dlh.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DLH encoding", HFILL
}},
4376 {&hf_mq_dlh_ccsid
, {"CCSID....", "mq.dlh.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(ccsid
)), 0x0, "DLH character set", HFILL
}},
4377 {&hf_mq_dlh_format
, {"Format...", "mq.dlh.format", FT_STRING
, BASE_NONE
, NULL
, 0x0, "DLH format", HFILL
}},
4378 {&hf_mq_dlh_putappltype
, {"PutAppTyp", "mq.dlh.putappltype", FT_INT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(MQAT
), 0x0, "DLH put application type", HFILL
}},
4379 {&hf_mq_dlh_putapplname
, {"PutAppNme", "mq.dlh.putapplname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "DLH put application name", HFILL
}},
4380 {&hf_mq_dlh_putdate
, {"PutDatGMT", "mq.dlh.putdate", FT_STRING
, BASE_NONE
, NULL
, 0x0, "DLH put date", HFILL
}},
4381 {&hf_mq_dlh_puttime
, {"PutTimGMT", "mq.dlh.puttime", FT_STRING
, BASE_NONE
, NULL
, 0x0, "DLH put time", HFILL
}},
4383 {&hf_mq_gmo_StructID
, {"StructID.", "mq.gmo.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4384 {&hf_mq_gmo_version
, {"Version..", "mq.gmo.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "GMO version", HFILL
}},
4385 {&hf_mq_gmo_options
, {"GetMsgOpt", "mq.gmo.getmsgopt", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO Get Message Options", HFILL
}},
4387 {&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
}},
4388 {&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
}},
4389 {&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
}},
4390 {&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
}},
4391 {&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
}},
4392 {&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
}},
4393 {&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
}},
4394 {&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
}},
4395 {&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
}},
4396 {&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
}},
4397 {&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
}},
4398 {&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
}},
4399 {&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
}},
4400 {&hf_mq_gmo_options_CONVERT
, {"CONVERT", "mq.gmo.options.CONVERT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_CONVERT
, "GMO options CONVERT", HFILL
}},
4401 {&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
}},
4402 {&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
}},
4403 {&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
}},
4404 {&hf_mq_gmo_options_UNLOCK
, {"UNLOCK", "mq.gmo.options.UNLOCK", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_UNLOCK
, "GMO options UNLOCK", HFILL
}},
4405 {&hf_mq_gmo_options_LOCK
, {"LOCK", "mq.gmo.options.LOCK", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_LOCK
, "GMO options LOCK", HFILL
}},
4406 {&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
}},
4407 {&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
}},
4408 {&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
}},
4409 {&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
}},
4410 {&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
}},
4411 {&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
}},
4412 {&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
}},
4413 {&hf_mq_gmo_options_SYNCPOINT
, {"SYNCPOINT", "mq.gmo.options.SYNCPOINT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_SYNCPOINT
, "GMO options SYNCPOINT", HFILL
}},
4414 {&hf_mq_gmo_options_WAIT
, {"WAIT", "mq.gmo.options.WAIT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_WAIT
, "GMO options WAIT", HFILL
}},
4416 {&hf_mq_gmo_waitinterval
, {"WaitIntv.", "mq.gmo.waitint", FT_INT32
, BASE_DEC
, NULL
, 0x0, "GMO wait interval", HFILL
}},
4417 {&hf_mq_gmo_signal1
, {"Signal 1.", "mq.gmo.signal1", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO signal 1", HFILL
}},
4418 {&hf_mq_gmo_signal2
, {"Signal 2.", "mq.gmo.signal2", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO signal 2", HFILL
}},
4419 {&hf_mq_gmo_resolvqname
, {"ResQName.", "mq.gmo.resolvq", FT_STRING
, BASE_NONE
, NULL
, 0x0, "GMO resolved queue name", HFILL
}},
4420 {&hf_mq_gmo_matchoptions
, {"MatchOpt.", "mq.gmo.matchopt", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO match options", HFILL
}},
4422 {&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
}},
4423 {&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
}},
4424 {&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
}},
4425 {&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
}},
4426 {&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
}},
4427 {&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
}},
4429 {&hf_mq_gmo_groupstatus
, {"GrpStatus", "mq.gmo.grpstat", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO group status", HFILL
}},
4430 {&hf_mq_gmo_segmstatus
, {"SegStatus", "mq.gmo.sgmtstat", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO segment status", HFILL
}},
4431 {&hf_mq_gmo_segmentation
, {"Segmentat", "mq.gmo.segmentation", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO segmentation", HFILL
}},
4432 {&hf_mq_gmo_reserved
, {"Reserved.", "mq.gmo.reserved", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO reserved", HFILL
}},
4433 {&hf_mq_gmo_msgtoken
, {"MsgToken.", "mq.gmo.msgtoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "GMO message token", HFILL
}},
4434 {&hf_mq_gmo_returnedlen
, {"RtnLength", "mq.gmo.retlen", FT_INT32
, BASE_DEC
, NULL
, 0x0, "GMO returned length", HFILL
}},
4435 {&hf_mq_gmo_reserved2
, {"Reserved2", "mq.gmo.reserved2", FT_INT32
, BASE_DEC
, NULL
, 0x0, "GMO reserved2", HFILL
}},
4436 {&hf_mq_gmo_msghandle
, {"MsgHandle", "mq.gmo.msghandle", FT_UINT64
, BASE_DEC
| BASE_HEX
, NULL
, 0x0, "GMO Message Handle", HFILL
}},
4438 {&hf_mq_lpoo_StructID
, {"StructID......", "mq.lpoo.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4439 {&hf_mq_lpoo_version
, {"version.......", "mq.lpoo.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "LPOO version", HFILL
}},
4440 {&hf_mq_lpoo_lpiopts
, {"lpiopts.......", "mq.lpoo.lpioopts", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "LPOO Lpi Options", HFILL
}},
4442 {&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
}},
4443 {&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
}},
4444 {&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
}},
4446 {&hf_mq_lpoo_defpersist
, {"DefPersistence", "mq.lpoo.defpersist", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(MQPER
)), 0x0, "LPOO Default Persistence", HFILL
}},
4447 {&hf_mq_lpoo_defputresptype
, {"DefPutRespType", "mq.lpoo.defputresptype", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(MQPRT
)), 0x0, "LPOO Default Put Response Type", HFILL
}},
4448 {&hf_mq_lpoo_defreadahead
, {"DefReadAHead..", "mq.lpoo.defreadahead", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(MQREADA
)), 0x0, "LPOO Default Read AHead", HFILL
}},
4449 {&hf_mq_lpoo_propertyctl
, {"PropertyCtl...", "mq.lpoo.propertyctl", FT_INT32
, BASE_DEC
, NULL
, 0x0, "LPOO Property Control", HFILL
}},
4450 {&hf_mq_lpoo_qprotect
, {"qprotect......", "mq.lpoo.qprotect", FT_STRING
, BASE_NONE
, NULL
, 0x0, "LPOO queue protection", HFILL
}},
4451 {&hf_mq_lpoo_qprotect_val1
, {"qprotect_val1.", "mq.lpoo.qprotect.val1", FT_INT32
, BASE_DEC
, NULL
, 0x0, "LPOO queue protection val1", HFILL
}},
4452 {&hf_mq_lpoo_qprotect_val2
, {"qprotect_val2.", "mq.lpoo.qprotect.val2", FT_INT32
, BASE_DEC
, NULL
, 0x0, "LPOO queue protection val2", HFILL
}},
4454 {&hf_mq_pmo_StructID
, {"StructID...", "mq.pmo.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4455 {&hf_mq_pmo_version
, {"Version....", "mq.pmo.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO version", HFILL
}},
4456 {&hf_mq_pmo_options
, {"Options....", "mq.pmo.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO options", HFILL
}},
4457 {&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
}},
4458 {&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
}},
4459 {&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
}},
4460 {&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
}},
4461 {&hf_mq_pmo_options_RETAIN
, {"RETAIN", "mq.pmo.options.RETAIN", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQPMO_RETAIN
, "PMO options RETAIN", HFILL
}},
4462 {&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
}},
4463 {&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
}},
4464 {&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
}},
4465 {&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
}},
4466 {&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
}},
4467 {&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
}},
4468 {&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
}},
4469 {&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
}},
4470 {&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
}},
4471 {&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
}},
4472 {&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
}},
4473 {&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
}},
4474 {&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
}},
4475 {&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
}},
4476 {&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
}},
4477 {&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
}},
4478 {&hf_mq_pmo_options_SYNCPOINT
, {"SYNCPOINT", "mq.pmo.options.SYNCPOINT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQPMO_SYNCPOINT
, "PMO options SYNCPOINT", HFILL
}},
4480 {&hf_mq_pmo_timeout
, {"Timeout....", "mq.pmo.timeout", FT_INT32
, BASE_DEC
, NULL
, 0x0, "PMO time out", HFILL
}},
4481 {&hf_mq_pmo_context
, {"Context....", "mq.pmo.context", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO context", HFILL
}},
4482 {&hf_mq_pmo_knowndstcnt
, {"KnDstCnt...", "mq.pmo.kdstcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO known destination count", HFILL
}},
4483 {&hf_mq_pmo_unkndstcnt
, {"UkDstCnt...", "mq.pmo.udestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO unknown destination count", HFILL
}},
4484 {&hf_mq_pmo_invaldstcnt
, {"InDstCnt...", "mq.pmo.idestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO invalid destination count", HFILL
}},
4485 {&hf_mq_pmo_resolvqname
, {"ResQName...", "mq.pmo.resolvq", FT_STRING
, BASE_NONE
, NULL
, 0x0, "PMO resolved queue name", HFILL
}},
4486 {&hf_mq_pmo_resolvqmgr
, {"ResQMgr....", "mq.pmo.resolvqmgr", FT_STRING
, BASE_NONE
, NULL
, 0x0, "PMO resolved queue manager name", HFILL
}},
4487 {&hf_mq_pmo_recspresent
, {"NumRecs....", "mq.pmo.nbrrec", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO number of records", HFILL
}},
4488 {&hf_mq_pmo_putmsgrecfld
, {"PMR Flag...", "mq.pmo.flagspmr", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO flags PMR fields", HFILL
}},
4489 {&hf_mq_pmo_putmsgrecofs
, {"Ofs1stPMR..", "mq.pmo.offsetpmr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO offset of first PMR", HFILL
}},
4490 {&hf_mq_pmo_resprecofs
, {"Off1stRR...", "mq.pmo.offsetrr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO offset of first RR", HFILL
}},
4491 {&hf_mq_pmo_putmsgrecptr
, {"Adr1stPMR..", "mq.pmo.addrrec", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO address of first record", HFILL
}},
4492 {&hf_mq_pmo_resprecptr
, {"Adr1stRR...", "mq.pmo.addrres", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO address of first response record", HFILL
}},
4493 {&hf_mq_pmo_originalmsghandle
, {"OrigMsgHdl.", "mq.pmo.originalmsghandle", FT_UINT64
, BASE_HEX
, NULL
, 0x0, "PMO original message handle", HFILL
}},
4494 {&hf_mq_pmo_newmsghandle
, {"NewMsgHdl..", "mq.pmo.newmsghandle", FT_UINT64
, BASE_HEX
, NULL
, 0x0, "PMO new message handle", HFILL
}},
4495 {&hf_mq_pmo_action
, {"Action.....", "mq.pmo.action", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO action", HFILL
}},
4496 {&hf_mq_pmo_publevel
, {"PubLevel...", "mq.pmo.publevel", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO pub level", HFILL
}},
4498 {&hf_mq_xa_length
, {"Length.......", "mq.xa.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XA Length", HFILL
}},
4499 {&hf_mq_xa_returnvalue
, {"Return value.", "mq.xa.returnvalue", FT_INT32
, BASE_DEC
, VALS(mq_xaer_vals
), 0x0, "XA Return Value", HFILL
}},
4500 {&hf_mq_xa_tmflags
, {"TransMgrFlags", "mq.xa.tmflags", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "XA Transaction Manager Flags", HFILL
}},
4501 {&hf_mq_xa_rmid
, {"ResourceMgrID", "mq.xa.rmid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XA Resource Manager ID", HFILL
}},
4502 {&hf_mq_xa_count
, {"Number of Xid", "mq.xa.nbxid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XA Number of Xid", HFILL
}},
4503 {&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
}},
4504 {&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
}},
4505 {&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
}},
4506 {&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
}},
4507 {&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
}},
4508 {&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
}},
4509 {&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
}},
4510 {&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
}},
4512 {&hf_mq_xa_xid_formatid
, {"Format ID....", "mq.xa.xid.formatid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "XA Xid Format ID", HFILL
}},
4513 {&hf_mq_xa_xid_glbxid_len
, {"GlbTransIDLen", "mq.xa.xid.gxidl", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "XA Xid Global TransactionId Length", HFILL
}},
4514 {&hf_mq_xa_xid_brq_length
, {"BranchQualLen", "mq.xa.xid.bql", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "XA Xid Branch Qualifier Length", HFILL
}},
4515 {&hf_mq_xa_xid_globalxid
, {"GlbTransactID", "mq.xa.xid.gxid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "XA Xid Global TransactionId", HFILL
}},
4516 {&hf_mq_xa_xid_brq
, {"BranchQualif.", "mq.xa.xid.bq", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "XA Xid Branch Qualifier", HFILL
}},
4517 {&hf_mq_xa_xainfo_length
, {"Length.......", "mq.xa.xainfo.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "XA XA_info Length", HFILL
}},
4518 {&hf_mq_xa_xainfo_value
, {"Value........", "mq.xa.xainfo.value", FT_STRING
, BASE_NONE
, NULL
, 0x0, "XA XA_info Value", HFILL
}},
4520 {&hf_mq_charv_vsptr
, {"VLStr Addr.", "mq.charv.vsptr", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "VS Address", HFILL
}},
4521 {&hf_mq_charv_vsoffset
, {"VLStr Offs.", "mq.charv.vsoffset", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "VS Offset", HFILL
}},
4522 {&hf_mq_charv_vsbufsize
, {"VLStr BufSz", "mq.charv.vsbufsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "VS BufSize", HFILL
}},
4523 {&hf_mq_charv_vslength
, {"VLStr Len..", "mq.charv.vslength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "VS Length", HFILL
}},
4524 {&hf_mq_charv_vsccsid
, {"VLStr Ccsid", "mq.charv.vsccsid", FT_INT32
, BASE_DEC
, NULL
, 0x0, "VS CCSID", HFILL
}},
4525 {&hf_mq_charv_vsvalue
, {"VLStr Value", "mq.charv.vsvalue", FT_STRING
, BASE_NONE
, NULL
, 0x0, "VS value", HFILL
}},
4527 {&hf_mq_head_StructID
, {"Structid", "mq.head.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Header structid", HFILL
}},
4528 {&hf_mq_head_version
, {"version.", "mq.head.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Header version", HFILL
}},
4529 {&hf_mq_head_length
, {"Length..", "mq.head.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Header length", HFILL
}},
4530 {&hf_mq_head_encoding
, {"Encoding", "mq.head.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Header encoding", HFILL
}},
4531 {&hf_mq_head_ccsid
, {"CCSID...", "mq.head.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(ccsid
)), 0x0, "Header character set", HFILL
}},
4532 {&hf_mq_head_format
, {"Format..", "mq.head.format", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Header format", HFILL
}},
4534 {&hf_mq_head_flags
, {"Flags...", "mq.head.flags", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "Header flags", HFILL
}},
4535 {&hf_mq_head_struct
, {"Struct..", "mq.head.struct", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Header struct", HFILL
}},
4537 {&hf_mq_dh_flags_newmsgid
, {"NEW_MSG_IDS", "mq.dh.flags.newmsgid", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQIIH_CM0_REQUEST_RESPONSE
, "MQ DH Flags MQDHF_NEW_MSG_IDS", HFILL
}},
4539 {&hf_mq_dh_putmsgrecfld
, {"Flags PMR", "mq.dh.flagspmr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH flags PMR", HFILL
}},
4540 {&hf_mq_dh_recspresent
, {"NumOfRecs", "mq.dh.nbrrec", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH number of records", HFILL
}},
4541 {&hf_mq_dh_objrecofs
, {"Ofs1stOR.", "mq.dh.offsetor", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH offset of first OR", HFILL
}},
4542 {&hf_mq_dh_putmsgrecofs
, {"Ofs1stPMR", "mq.dh.offsetpmr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH offset of first PMR", HFILL
}},
4544 {&hf_mq_iih_flags_cmqrqstresp
, {"CMO_RQST_RESP", "mq.iih.flags.cmqrqstresp", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQIIH_CM0_REQUEST_RESPONSE
, "MQ IIH Flags CM0_REQUEST_RESPONSE", HFILL
}},
4545 {&hf_mq_iih_flags_ignorepurg
, {"IGNORE_PURG..", "mq.iih.flags.ignorepurg", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQIIH_IGNORE_PURG
, "MQ IIH Flags IGNORE_PURG", HFILL
}},
4546 {&hf_mq_iih_flags_replyfmtnone
, {"REPL_FMT_NONE", "mq.iih.flags.replyfmtnone", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQIIH_REPLY_FORMAT_NONE
, "MQ IIH Flags REPLY_FORMAT_NONE", HFILL
}},
4547 {&hf_mq_iih_flags_passexpir
, {"PASS_EXPIR...", "mq.iih.flags.passexpir", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQIIH_PASS_EXPIRATION
, "MQ IIH Flags PASS_EXPIRATION", HFILL
}},
4549 {&hf_mq_iih_ltermoverride
, {"LTerm Override", "mq.iih.ltermoverrid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Logical Terminal Override", HFILL
}},
4550 {&hf_mq_iih_mfsmapname
, {"MFS Map Name..", "mq.iih.mfsmapname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MFS Map Name", HFILL
}},
4551 {&hf_mq_iih_replytofmt
, {"ReplyToFormat.", "mq.iih.replytofmt", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reply To Format", HFILL
}},
4552 {&hf_mq_iih_authenticator
, {"Authenticator.", "mq.iih.authenticator", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Password or Passcode", HFILL
}},
4553 {&hf_mq_iih_transinstid
, {"TransInstIdent", "mq.iih.transinstid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Transaction Instance Identifier", HFILL
}},
4554 {&hf_mq_iih_transstate
, {"TransactState.", "mq.iih.transstate", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Transaction State", HFILL
}},
4555 {&hf_mq_iih_commimode
, {"Commit Mode...", "mq.iih.commimode", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Commit Mode", HFILL
}},
4556 {&hf_mq_iih_securityscope
, {"SecurityScope.", "mq.iih.securityscope", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Security Scope", HFILL
}},
4557 {&hf_mq_iih_reserved
, {"Reserved......", "mq.iih.reserved", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reserved", HFILL
}},
4559 {&hf_mq_cih_flags_synconret
, {"SYNC_ON_RETURN", "mq.iih.flags.synconret", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQCIH_SYNC_ON_RETURN
, "MQ CIH Flags IGNORE_PURG", HFILL
}},
4560 {&hf_mq_cih_flags_replywonulls
, {"REPLY_WO_NULLS", "mq.iih.flags.replywonulls", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQCIH_REPLY_WITHOUT_NULLS
, "MQ CIH Flags REPLY_WITHOUT_NULLS", HFILL
}},
4561 {&hf_mq_cih_flags_passexpir
, {"PASS_EXPIR....", "mq.iih.flags.passexpir", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQCIH_PASS_EXPIRATION
, "MQ CIH Flags PASS_EXPIRATION", HFILL
}},
4563 {&hf_mq_ims_ll
, {"ll..", "mq.ims.ll", FT_UINT16
, BASE_DEC
, NULL
, 0x0, "IMS ll", HFILL
}},
4564 {&hf_mq_ims_zz
, {"zz..", "mq.ims.zz", FT_UINT16
, BASE_DEC
, NULL
, 0x0, "IMS zz", HFILL
}},
4565 {&hf_mq_ims_trx
, {"trx.", "mq.ims.trx", FT_STRING
, BASE_NONE
, NULL
, 0x0, "IMS Transaction", HFILL
}},
4566 {&hf_mq_ims_data
, {"data", "mq.ims.data", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Transaction Instance Identifier", HFILL
}},
4568 {&hf_mq_tm_StructID
, {"Structid", "mq.tm.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TM structid", HFILL
}},
4569 {&hf_mq_tm_version
, {"version.", "mq.tm.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TM version", HFILL
}},
4570 {&hf_mq_tm_QName
, {"QName...", "mq.tm.qname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TM Queue Name", HFILL
}},
4571 {&hf_mq_tm_ProcessNme
, {"ProcName", "mq.tm.procname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TM Process Name", HFILL
}},
4572 {&hf_mq_tm_TriggerData
, {"TrigData", "mq.tm.triggerdata", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TM Trigger Data", HFILL
}},
4573 {&hf_mq_tm_ApplType
, {"ApplType", "mq.tm.appltype", FT_UINT32
, BASE_DEC
| BASE_EXT_STRING
, GET_VALS_EXTP(MQAT
), 0x0, "TM Application Type", HFILL
}},
4574 {&hf_mq_tm_ApplId
, {"ApplId..", "mq.tm.applid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TM Application ID", HFILL
}},
4575 {&hf_mq_tm_EnvData
, {"EnvData.", "mq.tm.envdaqta", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TM Environment Data", HFILL
}},
4576 {&hf_mq_tm_UserData
, {"UserData.", "mq.t2.userdata", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TM User Data", HFILL
}},
4578 {&hf_mq_tmc2_StructID
, {"Structid", "mq.tmc2.structid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 structid", HFILL
}},
4579 {&hf_mq_tmc2_version
, {"version.", "mq.tmc2.version", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 version", HFILL
}},
4580 {&hf_mq_tmc2_QName
, {"QName...", "mq.tmc2.qname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 Queue Name", HFILL
}},
4581 {&hf_mq_tmc2_ProcessNme
, {"ProcName", "mq.tmc2.procname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 Process Name", HFILL
}},
4582 {&hf_mq_tmc2_TriggerData
, {"TrigData", "mq.tmc2.triggerdata", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 Trigger Data", HFILL
}},
4583 {&hf_mq_tmc2_ApplType
, {"ApplType", "mq.tmc2.appltype", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 Application Type", HFILL
}},
4584 {&hf_mq_tmc2_ApplId
, {"ApplId..", "mq.tmc2.applid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 Application ID", HFILL
}},
4585 {&hf_mq_tmc2_EnvData
, {"EnvData.", "mq.tmc2.envdaqta", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 Environment Data", HFILL
}},
4586 {&hf_mq_tmc2_UserData
, {"UserData", "mq.tmc2.userdata", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 User Data", HFILL
}},
4587 {&hf_mq_tmc2_QMgrName
, {"QMgrName", "mq.tmc2.qmgrname", FT_STRING
, BASE_NONE
, NULL
, 0x0, "TMC2 Queue Manager Name", HFILL
}},
4589 {&hf_mq_cih_returncode
, {"ReturnCode...", "mq.cih.returncode", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Return Code", HFILL
}},
4590 {&hf_mq_cih_compcode
, {"ComplCode....", "mq.cih.compcode", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Completion Code", HFILL
}},
4591 {&hf_mq_cih_reasoncode
, {"ReasonCode...", "mq.cih.reasoncode", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Reason Code", HFILL
}},
4592 {&hf_mq_cih_uowcontrols
, {"UOWControls..", "mq.cih.uowcontrols", FT_UINT32
, BASE_HEX_DEC
, VALS(GET_VALSV(UOWControls
)), 0x0, "Unit Of Work Controls", HFILL
}},
4593 {&hf_mq_cih_getwaitintv
, {"GetWaitIntv..", "mq.cih.getwaitintv", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(WaitIntv
)), 0x0, "Get Wait Interval", HFILL
}},
4594 {&hf_mq_cih_linktype
, {"LinkType.....", "mq.cih.linktype", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(LinkType
)), 0x0, "LinkType", HFILL
}},
4595 {&hf_mq_cih_outdatalen
, {"OutDataLen...", "mq.cih.outdatalen", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(OutDataLen
)), 0x0, "Output Data Len", HFILL
}},
4596 {&hf_mq_cih_facilkeeptime
, {"FacilKeepTime", "mq.cih.facilkeeptime", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Facility Keep Time", HFILL
}},
4597 {&hf_mq_cih_adsdescriptor
, {"ADSDescriptor", "mq.cih.adsdescr", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(ADSDescr
)), 0x0, "ADS Descriptor", HFILL
}},
4598 {&hf_mq_cih_converstask
, {"ConversTask..", "mq.cih.converstask", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(ConvTaskOpt
)), 0x0, "Conversational Task", HFILL
}},
4599 {&hf_mq_cih_taskendstatus
, {"TaskEndStatus", "mq.cih.taskendstatus", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(TaskEndStatus
)), 0x0, "Status at End of Task", HFILL
}},
4600 {&hf_mq_cih_bridgefactokn
, {"BridgeFacTokn", "mq.cih.bridgefactokn", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Bridge facility token", HFILL
}},
4601 {&hf_mq_cih_function
, {"Function.....", "mq.cih.function", FT_STRING
, BASE_NONE
, NULL
, 0x0, "MQ call name or CICS EIBFN function", HFILL
}},
4602 {&hf_mq_cih_abendcode
, {"AbendCode....", "mq.cih.abendcode", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Abend Code", HFILL
}},
4603 {&hf_mq_cih_authenticator
, {"Authenticator", "mq.cih.authenticator", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Password or Passcode", HFILL
}},
4604 {&hf_mq_cih_reserved
, {"Reserved.....", "mq.cih.reserved", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reserved", HFILL
}},
4605 {&hf_mq_cih_replytofmt
, {"ReplyToFormat", "mq.cih.replytofmt", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reply To Format", HFILL
}},
4606 {&hf_mq_cih_remotesysid
, {"RemoteSysId..", "mq.cih.remotesysid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Remote System Id", HFILL
}},
4607 {&hf_mq_cih_remotetransid
, {"RemoteTransId", "mq.cih.remotetransid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Remote Transaction Id", HFILL
}},
4608 {&hf_mq_cih_transactionid
, {"TransactionId", "mq.cih.transactionid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Transaction to attach", HFILL
}},
4609 {&hf_mq_cih_facilitylike
, {"FacilityLike.", "mq.cih.facilitylike", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Terminal emulated attributes", HFILL
}},
4610 {&hf_mq_cih_attentionid
, {"AttentionID..", "mq.cih.attentionid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Attention Id (AID) Key", HFILL
}},
4611 {&hf_mq_cih_startcode
, {"StartCode....", "mq.cih.startcode", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Transaction Start Code", HFILL
}},
4612 {&hf_mq_cih_cancelcode
, {"CancelCode...", "mq.cih.cancelcode", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Abend transaction code", HFILL
}},
4613 {&hf_mq_cih_nexttransid
, {"NextTransId..", "mq.cih.nexttransid", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Next transaction to attach", HFILL
}},
4614 {&hf_mq_cih_reserved2
, {"Reserved2....", "mq.cih.reserved2", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reserved 2", HFILL
}},
4615 {&hf_mq_cih_reserved3
, {"Reserved3....", "mq.cih.reserved3", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reserved 3", HFILL
}},
4616 {&hf_mq_cih_cursorpos
, {"CursorPos....", "mq.cih.cursorpos", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "Cursor Position", HFILL
}},
4617 {&hf_mq_cih_erroroffset
, {"ErrorOffset..", "mq.cih.erroroffset", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "Offset of error in message", HFILL
}},
4618 {&hf_mq_cih_inputitem
, {"InputItem....", "mq.cih.inputitem", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "Input Item", HFILL
}},
4619 {&hf_mq_cih_reserved4
, {"Reserved4....", "mq.cih.reserved4", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reserved 4", HFILL
}},
4621 {&hf_mq_rfh_ccsid
, {"NmeValCCSID", "mq.rfh.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(GET_VALRV(ccsid
)), 0x0, "RFH NameValue CCSID", HFILL
}},
4622 {&hf_mq_rfh_length
, {"Len.", "mq.rfh.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "RFH NameValue Length", HFILL
}},
4623 {&hf_mq_rfh_string
, {"Val.", "mq.rfh.string", FT_STRING
, BASE_NONE
, NULL
, 0x0, "RFH NameValue", HFILL
}},
4625 {&hf_mq_rmh_flags_last
, {"LAST", "mq.rmh.flags.last", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQRMHF_LAST
, "MQ RMH LAST", HFILL
}},
4627 {&hf_mq_rmh_objecttype
, {"ObjectType...", "mq.rmh.objecttype", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Object Type", HFILL
}},
4628 {&hf_mq_rmh_objectinstid
, {"ObjectInstId.", "mq.rmh.objectinstid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Object Instance Identifier", HFILL
}},
4629 {&hf_mq_rmh_srcenvlen
, {"SrcEnvLen....", "mq.rmh.srcenvlen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Length of source environment data", HFILL
}},
4630 {&hf_mq_rmh_srcenvofs
, {"SrcEnvOfs....", "mq.rmh.srcenvofs", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "Offset of source environment data", HFILL
}},
4631 {&hf_mq_rmh_srcnamelen
, {"SrcNameLen...", "mq.rmh.srcnamelen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Length of source object name", HFILL
}},
4632 {&hf_mq_rmh_srcnameofs
, {"SrcNameOfs...", "mq.rmh.srcnameofs", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "Offset of source object name", HFILL
}},
4633 {&hf_mq_rmh_dstenvlen
, {"DstEnvLen....", "mq.rmh.dstenvlen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Length of destination environment data", HFILL
}},
4634 {&hf_mq_rmh_dstenvofs
, {"DstEnvOfs....", "mq.rmh.dstenvofs", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "Offset of destination environment data", HFILL
}},
4635 {&hf_mq_rmh_dstnamelen
, {"DstNameLen...", "mq.rmh.dstnamelen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Length of destination object name", HFILL
}},
4636 {&hf_mq_rmh_dstnameofs
, {"DstNameOfs...", "mq.rmh.dstnameofs", FT_UINT32
, BASE_DEC
| BASE_HEX
, NULL
, 0x0, "Offset of destination object name", HFILL
}},
4637 {&hf_mq_rmh_datalogiclen
, {"DataLogicLen.", "mq.rmh.datalogiclen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Length of bulk data", HFILL
}},
4638 {&hf_mq_rmh_datalogicofsl
, {"DataLogicOfsL", "mq.rmh.datalogicofsl", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "Low offset of bulk data", HFILL
}},
4639 {&hf_mq_rmh_datalogicofsh
, {"DataLogicOfsH", "mq.rmh.datalogicofsh", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "High offset of bulk data", HFILL
}},
4641 {&hf_mq_wih_servicename
, {"ServiceName..", "mq.wih.servicename", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Service Name", HFILL
}},
4642 {&hf_mq_wih_servicestep
, {"ServiceStep..", "mq.wih.servicestep", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Service Step Name", HFILL
}},
4643 {&hf_mq_wih_msgtoken
, {"MsgToken.....", "mq.wih.msgtoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Message Token", HFILL
}},
4644 {&hf_mq_wih_reserved
, {"Reserved.....", "mq.wih.reserved", FT_STRING
, BASE_NONE
, NULL
, 0x0, "Reserved", HFILL
}},
4674 &ett_mq_spi_options
,
4677 &ett_mq_open_option
,
4678 &ett_mq_close_option
,
4685 &ett_mq_od_resobjstr
,
4694 &ett_mq_gmo_matchoption
,
4695 &ett_mq_msgreq_RqstFlags
,
4702 &ett_mq_lpoo_lpiopts
,
4711 &ett_mq_rfh_ValueName
,
4716 module_t
* mq_module
;
4717 expert_module_t
* expert_mq
;
4719 static ei_register_info ei
[] = {
4720 {&ei_mq_reassembly_error
, {"mq.reassembly_error",
4721 PI_REASSEMBLE
, PI_ERROR
, "Reassembly error", EXPFILL
}}
4724 proto_mq
= proto_register_protocol("WebSphere MQ", "MQ", "mq");
4725 proto_register_field_array(proto_mq
, hf
, array_length(hf
));
4726 proto_register_subtree_array(ett
, array_length(ett
));
4728 expert_mq
= expert_register_protocol(proto_mq
);
4729 expert_register_field_array(expert_mq
, ei
, array_length(ei
));
4731 mq_heur_subdissector_list
= register_heur_dissector_list_with_description("mq", "WebSphere MQ data", proto_mq
);
4733 reassembly_table_register(&mq_reassembly_table
,
4734 &addresses_reassembly_table_functions
);
4736 mq_module
= prefs_register_protocol(proto_mq
, NULL
);
4737 mq_handle
= register_dissector("mq", dissect_mq_tcp
, proto_mq
);
4738 mq_spx_handle
= register_dissector("mq.spx", dissect_mq_spx
, proto_mq
);
4741 prefs_register_bool_preference(mq_module
, "desegment",
4742 "Reassemble MQ messages spanning multiple TCP segments",
4743 "Whether the MQ dissector should reassemble messages spanning multiple TCP segments."
4744 " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
4746 prefs_register_bool_preference(mq_module
, "reassembly",
4747 "Reassemble segmented MQ messages",
4748 "Whether the MQ dissector should reassemble MQ messages spanning multiple TSH segments",
4752 void proto_reg_handoff_mq(void)
4754 /* Unlike some protocol (HTTP, POP3, ...) that clearly map to a standard
4755 * class of applications (web browser, e-mail client, ...) and have a very well
4756 * known port number, the MQ applications are most often specific to a business application */
4758 dissector_add_for_decode_as_with_preference("tcp.port", mq_handle
);
4759 ssl_dissector_add(0, mq_handle
);
4760 heur_dissector_add("tcp", dissect_mq_heur_tcp
, "WebSphere MQ over TCP", "mq_tcp", proto_mq
, HEURISTIC_ENABLE
);
4761 heur_dissector_add("netbios", dissect_mq_heur_nontcp
, "WebSphere MQ over Netbios", "mq_netbios", proto_mq
, HEURISTIC_ENABLE
);
4762 heur_dissector_add("http", dissect_mq_heur_nontcp
, "WebSphere MQ over HTTP", "mq_http", proto_mq
, HEURISTIC_ENABLE
);
4763 heur_dissector_add("tls", dissect_mq_heur_ssl
, "WebSphere MQ over TLS", "mq_tls", proto_mq
, HEURISTIC_ENABLE
);
4764 dissector_add_uint("spx.socket", MQ_SOCKET_SPX
, mq_spx_handle
);
4765 mqpcf_handle
= find_dissector("mqpcf");
4769 * Editor modelines - https://www.wireshark.org/tools/modelines.html
4774 * indent-tabs-mode: nil
4777 * vi: set shiftwidth=4 tabstop=8 expandtab:
4778 * :indentSize=4:tabSize=8:noTabs=true: