2 * Routines for IBM WebSphere MQ packet dissection
4 * metatech <metatechbe@gmail.com>
5 * robionekenobi <robionekenobi@bluewin.ch>
9 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
28 /* WebSphere MQ in a nutshell
30 * IBM WebSphere MQ (formerly IBM MQSeries) is an asynchronous proprietary messaging middleware that is
31 * based on message queues.
32 * MQ can run on more than 35 platforms, amongst which UNIX, Windows and mainframes.
33 * MQ can be transported on top of TCP, UDP, HTTP, NetBIOS, SPX, SNA LU 6.2, DECnet.
34 * MQ has language bindings for C, C++, Java, .NET, COBOL, PL/I, OS/390 assembler, TAL, Visual Basic.
36 * The basic MQ topology is on one side the queue manager which hosts the queues. On the other side the
37 * applications connect to the queue manager, open a queue, and put or get messages to/from that queue.
39 * The MQ middleware allows very generic operations (send, receive) and can be compared to the
40 * socket API in terms of genericity, but it is more abstract and offers higher-level functionalities
41 * (eg transactions, ...)
43 * The MQ middleware is not really intended to be run over public networks between parties
44 * that do not know each other in advance, but is rather used on private corporate networks
45 * between business applications (it can be compared to a database server for that aspect).
47 * The wire format of an MQ segment is a sequence of structures.
48 * Most structures start with a 4-letter struct identifier.
49 * MQ is a fixed-sized format, most fields have maximum lengths defined in the MQ API.
50 * MQ is popular on mainframes because it was available before TCP/IP.
51 * MQ supports both ASCII-based and EBCDIC-based character sets.
53 * MQ API documentation is called "WebSphere MQ Application Programming Reference"
55 * Possible structures combinations :
56 * TSH [ ID ^ UID ^ CONN ^ INQ ^ OD ]
57 * TSH MSH XQH MD [ PAYLOAD ]
58 * TSH [OD] MD [ GMO ^ PMO ] [ [XQH MD] PAYLOAD ]
59 * TSH [ SPQU ^ SPPU ^ SPGU ^ SPAU [ SPQI ^ SPQO ^ SPPI ^ SPPO ^ SPGI ^ SPGO ^ SPAI ^ SPAO]]
60 * TSH [ XA ] [ XINFO | XID ]
61 * where PAYLOAD = [ DH ] [ DLH ] [ MDE ] BUFF
63 * This dissector is a beta version. To be improved
64 * - Translate the integers/flags into their descriptions
65 * - Find the semantics of the unknown fields
66 * - Display EBCDIC strings as ASCII
67 * - Packets which structures built on different platforms
74 #include <epan/packet.h>
75 #include <epan/exceptions.h>
76 #include <epan/conversation.h>
77 #include <epan/reassemble.h>
79 #include <epan/dissectors/packet-windows-common.h>
80 #include <epan/dissectors/packet-dcerpc.h>
81 #include <epan/expert.h>
82 #include <epan/dissector_filters.h>
83 #include <epan/show_exception.h>
85 #include <epan/prefs.h>
86 #include <epan/wmem/wmem.h>
87 #include <epan/strutil.h>
89 #include "packet-tcp.h"
90 #include "packet-mq.h"
92 static int proto_mq
= -1;
93 static int hf_mq_tsh_StructID
= -1;
94 static int hf_mq_tsh_mqseglen
= -1;
95 static int hf_mq_tsh_convid
= -1;
96 static int hf_mq_tsh_requestid
= -1;
97 static int hf_mq_tsh_byteorder
= -1;
98 static int hf_mq_tsh_opcode
= -1;
99 static int hf_mq_tsh_ctlflgs1
= -1;
101 static int hf_mq_tsh_ctlflgs2
= -1;
102 static int hf_mq_tsh_luwid
= -1;
103 static int hf_mq_tsh_encoding
= -1;
105 static int hf_mq_tsh_ccsid
= -1;
106 static int hf_mq_tsh_reserved
= -1;
108 /* Transmission Segment Control Flags 1 */
109 static int hf_mq_tsh_tcf_confirmreq
= -1;
110 static int hf_mq_tsh_tcf_error
= -1;
111 static int hf_mq_tsh_tcf_reqclose
= -1;
112 static int hf_mq_tsh_tcf_closechann
= -1;
113 static int hf_mq_tsh_tcf_first
= -1;
114 static int hf_mq_tsh_tcf_last
= -1;
115 static int hf_mq_tsh_tcf_reqacc
= -1;
116 static int hf_mq_tsh_tcf_dlq
= -1;
117 static const int *pf_flds_tcf
[] =
120 &hf_mq_tsh_tcf_reqacc
,
121 &hf_mq_tsh_tcf_last
,
122 &hf_mq_tsh_tcf_first
,
123 &hf_mq_tsh_tcf_closechann
,
124 &hf_mq_tsh_tcf_reqclose
,
125 &hf_mq_tsh_tcf_error
,
126 &hf_mq_tsh_tcf_confirmreq
,
130 /* Transmission Segment Control Flags 2 */
131 static int hf_mq_tsh_tcf2_HdrComp
= -1;
132 static int hf_mq_tsh_tcf2_MsgComp
= -1;
133 static int hf_mq_tsh_tcf2_CSH
= -1;
134 static int hf_mq_tsh_tcf2_CmitIntv
= -1;
135 static const int *pf_flds_tcf2
[] =
137 &hf_mq_tsh_tcf2_CmitIntv
,
138 &hf_mq_tsh_tcf2_CSH
,
139 &hf_mq_tsh_tcf2_MsgComp
,
140 &hf_mq_tsh_tcf2_HdrComp
,
144 static int hf_mq_api_replylen
= -1;
145 static int hf_mq_api_compcode
= -1;
146 static int hf_mq_api_reascode
= -1;
147 static int hf_mq_api_objecthdl
= -1;
148 static int hf_mq_socket_conversid
= -1;
149 static int hf_mq_socket_requestid
= -1;
150 static int hf_mq_socket_type
= -1;
151 static int hf_mq_socket_parm1
= -1;
152 static int hf_mq_socket_parm2
= -1;
153 static int hf_mq_msh_StructID
= -1;
154 static int hf_mq_msh_seqnum
= -1;
155 static int hf_mq_msh_datalength
= -1;
156 static int hf_mq_msh_unknown1
= -1;
157 static int hf_mq_msh_msglength
= -1;
158 static int hf_mq_xqh_StructID
= -1;
159 static int hf_mq_xqh_version
= -1;
160 static int hf_mq_xqh_remoteq
= -1;
161 static int hf_mq_xqh_remoteqmgr
= -1;
163 static int hf_mq_id_StructID
= -1;
164 static int hf_mq_id_FapLevel
= -1;
165 static int hf_mq_id_icf1
= -1;
166 static int hf_mq_id_Eicf1
= -1;
167 static int hf_mq_id_ief1
= -1;
168 static int hf_mq_id_Reserved
= -1;
169 static int hf_mq_id_MaxMsgBatch
= -1;
170 static int hf_mq_id_MaxTrSize
= -1;
171 static int hf_mq_id_MaxMsgSize
= -1;
172 static int hf_mq_id_SeqWrapVal
= -1;
173 static int hf_mq_id_channel
= -1;
174 static int hf_mq_id_icf2
= -1;
175 static int hf_mq_id_Eicf2
= -1;
176 static int hf_mq_id_ccsid
= -1;
177 static int hf_mq_id_qmgrname
= -1;
178 static int hf_mq_id_HBInterval
= -1;
179 static int hf_mq_id_EFLLength
= -1;
180 static int hf_mq_id_ief2
= -1;
181 static int hf_mq_id_Reserved1
= -1;
182 static int hf_mq_id_HdrCprsLst
= -1;
183 static int hf_mq_id_MsgCprsLst
= -1;
184 static int hf_mq_id_Reserved2
= -1;
185 static int hf_mq_id_SSLKeyRst
= -1;
186 static int hf_mq_id_ConvBySkt
= -1;
187 static int hf_mq_id_icf3
= -1;
188 static int hf_mq_id_Eicf3
= -1;
189 static int hf_mq_id_Reserved3
= -1;
190 static int hf_mq_id_ProcessId
= -1;
191 static int hf_mq_id_ThreadId
= -1;
192 static int hf_mq_id_TraceId
= -1;
193 static int hf_mq_id_ProdId
= -1;
194 static int hf_mq_id_mqmid
= -1;
196 /* Initial Data Capability Flag 1 */
197 static int hf_mq_id_icf1_msgseq
= -1;
198 static int hf_mq_id_icf1_convcap
= -1;
199 static int hf_mq_id_icf1_splitmsg
= -1;
200 static int hf_mq_id_icf1_RqstInit
= -1;
201 static int hf_mq_id_icf1_RqstSecu
= -1;
202 static int hf_mq_id_icf1_mqreq
= -1;
203 static int hf_mq_id_icf1_svrsec
= -1;
204 static int hf_mq_id_icf1_runtime
= -1;
205 static const int *pf_flds_icf1
[] =
207 &hf_mq_id_icf1_runtime
,
208 &hf_mq_id_icf1_svrsec
,
209 &hf_mq_id_icf1_mqreq
,
210 &hf_mq_id_icf1_RqstSecu
,
211 &hf_mq_id_icf1_RqstInit
,
212 &hf_mq_id_icf1_splitmsg
,
213 &hf_mq_id_icf1_convcap
,
214 &hf_mq_id_icf1_msgseq
,
218 /* Initial Data Error Flag 1 */
219 static int hf_mq_id_ief1_ccsid
= -1;
220 static int hf_mq_id_ief1_enc
= -1;
221 static int hf_mq_id_ief1_mxtrsz
= -1;
222 static int hf_mq_id_ief1_fap
= -1;
223 static int hf_mq_id_ief1_mxmsgsz
= -1;
224 static int hf_mq_id_ief1_mxmsgpb
= -1;
225 static int hf_mq_id_ief1_seqwrap
= -1;
226 static int hf_mq_id_ief1_hbint
= -1;
227 static const int *pf_flds_ief1
[] =
229 &hf_mq_id_ief1_hbint
,
230 &hf_mq_id_ief1_seqwrap
,
231 &hf_mq_id_ief1_mxmsgpb
,
232 &hf_mq_id_ief1_mxmsgsz
,
234 &hf_mq_id_ief1_mxtrsz
,
236 &hf_mq_id_ief1_ccsid
,
240 /* Initial Data Capability Flag 2 */
241 static int hf_mq_id_icf2_CanDstLst
= -1;
242 static int hf_mq_id_icf2_FstMsgReq
= -1;
243 static int hf_mq_id_icf2_RespConv
= -1;
244 static int hf_mq_id_icf2_XARequest
= -1;
245 static int hf_mq_id_icf2_XARunTApp
= -1;
246 static int hf_mq_id_icf2_SPIRqst
= -1;
247 static int hf_mq_id_icf2_DualUOW
= -1;
248 static int hf_mq_id_icf2_CanTrcRte
= -1;
249 static const int *pf_flds_icf2
[] =
251 &hf_mq_id_icf2_CanTrcRte
,
252 &hf_mq_id_icf2_SPIRqst
,
253 &hf_mq_id_icf2_XARunTApp
,
254 &hf_mq_id_icf2_XARequest
,
255 &hf_mq_id_icf2_DualUOW
,
256 &hf_mq_id_icf2_RespConv
,
257 &hf_mq_id_icf2_FstMsgReq
,
258 &hf_mq_id_icf2_CanDstLst
,
262 /* Initial Data Error Flag 2 */
263 static int hf_mq_id_ief2_HdrCmpLst
= -1;
264 static int hf_mq_id_ief2_MsgCmpLst
= -1;
265 static int hf_mq_id_ief2_SSLReset
= -1;
266 static const int *pf_flds_ief2
[] =
268 &hf_mq_id_ief2_HdrCmpLst
,
269 &hf_mq_id_ief2_MsgCmpLst
,
270 &hf_mq_id_ief2_SSLReset
,
274 /* Initial Data Capability Flag 3 */
275 static int hf_mq_id_icf3_CanMsgPrp
= -1;
276 static int hf_mq_id_icf3_Unknown02
= -1;
277 static const int *pf_flds_icf3
[] =
279 &hf_mq_id_icf3_Unknown02
,
280 &hf_mq_id_icf3_CanMsgPrp
,
284 static int hf_mq_uid_StructID
= -1;
285 static int hf_mq_uid_userid
= -1;
286 static int hf_mq_uid_password
= -1;
287 static int hf_mq_uid_longuserid
= -1;
288 static int hf_mq_sidlen
= -1;
289 static int hf_mq_sidtyp
= -1;
290 static int hf_mq_securityid
= -1;
292 static int hf_mq_conn_QMgr
= -1;
293 static int hf_mq_conn_appname
= -1;
294 static int hf_mq_conn_apptype
= -1;
295 static int hf_mq_conn_acttoken
= -1;
296 static int hf_mq_conn_version
= -1;
297 static int hf_mq_conn_options
= -1;
298 static int hf_mq_fcno_StructID
= -1;
299 static int hf_mq_fcno_msgid
= -1;
300 static int hf_mq_fcno_mqmid
= -1;
301 static int hf_mq_fcno_unknown00
= -1;
302 static int hf_mq_fcno_unknown01
= -1;
303 static int hf_mq_fcno_unknown02
= -1;
305 static int hf_mq_inq_nbsel
= -1;
306 static int hf_mq_inq_nbint
= -1;
307 static int hf_mq_inq_charlen
= -1;
308 static int hf_mq_inq_sel
= -1;
309 static int hf_mq_inq_intvalue
= -1;
310 static int hf_mq_inq_charvalues
= -1;
312 static int hf_mq_spi_verb
= -1;
313 static int hf_mq_spi_version
= -1;
314 static int hf_mq_spi_length
= -1;
315 static int hf_mq_spi_base_StructID
= -1;
316 static int hf_mq_spi_base_version
= -1;
317 static int hf_mq_spi_base_length
= -1;
318 static int hf_mq_spi_spqo_nbverb
= -1;
319 static int hf_mq_spi_spqo_verbid
= -1;
320 static int hf_mq_spi_spqo_maxiover
= -1;
321 static int hf_mq_spi_spqo_maxinver
= -1;
322 static int hf_mq_spi_spqo_maxouver
= -1;
323 static int hf_mq_spi_spqo_flags
= -1;
324 static int hf_mq_spi_spai_mode
= -1;
325 static int hf_mq_spi_spai_unknown1
= -1;
326 static int hf_mq_spi_spai_unknown2
= -1;
327 static int hf_mq_spi_spai_msgid
= -1;
328 static int hf_mq_spi_spgi_batchsz
= -1;
329 static int hf_mq_spi_spgi_batchint
= -1;
330 static int hf_mq_spi_spgi_maxmsgsz
= -1;
331 static int hf_mq_spi_spgo_options
= -1;
332 static int hf_mq_spi_spgo_size
= -1;
334 static int hf_mq_spi_opt_blank
= -1;
335 static int hf_mq_spi_opt_syncp
= -1;
336 static int hf_mq_spi_opt_deferred
= -1;
337 static const int *pf_flds_spiopt
[] =
339 &hf_mq_spi_opt_deferred
,
340 &hf_mq_spi_opt_syncp
,
341 &hf_mq_spi_opt_blank
,
345 static int hf_mq_put_length
= -1;
347 static int hf_mq_close_options
= -1;
348 static int hf_mq_close_options_DELETE
= -1;
349 static int hf_mq_close_options_DELETE_PURGE
= -1;
350 static int hf_mq_close_options_KEEP_SUB
= -1;
351 static int hf_mq_close_options_REMOVE_SUB
= -1;
352 static int hf_mq_close_options_QUIESCE
= -1;
353 static const int *pf_flds_clsopt
[] =
355 &hf_mq_close_options_QUIESCE
,
356 &hf_mq_close_options_REMOVE_SUB
,
357 &hf_mq_close_options_KEEP_SUB
,
358 &hf_mq_close_options_DELETE_PURGE
,
359 &hf_mq_close_options_DELETE
,
363 static int hf_mq_open_options
= -1;
364 static int hf_mq_open_options_INPUT_SHARED
= -1;
365 static int hf_mq_open_options_INPUT_AS_Q_DEF
= -1;
366 static int hf_mq_open_options_INPUT_EXCLUSIVE
= -1;
367 static int hf_mq_open_options_BROWSE
= -1;
368 static int hf_mq_open_options_OUTPUT
= -1;
369 static int hf_mq_open_options_INQUIRE
= -1;
370 static int hf_mq_open_options_SET
= -1;
371 static int hf_mq_open_options_SAVE_ALL_CTX
= -1;
372 static int hf_mq_open_options_PASS_IDENT_CTX
= -1;
373 static int hf_mq_open_options_PASS_ALL_CTX
= -1;
374 static int hf_mq_open_options_SET_IDENT_CTX
= -1;
375 static int hf_mq_open_options_SET_ALL_CONTEXT
= -1;
376 static int hf_mq_open_options_ALT_USER_AUTH
= -1;
377 static int hf_mq_open_options_FAIL_IF_QUIESC
= -1;
378 static int hf_mq_open_options_BIND_ON_OPEN
= -1;
379 static int hf_mq_open_options_BIND_NOT_FIXED
= -1;
380 static int hf_mq_open_options_RESOLVE_NAMES
= -1;
381 static int hf_mq_open_options_CO_OP
= -1;
382 static int hf_mq_open_options_RESOLVE_LOCAL_Q
= -1;
383 static int hf_mq_open_options_NO_READ_AHEAD
= -1;
384 static int hf_mq_open_options_READ_AHEAD
= -1;
385 static int hf_mq_open_options_NO_MULTICAST
= -1;
386 static int hf_mq_open_options_BIND_ON_GROUP
= -1;
387 static const int *pf_flds_opnopt
[] =
389 &hf_mq_open_options_BIND_ON_GROUP
,
390 &hf_mq_open_options_NO_MULTICAST
,
391 &hf_mq_open_options_READ_AHEAD
,
392 &hf_mq_open_options_NO_READ_AHEAD
,
393 &hf_mq_open_options_RESOLVE_LOCAL_Q
,
394 &hf_mq_open_options_CO_OP
,
395 &hf_mq_open_options_RESOLVE_NAMES
,
396 &hf_mq_open_options_BIND_NOT_FIXED
,
397 &hf_mq_open_options_BIND_ON_OPEN
,
398 &hf_mq_open_options_FAIL_IF_QUIESC
,
399 &hf_mq_open_options_ALT_USER_AUTH
,
400 &hf_mq_open_options_SET_ALL_CONTEXT
,
401 &hf_mq_open_options_SET_IDENT_CTX
,
402 &hf_mq_open_options_PASS_ALL_CTX
,
403 &hf_mq_open_options_PASS_IDENT_CTX
,
404 &hf_mq_open_options_SAVE_ALL_CTX
,
405 &hf_mq_open_options_SET
,
406 &hf_mq_open_options_INQUIRE
,
407 &hf_mq_open_options_OUTPUT
,
408 &hf_mq_open_options_BROWSE
,
409 &hf_mq_open_options_INPUT_EXCLUSIVE
,
410 &hf_mq_open_options_INPUT_SHARED
,
411 &hf_mq_open_options_INPUT_AS_Q_DEF
,
415 static int hf_mq_fopa_StructID
= -1;
416 static int hf_mq_fopa_version
= -1;
417 static int hf_mq_fopa_length
= -1;
418 static int hf_mq_fopa_unknown1
= -1;
419 static int hf_mq_fopa_unknown2
= -1;
420 static int hf_mq_fopa_unknown3
= -1;
421 static int hf_mq_fopa_qprotect
= -1;
422 static int hf_mq_fopa_unknown4
= -1;
423 static int hf_mq_fopa_unknown5
= -1;
425 static int hf_mq_ping_length
= -1;
426 static int hf_mq_ping_buffer
= -1;
427 static int hf_mq_reset_length
= -1;
428 static int hf_mq_reset_seqnum
= -1;
429 static int hf_mq_status_length
= -1;
430 static int hf_mq_status_code
= -1;
431 static int hf_mq_status_value
= -1;
433 static int hf_mq_caut_StructID
= -1;
434 static int hf_mq_caut_AuthType
= -1;
435 static int hf_mq_caut_UsrMaxLen
= -1;
436 static int hf_mq_caut_PwdMaxLen
= -1;
437 static int hf_mq_caut_UsrLength
= -1;
438 static int hf_mq_caut_PwdLength
= -1;
439 static int hf_mq_caut_usr
= -1;
440 static int hf_mq_caut_psw
= -1;
442 static int hf_mq_od_StructID
= -1;
443 static int hf_mq_od_version
= -1;
444 static int hf_mq_od_objecttype
= -1;
445 static int hf_mq_od_objectname
= -1;
446 static int hf_mq_od_objqmgrname
= -1;
447 static int hf_mq_od_dynqname
= -1;
448 static int hf_mq_od_altuserid
= -1;
449 static int hf_mq_od_recspresent
= -1;
450 static int hf_mq_od_knowndstcnt
= -1;
451 static int hf_mq_od_unknowdstcnt
= -1;
452 static int hf_mq_od_invaldstcnt
= -1;
453 static int hf_mq_od_objrecofs
= -1;
454 static int hf_mq_od_resprecofs
= -1;
455 static int hf_mq_od_objrecptr
= -1;
456 static int hf_mq_od_resprecptr
= -1;
457 static int hf_mq_od_altsecurid
= -1;
458 static int hf_mq_od_resolvqname
= -1;
459 static int hf_mq_od_resolvqmgrnm
= -1;
460 static int hf_mq_od_resolvobjtyp
= -1;
462 static int hf_mq_or_objname
= -1;
463 static int hf_mq_or_objqmgrname
= -1;
464 static int hf_mq_rr_compcode
= -1;
465 static int hf_mq_rr_reascode
= -1;
466 static int hf_mq_pmr_msgid
= -1;
467 static int hf_mq_pmr_correlid
= -1;
468 static int hf_mq_pmr_groupid
= -1;
469 static int hf_mq_pmr_feedback
= -1;
470 static int hf_mq_pmr_acttoken
= -1;
471 static int hf_mq_md_StructID
= -1;
472 static int hf_mq_md_version
= -1;
473 static int hf_mq_md_report
= -1;
474 static int hf_mq_md_msgtype
= -1;
475 static int hf_mq_md_expiry
= -1;
476 static int hf_mq_md_feedback
= -1;
477 static int hf_mq_md_encoding
= -1;
478 static int hf_mq_md_ccsid
= -1;
479 static int hf_mq_md_format
= -1;
480 static int hf_mq_md_priority
= -1;
481 static int hf_mq_md_persistence
= -1;
482 static int hf_mq_md_msgid
= -1;
483 static int hf_mq_md_correlid
= -1;
484 static int hf_mq_md_backoutcnt
= -1;
485 static int hf_mq_md_replytoq
= -1;
486 static int hf_mq_md_replytoqmgr
= -1;
487 static int hf_mq_md_userid
= -1;
488 static int hf_mq_md_acttoken
= -1;
489 static int hf_mq_md_appliddata
= -1;
490 static int hf_mq_md_putappltype
= -1;
491 static int hf_mq_md_putapplname
= -1;
492 static int hf_mq_md_putdate
= -1;
493 static int hf_mq_md_puttime
= -1;
494 static int hf_mq_md_apporigdata
= -1;
495 static int hf_mq_md_groupid
= -1;
496 static int hf_mq_md_msgseqnumber
= -1;
497 static int hf_mq_md_offset
= -1;
498 static int hf_mq_md_msgflags
= -1;
499 static int hf_mq_md_origlen
= -1;
500 static int hf_mq_dlh_StructID
= -1;
501 static int hf_mq_dlh_version
= -1;
502 static int hf_mq_dlh_reason
= -1;
503 static int hf_mq_dlh_destq
= -1;
504 static int hf_mq_dlh_destqmgr
= -1;
505 static int hf_mq_dlh_encoding
= -1;
506 static int hf_mq_dlh_ccsid
= -1;
507 static int hf_mq_dlh_format
= -1;
508 static int hf_mq_dlh_putappltype
= -1;
509 static int hf_mq_dlh_putapplname
= -1;
510 static int hf_mq_dlh_putdate
= -1;
511 static int hf_mq_dlh_puttime
= -1;
512 static int hf_mq_dh_putmsgrecfld
= -1;
513 static int hf_mq_dh_recspresent
= -1;
514 static int hf_mq_dh_objrecofs
= -1;
515 static int hf_mq_dh_putmsgrecofs
= -1;
516 static int hf_mq_gmo_StructID
= -1;
517 static int hf_mq_gmo_version
= -1;
518 static int hf_mq_gmo_options
= -1;
519 static int hf_mq_gmo_waitinterval
= -1;
520 static int hf_mq_gmo_signal1
= -1;
521 static int hf_mq_gmo_signal2
= -1;
522 static int hf_mq_gmo_resolvqname
= -1;
523 static int hf_mq_gmo_matchoptions
= -1;
524 static int hf_mq_gmo_groupstatus
= -1;
525 static int hf_mq_gmo_segmstatus
= -1;
526 static int hf_mq_gmo_segmentation
= -1;
527 static int hf_mq_gmo_reserved
= -1;
528 static int hf_mq_gmo_msgtoken
= -1;
529 static int hf_mq_gmo_returnedlen
= -1;
531 static int hf_mq_gmo_options_PROPERTIES_COMPATIBILITY
= -1;
532 static int hf_mq_gmo_options_PROPERTIES_IN_HANDLE
= -1;
533 static int hf_mq_gmo_options_NO_PROPERTIES
= -1;
534 static int hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2
= -1;
535 static int hf_mq_gmo_options_UNMARKED_BROWSE_MSG
= -1;
536 static int hf_mq_gmo_options_UNMARK_BROWSE_HANDLE
= -1;
537 static int hf_mq_gmo_options_UNMARK_BROWSE_CO_OP
= -1;
538 static int hf_mq_gmo_options_MARK_BROWSE_CO_OP
= -1;
539 static int hf_mq_gmo_options_MARK_BROWSE_HANDLE
= -1;
540 static int hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE
= -1;
541 static int hf_mq_gmo_options_ALL_MSGS_AVAILABLE
= -1;
542 static int hf_mq_gmo_options_COMPLETE_MSG
= -1;
543 static int hf_mq_gmo_options_LOGICAL_ORDER
= -1;
544 static int hf_mq_gmo_options_CONVERT
= -1;
545 static int hf_mq_gmo_options_FAIL_IF_QUIESCING
= -1;
546 static int hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT
= -1;
547 static int hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR
= -1;
548 static int hf_mq_gmo_options_UNLOCK
= -1;
549 static int hf_mq_gmo_options_LOCK
= -1;
550 static int hf_mq_gmo_options_MSG_UNDER_CURSOR
= -1;
551 static int hf_mq_gmo_options_MARK_SKIP_BACKOUT
= -1;
552 static int hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG
= -1;
553 static int hf_mq_gmo_options_BROWSE_NEXT
= -1;
554 static int hf_mq_gmo_options_BROWSE_FIRST
= -1;
555 static int hf_mq_gmo_options_SET_SIGNAL
= -1;
556 static int hf_mq_gmo_options_NO_SYNCPOINT
= -1;
557 static int hf_mq_gmo_options_SYNCPOINT
= -1;
558 static int hf_mq_gmo_options_WAIT
= -1;
559 static const int *pf_flds_gmoopt
[] =
561 &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY
,
562 &hf_mq_gmo_options_PROPERTIES_IN_HANDLE
,
563 &hf_mq_gmo_options_NO_PROPERTIES
,
564 &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2
,
565 &hf_mq_gmo_options_UNMARKED_BROWSE_MSG
,
566 &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE
,
567 &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP
,
568 &hf_mq_gmo_options_MARK_BROWSE_CO_OP
,
569 &hf_mq_gmo_options_MARK_BROWSE_HANDLE
,
570 &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE
,
571 &hf_mq_gmo_options_ALL_MSGS_AVAILABLE
,
572 &hf_mq_gmo_options_COMPLETE_MSG
,
573 &hf_mq_gmo_options_LOGICAL_ORDER
,
574 &hf_mq_gmo_options_CONVERT
,
575 &hf_mq_gmo_options_FAIL_IF_QUIESCING
,
576 &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT
,
577 &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR
,
578 &hf_mq_gmo_options_UNLOCK
,
579 &hf_mq_gmo_options_LOCK
,
580 &hf_mq_gmo_options_MSG_UNDER_CURSOR
,
581 &hf_mq_gmo_options_MARK_SKIP_BACKOUT
,
582 &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG
,
583 &hf_mq_gmo_options_BROWSE_NEXT
,
584 &hf_mq_gmo_options_BROWSE_FIRST
,
585 &hf_mq_gmo_options_SET_SIGNAL
,
586 &hf_mq_gmo_options_NO_SYNCPOINT
,
587 &hf_mq_gmo_options_SYNCPOINT
,
588 &hf_mq_gmo_options_WAIT
,
592 static int hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN
= -1;
593 static int hf_mq_gmo_matchoptions_MATCH_OFFSET
= -1;
594 static int hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER
= -1;
595 static int hf_mq_gmo_matchoptions_MATCH_GROUP_ID
= -1;
596 static int hf_mq_gmo_matchoptions_MATCH_CORREL_ID
= -1;
597 static int hf_mq_gmo_matchoptions_MATCH_MSG_ID
= -1;
598 static const int *pf_flds_mtchopt
[] =
600 &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN
,
601 &hf_mq_gmo_matchoptions_MATCH_OFFSET
,
602 &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER
,
603 &hf_mq_gmo_matchoptions_MATCH_GROUP_ID
,
604 &hf_mq_gmo_matchoptions_MATCH_CORREL_ID
,
605 &hf_mq_gmo_matchoptions_MATCH_MSG_ID
,
609 static int hf_mq_lpoo_StructID
= -1;
610 static int hf_mq_lpoo_version
= -1;
611 static int hf_mq_lpoo_options
= -1;
612 static int hf_mq_lpoo_lpiopts
= -1;
613 static int hf_mq_lpoo_defpersist
= -1;
614 static int hf_mq_lpoo_defputresptype
= -1;
615 static int hf_mq_lpoo_defreadahead
= -1;
616 static int hf_mq_lpoo_qprotect
= -1;
617 static int hf_mq_lpoo_unknown6
= -1;
618 /*static int hf_mq_lpoo_unknown7 = -1;*/
619 static int hf_mq_lpoo_xtradata
= -1;
621 static int hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT
= -1;
622 static int hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT
= -1 ;
623 static int hf_mq_lpoo_lpiopts_SAVE_USER_CTXT
= -1;
624 static const int *pf_flds_lpooopt
[] =
626 &hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT
,
627 &hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT
,
628 &hf_mq_lpoo_lpiopts_SAVE_USER_CTXT
,
633 static int hf_mq_charv_vsptr
= -1;
634 static int hf_mq_charv_vsoffset
= -1;
635 static int hf_mq_charv_vsbufsize
= -1;
636 static int hf_mq_charv_vslength
= -1;
637 static int hf_mq_charv_vsccsid
= -1;
638 static int hf_mq_charv_vsvalue
= -1;
640 static int hf_mq_pmo_StructID
= -1;
641 static int hf_mq_pmo_version
= -1;
642 static int hf_mq_pmo_options
= -1;
643 static int hf_mq_pmo_timeout
= -1;
644 static int hf_mq_pmo_context
= -1;
645 static int hf_mq_pmo_knowndstcnt
= -1;
646 static int hf_mq_pmo_unkndstcnt
= -1;
647 static int hf_mq_pmo_invaldstcnt
= -1;
648 static int hf_mq_pmo_resolvqname
= -1;
649 static int hf_mq_pmo_resolvqmgr
= -1;
650 static int hf_mq_pmo_recspresent
= -1;
651 static int hf_mq_pmo_putmsgrecfld
= -1;
652 static int hf_mq_pmo_putmsgrecofs
= -1;
653 static int hf_mq_pmo_resprecofs
= -1;
654 static int hf_mq_pmo_putmsgrecptr
= -1;
655 static int hf_mq_pmo_resprecptr
= -1;
656 static int hf_mq_head_StructID
= -1;
657 static int hf_mq_head_version
= -1;
658 static int hf_mq_head_length
= -1;
659 static int hf_mq_head_encoding
= -1;
660 static int hf_mq_head_ccsid
= -1;
661 static int hf_mq_head_format
= -1;
662 static int hf_mq_head_flags
= -1;
663 static int hf_mq_head_struct
= -1;
664 static int hf_mq_xa_length
= -1;
665 static int hf_mq_xa_returnvalue
= -1;
666 static int hf_mq_xa_tmflags
= -1;
667 static int hf_mq_xa_rmid
= -1;
668 static int hf_mq_xa_count
= -1;
669 static int hf_mq_xa_xid_formatid
= -1;
670 static int hf_mq_xa_xid_glbxid_len
= -1;
671 static int hf_mq_xa_xid_brq_length
= -1;
672 static int hf_mq_xa_xid_globalxid
= -1;
673 static int hf_mq_xa_xid_brq
= -1;
674 static int hf_mq_xa_xainfo_length
= -1;
675 static int hf_mq_xa_xainfo_value
= -1;
677 static int hf_mq_pmo_options_NOT_OWN_SUBS
= -1;
678 static int hf_mq_pmo_options_SUPPRESS_REPLYTO
= -1;
679 static int hf_mq_pmo_options_SCOPE_QMGR
= -1;
680 static int hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY
= -1;
681 static int hf_mq_pmo_options_RETAIN
= -1;
682 static int hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED
= -1;
683 static int hf_mq_pmo_options_RESOLVE_LOCAL_Q
= -1;
684 static int hf_mq_pmo_options_SYNC_RESPONSE
= -1;
685 static int hf_mq_pmo_options_ASYNC_RESPONSE
= -1;
686 static int hf_mq_pmo_options_LOGICAL_ORDER
= -1;
687 static int hf_mq_pmo_options_NO_CONTEXT
= -1;
688 static int hf_mq_pmo_options_FAIL_IF_QUIESCING
= -1;
689 static int hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY
= -1;
690 static int hf_mq_pmo_options_SET_ALL_CONTEXT
= -1;
691 static int hf_mq_pmo_options_SET_IDENTITY_CONTEXT
= -1;
692 static int hf_mq_pmo_options_PASS_ALL_CONTEXT
= -1;
693 static int hf_mq_pmo_options_PASS_IDENTITY_CONTEXT
= -1;
694 static int hf_mq_pmo_options_NEW_CORREL_ID
= -1;
695 static int hf_mq_pmo_options_NEW_MSG_ID
= -1;
696 static int hf_mq_pmo_options_DEFAULT_CONTEXT
= -1;
697 static int hf_mq_pmo_options_NO_SYNCPOINT
= -1;
698 static int hf_mq_pmo_options_SYNCPOINT
= -1;
699 static const int *pf_flds_pmoopt
[] =
701 &hf_mq_pmo_options_NOT_OWN_SUBS
,
702 &hf_mq_pmo_options_SUPPRESS_REPLYTO
,
703 &hf_mq_pmo_options_SCOPE_QMGR
,
704 &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY
,
705 &hf_mq_pmo_options_RETAIN
,
706 &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED
,
707 &hf_mq_pmo_options_RESOLVE_LOCAL_Q
,
708 &hf_mq_pmo_options_SYNC_RESPONSE
,
709 &hf_mq_pmo_options_ASYNC_RESPONSE
,
710 &hf_mq_pmo_options_LOGICAL_ORDER
,
711 &hf_mq_pmo_options_NO_CONTEXT
,
712 &hf_mq_pmo_options_FAIL_IF_QUIESCING
,
713 &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY
,
714 &hf_mq_pmo_options_SET_ALL_CONTEXT
,
715 &hf_mq_pmo_options_SET_IDENTITY_CONTEXT
,
716 &hf_mq_pmo_options_PASS_ALL_CONTEXT
,
717 &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT
,
718 &hf_mq_pmo_options_NEW_CORREL_ID
,
719 &hf_mq_pmo_options_NEW_MSG_ID
,
720 &hf_mq_pmo_options_DEFAULT_CONTEXT
,
721 &hf_mq_pmo_options_NO_SYNCPOINT
,
722 &hf_mq_pmo_options_SYNCPOINT
,
726 static int hf_mq_xa_tmflags_join
= -1;
727 static int hf_mq_xa_tmflags_endrscan
= -1;
728 static int hf_mq_xa_tmflags_startrscan
= -1;
729 static int hf_mq_xa_tmflags_suspend
= -1;
730 static int hf_mq_xa_tmflags_success
= -1;
731 static int hf_mq_xa_tmflags_resume
= -1;
732 static int hf_mq_xa_tmflags_fail
= -1;
733 static int hf_mq_xa_tmflags_onephase
= -1;
734 static const int *pf_flds_tmflags
[] =
736 &hf_mq_xa_tmflags_onephase
,
737 &hf_mq_xa_tmflags_fail
,
738 &hf_mq_xa_tmflags_resume
,
739 &hf_mq_xa_tmflags_success
,
740 &hf_mq_xa_tmflags_suspend
,
741 &hf_mq_xa_tmflags_startrscan
,
742 &hf_mq_xa_tmflags_endrscan
,
743 &hf_mq_xa_tmflags_join
,
747 static int hf_mq_msgreq_version
= -1;
748 static int hf_mq_msgreq_handle
= -1;
749 static int hf_mq_msgreq_RecvBytes
= -1;
750 static int hf_mq_msgreq_RqstBytes
= -1;
751 static int hf_mq_msgreq_MaxMsgLen
= -1;
752 static int hf_mq_msgreq_WaitIntrv
= -1;
753 static int hf_mq_msgreq_QueStatus
= -1;
754 static int hf_mq_msgreq_RqstFlags
= -1;
755 static int hf_mq_msgreq_GlbMsgIdx
= -1;
756 static int hf_mq_msgreq_SelectIdx
= -1;
757 static int hf_mq_msgreq_MQMDVers
= -1;
758 static int hf_mq_msgreq_ccsid
= -1;
759 static int hf_mq_msgreq_encoding
= -1;
760 static int hf_mq_msgreq_MsgSeqNum
= -1;
761 static int hf_mq_msgreq_offset
= -1;
762 static int hf_mq_msgreq_mtchMsgId
= -1;
763 static int hf_mq_msgreq_mtchCorId
= -1;
764 static int hf_mq_msgreq_mtchGrpid
= -1;
765 static int hf_mq_msgreq_mtchMsgTk
= -1;
767 static int hf_mq_msgasy_version
= -1;
768 static int hf_mq_msgasy_handle
= -1;
769 static int hf_mq_msgasy_MsgIndex
= -1;
770 static int hf_mq_msgasy_GlbMsgIdx
= -1;
771 static int hf_mq_msgasy_SegLength
= -1;
772 static int hf_mq_msgasy_SeleIndex
= -1;
773 static int hf_mq_msgasy_SegmIndex
= -1;
774 static int hf_mq_msgasy_ReasonCod
= -1;
775 static int hf_mq_msgasy_ActMsgLen
= -1;
776 static int hf_mq_msgasy_TotMsgLen
= -1;
777 static int hf_mq_msgasy_MsgToken
= -1;
778 static int hf_mq_msgasy_Status
= -1;
779 static int hf_mq_msgasy_resolQNLn
= -1;
780 static int hf_mq_msgasy_resolQNme
= -1;
781 static int hf_mq_msgasy_padding
= -1;
783 static int hf_mq_notif_vers
= -1;
784 static int hf_mq_notif_handle
= -1;
785 static int hf_mq_notif_code
= -1;
786 static int hf_mq_notif_value
= -1;
788 static gint ett_mq
= -1;
789 static gint ett_mq_tsh
= -1;
790 static gint ett_mq_tsh_tcf
= -1;
791 static gint ett_mq_tsh_tcf2
= -1;
792 static gint ett_mq_api
= -1;
793 static gint ett_mq_socket
= -1;
794 static gint ett_mq_caut
= -1;
795 static gint ett_mq_msh
= -1;
796 static gint ett_mq_xqh
= -1;
797 static gint ett_mq_id
= -1;
798 static gint ett_mq_id_icf1
= -1;
799 static gint ett_mq_id_icf2
= -1;
800 static gint ett_mq_id_icf3
= -1;
801 static gint ett_mq_id_ief1
= -1;
802 static gint ett_mq_id_ief2
= -1;
803 static gint ett_mq_uid
= -1;
804 static gint ett_mq_conn
= -1;
805 static gint ett_mq_fcno
= -1;
806 static gint ett_mq_msg
= -1;
807 static gint ett_mq_inq
= -1;
808 static gint ett_mq_spi
= -1;
809 static gint ett_mq_spi_base
= -1; /* Factorisation of common SPI items */
810 static gint ett_mq_spi_options
= -1;
811 static gint ett_mq_put
= -1;
812 static gint ett_mq_open
= -1;
813 static gint ett_mq_open_option
= -1;
814 static gint ett_mq_close_option
= -1;
815 static gint ett_mq_fopa
= -1;
816 static gint ett_mq_ping
= -1;
817 static gint ett_mq_reset
= -1;
818 static gint ett_mq_status
= -1;
819 static gint ett_mq_od
= -1;
820 static gint ett_mq_od_objstr
= -1;
821 static gint ett_mq_od_selstr
= -1;
822 static gint ett_mq_od_resobjstr
= -1;
823 static gint ett_mq_or
= -1;
824 static gint ett_mq_rr
= -1;
825 static gint ett_mq_pmr
= -1;
826 static gint ett_mq_md
= -1;
827 static gint ett_mq_mde
= -1;
828 static gint ett_mq_dlh
= -1;
829 static gint ett_mq_dh
= -1;
830 static gint ett_mq_gmo
= -1;
831 static gint ett_mq_gmo_option
= -1;
832 static gint ett_mq_gmo_matchoption
= -1;
833 static gint ett_mq_pmo
= -1;
834 static gint ett_mq_pmo_option
= -1;
836 static gint ett_mq_lpoo
= -1;
837 static gint ett_mq_lpoo_options
= -1;
838 static gint ett_mq_lpoo_lpiopts
= -1;
840 static gint ett_mq_head
= -1; /* Factorisation of common Header structure items (DH, MDE, CIH, IIH, RFH, RMH, WIH */
841 static gint ett_mq_xa
= -1;
842 static gint ett_mq_xa_tmflags
= -1;
843 static gint ett_mq_xa_xid
= -1;
844 static gint ett_mq_xa_info
= -1;
845 static gint ett_mq_charv
= -1;
846 static gint ett_mq_reaasemb
= -1;
847 static gint ett_mq_notif
= -1;
849 static dissector_handle_t mq_tcp_handle
;
850 static dissector_handle_t mq_spx_handle
;
851 static dissector_handle_t data_handle
;
852 static dissector_handle_t mqpcf_handle
;
854 static heur_dissector_list_t mq_heur_subdissector_list
;
856 static gboolean mq_desegment
= TRUE
;
857 static gboolean mq_reassembly
= TRUE
;
859 static gboolean mq_in_reassembly
= FALSE
;
861 static reassembly_table mq_reassembly_table
;
863 #define MQ_PORT_TCP 1414
864 #define MQ_SOCKET_SPX 0x5E86
866 #define MQ_XPT_TCP 0x02
867 #define MQ_XPT_NETBIOS 0x03
868 #define MQ_XPT_SPX 0x04
869 #define MQ_XPT_HTTP 0x07
871 #define MQ_STRUCTID_NULL 0x00000000
873 #define MQ_STRUCTID_CIH 0x43494820
874 #define MQ_STRUCTID_DH 0x44482020
875 #define MQ_STRUCTID_DLH 0x444C4820
876 #define MQ_STRUCTID_GMO 0x474D4F20
877 #define MQ_STRUCTID_ID 0x49442020
878 #define MQ_STRUCTID_IIH 0x49494820
879 #define MQ_STRUCTID_MD 0x4D442020
880 #define MQ_STRUCTID_MDE 0x4D444520
881 #define MQ_STRUCTID_MSH 0x4D534820
882 #define MQ_STRUCTID_OD 0x4F442020
883 #define MQ_STRUCTID_PMO 0x504D4F20
884 #define MQ_STRUCTID_RFH 0x52464820
885 #define MQ_STRUCTID_RMH 0x524D4820
886 #define MQ_STRUCTID_TM 0x544D2020
887 #define MQ_STRUCTID_TMC2 0x544D4332
888 #define MQ_STRUCTID_CAUT 0x43415554
890 #define MQ_STRUCTID_TSH 0x54534820
891 #define MQ_STRUCTID_TSHC 0x54534843
892 #define MQ_STRUCTID_TSHM 0x5453484D
894 #define MQ_MASK_TSHx 0xffffff00
895 #define MQ_STRUCTID_TSHx 0x54534800 /* TSHx */
897 #define MQ_STRUCTID_SPxx 0x53500000 /* SPxx */
898 #define MQ_STRUCTID_UID 0x55494420
899 #define MQ_STRUCTID_WIH 0x57494820
900 #define MQ_STRUCTID_XQH 0x58514820
901 #define MQ_STRUCTID_FOPA 0x464F5041
903 #define MQ_STRUCTID_CIH_EBCDIC 0xC3C9C840
904 #define MQ_STRUCTID_DH_EBCDIC 0xC4C84040
905 #define MQ_STRUCTID_DLH_EBCDIC 0xC4D3C840
906 #define MQ_STRUCTID_GMO_EBCDIC 0xC7D4D640
907 #define MQ_STRUCTID_ID_EBCDIC 0xC9C44040
908 #define MQ_STRUCTID_IIH_EBCDIC 0xC9C9C840
909 #define MQ_STRUCTID_MD_EBCDIC 0xD4C44040
910 #define MQ_STRUCTID_MDE_EBCDIC 0xD4C4C540
911 #define MQ_STRUCTID_MSH_EBCDIC 0xD4E2C840
912 #define MQ_STRUCTID_OD_EBCDIC 0xD6C44040
913 #define MQ_STRUCTID_PMO_EBCDIC 0xD7D4D640
914 #define MQ_STRUCTID_RFH_EBCDIC 0xD9C6C840
915 #define MQ_STRUCTID_RMH_EBCDIC 0xD9D4C840
916 #define MQ_STRUCTID_TM_EBCDIC 0xE3D44040
917 #define MQ_STRUCTID_TMC2_EBCDIC 0xE3D4C3F2
918 #define MQ_STRUCTID_CAUT_EBCDIC 0xC3C1E4E3
920 #define MQ_STRUCTID_TSH_EBCDIC 0xE3E2C840
921 #define MQ_STRUCTID_TSHC_EBCDIC 0xE3E2C8C3
922 #define MQ_STRUCTID_TSHM_EBCDIC 0xE3E2C8D4
923 #define MQ_STRUCTID_TSHx_EBCDIC 0xE3E2C800
925 #define MQ_STRUCTID_UID_EBCDIC 0xE4C9C440
926 #define MQ_STRUCTID_WIH_EBCDIC 0xE6C9C840
927 #define MQ_STRUCTID_XQH_EBCDIC 0xE7D8C840
928 #define MQ_STRUCTID_FOPA_EBCDIC 0xD64FD7C1
930 #define MQ_MASK_SPxx 0xffff0000
931 #define MQ_MASK_SPxZ 0xffff00ff
933 #define MQ_STRUCTID_SPxx 0x53500000 /* SPxx */
934 #define MQ_STRUCTID_SPxU 0x53500055 /* SPxU */
935 #define MQ_STRUCTID_SPxI 0x53500049 /* SPxI */
936 #define MQ_STRUCTID_SPxO 0x5350004F /* SPxO */
938 #define MQ_STRUCTID_SPQU 0x53505155 /* SPI Query InOut */
939 #define MQ_STRUCTID_SPQI 0x53505149 /* SPI Query In */
940 #define MQ_STRUCTID_SPQO 0x5350514F /* SPI Query Out */
941 #define MQ_STRUCTID_SPPU 0x53505055 /* SPI Put InOut */
942 #define MQ_STRUCTID_SPPI 0x53505049 /* SPI Put In */
943 #define MQ_STRUCTID_SPPO 0x5350504F /* SPI Put Out */
944 #define MQ_STRUCTID_SPGU 0x53504755 /* SPI Get InOut */
945 #define MQ_STRUCTID_SPGI 0x53504749 /* SPI Get In */
946 #define MQ_STRUCTID_SPGO 0x5350474F /* SPI Get Out */
947 #define MQ_STRUCTID_SPAU 0x53504155 /* SPI Activate InOut */
948 #define MQ_STRUCTID_SPAI 0x53504149 /* SPI Activate In */
949 #define MQ_STRUCTID_SPAO 0x5350414F /* SPI Activate Out */
950 #define MQ_STRUCTID_SPOU 0x53504F55 /* SPI InOut */
951 #define MQ_STRUCTID_SPOI 0x53504F49 /* SPI In */
952 #define MQ_STRUCTID_SPOO 0x53504F4F /* SPI Out */
953 #define MQ_STRUCTID_LPOO 0x4C504F4F /* LPOO */
954 #define MQ_STRUCTID_FCNO 0x46434E4F /* FCNO */
956 #define MQ_STRUCTID_SPxx_EBCDIC 0xE2D70000 /* SPxx */
957 #define MQ_STRUCTID_SPxU_EBCDIC 0xE2D700E4 /* SPxU */
958 #define MQ_STRUCTID_SPxI_EBCDIC 0xE2D700C9 /* SPxI */
959 #define MQ_STRUCTID_SPxO_EBCDIC 0xE2D700D6 /* SPxO */
961 #define MQ_STRUCTID_SPQU_EBCDIC 0xE2D7D8E4 /* SPI Query InOut */
962 #define MQ_STRUCTID_SPQI_EBCDIC 0xE2D7D8C9 /* SPI Query In */
963 #define MQ_STRUCTID_SPQO_EBCDIC 0xE2D7D8D6 /* SPI Query Out */
964 #define MQ_STRUCTID_SPPU_EBCDIC 0xE2D7D7E4 /* SPI Put InOut */
965 #define MQ_STRUCTID_SPPI_EBCDIC 0xE2D7D7C9 /* SPI Put In */
966 #define MQ_STRUCTID_SPPO_EBCDIC 0xE2D7D7D6 /* SPI Put Out */
967 #define MQ_STRUCTID_SPGU_EBCDIC 0xE2D7C7E4 /* SPI Get InOut */
968 #define MQ_STRUCTID_SPGI_EBCDIC 0xE2D7C7C9 /* SPI Get In */
969 #define MQ_STRUCTID_SPGO_EBCDIC 0xE2D7C7D6 /* SPI Get Out */
970 #define MQ_STRUCTID_SPAU_EBCDIC 0xE2D7C1E4 /* SPI Activate InOut */
971 #define MQ_STRUCTID_SPAI_EBCDIC 0xE2D7C1C9 /* SPI Activate In */
972 #define MQ_STRUCTID_SPAO_EBCDIC 0xE2D7C1D6 /* SPI Activate Out */
973 #define MQ_STRUCTID_SPOU_EBCDIC 0xE2D7D6E4 /* SPI InOut */
974 #define MQ_STRUCTID_SPOI_EBCDIC 0xE2D7D6C9 /* SPI In */
975 #define MQ_STRUCTID_SPOO_EBCDIC 0xE2D7D6D6 /* SPI Out */
976 #define MQ_STRUCTID_LPOO_EBCDIC 0xD3D7D6D6 /* LPOO */
977 #define MQ_STRUCTID_FCNO_EBCDIC 0xC6C3D5D6 /* FCNO */
979 #define MQ_TST_INITIAL 0x01
980 #define MQ_TST_RESYNC 0x02
981 #define MQ_TST_RESET 0x03
982 #define MQ_TST_MESSAGE 0x04
983 #define MQ_TST_STATUS 0x05
984 #define MQ_TST_SECURITY 0x06
985 #define MQ_TST_PING 0x07
986 #define MQ_TST_USERID 0x08
987 #define MQ_TST_HEARTBEAT 0x09
988 #define MQ_TST_CONAUTH_INFO 0x0A
989 #define MQ_TST_RENEGOTIATE_DATA 0x0B
990 #define MQ_TST_SOCKET_ACTION 0x0C
991 #define MQ_TST_ASYNC_MESSAGE 0x0D
992 #define MQ_TST_REQUEST_MSGS 0x0E
993 #define MQ_TST_NOTIFICATION 0x0F
994 #define MQ_TST_MQCONN 0x81
995 #define MQ_TST_MQDISC 0x82
996 #define MQ_TST_MQOPEN 0x83
997 #define MQ_TST_MQCLOSE 0x84
998 #define MQ_TST_MQGET 0x85
999 #define MQ_TST_MQPUT 0x86
1000 #define MQ_TST_MQPUT1 0x87
1001 #define MQ_TST_MQSET 0x88
1002 #define MQ_TST_MQINQ 0x89
1003 #define MQ_TST_MQCMIT 0x8A
1004 #define MQ_TST_MQBACK 0x8B
1005 #define MQ_TST_SPI 0x8C
1006 #define MQ_TST_MQSTAT 0x8D
1007 #define MQ_TST_MQSUB 0x8E
1008 #define MQ_TST_MQSUBRQ 0x8F
1009 #define MQ_TST_MQCONN_REPLY 0x91
1010 #define MQ_TST_MQDISC_REPLY 0x92
1011 #define MQ_TST_MQOPEN_REPLY 0x93
1012 #define MQ_TST_MQCLOSE_REPLY 0x94
1013 #define MQ_TST_MQGET_REPLY 0x95
1014 #define MQ_TST_MQPUT_REPLY 0x96
1015 #define MQ_TST_MQPUT1_REPLY 0x97
1016 #define MQ_TST_MQSET_REPLY 0x98
1017 #define MQ_TST_MQINQ_REPLY 0x99
1018 #define MQ_TST_MQCMIT_REPLY 0x9A
1019 #define MQ_TST_MQBACK_REPLY 0x9B
1020 #define MQ_TST_SPI_REPLY 0x9C
1021 #define MQ_TST_MQSTAT_REPLY 0x9D
1022 #define MQ_TST_MQSUB_REPLY 0x9E
1023 #define MQ_TST_MQSUBRQ_REPLY 0x9F
1024 #define MQ_TST_XA_START 0xA1
1025 #define MQ_TST_XA_END 0xA2
1026 #define MQ_TST_XA_OPEN 0xA3
1027 #define MQ_TST_XA_CLOSE 0xA4
1028 #define MQ_TST_XA_PREPARE 0xA5
1029 #define MQ_TST_XA_COMMIT 0xA6
1030 #define MQ_TST_XA_ROLLBACK 0xA7
1031 #define MQ_TST_XA_FORGET 0xA8
1032 #define MQ_TST_XA_RECOVER 0xA9
1033 #define MQ_TST_XA_COMPLETE 0xAA
1034 #define MQ_TST_XA_START_REPLY 0xB1
1035 #define MQ_TST_XA_END_REPLY 0xB2
1036 #define MQ_TST_XA_OPEN_REPLY 0xB3
1037 #define MQ_TST_XA_CLOSE_REPLY 0xB4
1038 #define MQ_TST_XA_PREPARE_REPLY 0xB5
1039 #define MQ_TST_XA_COMMIT_REPLY 0xB6
1040 #define MQ_TST_XA_ROLLBACK_REPLY 0xB7
1041 #define MQ_TST_XA_FORGET_REPLY 0xB8
1042 #define MQ_TST_XA_RECOVER_REPLY 0xB9
1043 #define MQ_TST_XA_COMPLETE_REPLY 0xBA
1045 #define MQ_SPI_QUERY 0x01
1046 #define MQ_SPI_PUT 0x02
1047 #define MQ_SPI_GET 0x03
1048 #define MQ_SPI_ACTIVATE 0x04
1049 #define MQ_SPI_OPEN 0x0C
1051 #define MQ_SPI_ACTIVATE_ENABLE 0x01
1052 #define MQ_SPI_ACTIVATE_DISABLE 0x02
1054 #define MQ_SPI_OPTIONS_BLANK_PADDED 0x01
1055 #define MQ_SPI_OPTIONS_SYNCPOINT 0x02
1056 #define MQ_SPI_OPTIONS_DEFERRED 0x04
1058 #define MQ_TCF_CONFIRM_REQUEST 0x01
1059 #define MQ_TCF_ERROR 0x02
1060 #define MQ_TCF_REQUEST_CLOSE 0x04
1061 #define MQ_TCF_CLOSE_CHANNEL 0x08
1062 #define MQ_TCF_FIRST 0x10
1063 #define MQ_TCF_LAST 0x20
1064 #define MQ_TCF_REQUEST_ACCEPTED 0x40
1065 #define MQ_TCF_DLQ_USED 0x80
1067 #define MQ_TCF2_HDRCOMP 0x01
1068 #define MQ_TCF2_MSGCOMP 0x02
1069 #define MQ_TCF2_CSH 0x04
1070 #define MQ_TCF2_CMIT_INTERVAL 0x08
1072 #define MQ_ICF1_MSG_SEQ 0x01
1073 #define MQ_ICF1_CONVERSION_CAPABLE 0x02
1074 #define MQ_ICF1_SPLIT_MESSAGE 0x04
1075 #define MQ_ICF1_REQUEST_INITIATION 0x08
1076 #define MQ_ICF1_REQUEST_SECURITY 0x10
1077 #define MQ_ICF1_MQREQUEST 0x20
1078 #define MQ_ICF1_SVRCONN_SECURITY 0x40
1079 #define MQ_ICF1_RUNTIME 0x80
1081 #define MQ_ICF2_DIST_LIST_CAPABLE 0x01
1082 #define MQ_ICF2_FAST_MESSAGES_REQUIRED 0x02
1083 #define MQ_ICF2_RESPONDER_CONVERSION 0x04
1084 #define MQ_ICF2_DUAL_UOW 0x08
1085 #define MQ_ICF2_XAREQUEST 0x10
1086 #define MQ_ICF2_XARUNTIME_APP 0x20
1087 #define MQ_ICF2_SPIREQUEST 0x40
1088 #define MQ_ICF2_TRACE_ROUTE_CAPABLE 0x80
1090 #define MQ_ICF3_MSG_PROP_CAPABLE 0x01
1091 #define MQ_ICF3_UNKNOWNX02 0x02
1093 #define MQ_IEF1_CCSID 0x01
1094 #define MQ_IEF1_ENCODING 0x02
1095 #define MQ_IEF1_MAX_TRANSMISSION_SIZE 0x04
1096 #define MQ_IEF1_FAP_LEVEL 0x08
1097 #define MQ_IEF1_MAX_MSG_SIZE 0x10
1098 #define MQ_IEF1_MAX_MSG_PER_BATCH 0x20
1099 #define MQ_IEF1_SEQ_WRAP_VALUE 0x40
1100 #define MQ_IEF1_HEARTBEAT_INTERVAL 0x80
1102 #define MQ_IEF2_HDRCOMPLIST 0x01
1103 #define MQ_IEF2_MSGCOMPLIST 0x02
1104 #define MQ_IEF2_SSL_RESET 0x04
1106 #define MQ_BIG_ENDIAN 0x01
1107 #define MQ_LITTLE_ENDIAN 0x02
1109 #define MQ_CONN_VERSION 0x01
1110 #define MQ_CONNX_VERSION 0x03
1112 #define MQ_STATUS_ERR_NO_CHANNEL 0x01
1113 #define MQ_STATUS_ERR_CHANNEL_WRONG_TYPE 0x02
1114 #define MQ_STATUS_ERR_QM_UNAVAILABLE 0x03
1115 #define MQ_STATUS_ERR_MSG_SEQUENCE_ERROR 0x04
1116 #define MQ_STATUS_ERR_QM_TERMINATING 0x05
1117 #define MQ_STATUS_ERR_CAN_NOT_STORE 0x06
1118 #define MQ_STATUS_ERR_USER_CLOSED 0x07
1119 #define MQ_STATUS_ERR_TIMEOUT_EXPIRED 0x08
1120 #define MQ_STATUS_ERR_TARGET_Q_UNKNOWN 0x09
1121 #define MQ_STATUS_ERR_PROTOCOL_SEGMENT_TYPE 0x0A
1122 #define MQ_STATUS_ERR_PROTOCOL_LENGTH_ERROR 0x0B
1123 #define MQ_STATUS_ERR_PROTOCOL_INVALID_DATA 0x0C
1124 #define MQ_STATUS_ERR_PROTOCOL_SEGMENT_ERROR 0x0D
1125 #define MQ_STATUS_ERR_PROTOCOL_ID_ERROR 0x0E
1126 #define MQ_STATUS_ERR_PROTOCOL_MSH_ERROR 0x0F
1127 #define MQ_STATUS_ERR_PROTOCOL_GENERAL 0x10
1128 #define MQ_STATUS_ERR_BATCH_FAILURE 0x11
1129 #define MQ_STATUS_ERR_MESSAGE_LENGTH_ERROR 0x12
1130 #define MQ_STATUS_ERR_SEGMENT_NUMBER_ERROR 0x13
1131 #define MQ_STATUS_ERR_SECURITY_FAILURE 0x14
1132 #define MQ_STATUS_ERR_WRAP_VALUE_ERROR 0x15
1133 #define MQ_STATUS_ERR_CHANNEL_UNAVAILABLE 0x16
1134 #define MQ_STATUS_ERR_CLOSED_BY_EXIT 0x17
1135 #define MQ_STATUS_ERR_CIPHER_SPEC 0x18
1136 #define MQ_STATUS_ERR_PEER_NAME 0x19
1137 #define MQ_STATUS_ERR_SSL_CLIENT_CERTIFICATE 0x1A
1138 #define MQ_STATUS_ERR_RMT_RSRCS_IN_RECOVERY 0x1B
1139 #define MQ_STATUS_ERR_SSL_REFRESHING 0x1C
1140 #define MQ_STATUS_ERR_INVALID_HOBJ 0x1D
1141 #define MQ_STATUS_ERR_CONV_ID_ERROR 0x1E
1142 #define MQ_STATUS_ERR_SOCKET_ACTION_TYPE 0x1F
1143 #define MQ_STATUS_ERR_STANDBY_Q_MGR 0x20
1145 #define MQ_STATUS_ERR_CCSID_NOT_SUPPORTED 0xF0
1146 #define MQ_STATUS_ERR_ENCODING_INVALID 0xF1
1147 #define MQ_STATUS_ERR_FAP_LEVEL 0xF2
1148 #define MQ_STATUS_ERR_NEGOTIATION_FAILED 0xF3
1150 /* These errors codes are documented in javax.transaction.xa.XAException */
1151 #define MQ_XA_RBROLLBACK 100
1152 #define MQ_XA_RBCOMMFAIL 101
1153 #define MQ_XA_RBDEADLOCK 102
1154 #define MQ_XA_RBINTEGRITY 103
1155 #define MQ_XA_RBOTHER 104
1156 #define MQ_XA_RBPROTO 105
1157 #define MQ_XA_RBTIMEOUT 106
1158 #define MQ_XA_RBTRANSIENT 107
1159 #define MQ_XA_NOMIGRATE 9
1160 #define MQ_XA_HEURHAZ 8
1161 #define MQ_XA_HEURCOM 7
1162 #define MQ_XA_HEURRB 6
1163 #define MQ_XA_HEURMIX 5
1164 #define MQ_XA_RETRY 4
1165 #define MQ_XA_RDONLY 3
1167 #define MQ_XAER_ASYNC -2
1168 #define MQ_XAER_RMERR -3
1169 #define MQ_XAER_NOTA -4
1170 #define MQ_XAER_INVAL -5
1171 #define MQ_XAER_PROTO -6
1172 #define MQ_XAER_RMFAIL -7
1173 #define MQ_XAER_DUPID -8
1174 #define MQ_XAER_OUTSIDE -9
1176 /* These flags are documented in javax.transaction.xa.XAResource */
1177 #define MQ_XA_TMNOFLAGS 0
1178 #define MQ_XA_TMJOIN 0x200000
1179 #define MQ_XA_TMENDRSCAN 0x800000
1180 #define MQ_XA_TMSTARTRSCAN 0x1000000
1181 #define MQ_XA_TMSUSPEND 0x2000000
1182 #define MQ_XA_TMSUCCESS 0x4000000
1183 #define MQ_XA_TMRESUME 0x8000000
1184 #define MQ_XA_TMFAIL 0x20000000
1185 #define MQ_XA_TMONEPHASE 0x40000000
1187 #define MQ_PMRF_NONE 0x00
1188 #define MQ_PMRF_MSG_ID 0x01
1189 #define MQ_PMRF_CORREL_ID 0x02
1190 #define MQ_PMRF_GROUP_ID 0x04
1191 #define MQ_PMRF_FEEDBACK 0x08
1192 #define MQ_PMRF_ACCOUNTING_TOKEN 0x10
1195 /* Undocumented structures */
1196 #define MQ_TEXT_TSH "Transmission Segment Header"
1197 #define MQ_TEXT_TSHC "Transmission Segment Header Common"
1198 #define MQ_TEXT_TSHM "Transmission Segment Header Multiplexed"
1199 #define MQ_TEXT_FCNO "F Connect Option"
1200 #define MQ_TEXT_API "API Header"
1201 #define MQ_TEXT_SOCKET "Socket Action"
1202 #define MQ_TEXT_ID "Initial Data"
1203 #define MQ_TEXT_UID "User Id Data"
1204 #define MQ_TEXT_MSH "Message Segment Header"
1205 #define MQ_TEXT_CAUT "Connection Authority"
1206 #define MQ_TEXT_CONN "MQCONN"
1207 #define MQ_TEXT_INQ "MQINQ/MQSET"
1208 #define MQ_TEXT_PUT "MQPUT/MQGET"
1209 #define MQ_TEXT_OPEN "MQOPEN/MQCLOSE"
1210 #define MQ_TEXT_REQMSG "REQUEST MESSAGE"
1211 #define MQ_TEXT_ASYMSG "ASYNC MESSAGE"
1212 #define MQ_TEXT_NOTIFICATION "NOTIFICATION"
1213 #define MQ_TEXT_BIND_READAHEAD_AS_Q_DEF "Bind/Read Ahead As Q Def"
1214 #define MQ_TEXT_IMMEDIATE_NONE "Close Immediate/No option"
1215 #define MQ_TEXT_MQPMO_NONE "Resp as Q Def/Resp as Topic Def/None"
1216 #define MQ_TEXT_MQGMO_NONE "No Wait/Prop as Q Def/None"
1217 #define MQ_TEXT_MQMO_NONE "None"
1218 #define MQ_TEXT_LPOOOPT_NONE "None"
1220 #define MQ_TEXT_PING "PING"
1221 #define MQ_TEXT_RESET "RESET"
1222 #define MQ_TEXT_STAT "STATUS"
1223 #define MQ_TEXT_SPI "SPI"
1224 #define MQ_TEXT_XA "XA"
1225 #define MQ_TEXT_XID "Xid"
1226 #define MQ_TEXT_XINF "XA_info"
1228 #define MQ_TEXT_SPQU "SPI Query InOut"
1229 #define MQ_TEXT_SPQI "SPI Query In"
1230 #define MQ_TEXT_SPQO "SPI Query Out"
1231 #define MQ_TEXT_SPPU "SPI Put InOut"
1232 #define MQ_TEXT_SPPI "SPI Put In"
1233 #define MQ_TEXT_SPPO "SPI Put Out"
1234 #define MQ_TEXT_SPGU "SPI Get InOut"
1235 #define MQ_TEXT_SPGI "SPI Get In"
1236 #define MQ_TEXT_SPGO "SPI Get Out"
1237 #define MQ_TEXT_SPAU "SPI Activate InOut"
1238 #define MQ_TEXT_SPAI "SPI Activate In"
1239 #define MQ_TEXT_SPAO "SPI Activate Out"
1240 #define MQ_TEXT_SPOU "SPI InOut"
1241 #define MQ_TEXT_SPOI "SPI In"
1242 #define MQ_TEXT_SPOO "SPI Out"
1243 #define MQ_TEXT_LPOO "LPOO"
1244 #define MQ_TEXT_FOPA "FOPA"
1246 /* Documented structures with structid */
1247 #define MQ_TEXT_CIH "CICS bridge Header"
1248 #define MQ_TEXT_DH "Distribution Header"
1249 #define MQ_TEXT_DLH "Dead-Letter Header"
1250 #define MQ_TEXT_GMO "Get Message Options"
1251 #define MQ_TEXT_IIH "IMS Information Header"
1252 #define MQ_TEXT_MD "Message Descriptor"
1253 #define MQ_TEXT_MDE "Message Descriptor Extension"
1254 #define MQ_TEXT_OD "Object Descriptor"
1255 #define MQ_TEXT_PMO "Put Message Options"
1256 #define MQ_TEXT_RMH "Reference Message Header"
1257 #define MQ_TEXT_TM "Trigger Message"
1258 #define MQ_TEXT_TMC2 "Trigger Message 2 (character format)"
1259 #define MQ_TEXT_WIH "Work Information Header"
1260 #define MQ_TEXT_XQH "Transmission Queue Header"
1262 /* Documented structures without structid */
1263 #define MQ_TEXT_OR "Object Record"
1264 #define MQ_TEXT_PMR "Put Message Record"
1265 #define MQ_TEXT_RR "Response Record"
1267 #define MQ_NC_GET_INHIBITED 1
1268 #define MQ_NC_GET_ALLOWED 2
1269 #define MQ_NC_CONN_STATE 3
1270 #define MQ_NC_CONN_STATE_REPLY 4
1271 #define MQ_NC_Q_STATE 5
1272 #define MQ_NC_Q_STATE_REPLY 6
1273 #define MQ_NC_QM_QUIESCING 7
1274 #define MQ_NC_TXN_ALLOWED 8
1275 #define MQ_NC_TXN_REVOKE 9
1276 #define MQ_NC_TXN_REVOKE_REPLY 10
1277 #define MQ_NC_CHECK_MSG 11
1278 #define MQ_NC_BROWSE_FIRST 12
1279 #define MQ_NC_MESSAGE_TOO_LARGE 13
1280 #define MQ_NC_STREAMING_FAILURE 14
1281 #define MQ_NC_CLIENT_ASYNC_EMPTY 15
1282 #define MQ_NC_STREAMING_TXN_PAUSED 16
1283 #define MQ_NC_RECONNECTION_COMPLETE 17
1285 DEF_VALSB(notifcode
)
1286 DEF_VALS2(NC_GET_INHIBITED
, "GET_INHIBITED"),
1287 DEF_VALS2(NC_GET_ALLOWED
, "GET_ALLOWED"),
1288 DEF_VALS2(NC_CONN_STATE
, "CONN_STATE"),
1289 DEF_VALS2(NC_CONN_STATE_REPLY
, "CONN_STATE_REPLY"),
1290 DEF_VALS2(NC_Q_STATE
, "Q_STATE"),
1291 DEF_VALS2(NC_Q_STATE_REPLY
, "Q_STATE_REPLY"),
1292 DEF_VALS2(NC_QM_QUIESCING
, "QM_QUIESCING"),
1293 DEF_VALS2(NC_TXN_ALLOWED
, "TXN_ALLOWED"),
1294 DEF_VALS2(NC_TXN_REVOKE
, "TXN_REVOKE"),
1295 DEF_VALS2(NC_TXN_REVOKE_REPLY
, "TXN_REVOKE_REPLY"),
1296 DEF_VALS2(NC_CHECK_MSG
, "CHECK_MSG"),
1297 DEF_VALS2(NC_BROWSE_FIRST
, "BROWSE_FIRST"),
1298 DEF_VALS2(NC_MESSAGE_TOO_LARGE
, "MESSAGE_TOO_LARGE"),
1299 DEF_VALS2(NC_STREAMING_FAILURE
, "STREAMING_FAILURE"),
1300 DEF_VALS2(NC_CLIENT_ASYNC_EMPTY
, "CLIENT_ASYNC_EMPTY"),
1304 DEF_VALS2(TST_INITIAL
, "INITIAL_DATA"),
1305 DEF_VALS2(TST_RESYNC
, "RESYNC_DATA"),
1306 DEF_VALS2(TST_RESET
, "RESET_DATA"),
1307 DEF_VALS2(TST_MESSAGE
, "MESSAGE_DATA"),
1308 DEF_VALS2(TST_STATUS
, "STATUS_DATA"),
1309 DEF_VALS2(TST_SECURITY
, "SECURITY_DATA"),
1310 DEF_VALS2(TST_PING
, "PING_DATA"),
1311 DEF_VALS2(TST_USERID
, "USERID_DATA"),
1312 DEF_VALS2(TST_HEARTBEAT
, "HEARTBEAT"),
1313 DEF_VALS2(TST_CONAUTH_INFO
, "CONAUTH_INFO"),
1314 DEF_VALS2(TST_RENEGOTIATE_DATA
, "RENEGOTIATE_DATA"),
1315 DEF_VALS2(TST_SOCKET_ACTION
, "SOCKET_ACTION"),
1316 DEF_VALS2(TST_ASYNC_MESSAGE
, "ASYNC_MESSAGE"),
1317 DEF_VALS2(TST_REQUEST_MSGS
, "REQUEST_MSGS"),
1318 DEF_VALS2(TST_NOTIFICATION
, "NOTIFICATION"),
1319 DEF_VALS2(TST_MQCONN
, "MQCONN"),
1320 DEF_VALS2(TST_MQDISC
, "MQDISC"),
1321 DEF_VALS2(TST_MQOPEN
, "MQOPEN"),
1322 DEF_VALS2(TST_MQCLOSE
, "MQCLOSE"),
1323 DEF_VALS2(TST_MQGET
, "MQGET"),
1324 DEF_VALS2(TST_MQPUT
, "MQPUT"),
1325 DEF_VALS2(TST_MQPUT1
, "MQPUT1"),
1326 DEF_VALS2(TST_MQSET
, "MQSET"),
1327 DEF_VALS2(TST_MQINQ
, "MQINQ"),
1328 DEF_VALS2(TST_MQCMIT
, "MQCMIT"),
1329 DEF_VALS2(TST_MQBACK
, "MQBACK"),
1330 DEF_VALS2(TST_SPI
, "SPI"),
1331 DEF_VALS2(TST_MQSTAT
, "MQSTAT"),
1332 DEF_VALS2(TST_MQSUB
, "MQSUB"),
1333 DEF_VALS2(TST_MQSUBRQ
, "MQSUBRQ"),
1334 DEF_VALS2(TST_MQCONN_REPLY
, "MQCONN_REPLY"),
1335 DEF_VALS2(TST_MQDISC_REPLY
, "MQDISC_REPLY"),
1336 DEF_VALS2(TST_MQOPEN_REPLY
, "MQOPEN_REPLY"),
1337 DEF_VALS2(TST_MQCLOSE_REPLY
, "MQCLOSE_REPLY"),
1338 DEF_VALS2(TST_MQGET_REPLY
, "MQGET_REPLY"),
1339 DEF_VALS2(TST_MQPUT_REPLY
, "MQPUT_REPLY"),
1340 DEF_VALS2(TST_MQPUT1_REPLY
, "MQPUT1_REPLY"),
1341 DEF_VALS2(TST_MQSET_REPLY
, "MQSET_REPLY"),
1342 DEF_VALS2(TST_MQINQ_REPLY
, "MQINQ_REPLY"),
1343 DEF_VALS2(TST_MQCMIT_REPLY
, "MQCMIT_REPLY"),
1344 DEF_VALS2(TST_MQBACK_REPLY
, "MQBACK_REPLY"),
1345 DEF_VALS2(TST_SPI_REPLY
, "SPI_REPLY"),
1346 DEF_VALS2(TST_MQSTAT_REPLY
, "MQSTAT_REPLY"),
1347 DEF_VALS2(TST_MQSUB_REPLY
, "MQSUB_REPLY"),
1348 DEF_VALS2(TST_MQSUBRQ_REPLY
, "MQSUBRQ_REPLY"),
1349 DEF_VALS2(TST_XA_START
, "XA_START"),
1350 DEF_VALS2(TST_XA_END
, "XA_END"),
1351 DEF_VALS2(TST_XA_OPEN
, "XA_OPEN"),
1352 DEF_VALS2(TST_XA_CLOSE
, "XA_CLOSE"),
1353 DEF_VALS2(TST_XA_PREPARE
, "XA_PREPARE"),
1354 DEF_VALS2(TST_XA_COMMIT
, "XA_COMMIT"),
1355 DEF_VALS2(TST_XA_ROLLBACK
, "XA_ROLLBACK"),
1356 DEF_VALS2(TST_XA_FORGET
, "XA_FORGET"),
1357 DEF_VALS2(TST_XA_RECOVER
, "XA_RECOVER"),
1358 DEF_VALS2(TST_XA_COMPLETE
, "XA_COMPLETE"),
1359 DEF_VALS2(TST_XA_START_REPLY
, "XA_START_REPLY"),
1360 DEF_VALS2(TST_XA_END_REPLY
, "XA_END_REPLY"),
1361 DEF_VALS2(TST_XA_OPEN_REPLY
, "XA_OPEN_REPLY"),
1362 DEF_VALS2(TST_XA_CLOSE_REPLY
, "XA_CLOSE_REPLY"),
1363 DEF_VALS2(TST_XA_PREPARE_REPLY
, "XA_PREPARE_REPLY"),
1364 DEF_VALS2(TST_XA_COMMIT_REPLY
, "XA_COMMIT_REPLY"),
1365 DEF_VALS2(TST_XA_ROLLBACK_REPLY
, "XA_ROLLBACK_REPLY"),
1366 DEF_VALS2(TST_XA_FORGET_REPLY
, "XA_FORGET_REPLY"),
1367 DEF_VALS2(TST_XA_RECOVER_REPLY
, "XA_RECOVER_REPLY"),
1368 DEF_VALS2(TST_XA_COMPLETE_REPLY
, "XA_COMPLETE_REPLY"),
1371 DEF_VALSB(spi_verbs
)
1372 DEF_VALS2(SPI_QUERY
, "QUERY"),
1373 DEF_VALS2(SPI_PUT
, "PUT"),
1374 DEF_VALS2(SPI_GET
, "GET"),
1375 DEF_VALS2(SPI_ACTIVATE
, "ACTIVATE"),
1376 DEF_VALS2(SPI_OPEN
, "OPEN"),
1379 DEF_VALSB(spi_activate
)
1380 DEF_VALS2(SPI_ACTIVATE_ENABLE
, "ENABLE"),
1381 DEF_VALS2(SPI_ACTIVATE_DISABLE
, "DISABLE"),
1385 DEF_VALS2(STATUS_ERR_NO_CHANNEL
, "NO_CHANNEL"),
1386 DEF_VALS2(STATUS_ERR_CHANNEL_WRONG_TYPE
, "CHANNEL_WRONG_TYPE"),
1387 DEF_VALS2(STATUS_ERR_QM_UNAVAILABLE
, "QM_UNAVAILABLE"),
1388 DEF_VALS2(STATUS_ERR_MSG_SEQUENCE_ERROR
, "MSG_SEQUENCE_ERROR"),
1389 DEF_VALS2(STATUS_ERR_QM_TERMINATING
, "QM_TERMINATING"),
1390 DEF_VALS2(STATUS_ERR_CAN_NOT_STORE
, "CAN_NOT_STORE"),
1391 DEF_VALS2(STATUS_ERR_USER_CLOSED
, "USER_CLOSED"),
1392 DEF_VALS2(STATUS_ERR_PROTOCOL_SEGMENT_TYPE
, "REMOTE_PROTOCOL_ERROR"),
1393 DEF_VALS2(STATUS_ERR_PROTOCOL_LENGTH_ERROR
, "BIND_FAILED"),
1394 DEF_VALS2(STATUS_ERR_PROTOCOL_INVALID_DATA
, "MSGWRAP_DIFFERENT"),
1395 DEF_VALS2(STATUS_ERR_PROTOCOL_ID_ERROR
, "REMOTE_CHANNEL_UNAVAILABLE"),
1396 DEF_VALS2(STATUS_ERR_PROTOCOL_MSH_ERROR
, "TERMINATED_BY_REMOTE_EXIT"),
1397 DEF_VALS2(STATUS_ERR_PROTOCOL_GENERAL
, "PROTOCOL_GENERAL"),
1398 DEF_VALS2(STATUS_ERR_BATCH_FAILURE
, "BATCH_FAILURE"),
1399 DEF_VALS2(STATUS_ERR_MESSAGE_LENGTH_ERROR
, "MESSAGE_LENGTH_ERROR"),
1400 DEF_VALS2(STATUS_ERR_SEGMENT_NUMBER_ERROR
, "SEGMENT_NUMBER_ERROR"),
1401 DEF_VALS2(STATUS_ERR_SECURITY_FAILURE
, "SECURITY_FAILURE"),
1402 DEF_VALS2(STATUS_ERR_WRAP_VALUE_ERROR
, "WRAP_VALUE_ERROR"),
1403 DEF_VALS2(STATUS_ERR_CHANNEL_UNAVAILABLE
, "CHANNEL_UNAVAILABLE"),
1404 DEF_VALS2(STATUS_ERR_CLOSED_BY_EXIT
, "CLOSED_BY_EXIT"),
1405 DEF_VALS2(STATUS_ERR_CIPHER_SPEC
, "CIPHER_SPEC"),
1406 DEF_VALS2(STATUS_ERR_PEER_NAME
, "PEER_NAME"),
1407 DEF_VALS2(STATUS_ERR_SSL_CLIENT_CERTIFICATE
, "SSL_CLIENT_CERTIFICATE"),
1408 DEF_VALS2(STATUS_ERR_RMT_RSRCS_IN_RECOVERY
, "RMT_RSRCS_IN_RECOVERY"),
1409 DEF_VALS2(STATUS_ERR_SSL_REFRESHING
, "SSL_REFRESHING"),
1410 DEF_VALS2(STATUS_ERR_INVALID_HOBJ
, "INVALID_HOBJ"),
1411 DEF_VALS2(STATUS_ERR_CONV_ID_ERROR
, "CONV_ID_ERROR"),
1412 DEF_VALS2(STATUS_ERR_SOCKET_ACTION_TYPE
, "SOCKET_ACTION_TYPE"),
1413 DEF_VALS2(STATUS_ERR_STANDBY_Q_MGR
, "STANDBY_Q_MGR"),
1415 DEF_VALS2(STATUS_ERR_CCSID_NOT_SUPPORTED
, "CCSID_NOT_SUPPORTED"),
1416 DEF_VALS2(STATUS_ERR_ENCODING_INVALID
, "ENCODING_INVALID"),
1417 DEF_VALS2(STATUS_ERR_FAP_LEVEL
, "FAP_LEVEL"),
1418 DEF_VALS2(STATUS_ERR_NEGOTIATION_FAILED
, "NEGOTIATION_FAILED"),
1422 DEF_VALS2(XA_RBROLLBACK
, "XA_RBROLLBACK"),
1423 DEF_VALS2(XA_RBCOMMFAIL
, "XA_RBCOMMFAIL"),
1424 DEF_VALS2(XA_RBDEADLOCK
, "XA_RBDEADLOCK"),
1425 DEF_VALS2(XA_RBINTEGRITY
, "XA_RBINTEGRITY"),
1426 DEF_VALS2(XA_RBOTHER
, "XA_RBOTHER"),
1427 DEF_VALS2(XA_RBPROTO
, "XA_RBPROTO"),
1428 DEF_VALS2(XA_RBTIMEOUT
, "XA_RBTIMEOUT"),
1429 DEF_VALS2(XA_RBTRANSIENT
, "XA_RBTRANSIENT"),
1430 DEF_VALS2(XA_NOMIGRATE
, "XA_NOMIGRATE"),
1431 DEF_VALS2(XA_HEURHAZ
, "XA_HEURHAZ"),
1432 DEF_VALS2(XA_HEURCOM
, "XA_HEURCOM"),
1433 DEF_VALS2(XA_HEURRB
, "XA_HEURRB"),
1434 DEF_VALS2(XA_HEURMIX
, "XA_HEURMIX"),
1435 DEF_VALS2(XA_RETRY
, "XA_RETRY"),
1436 DEF_VALS2(XA_RDONLY
, "XA_RDONLY"),
1437 DEF_VALS2(XA_OK
, "XA_OK"),
1438 DEF_VALS2(XAER_ASYNC
, "XAER_ASYNC"),
1439 DEF_VALS2(XAER_RMERR
, "XAER_RMERR"),
1440 DEF_VALS2(XAER_NOTA
, "XAER_NOTA"),
1441 DEF_VALS2(XAER_INVAL
, "XAER_INVAL"),
1442 DEF_VALS2(XAER_PROTO
, "XAER_PROTO"),
1443 DEF_VALS2(XAER_RMFAIL
, "XAER_RMFAIL"),
1444 DEF_VALS2(XAER_DUPID
, "XAER_DUPID"),
1445 DEF_VALS2(XAER_OUTSIDE
, "XAER_OUTSIDE"),
1449 DEF_VALS2(STRUCTID_CIH
, MQ_TEXT_CIH
),
1450 DEF_VALS2(STRUCTID_DH
, MQ_TEXT_DH
),
1451 DEF_VALS2(STRUCTID_DLH
, MQ_TEXT_DLH
),
1452 DEF_VALS2(STRUCTID_GMO
, MQ_TEXT_GMO
),
1453 DEF_VALS2(STRUCTID_ID
, MQ_TEXT_ID
),
1454 DEF_VALS2(STRUCTID_IIH
, MQ_TEXT_IIH
),
1455 DEF_VALS2(STRUCTID_MD
, MQ_TEXT_MD
),
1456 DEF_VALS2(STRUCTID_MDE
, MQ_TEXT_MDE
),
1457 DEF_VALS2(STRUCTID_MSH
, MQ_TEXT_MSH
),
1458 DEF_VALS2(STRUCTID_OD
, MQ_TEXT_OD
),
1459 DEF_VALS2(STRUCTID_PMO
, MQ_TEXT_PMO
),
1460 DEF_VALS2(STRUCTID_RMH
, MQ_TEXT_RMH
),
1461 DEF_VALS2(STRUCTID_TM
, MQ_TEXT_TM
),
1462 DEF_VALS2(STRUCTID_TMC2
, MQ_TEXT_TMC2
),
1463 DEF_VALS2(STRUCTID_CAUT
, MQ_TEXT_CAUT
),
1464 DEF_VALS2(STRUCTID_TSH
, MQ_TEXT_TSH
),
1465 DEF_VALS2(STRUCTID_TSHC
, MQ_TEXT_TSHC
),
1466 DEF_VALS2(STRUCTID_TSHM
, MQ_TEXT_TSHM
),
1467 DEF_VALS2(STRUCTID_UID
, MQ_TEXT_UID
),
1468 DEF_VALS2(STRUCTID_WIH
, MQ_TEXT_WIH
),
1469 DEF_VALS2(STRUCTID_XQH
, MQ_TEXT_XQH
),
1470 DEF_VALS2(STRUCTID_SPQU
, MQ_TEXT_SPQU
),
1471 DEF_VALS2(STRUCTID_SPQI
, MQ_TEXT_SPQI
),
1472 DEF_VALS2(STRUCTID_SPQO
, MQ_TEXT_SPQO
),
1473 DEF_VALS2(STRUCTID_SPPU
, MQ_TEXT_SPPU
),
1474 DEF_VALS2(STRUCTID_SPPI
, MQ_TEXT_SPPI
),
1475 DEF_VALS2(STRUCTID_SPPO
, MQ_TEXT_SPPO
),
1476 DEF_VALS2(STRUCTID_SPGU
, MQ_TEXT_SPGU
),
1477 DEF_VALS2(STRUCTID_SPGI
, MQ_TEXT_SPGI
),
1478 DEF_VALS2(STRUCTID_SPGO
, MQ_TEXT_SPGO
),
1479 DEF_VALS2(STRUCTID_SPAU
, MQ_TEXT_SPAU
),
1480 DEF_VALS2(STRUCTID_SPAI
, MQ_TEXT_SPAI
),
1481 DEF_VALS2(STRUCTID_SPAO
, MQ_TEXT_SPAO
),
1482 DEF_VALS2(STRUCTID_SPOU
, MQ_TEXT_SPOU
),
1483 DEF_VALS2(STRUCTID_SPOI
, MQ_TEXT_SPOI
),
1484 DEF_VALS2(STRUCTID_SPOO
, MQ_TEXT_SPOO
),
1485 DEF_VALS2(STRUCTID_LPOO
, MQ_TEXT_LPOO
),
1486 DEF_VALS2(STRUCTID_FOPA
, MQ_TEXT_FOPA
),
1487 DEF_VALS2(STRUCTID_FCNO
, MQ_TEXT_FCNO
),
1488 DEF_VALS2(STRUCTID_CIH_EBCDIC
, MQ_TEXT_CIH
),
1489 DEF_VALS2(STRUCTID_DH_EBCDIC
, MQ_TEXT_DH
),
1490 DEF_VALS2(STRUCTID_DLH_EBCDIC
, MQ_TEXT_DLH
),
1491 DEF_VALS2(STRUCTID_GMO_EBCDIC
, MQ_TEXT_GMO
),
1492 DEF_VALS2(STRUCTID_ID_EBCDIC
, MQ_TEXT_ID
),
1493 DEF_VALS2(STRUCTID_IIH_EBCDIC
, MQ_TEXT_IIH
),
1494 DEF_VALS2(STRUCTID_MD_EBCDIC
, MQ_TEXT_MD
),
1495 DEF_VALS2(STRUCTID_MDE_EBCDIC
, MQ_TEXT_MDE
),
1496 DEF_VALS2(STRUCTID_OD_EBCDIC
, MQ_TEXT_OD
),
1497 DEF_VALS2(STRUCTID_PMO_EBCDIC
, MQ_TEXT_PMO
),
1498 DEF_VALS2(STRUCTID_RMH_EBCDIC
, MQ_TEXT_RMH
),
1499 DEF_VALS2(STRUCTID_TM_EBCDIC
, MQ_TEXT_TM
),
1500 DEF_VALS2(STRUCTID_TMC2_EBCDIC
, MQ_TEXT_TMC2
),
1501 DEF_VALS2(STRUCTID_CAUT_EBCDIC
, MQ_TEXT_CAUT
),
1502 DEF_VALS2(STRUCTID_TSH_EBCDIC
, MQ_TEXT_TSH
),
1503 DEF_VALS2(STRUCTID_TSHC_EBCDIC
, MQ_TEXT_TSHC
),
1504 DEF_VALS2(STRUCTID_TSHM_EBCDIC
, MQ_TEXT_TSHM
),
1505 DEF_VALS2(STRUCTID_UID_EBCDIC
, MQ_TEXT_UID
),
1506 DEF_VALS2(STRUCTID_WIH_EBCDIC
, MQ_TEXT_WIH
),
1507 DEF_VALS2(STRUCTID_XQH_EBCDIC
, MQ_TEXT_XQH
),
1508 DEF_VALS2(STRUCTID_SPQU_EBCDIC
, MQ_TEXT_SPQU
),
1509 DEF_VALS2(STRUCTID_SPQI_EBCDIC
, MQ_TEXT_SPQI
),
1510 DEF_VALS2(STRUCTID_SPQO_EBCDIC
, MQ_TEXT_SPQO
),
1511 DEF_VALS2(STRUCTID_SPPU_EBCDIC
, MQ_TEXT_SPPU
),
1512 DEF_VALS2(STRUCTID_SPPI_EBCDIC
, MQ_TEXT_SPPI
),
1513 DEF_VALS2(STRUCTID_SPPO_EBCDIC
, MQ_TEXT_SPPO
),
1514 DEF_VALS2(STRUCTID_SPGU_EBCDIC
, MQ_TEXT_SPGU
),
1515 DEF_VALS2(STRUCTID_SPGI_EBCDIC
, MQ_TEXT_SPGI
),
1516 DEF_VALS2(STRUCTID_SPGO_EBCDIC
, MQ_TEXT_SPGO
),
1517 DEF_VALS2(STRUCTID_SPAU_EBCDIC
, MQ_TEXT_SPAU
),
1518 DEF_VALS2(STRUCTID_SPAI_EBCDIC
, MQ_TEXT_SPAI
),
1519 DEF_VALS2(STRUCTID_SPAO_EBCDIC
, MQ_TEXT_SPAO
),
1520 DEF_VALS2(STRUCTID_SPOU_EBCDIC
, MQ_TEXT_SPOU
),
1521 DEF_VALS2(STRUCTID_SPOI_EBCDIC
, MQ_TEXT_SPOI
),
1522 DEF_VALS2(STRUCTID_SPOO_EBCDIC
, MQ_TEXT_SPOO
),
1523 DEF_VALS2(STRUCTID_LPOO_EBCDIC
, MQ_TEXT_LPOO
),
1524 DEF_VALS2(STRUCTID_FOPA_EBCDIC
, MQ_TEXT_FOPA
),
1525 DEF_VALS2(STRUCTID_FCNO_EBCDIC
, MQ_TEXT_FCNO
),
1528 DEF_VALSB(byteorder
)
1529 DEF_VALS2(LITTLE_ENDIAN
, "Little endian"),
1530 DEF_VALS2(BIG_ENDIAN
, "Big endian"),
1533 DEF_VALSB(conn_version
)
1534 DEF_VALS2(CONN_VERSION
, "MQCONN"),
1535 DEF_VALS2(CONNX_VERSION
, "MQCONNX"),
1539 DEF_VALS1(MQSIDT_NONE
),
1540 DEF_VALS1(MQSIDT_NT_SECURITY_ID
),
1541 DEF_VALS1(MQSIDT_WAS_SECURITY_ID
),
1544 static gint
dissect_mq_encoding(proto_tree
*tree
, int hfindex
, tvbuff_t
*tvb
, const gint start
, gint length
, const guint encoding
)
1546 gchar sEnc
[128] = "";
1552 uEnc
= (gint
)tvb_get_guint16_endian(tvb
, start
, encoding
);
1556 uEnc
= tvb_get_guint32_endian(tvb
, start
, encoding
);
1560 #define CHECK_ENC(M, T) ((uEnc & M) == T)
1561 #define DOPRT(A) pEnc += g_snprintf(pEnc, (gulong)(sizeof(sEnc)-1-(pEnc-sEnc)), A);
1562 if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_UNDEFINED
))
1564 DOPRT("FLT_UNDEFINED");
1566 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_IEEE_NORMAL
))
1568 DOPRT("FLT_IEEE_NORMAL");
1570 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_IEEE_REVERSED
))
1572 DOPRT("FLT_IEEE_REVERSED");
1574 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_S390
))
1578 else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK
, MQ_MQENC_FLOAT_TNS
))
1583 DOPRT("FLT_UNKNOWN");
1587 if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK
, MQ_MQENC_DECIMAL_UNDEFINED
))
1589 DOPRT("DEC_UNDEFINED");
1591 else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK
, MQ_MQENC_DECIMAL_NORMAL
))
1593 DOPRT("DEC_NORMAL");
1595 else if (CHECK_ENC(MQ_MQENC_DECIMAL_MASK
, MQ_MQENC_DECIMAL_REVERSED
))
1597 DOPRT("DEC_REVERSED");
1601 DOPRT("DEC_UNKNOWN");
1605 if (CHECK_ENC(MQ_MQENC_INTEGER_MASK
, MQ_MQENC_INTEGER_UNDEFINED
))
1607 DOPRT("INT_UNDEFINED");
1609 else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK
, MQ_MQENC_INTEGER_NORMAL
))
1611 DOPRT("INT_NORMAL");
1613 else if (CHECK_ENC(MQ_MQENC_INTEGER_MASK
, MQ_MQENC_INTEGER_REVERSED
))
1615 DOPRT("INT_REVERSED");
1619 DOPRT("INT_UNKNOWN");
1624 proto_tree_add_uint_format_value(tree
, hfindex
, tvb
, start
, length
, uEnc
,
1625 "%8x-%d (%s)", uEnc
, uEnc
, sEnc
);
1630 static gint
dissect_mq_MQMO(tvbuff_t
*tvb
, proto_tree
*mq_tree
, gint offset
, gint ett_subtree
, mq_parm_t
*p_mq_parm
)
1634 uMoOpt
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1639 proto_tree
*mq_tree_sub
;
1640 ti
= proto_tree_add_item(mq_tree
, hf_mq_gmo_matchoptions
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
); /* ENC_BIG_ENDIAN); */
1641 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1642 proto_tree_add_text(mq_tree_sub
, tvb
, offset
, 4, MQ_TEXT_MQMO_NONE
);
1646 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_gmo_matchoptions
, ett_subtree
, pf_flds_mtchopt
, p_mq_parm
->mq_int_enc
);
1650 static gint
dissect_mq_LPOO_LPIOPTS(tvbuff_t
*tvb
, proto_tree
*mq_tree
, gint offset
, gint ett_subtree
, mq_parm_t
*p_mq_parm
)
1654 uLpiOpts
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1659 proto_tree
*mq_tree_sub
;
1660 ti
= proto_tree_add_item(mq_tree
, hf_mq_lpoo_lpiopts
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1661 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1662 proto_tree_add_text(mq_tree_sub
, tvb
, offset
, 4, MQ_TEXT_LPOOOPT_NONE
);
1666 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_lpoo_lpiopts
, ett_subtree
, pf_flds_lpooopt
, p_mq_parm
->mq_int_enc
);
1670 static gint
dissect_mq_MQGMO(tvbuff_t
*tvb
, proto_tree
*mq_tree
, gint offset
, gint ett_subtree
, mq_parm_t
*p_mq_parm
)
1674 uGmoOpt
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1679 proto_tree
*mq_tree_sub
;
1680 ti
= proto_tree_add_item(mq_tree
, hf_mq_gmo_options
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
); /* ENC_BIG_ENDIAN); */
1681 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1682 proto_tree_add_text(mq_tree_sub
, tvb
, offset
, 4, MQ_TEXT_MQGMO_NONE
);
1686 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_gmo_options
, ett_subtree
, pf_flds_gmoopt
, p_mq_parm
->mq_int_enc
);
1691 static gint
dissect_mq_MQPMO(tvbuff_t
*tvb
, proto_tree
*mq_tree
, gint offset
, gint ett_subtree
, mq_parm_t
*p_mq_parm
)
1695 uPmoOpt
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1700 proto_tree
*mq_tree_sub
;
1701 ti
= proto_tree_add_item(mq_tree
, hf_mq_pmo_options
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
); /* ENC_BIG_ENDIAN); */
1702 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1703 proto_tree_add_text(mq_tree_sub
, tvb
, offset
, 4, MQ_TEXT_MQPMO_NONE
);
1707 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_pmo_options
, ett_subtree
, pf_flds_pmoopt
, p_mq_parm
->mq_int_enc
);
1712 static gint
dissect_mq_MQOO(tvbuff_t
*tvb
, proto_tree
*mq_tree
, gint offset
, gint ett_subtree
, gint hfindex
, mq_parm_t
*p_mq_parm
)
1716 uOpenOpt
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1721 proto_tree
*mq_tree_sub
;
1722 ti
= proto_tree_add_item(mq_tree
, hfindex
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1723 mq_tree_sub
= proto_item_add_subtree(ti
, ett_subtree
);
1724 proto_tree_add_text(mq_tree_sub
, tvb
, offset
, 4, MQ_TEXT_BIND_READAHEAD_AS_Q_DEF
);
1728 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hfindex
, ett_subtree
, pf_flds_opnopt
, p_mq_parm
->mq_int_enc
);
1732 static gint
dissect_mq_MQCO(tvbuff_t
*tvb
, proto_tree
*mq_tree
, gint offset
, mq_parm_t
*p_mq_parm
)
1736 iCloseOpt
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
1741 proto_tree
*mq_tree_sub
;
1742 ti
= proto_tree_add_item(mq_tree
, hf_mq_close_options
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1743 mq_tree_sub
= proto_item_add_subtree(ti
, ett_mq_close_option
);
1744 proto_tree_add_text(mq_tree_sub
, tvb
, offset
, 4, MQ_TEXT_IMMEDIATE_NONE
);
1748 proto_tree_add_bitmask(mq_tree
, tvb
, offset
, hf_mq_close_options
, ett_mq_close_option
, pf_flds_clsopt
, ENC_BIG_ENDIAN
);
1752 static gint
dissect_mq_charv(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, gint iSize
, gint idx
, guint8
*pStr
, mq_parm_t
*p_mq_parm
)
1755 proto_tree
*mq_tree_sub
;
1760 static guint8 sEmpty
[] = "[Empty]";
1762 lStr
= tvb_get_guint32_endian(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
1763 oStr
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
1764 eStr
= tvb_get_guint32_endian(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
1767 sStr
= tvb_get_string_enc(wmem_packet_scope(), tvb
, oStr
, lStr
, p_mq_parm
->mq_str_enc
);
1772 ti
= proto_tree_add_text(tree
, tvb
, offset
, iSize
, "%s - %s", pStr
, (sStr
) ? sStr
: sEmpty
);
1773 mq_tree_sub
= proto_item_add_subtree(ti
, idx
);
1774 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsptr
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
1775 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsoffset
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1776 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsbufsize
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
1777 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vslength
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
1778 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsccsid
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1779 proto_tree_add_item(mq_tree_sub
, hf_mq_charv_vsvalue
, tvb
, oStr
, lStr
, (eStr
== 500) ? ENC_EBCDIC
: ENC_ASCII
);
1783 static gint
dissect_mq_pmr(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, gint iNbrRecords
, gint offsetPMR
, guint32 recFlags
, mq_parm_t
*p_mq_parm
)
1788 iSizePMR1
= ((((recFlags
& MQ_PMRF_MSG_ID
) != 0) * 24)
1789 +(((recFlags
& MQ_PMRF_CORREL_ID
) != 0) * 24)
1790 +(((recFlags
& MQ_PMRF_GROUP_ID
) != 0) * 24)
1791 +(((recFlags
& MQ_PMRF_FEEDBACK
) != 0) * 4)
1792 +(((recFlags
& MQ_PMRF_ACCOUNTING_TOKEN
) != 0) * 32));
1794 if (offsetPMR
!= 0 && iSizePMR1
!= 0)
1796 iSizePMR
= iNbrRecords
* iSizePMR1
;
1797 if (tvb_length_remaining(tvb
, offset
) >= iSizePMR
)
1801 gint iOffsetPMR
= 0;
1803 for (iRecord
= 0; iRecord
< iNbrRecords
; iRecord
++)
1805 proto_item
*ti
= proto_tree_add_text(tree
, tvb
, offset
+ iOffsetPMR
, iSizePMR1
, MQ_TEXT_PMR
);
1806 proto_tree
*mq_tree
= proto_item_add_subtree(ti
, ett_mq_pmr
);
1807 if ((recFlags
& MQ_PMRF_MSG_ID
) != 0)
1809 proto_tree_add_item(mq_tree
, hf_mq_pmr_msgid
, tvb
, offset
+ iOffsetPMR
, 24, ENC_NA
);
1812 if ((recFlags
& MQ_PMRF_CORREL_ID
) != 0)
1814 proto_tree_add_item(mq_tree
, hf_mq_pmr_correlid
, tvb
, offset
+ iOffsetPMR
, 24, ENC_NA
);
1817 if ((recFlags
& MQ_PMRF_GROUP_ID
) != 0)
1819 proto_tree_add_item(mq_tree
, hf_mq_pmr_groupid
, tvb
, offset
+ iOffsetPMR
, 24, ENC_NA
);
1822 if ((recFlags
& MQ_PMRF_FEEDBACK
) != 0)
1824 proto_tree_add_item(mq_tree
, hf_mq_pmr_feedback
, tvb
, offset
+ iOffsetPMR
, 4, p_mq_parm
->mq_int_enc
);
1827 if ((recFlags
& MQ_PMRF_ACCOUNTING_TOKEN
) != 0)
1829 proto_tree_add_item(mq_tree
, hf_mq_pmr_acttoken
, tvb
, offset
+ iOffsetPMR
, 32, ENC_NA
);
1839 static gint
dissect_mq_or(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, gint iNbrRecords
, gint offsetOR
, mq_parm_t
*p_mq_parm
)
1844 iSizeOR
= iNbrRecords
* 96;
1845 if (tvb_length_remaining(tvb
, offset
) >= iSizeOR
)
1851 for (iRecord
= 0; iRecord
< iNbrRecords
; iRecord
++)
1853 proto_item
*ti
= proto_tree_add_text(tree
, tvb
, offset
+ iOffsetOR
, 96, MQ_TEXT_OR
);
1854 proto_tree
*mq_tree
= proto_item_add_subtree(ti
, ett_mq_or
);
1855 proto_tree_add_item(mq_tree
, hf_mq_or_objname
, tvb
, offset
+ iOffsetOR
, 48, p_mq_parm
->mq_str_enc
);
1856 proto_tree_add_item(mq_tree
, hf_mq_or_objqmgrname
, tvb
, offset
+ iOffsetOR
+ 48, 48, p_mq_parm
->mq_str_enc
);
1865 static gint
dissect_mq_rr(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, gint iNbrRecords
, gint offsetRR
, mq_parm_t
*p_mq_parm
)
1870 iSizeRR
= iNbrRecords
* 8;
1871 if (tvb_length_remaining(tvb
, offset
) >= iSizeRR
)
1877 for (iRecord
= 0; iRecord
< iNbrRecords
; iRecord
++)
1879 proto_item
*ti
= proto_tree_add_text(tree
, tvb
, offset
+ iOffsetRR
, 8, MQ_TEXT_RR
);
1880 proto_tree
*mq_tree
= proto_item_add_subtree(ti
, ett_mq_rr
);
1881 proto_tree_add_item(mq_tree
, hf_mq_rr_compcode
, tvb
, offset
+ iOffsetRR
, 4, p_mq_parm
->mq_int_enc
);
1882 proto_tree_add_item(mq_tree
, hf_mq_rr_reascode
, tvb
, offset
+ iOffsetRR
+ 4, 4, p_mq_parm
->mq_int_enc
);
1891 static gint
dissect_mq_gmo(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, gint offset
, mq_parm_t
*p_mq_parm
)
1895 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
1896 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_GMO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_GMO_EBCDIC
)
1898 guint32 iVersion
= 0;
1899 iVersion
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
1900 /* Compute length according to version */
1903 case 1: iSize
= 72; break;
1904 case 2: iSize
= 80; break;
1905 case 3: iSize
= 100; break;
1908 if (iSize
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSize
)
1911 sQueue
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 24, 48, p_mq_parm
->mq_str_enc
);
1912 if (strip_trailing_blanks(sQueue
, 48) > 0)
1914 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Q=%s", sQueue
);
1919 proto_tree
*mq_tree
;
1922 ti
= proto_tree_add_text(tree
, tvb
, offset
, iSize
, MQ_TEXT_GMO
);
1923 mq_tree
= proto_item_add_subtree(ti
, ett_mq_gmo
);
1925 proto_tree_add_item(mq_tree
, hf_mq_gmo_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
1926 proto_tree_add_item(mq_tree
, hf_mq_gmo_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1928 dissect_mq_MQGMO(tvb
, mq_tree
, offset
+ 8, ett_mq_gmo_option
, p_mq_parm
);
1930 proto_tree_add_item(mq_tree
, hf_mq_gmo_waitinterval
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
1931 proto_tree_add_item(mq_tree
, hf_mq_gmo_signal1
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1932 proto_tree_add_item(mq_tree
, hf_mq_gmo_signal2
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
1933 proto_tree_add_item(mq_tree
, hf_mq_gmo_resolvqname
, tvb
, offset
+ 24, 48, p_mq_parm
->mq_str_enc
);
1937 /*proto_tree_add_item(mq_tree, hf_mq_gmo_matchoptions, tvb, offset + 72, 4, ENC_BIG_ENDIAN);*/
1938 dissect_mq_MQMO(tvb
, mq_tree
, offset
+ 8, ett_mq_gmo_matchoption
, p_mq_parm
);
1940 proto_tree_add_item(mq_tree
, hf_mq_gmo_groupstatus
, tvb
, offset
+ 76, 1, ENC_BIG_ENDIAN
);
1941 proto_tree_add_item(mq_tree
, hf_mq_gmo_segmstatus
, tvb
, offset
+ 77, 1, ENC_BIG_ENDIAN
);
1942 proto_tree_add_item(mq_tree
, hf_mq_gmo_segmentation
, tvb
, offset
+ 78, 1, ENC_BIG_ENDIAN
);
1943 proto_tree_add_item(mq_tree
, hf_mq_gmo_reserved
, tvb
, offset
+ 79, 1, ENC_BIG_ENDIAN
);
1948 proto_tree_add_item(mq_tree
, hf_mq_gmo_msgtoken
, tvb
, offset
+ 80, 16, ENC_NA
);
1949 proto_tree_add_item(mq_tree
, hf_mq_gmo_returnedlen
, tvb
, offset
+ 96, 4, p_mq_parm
->mq_int_enc
);
1957 static gint
dissect_mq_pmo(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, gint offset
, mq_parm_t
*p_mq_parm
, gint
*iDistributionListSize
)
1961 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
1962 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_PMO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_PMO_EBCDIC
)
1964 guint32 iVersion
= 0;
1965 iVersion
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
1966 /* Compute length according to version */
1969 case 1: iSize
= 128; break;
1970 case 2: iSize
= 152;break;
1973 if (iSize
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSize
)
1977 sQueue
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 32, 48, p_mq_parm
->mq_str_enc
);
1978 if (strip_trailing_blanks(sQueue
, 48) > 0)
1980 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Q=%s", sQueue
);
1985 proto_tree
*mq_tree
;
1988 ti
= proto_tree_add_text(tree
, tvb
, offset
, iSize
, MQ_TEXT_PMO
);
1989 mq_tree
= proto_item_add_subtree(ti
, ett_mq_pmo
);
1990 proto_tree_add_item(mq_tree
, hf_mq_pmo_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
1991 proto_tree_add_item(mq_tree
, hf_mq_pmo_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
1993 dissect_mq_MQPMO(tvb
, mq_tree
, offset
+ 8, ett_mq_pmo_option
, p_mq_parm
);
1995 proto_tree_add_item(mq_tree
, hf_mq_pmo_timeout
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
1996 proto_tree_add_item(mq_tree
, hf_mq_pmo_context
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
1997 proto_tree_add_item(mq_tree
, hf_mq_pmo_knowndstcnt
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
1998 proto_tree_add_item(mq_tree
, hf_mq_pmo_unkndstcnt
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
1999 proto_tree_add_item(mq_tree
, hf_mq_pmo_invaldstcnt
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
2000 proto_tree_add_item(mq_tree
, hf_mq_pmo_resolvqname
, tvb
, offset
+ 32, 48, p_mq_parm
->mq_str_enc
);
2001 proto_tree_add_item(mq_tree
, hf_mq_pmo_resolvqmgr
, tvb
, offset
+ 80, 48, p_mq_parm
->mq_str_enc
);
2005 proto_tree_add_item(mq_tree
, hf_mq_pmo_recspresent
, tvb
, offset
+ 128, 4, p_mq_parm
->mq_int_enc
);
2006 proto_tree_add_item(mq_tree
, hf_mq_pmo_putmsgrecfld
, tvb
, offset
+ 132, 4, p_mq_parm
->mq_int_enc
);
2007 proto_tree_add_item(mq_tree
, hf_mq_pmo_putmsgrecofs
, tvb
, offset
+ 136, 4, p_mq_parm
->mq_int_enc
);
2008 proto_tree_add_item(mq_tree
, hf_mq_pmo_resprecofs
, tvb
, offset
+ 140, 4, p_mq_parm
->mq_int_enc
);
2009 proto_tree_add_item(mq_tree
, hf_mq_pmo_putmsgrecptr
, tvb
, offset
+ 144, 4, p_mq_parm
->mq_int_enc
);
2010 proto_tree_add_item(mq_tree
, hf_mq_pmo_resprecptr
, tvb
, offset
+ 148, 4, p_mq_parm
->mq_int_enc
);
2015 gint iNbrRecords
= 0;
2016 guint32 iRecFlags
= 0;
2018 iNbrRecords
= tvb_get_guint32_endian(tvb
, offset
+ 128, p_mq_parm
->mq_int_enc
);
2019 iRecFlags
= tvb_get_guint32_endian(tvb
, offset
+ 132, p_mq_parm
->mq_int_enc
);
2021 if (iNbrRecords
> 0)
2023 gint iOffsetPMR
= 0;
2026 *iDistributionListSize
= iNbrRecords
;
2027 iOffsetPMR
= tvb_get_guint32_endian(tvb
, offset
+ 136, p_mq_parm
->mq_int_enc
);
2028 iOffsetRR
= tvb_get_guint32_endian(tvb
, offset
+ 140, p_mq_parm
->mq_int_enc
);
2029 iSize
+= dissect_mq_pmr(tvb
, tree
, offset
+ iSize
, iNbrRecords
, iOffsetPMR
, iRecFlags
, p_mq_parm
);
2030 iSize
+= dissect_mq_rr(tvb
, tree
, offset
+ iSize
, iNbrRecords
, iOffsetRR
, p_mq_parm
);
2038 static gint
dissect_mq_od(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, gint offset
, mq_parm_t
*p_mq_parm
, gint
*iDistributionListSize
)
2042 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2043 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_OD
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_OD_EBCDIC
)
2045 /* The OD struct can be present in several messages at different levels */
2046 guint32 iVersion
= 0;
2047 iVersion
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2048 /* Compute length according to version */
2051 case 1: iSize
= 168; break;
2052 case 2: iSize
= 200; break;
2053 case 3: iSize
= 336; break;
2054 case 4: iSize
= 336+3*20+4; break;
2057 if (iSize
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSize
)
2059 gint iNbrRecords
= 0;
2064 iNbrRecords
= tvb_get_guint32_endian(tvb
, offset
+ 168, p_mq_parm
->mq_int_enc
);
2066 uTyp
= tvb_get_guint32_endian(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2067 sObj
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 12, 48, p_mq_parm
->mq_str_enc
);
2068 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Typ=%s", try_val_to_str(uTyp
, GET_VALSV(objtype
)));
2069 if (strip_trailing_blanks(sObj
, 48) > 0)
2071 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Obj=%s", sObj
);
2076 proto_tree
*mq_tree
;
2079 ti
= proto_tree_add_text(tree
, tvb
, offset
, iSize
, MQ_TEXT_OD
);
2080 mq_tree
= proto_item_add_subtree(ti
, ett_mq_od
);
2082 proto_tree_add_item(mq_tree
, hf_mq_od_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2083 proto_tree_add_item(mq_tree
, hf_mq_od_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2084 proto_tree_add_item(mq_tree
, hf_mq_od_objecttype
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2085 proto_tree_add_item(mq_tree
, hf_mq_od_objectname
, tvb
, offset
+ 12, 48, p_mq_parm
->mq_str_enc
);
2086 proto_tree_add_item(mq_tree
, hf_mq_od_objqmgrname
, tvb
, offset
+ 60, 48, p_mq_parm
->mq_str_enc
);
2087 proto_tree_add_item(mq_tree
, hf_mq_od_dynqname
, tvb
, offset
+ 108, 48, p_mq_parm
->mq_str_enc
);
2088 proto_tree_add_item(mq_tree
, hf_mq_od_altuserid
, tvb
, offset
+ 156, 12, p_mq_parm
->mq_str_enc
);
2092 proto_tree_add_item(mq_tree
, hf_mq_od_recspresent
, tvb
, offset
+ 168, 4, p_mq_parm
->mq_int_enc
);
2093 proto_tree_add_item(mq_tree
, hf_mq_od_knowndstcnt
, tvb
, offset
+ 172, 4, p_mq_parm
->mq_int_enc
);
2094 proto_tree_add_item(mq_tree
, hf_mq_od_unknowdstcnt
, tvb
, offset
+ 176, 4, p_mq_parm
->mq_int_enc
);
2095 proto_tree_add_item(mq_tree
, hf_mq_od_invaldstcnt
, tvb
, offset
+ 180, 4, p_mq_parm
->mq_int_enc
);
2096 proto_tree_add_item(mq_tree
, hf_mq_od_objrecofs
, tvb
, offset
+ 184, 4, p_mq_parm
->mq_int_enc
);
2097 proto_tree_add_item(mq_tree
, hf_mq_od_resprecofs
, tvb
, offset
+ 188, 4, p_mq_parm
->mq_int_enc
);
2098 proto_tree_add_item(mq_tree
, hf_mq_od_objrecptr
, tvb
, offset
+ 192, 4, p_mq_parm
->mq_int_enc
);
2099 proto_tree_add_item(mq_tree
, hf_mq_od_resprecptr
, tvb
, offset
+ 196, 4, p_mq_parm
->mq_int_enc
);
2103 proto_tree_add_item(mq_tree
, hf_mq_od_altsecurid
, tvb
, offset
+ 200, 40, p_mq_parm
->mq_str_enc
);
2104 proto_tree_add_item(mq_tree
, hf_mq_od_resolvqname
, tvb
, offset
+ 240, 48, p_mq_parm
->mq_str_enc
);
2105 proto_tree_add_item(mq_tree
, hf_mq_od_resolvqmgrnm
, tvb
, offset
+ 288, 48, p_mq_parm
->mq_str_enc
);
2109 dissect_mq_charv(tvb
, mq_tree
, offset
+336, 20, ett_mq_od_objstr
, (guint8
*)"Object string", p_mq_parm
);
2110 dissect_mq_charv(tvb
, mq_tree
, offset
+356, 20, ett_mq_od_selstr
, (guint8
*)"Selection string", p_mq_parm
);
2111 dissect_mq_charv(tvb
, mq_tree
, offset
+376, 20, ett_mq_od_resobjstr
, (guint8
*)"Resolved object string", p_mq_parm
);
2112 proto_tree_add_item(mq_tree
, hf_mq_od_resolvobjtyp
, tvb
, offset
+ 396, 4, p_mq_parm
->mq_int_enc
);
2115 if (iNbrRecords
> 0)
2120 *iDistributionListSize
= iNbrRecords
;
2121 iOffsetOR
= tvb_get_guint32_endian(tvb
, offset
+ 184, p_mq_parm
->mq_int_enc
);
2122 iOffsetRR
= tvb_get_guint32_endian(tvb
, offset
+ 188, p_mq_parm
->mq_int_enc
);
2124 iSize
+= dissect_mq_or(tvb
, tree
, offset
, iNbrRecords
, iOffsetOR
, p_mq_parm
);
2125 iSize
+= dissect_mq_rr(tvb
, tree
, offset
, iNbrRecords
, iOffsetRR
, p_mq_parm
);
2132 static gint
dissect_mq_xid(tvbuff_t
*tvb
, proto_tree
*tree
, mq_parm_t
*p_mq_parm
, gint offset
)
2135 if (tvb_length_remaining(tvb
, offset
) >= 6)
2137 guint8 iXidLength
= 0;
2138 guint8 iBqLength
= 0;
2140 iXidLength
= tvb_get_guint8(tvb
, offset
+ 4);
2141 iBqLength
= tvb_get_guint8(tvb
, offset
+ 5);
2142 iSizeXid
= 6 + iXidLength
+ iBqLength
;
2144 if (tvb_length_remaining(tvb
, offset
) >= iSizeXid
)
2148 proto_tree
*mq_tree
;
2151 ti
= proto_tree_add_text(tree
, tvb
, offset
, iSizeXid
, MQ_TEXT_XID
);
2152 mq_tree
= proto_item_add_subtree(ti
, ett_mq_xa_xid
);
2154 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_formatid
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2155 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_glbxid_len
, tvb
, offset
+ 4, 1, p_mq_parm
->mq_int_enc
);
2156 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_brq_length
, tvb
, offset
+ 5, 1, p_mq_parm
->mq_int_enc
);
2157 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_globalxid
, tvb
, offset
+ 6, iXidLength
, ENC_NA
);
2158 proto_tree_add_item(mq_tree
, hf_mq_xa_xid_brq
, tvb
, offset
+ 6 + iXidLength
, iBqLength
, ENC_NA
);
2160 iSizeXid
+= (4 - (iSizeXid
% 4)) % 4; /* Pad for alignment with 4 byte word boundary */
2161 if (tvb_length_remaining(tvb
, offset
) < iSizeXid
)
2169 static gint
dissect_mq_sid(tvbuff_t
*tvb
, proto_tree
*tree
, mq_parm_t
*p_mq_parm
, gint offset
)
2174 gint bOffset
= offset
;
2176 iSIDL
= tvb_get_guint8(tvb
, offset
);
2177 proto_tree_add_item(tree
, hf_mq_sidlen
, tvb
, offset
, 1, p_mq_parm
->mq_int_enc
);
2181 iSID
= tvb_get_guint8(tvb
, offset
);
2182 proto_tree_add_item(tree
, hf_mq_sidtyp
, tvb
, offset
, 1, p_mq_parm
->mq_int_enc
);
2184 if (iSID
== MQ_MQSIDT_NT_SECURITY_ID
)
2186 offset
= dissect_nt_sid(tvb
, offset
, tree
, "SID", (char **)&sid_str
, -1);
2190 proto_tree_add_item(tree
, hf_mq_securityid
, tvb
, offset
, 40, ENC_NA
);
2194 return offset
- bOffset
;
2196 static gint
dissect_mq_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*mqroot_tree
, gint offset
, mq_parm_t
*p_mq_parm
)
2201 iFAPLvl
= tvb_get_guint8(tvb
, offset
+ 4);
2205 else if (iFAPLvl
< 10)
2210 if (iSize
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSize
)
2213 sChannel
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 24, 20, p_mq_parm
->mq_str_enc
);
2214 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " FAPLvl=%d", iFAPLvl
);
2215 if (strip_trailing_blanks(sChannel
, 20) > 0)
2217 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", CHL=%s", sChannel
);
2222 sQMgr
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 48, 48, p_mq_parm
->mq_str_enc
);
2223 if (strip_trailing_blanks(sQMgr
, 48) > 0)
2225 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", QM=%s", sQMgr
);
2227 p_mq_parm
->mq_id_ccsid
.ccsid
= (guint32
)tvb_get_guint16_endian(tvb
, offset
+ 46, p_mq_parm
->mq_int_enc
);
2231 proto_item
*ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSize
, MQ_TEXT_ID
);
2232 proto_tree
*mq_tree
= proto_item_add_subtree(ti
, ett_mq_id
);
2234 proto_tree_add_item(mq_tree
, hf_mq_id_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2235 proto_tree_add_item(mq_tree
, hf_mq_id_FapLevel
, tvb
, offset
+ 4, 1, ENC_BIG_ENDIAN
);
2237 /* ID Capability flags 1 */
2238 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 44, hf_mq_id_icf1
, ett_mq_id_icf1
, pf_flds_icf1
, ENC_BIG_ENDIAN
);
2239 proto_tree_add_item(mq_tree
, hf_mq_id_Eicf1
, tvb
, offset
+ 6, 1, ENC_BIG_ENDIAN
);
2242 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 7, hf_mq_id_ief1
, ett_mq_id_ief1
, pf_flds_ief1
, ENC_BIG_ENDIAN
);
2244 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved
, tvb
, offset
+ 8, 2, p_mq_parm
->mq_int_enc
);
2245 proto_tree_add_item(mq_tree
, hf_mq_id_MaxMsgBatch
, tvb
, offset
+ 10, 2, p_mq_parm
->mq_int_enc
);
2246 proto_tree_add_item(mq_tree
, hf_mq_id_MaxTrSize
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2247 proto_tree_add_item(mq_tree
, hf_mq_id_MaxMsgSize
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2248 proto_tree_add_item(mq_tree
, hf_mq_id_SeqWrapVal
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2249 proto_tree_add_item(mq_tree
, hf_mq_id_channel
, tvb
, offset
+ 24, 20, p_mq_parm
->mq_str_enc
);
2253 /* ID Capability flags 2 */
2254 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 44, hf_mq_id_icf2
, ett_mq_id_icf2
, pf_flds_icf2
, ENC_BIG_ENDIAN
);
2255 proto_tree_add_item(mq_tree
, hf_mq_id_Eicf2
, tvb
, offset
+ 45, 1, ENC_BIG_ENDIAN
);
2257 proto_tree_add_item(mq_tree
, hf_mq_id_ccsid
, tvb
, offset
+ 46, 2, p_mq_parm
->mq_int_enc
);
2258 proto_tree_add_item(mq_tree
, hf_mq_id_qmgrname
, tvb
, offset
+ 48, 48, p_mq_parm
->mq_str_enc
);
2259 proto_tree_add_item(mq_tree
, hf_mq_id_HBInterval
, tvb
, offset
+ 96, 4, p_mq_parm
->mq_int_enc
);
2260 proto_tree_add_item(mq_tree
, hf_mq_id_EFLLength
, tvb
, offset
+ 100, 2, p_mq_parm
->mq_int_enc
);
2264 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 102, hf_mq_id_ief2
, ett_mq_id_ief2
, pf_flds_ief2
, ENC_BIG_ENDIAN
);
2265 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved1
, tvb
, offset
+ 103, 1, ENC_BIG_ENDIAN
);
2267 proto_tree_add_item(mq_tree
, hf_mq_id_HdrCprsLst
, tvb
, offset
+ 104, 2, p_mq_parm
->mq_int_enc
);
2268 proto_tree_add_item(mq_tree
, hf_mq_id_MsgCprsLst
, tvb
, offset
+ 106, 16, p_mq_parm
->mq_int_enc
);
2269 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved2
, tvb
, offset
+ 122, 2, p_mq_parm
->mq_int_enc
);
2270 proto_tree_add_item(mq_tree
, hf_mq_id_SSLKeyRst
, tvb
, offset
+ 124, 4, p_mq_parm
->mq_int_enc
);
2271 proto_tree_add_item(mq_tree
, hf_mq_id_ConvBySkt
, tvb
, offset
+ 128, 4, p_mq_parm
->mq_int_enc
);
2273 /* ID Capability flags 3 */
2274 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 132, hf_mq_id_icf3
, ett_mq_id_icf3
, pf_flds_icf3
, ENC_BIG_ENDIAN
);
2275 proto_tree_add_item(mq_tree
, hf_mq_id_Eicf3
, tvb
, offset
+ 133, 1, ENC_BIG_ENDIAN
);
2277 proto_tree_add_item(mq_tree
, hf_mq_id_Reserved3
, tvb
, offset
+ 134, 2, p_mq_parm
->mq_int_enc
);
2278 proto_tree_add_item(mq_tree
, hf_mq_id_ProcessId
, tvb
, offset
+ 136, 4, p_mq_parm
->mq_int_enc
);
2279 proto_tree_add_item(mq_tree
, hf_mq_id_ThreadId
, tvb
, offset
+ 140, 4, p_mq_parm
->mq_int_enc
);
2280 proto_tree_add_item(mq_tree
, hf_mq_id_TraceId
, tvb
, offset
+ 144, 4, p_mq_parm
->mq_int_enc
);
2281 proto_tree_add_item(mq_tree
, hf_mq_id_ProdId
, tvb
, offset
+ 148, 12, p_mq_parm
->mq_str_enc
);
2282 proto_tree_add_item(mq_tree
, hf_mq_id_mqmid
, tvb
, offset
+ 160, 48, p_mq_parm
->mq_str_enc
);
2289 static gint
dissect_mq_md(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, mq_parm_t
*p_mq_parm
, gboolean bDecode
)
2293 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2294 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_MD
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_MD_EBCDIC
)
2296 guint32 iVersion
= 0;
2297 iVersion
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2298 /* Compute length according to version */
2301 case 1: iSize
= 324; break;
2302 case 2: iSize
= 364; break;
2305 if (bDecode
&& iSize
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSize
)
2307 p_mq_parm
->iOfsEnc
= offset
+ 24;
2308 p_mq_parm
->iOfsCcs
= offset
+ 28;
2309 p_mq_parm
->iOfsFmt
= offset
+ 32;
2311 p_mq_parm
->mq_md_ccsid
.encod
= tvb_get_guint32_endian(tvb
, offset
+ 24, p_mq_parm
->mq_int_enc
);
2312 p_mq_parm
->mq_md_ccsid
.ccsid
= tvb_get_guint32_endian(tvb
, offset
+ 28, p_mq_parm
->mq_int_enc
);
2315 proto_item
*ti
= proto_tree_add_text(tree
, tvb
, offset
, iSize
, MQ_TEXT_MD
);
2316 proto_tree
*mq_tree
= proto_item_add_subtree(ti
, ett_mq_md
);
2318 proto_tree_add_item(mq_tree
, hf_mq_md_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2319 proto_tree_add_item(mq_tree
, hf_mq_md_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2320 proto_tree_add_item(mq_tree
, hf_mq_md_report
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2321 proto_tree_add_item(mq_tree
, hf_mq_md_msgtype
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2322 proto_tree_add_item(mq_tree
, hf_mq_md_expiry
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2323 proto_tree_add_item(mq_tree
, hf_mq_md_feedback
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2324 dissect_mq_encoding(mq_tree
, hf_mq_md_encoding
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
2325 proto_tree_add_item(mq_tree
, hf_mq_md_ccsid
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
2326 proto_tree_add_item(mq_tree
, hf_mq_md_format
, tvb
, offset
+ 32, 8, p_mq_parm
->mq_str_enc
);
2327 proto_tree_add_item(mq_tree
, hf_mq_md_priority
, tvb
, offset
+ 40, 4, p_mq_parm
->mq_int_enc
);
2328 proto_tree_add_item(mq_tree
, hf_mq_md_persistence
, tvb
, offset
+ 44, 4, p_mq_parm
->mq_int_enc
);
2329 proto_tree_add_item(mq_tree
, hf_mq_md_msgid
, tvb
, offset
+ 48, 24, ENC_NA
);
2330 proto_tree_add_item(mq_tree
, hf_mq_md_correlid
, tvb
, offset
+ 72, 24, ENC_NA
);
2331 proto_tree_add_item(mq_tree
, hf_mq_md_backoutcnt
, tvb
, offset
+ 96, 4, p_mq_parm
->mq_int_enc
);
2332 proto_tree_add_item(mq_tree
, hf_mq_md_replytoq
, tvb
, offset
+ 100, 48, p_mq_parm
->mq_str_enc
);
2333 proto_tree_add_item(mq_tree
, hf_mq_md_replytoqmgr
, tvb
, offset
+ 148, 48, p_mq_parm
->mq_str_enc
);
2334 proto_tree_add_item(mq_tree
, hf_mq_md_userid
, tvb
, offset
+ 196, 12, p_mq_parm
->mq_str_enc
);
2335 proto_tree_add_item(mq_tree
, hf_mq_md_acttoken
, tvb
, offset
+ 208, 32, ENC_NA
);
2336 proto_tree_add_item(mq_tree
, hf_mq_md_appliddata
, tvb
, offset
+ 240, 32, p_mq_parm
->mq_str_enc
);
2337 proto_tree_add_item(mq_tree
, hf_mq_md_putappltype
, tvb
, offset
+ 272, 4, p_mq_parm
->mq_int_enc
);
2338 proto_tree_add_item(mq_tree
, hf_mq_md_putapplname
, tvb
, offset
+ 276, 28, p_mq_parm
->mq_str_enc
);
2339 proto_tree_add_item(mq_tree
, hf_mq_md_putdate
, tvb
, offset
+ 304, 8, p_mq_parm
->mq_str_enc
);
2340 proto_tree_add_item(mq_tree
, hf_mq_md_puttime
, tvb
, offset
+ 312, 8, p_mq_parm
->mq_str_enc
);
2341 proto_tree_add_item(mq_tree
, hf_mq_md_apporigdata
, tvb
, offset
+ 320, 4, p_mq_parm
->mq_str_enc
);
2345 proto_tree_add_item(mq_tree
, hf_mq_md_groupid
, tvb
, offset
+ 324, 24, ENC_NA
);
2346 proto_tree_add_item(mq_tree
, hf_mq_md_msgseqnumber
, tvb
, offset
+ 348, 4, p_mq_parm
->mq_int_enc
);
2347 proto_tree_add_item(mq_tree
, hf_mq_md_offset
, tvb
, offset
+ 352, 4, p_mq_parm
->mq_int_enc
);
2348 proto_tree_add_item(mq_tree
, hf_mq_md_msgflags
, tvb
, offset
+ 356, 4, p_mq_parm
->mq_int_enc
);
2349 proto_tree_add_item(mq_tree
, hf_mq_md_origlen
, tvb
, offset
+ 360, 4, p_mq_parm
->mq_int_enc
);
2356 static gint
dissect_mq_fopa(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, mq_parm_t
*p_mq_parm
)
2360 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2361 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_FOPA
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_FOPA_EBCDIC
)
2363 iSize
= tvb_get_guint32_endian(tvb
, offset
+8, p_mq_parm
->mq_int_enc
);
2364 if (iSize
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSize
)
2368 proto_item
*ti
= proto_tree_add_text(tree
, tvb
, offset
, iSize
, MQ_TEXT_FOPA
);
2369 proto_tree
*mq_tree
= proto_item_add_subtree(ti
, ett_mq_fopa
);
2371 proto_tree_add_item(mq_tree
, hf_mq_fopa_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2372 proto_tree_add_item(mq_tree
, hf_mq_fopa_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2373 proto_tree_add_item(mq_tree
, hf_mq_fopa_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2374 proto_tree_add_item(mq_tree
, hf_mq_fopa_unknown1
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2375 proto_tree_add_item(mq_tree
, hf_mq_fopa_unknown2
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2376 proto_tree_add_item(mq_tree
, hf_mq_fopa_unknown3
, tvb
, offset
+ 20, 8, p_mq_parm
->mq_str_enc
);
2379 proto_tree_add_item(mq_tree
, hf_mq_fopa_qprotect
, tvb
, offset
+ 28, 48, p_mq_parm
->mq_int_enc
);
2380 proto_tree_add_item(mq_tree
, hf_mq_fopa_unknown4
, tvb
, offset
+ 76, 4, p_mq_parm
->mq_int_enc
);
2381 proto_tree_add_item(mq_tree
, hf_mq_fopa_unknown5
, tvb
, offset
+ 80, 4, p_mq_parm
->mq_int_enc
);
2388 static void dissect_mq_pdu(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
2391 guint32 iSegmentLength
= 0;
2392 guint32 iSizePayload
= 0;
2394 gboolean bPayload
= FALSE
;
2395 gboolean bEBCDIC
= FALSE
;
2396 gint iDistributionListSize
= 0;
2397 mq_parm_t
*p_mq_parm
;
2399 p_mq_parm
= wmem_new0(wmem_packet_scope(), mq_parm_t
);
2401 p_mq_parm
->mq_strucID
= MQ_STRUCTID_NULL
;
2402 p_mq_parm
->mq_int_enc
= ENC_BIG_ENDIAN
;
2403 p_mq_parm
->mq_str_enc
= ENC_UTF_8
|ENC_NA
;
2405 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "MQ");
2407 p_mq_parm
->iOfsEnc
= 0;
2408 p_mq_parm
->iOfsFmt
= 0;
2409 p_mq_parm
->iOfsCcs
= 0;
2410 if (tvb_length(tvb
) >= 4)
2412 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
2413 if (((p_mq_parm
->mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
||
2414 (p_mq_parm
->mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
2415 && tvb_length_remaining(tvb
, offset
) >= 28)
2417 proto_tree
*mq_tree
= NULL
;
2418 proto_tree
*mqroot_tree
= NULL
;
2419 proto_item
*ti
= NULL
;
2421 /* An MQ packet always starts with this structure*/
2423 gint iSizeMPF
= 0; /* Size Of Multiplexed Field */
2425 if ((p_mq_parm
->mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
2428 p_mq_parm
->mq_str_enc
= ENC_EBCDIC
|ENC_NA
;
2431 iSegmentLength
= tvb_get_ntohl(tvb
, offset
+ 4);
2433 if (p_mq_parm
->mq_strucID
== MQ_STRUCTID_TSHM
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_TSHM_EBCDIC
)
2435 if (tvb_length_remaining(tvb
, offset
) < 36)
2440 p_mq_parm
->mq_opcode
= tvb_get_guint8(tvb
, offset
+ iSizeMPF
+ 9);
2442 if (p_mq_parm
->mq_opcode
== MQ_TST_REQUEST_MSGS
|| p_mq_parm
->mq_opcode
== MQ_TST_ASYNC_MESSAGE
)
2444 p_mq_parm
->iOfsEnc
= offset
+ iSizeMPF
+ 20;
2445 p_mq_parm
->iOfsCcs
= offset
+ iSizeMPF
+ 24;
2446 p_mq_parm
->iOfsFmt
= offset
;
2448 p_mq_parm
->mq_int_enc
= (tvb_get_guint8(tvb
, offset
+ iSizeMPF
+ 8) == MQ_LITTLE_ENDIAN
? ENC_LITTLE_ENDIAN
: ENC_BIG_ENDIAN
);
2449 p_mq_parm
->mq_ctlf1
= tvb_get_guint8(tvb
, offset
+ iSizeMPF
+ 10);
2450 p_mq_parm
->mq_ctlf2
= tvb_get_guint8(tvb
, offset
+ iSizeMPF
+ 11);
2452 p_mq_parm
->mq_tsh_ccsid
.encod
= tvb_get_guint32_endian(tvb
, offset
+ iSizeMPF
+ 20, p_mq_parm
->mq_int_enc
);
2453 p_mq_parm
->mq_tsh_ccsid
.ccsid
= tvb_get_guint16_endian(tvb
, offset
+ iSizeMPF
+ 24, p_mq_parm
->mq_int_enc
);
2455 if (p_mq_parm
->mq_tsh_ccsid
.ccsid
== 500 && !bEBCDIC
)
2458 p_mq_parm
->mq_str_enc
= ENC_EBCDIC
|ENC_NA
;
2461 if (!mq_in_reassembly
)
2463 col_clear(pinfo
->cinfo
, COL_INFO
);
2464 col_append_sep_fstr(pinfo
->cinfo
, COL_INFO
, " | ", "%-17s", val_to_str(p_mq_parm
->mq_opcode
, mq_opcode_vals
, "Unknown (0x%02x)"));
2465 col_set_fence(pinfo
->cinfo
, COL_INFO
);
2470 if (p_mq_parm
->mq_opcode
!=MQ_TST_ASYNC_MESSAGE
)
2472 ti
= proto_tree_add_item(tree
, proto_mq
, tvb
, offset
, -1, ENC_NA
);
2473 proto_item_append_text(ti
, " (%s)", val_to_str(p_mq_parm
->mq_opcode
, mq_opcode_vals
, "Unknown (0x%02x)"));
2474 if (bEBCDIC
== TRUE
)
2475 proto_item_append_text(ti
, " (EBCDIC)");
2476 mqroot_tree
= proto_item_add_subtree(ti
, ett_mq
);
2483 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeTSH
, MQ_TEXT_TSH
);
2484 mq_tree
= proto_item_add_subtree(ti
, ett_mq_tsh
);
2486 proto_tree_add_item(mq_tree
, hf_mq_tsh_StructID
, tvb
, offset
+ 0, 4, p_mq_parm
->mq_str_enc
);
2487 proto_tree_add_item(mq_tree
, hf_mq_tsh_mqseglen
, tvb
, offset
+ 4, 4, ENC_BIG_ENDIAN
);
2491 proto_tree_add_item(mq_tree
, hf_mq_tsh_convid
, tvb
, offset
+ 8, 4, ENC_BIG_ENDIAN
);
2492 proto_tree_add_item(mq_tree
, hf_mq_tsh_requestid
, tvb
, offset
+ 12, 4, ENC_BIG_ENDIAN
);
2495 proto_tree_add_item(mq_tree
, hf_mq_tsh_byteorder
, tvb
, offset
+ iSizeMPF
+ 8, 1, ENC_BIG_ENDIAN
);
2496 proto_tree_add_item(mq_tree
, hf_mq_tsh_opcode
, tvb
, offset
+ iSizeMPF
+ 9, 1, ENC_BIG_ENDIAN
);
2498 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ iSizeMPF
+ 10, hf_mq_tsh_ctlflgs1
, ett_mq_tsh_tcf
, pf_flds_tcf
, ENC_BIG_ENDIAN
);
2499 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ iSizeMPF
+ 11, hf_mq_tsh_ctlflgs2
, ett_mq_tsh_tcf2
, pf_flds_tcf2
, ENC_BIG_ENDIAN
);
2501 proto_tree_add_item(mq_tree
, hf_mq_tsh_luwid
, tvb
, offset
+ iSizeMPF
+ 12, 8, ENC_NA
);
2502 dissect_mq_encoding(mq_tree
, hf_mq_tsh_encoding
, tvb
, offset
+ iSizeMPF
+ 20, 4, p_mq_parm
->mq_int_enc
);
2503 proto_tree_add_item(mq_tree
, hf_mq_tsh_ccsid
, tvb
, offset
+ iSizeMPF
+ 24, 2, p_mq_parm
->mq_int_enc
);
2504 proto_tree_add_item(mq_tree
, hf_mq_tsh_reserved
, tvb
, offset
+ iSizeMPF
+ 26, 2, p_mq_parm
->mq_int_enc
);
2508 /* Now dissect the embedded structures */
2509 if (tvb_length_remaining(tvb
, offset
) >= 4)
2511 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
2512 if (((p_mq_parm
->mq_ctlf1
& MQ_TCF_FIRST
) != 0) || p_mq_parm
->mq_opcode
< 0x80)
2514 /* First MQ segment (opcodes below 0x80 never span several TSH) */
2516 if (p_mq_parm
->mq_opcode
>= 0x80 && p_mq_parm
->mq_opcode
<= 0x9F && tvb_length_remaining(tvb
, offset
) >= 16)
2518 guint32 iReturnCode
= 0;
2520 iReturnCode
= tvb_get_guint32_endian(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2521 iHdl
= tvb_get_guint32_endian(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
2522 if (iHdl
!= 0 && iHdl
!= 0xffffffff)
2523 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%08x", iHdl
);
2524 if (iReturnCode
!= 0)
2525 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " [RC=%d]", iReturnCode
);
2529 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeAPI
, MQ_TEXT_API
);
2530 mq_tree
= proto_item_add_subtree(ti
, ett_mq_api
);
2532 proto_tree_add_item(mq_tree
, hf_mq_api_replylen
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2533 proto_tree_add_item(mq_tree
, hf_mq_api_compcode
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2534 proto_tree_add_item(mq_tree
, hf_mq_api_reascode
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2535 proto_tree_add_item(mq_tree
, hf_mq_api_objecthdl
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2538 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2540 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_MSH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_MSH_EBCDIC
) && tvb_length_remaining(tvb
, offset
) >= 20)
2543 iSizePayload
= tvb_get_guint32_endian(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2547 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSize
, MQ_TEXT_MSH
);
2548 mq_tree
= proto_item_add_subtree(ti
, ett_mq_msh
);
2550 proto_tree_add_item(mq_tree
, hf_mq_msh_StructID
, tvb
, offset
+ 0, 4, p_mq_parm
->mq_str_enc
);
2551 proto_tree_add_item(mq_tree
, hf_mq_msh_seqnum
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2552 proto_tree_add_item(mq_tree
, hf_mq_msh_datalength
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2553 proto_tree_add_item(mq_tree
, hf_mq_msh_unknown1
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2554 proto_tree_add_item(mq_tree
, hf_mq_msh_msglength
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2558 else if (p_mq_parm
->mq_opcode
== MQ_TST_CONAUTH_INFO
&& tvb_length_remaining(tvb
, offset
) >= 20)
2564 iUsr
= tvb_get_guint32_endian(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2565 iPsw
= tvb_get_guint32_endian(tvb
, offset
+ 20, p_mq_parm
->mq_int_enc
);
2569 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSize
, MQ_TEXT_CAUT
);
2570 mq_tree
= proto_item_add_subtree(ti
, ett_mq_caut
);
2572 proto_tree_add_item(mq_tree
, hf_mq_caut_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
2573 proto_tree_add_item(mq_tree
, hf_mq_caut_AuthType
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2574 proto_tree_add_item(mq_tree
, hf_mq_caut_UsrMaxLen
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2575 proto_tree_add_item(mq_tree
, hf_mq_caut_PwdMaxLen
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2576 proto_tree_add_item(mq_tree
, hf_mq_caut_UsrLength
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2577 proto_tree_add_item(mq_tree
, hf_mq_caut_PwdLength
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
2580 proto_tree_add_item(mq_tree
, hf_mq_caut_usr
, tvb
, offset
+ 24, iUsr
, p_mq_parm
->mq_str_enc
);
2582 proto_tree_add_item(mq_tree
, hf_mq_caut_psw
, tvb
, offset
+ 24 + iUsr
, iPsw
, p_mq_parm
->mq_str_enc
);
2584 offset
+= iSize
+ iUsr
+ iPsw
;
2585 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2587 else if (p_mq_parm
->mq_opcode
== MQ_TST_SOCKET_ACTION
&& tvb_length_remaining(tvb
, offset
) >= 20)
2592 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeAPI
, MQ_TEXT_SOCKET
);
2593 mq_tree
= proto_item_add_subtree(ti
, ett_mq_socket
);
2595 proto_tree_add_item(mq_tree
, hf_mq_socket_conversid
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2596 proto_tree_add_item(mq_tree
, hf_mq_socket_requestid
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2597 proto_tree_add_item(mq_tree
, hf_mq_socket_type
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2598 proto_tree_add_item(mq_tree
, hf_mq_socket_parm1
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2599 proto_tree_add_item(mq_tree
, hf_mq_socket_parm2
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2602 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2604 else if (p_mq_parm
->mq_opcode
== MQ_TST_STATUS
&& tvb_length_remaining(tvb
, offset
) >= 8)
2606 /* Some status are 28 bytes long and some are 36 bytes long */
2608 gint iStatusLength
= 0;
2610 iStatus
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2611 iStatusLength
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
2613 if (tvb_length_remaining(tvb
, offset
) >= iStatusLength
)
2616 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Code=%s", val_to_str(iStatus
, GET_VALSV(status
), "Unknown (0x%08x)"));
2620 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, 8, MQ_TEXT_STAT
);
2621 mq_tree
= proto_item_add_subtree(ti
, ett_mq_status
);
2623 proto_tree_add_item(mq_tree
, hf_mq_status_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2624 proto_tree_add_item(mq_tree
, hf_mq_status_code
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2626 if (iStatusLength
>= 12)
2627 proto_tree_add_item(mq_tree
, hf_mq_status_value
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2629 offset
+= iStatusLength
;
2632 else if (p_mq_parm
->mq_opcode
== MQ_TST_PING
&& tvb_length_remaining(tvb
, offset
) > 4)
2636 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, -1, MQ_TEXT_PING
);
2637 mq_tree
= proto_item_add_subtree(ti
, ett_mq_ping
);
2639 proto_tree_add_item(mq_tree
, hf_mq_ping_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2640 proto_tree_add_item(mq_tree
, hf_mq_ping_buffer
, tvb
, offset
+ 4, -1, ENC_NA
);
2642 offset
= tvb_length(tvb
);
2644 else if (p_mq_parm
->mq_opcode
== MQ_TST_RESET
&& tvb_length_remaining(tvb
, offset
) >= 8)
2648 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, -1, MQ_TEXT_RESET
);
2649 mq_tree
= proto_item_add_subtree(ti
, ett_mq_reset
);
2651 proto_tree_add_item(mq_tree
, hf_mq_reset_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2652 proto_tree_add_item(mq_tree
, hf_mq_reset_seqnum
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2654 offset
= tvb_length(tvb
);
2656 else if ((p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE
||
2657 p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN_REPLY
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE_REPLY
)
2658 && tvb_length_remaining(tvb
, offset
) >= 4)
2660 offset
+= dissect_mq_od(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
2663 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, 4, MQ_TEXT_OPEN
);
2664 mq_tree
= proto_item_add_subtree(ti
, ett_mq_open
);
2665 if (p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN
|| p_mq_parm
->mq_opcode
== MQ_TST_MQOPEN_REPLY
)
2667 dissect_mq_MQOO(tvb
, mq_tree
, offset
, ett_mq_open_option
, hf_mq_open_options
, p_mq_parm
);
2669 if (p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCLOSE_REPLY
)
2671 dissect_mq_MQCO(tvb
, mq_tree
, offset
, p_mq_parm
);
2675 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2676 offset
+= dissect_mq_fopa(tvb
, mqroot_tree
, offset
, p_mq_parm
);
2678 else if ((p_mq_parm
->mq_opcode
== MQ_TST_MQCONN
|| p_mq_parm
->mq_opcode
== MQ_TST_MQCONN_REPLY
) &&
2679 tvb_length_remaining(tvb
, offset
) > 0)
2684 /*iSizeCONN = ((iVersionID == 4 || iVersionID == 6) ? 120 : 112);*/ /* guess */
2685 /* The iVersionID is available in the previous ID segment, we should keep a state
2686 * Instead we rely on the segment length announced in the TSH */
2687 /* The MQCONN structure is special because it does not start with a structid */
2688 iSizeCONN
= iSegmentLength
- iSizeTSH
- iSizeAPI
;
2689 if (iSizeCONN
!= 112 && iSizeCONN
!= 120 && iSizeCONN
!= 260 && iSizeCONN
!= 332)
2692 if (iSizeCONN
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSizeCONN
)
2694 guint8
*sApplicationName
;
2696 sApplicationName
= format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 48, 28, p_mq_parm
->mq_str_enc
), 28, '.');
2697 if (strip_trailing_blanks(sApplicationName
, 28) > 0)
2699 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " App=%s", sApplicationName
);
2701 sQMgr
= format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
, 48, p_mq_parm
->mq_str_enc
), 28, '.');
2702 if (strip_trailing_blanks(sQMgr
, 48) > 0)
2704 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " QM=%s", sQMgr
);
2707 #define do_proto_add_item(a, b) b; nofs += a;
2711 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeCONN
, MQ_TEXT_CONN
);
2712 mq_tree
= proto_item_add_subtree(ti
, ett_mq_conn
);
2714 do_proto_add_item(48, proto_tree_add_item(mq_tree
, hf_mq_conn_QMgr
, tvb
, nofs
, 48, p_mq_parm
->mq_str_enc
));
2715 do_proto_add_item(28, proto_tree_add_item(mq_tree
, hf_mq_conn_appname
, tvb
, nofs
, 28, p_mq_parm
->mq_str_enc
));
2716 do_proto_add_item( 4, proto_tree_add_item(mq_tree
, hf_mq_conn_apptype
, tvb
, nofs
, 4, p_mq_parm
->mq_int_enc
));
2717 do_proto_add_item(32, proto_tree_add_item(mq_tree
, hf_mq_conn_acttoken
, tvb
, nofs
, 32, ENC_NA
));
2719 if (iSizeCONN
>= 120)
2721 do_proto_add_item(4, proto_tree_add_item(mq_tree
, hf_mq_conn_version
, tvb
, nofs
, 4, p_mq_parm
->mq_int_enc
));
2722 do_proto_add_item(4, proto_tree_add_item(mq_tree
, hf_mq_conn_options
, tvb
, nofs
, 4, p_mq_parm
->mq_int_enc
));
2724 if (iSizeCONN
>= 260)
2726 proto_tree
*mq_tree_sub
;
2728 ti
= proto_tree_add_text(mq_tree
, tvb
, nofs
, iSizeCONN
- nofs
, MQ_TEXT_FCNO
);
2729 mq_tree_sub
= proto_item_add_subtree(ti
, ett_mq_fcno
);
2731 do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_StructID
, tvb
, nofs
, 4, p_mq_parm
->mq_str_enc
));
2732 do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_unknown00
, tvb
, nofs
, 4, p_mq_parm
->mq_int_enc
));
2733 do_proto_add_item( 4, proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_unknown01
, tvb
, nofs
, 4, p_mq_parm
->mq_int_enc
));
2735 if (iSizeCONN
== 260)
2737 do_proto_add_item( 12, proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_msgid
, tvb
, nofs
, 12, p_mq_parm
->mq_str_enc
));
2738 do_proto_add_item( 48, proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_mqmid
, tvb
, nofs
, 48, p_mq_parm
->mq_str_enc
));
2739 do_proto_add_item( 68, proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_unknown02
, tvb
, nofs
, 68, ENC_NA
));
2741 if (iSizeCONN
>= 332)
2743 do_proto_add_item(152, proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_msgid
, tvb
, nofs
, 152, p_mq_parm
->mq_str_enc
));
2744 proto_tree_add_item(mq_tree_sub
, hf_mq_fcno_mqmid
, tvb
, nofs
, 48, p_mq_parm
->mq_int_enc
);
2748 #undef do_proto_add_item
2749 offset
+= iSizeCONN
;
2752 else if ((p_mq_parm
->mq_opcode
== MQ_TST_MQINQ
|| p_mq_parm
->mq_opcode
== MQ_TST_MQINQ_REPLY
|| p_mq_parm
->mq_opcode
== MQ_TST_MQSET
) && tvb_length_remaining(tvb
, offset
) >= 12)
2754 /* The MQINQ/MQSET structure is special because it does not start with a structid */
2761 iNbSelectors
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
2762 iNbIntegers
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2763 iCharLen
= tvb_get_guint32_endian(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
2767 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, -1, MQ_TEXT_INQ
);
2768 mq_tree
= proto_item_add_subtree(ti
, ett_mq_inq
);
2770 proto_tree_add_item(mq_tree
, hf_mq_inq_nbsel
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2771 proto_tree_add_item(mq_tree
, hf_mq_inq_nbint
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2772 proto_tree_add_item(mq_tree
, hf_mq_inq_charlen
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2775 if (tvb_length_remaining(tvb
, offset
+ iOffsetINQ
) >= iNbSelectors
* 4)
2779 for (iSelector
= 0; iSelector
< iNbSelectors
; iSelector
++)
2781 proto_tree_add_item(mq_tree
, hf_mq_inq_sel
, tvb
, offset
+ iOffsetINQ
+ iSelector
* 4, 4, p_mq_parm
->mq_int_enc
);
2784 iOffsetINQ
+= iNbSelectors
* 4;
2785 if (p_mq_parm
->mq_opcode
== MQ_TST_MQINQ_REPLY
|| p_mq_parm
->mq_opcode
== MQ_TST_MQSET
)
2787 gint iSizeINQValues
;
2788 iSizeINQValues
= iNbIntegers
* 4 + iCharLen
;
2789 if (tvb_length_remaining(tvb
, offset
+ iOffsetINQ
) >= iSizeINQValues
)
2794 for (iInteger
= 0; iInteger
< iNbIntegers
; iInteger
++)
2796 proto_tree_add_item(mq_tree
, hf_mq_inq_intvalue
, tvb
, offset
+ iOffsetINQ
+ iInteger
* 4, 4, p_mq_parm
->mq_int_enc
);
2799 iOffsetINQ
+= iNbIntegers
* 4;
2804 proto_tree_add_item(mq_tree
, hf_mq_inq_charvalues
, tvb
, offset
+ iOffsetINQ
, iCharLen
, p_mq_parm
->mq_str_enc
);
2810 offset
+= tvb_length(tvb
);
2812 else if (p_mq_parm
->mq_opcode
== MQ_TST_NOTIFICATION
)
2816 iHdl
= tvb_get_guint32_endian(tvb
, offset
+4, p_mq_parm
->mq_int_enc
);
2818 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%08x", iHdl
);
2822 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, -1, MQ_TEXT_NOTIFICATION
);
2823 mq_tree
= proto_item_add_subtree(ti
, ett_mq_notif
);
2825 proto_tree_add_item(mq_tree
, hf_mq_notif_vers
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2826 proto_tree_add_item(mq_tree
, hf_mq_notif_handle
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2827 proto_tree_add_item(mq_tree
, hf_mq_notif_code
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2828 proto_tree_add_item(mq_tree
, hf_mq_notif_value
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2831 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2833 else if (p_mq_parm
->mq_opcode
== MQ_TST_REQUEST_MSGS
)
2843 iHdl
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2844 iMaxMsgLen
= tvb_get_guint32_endian(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2845 iFlags
= tvb_get_guint32_endian(tvb
, offset
+ 32, p_mq_parm
->mq_int_enc
);
2846 iGlbMsgIdx
= tvb_get_guint32_endian(tvb
, offset
+ 36, p_mq_parm
->mq_int_enc
);
2847 if (iFlags
& 0x00000010)
2849 p_mq_parm
->mq_msgreq_ccsid
.encod
= tvb_get_guint32_endian(tvb
, offset
+ 44, p_mq_parm
->mq_int_enc
);
2850 p_mq_parm
->mq_msgreq_ccsid
.ccsid
= tvb_get_guint32_endian(tvb
, offset
+ 48, p_mq_parm
->mq_int_enc
);
2852 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%08x GlbMsgIdx=%d, MaxLen=%d",
2853 iHdl
, iGlbMsgIdx
, iMaxMsgLen
);
2857 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, -1, MQ_TEXT_REQMSG
);
2858 mq_tree
= proto_item_add_subtree(ti
, ett_mq_msg
);
2860 proto_tree_add_item(mq_tree
, hf_mq_msgreq_version
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2861 proto_tree_add_item(mq_tree
, hf_mq_msgreq_handle
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2862 proto_tree_add_item(mq_tree
, hf_mq_msgreq_RecvBytes
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2863 proto_tree_add_item(mq_tree
, hf_mq_msgreq_RqstBytes
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2864 proto_tree_add_item(mq_tree
, hf_mq_msgreq_MaxMsgLen
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2865 dissect_mq_MQGMO(tvb
, mq_tree
, offset
+ 20, ett_mq_gmo_option
, p_mq_parm
);
2867 proto_tree_add_item(mq_tree
, hf_mq_msgreq_WaitIntrv
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
2868 proto_tree_add_item(mq_tree
, hf_mq_msgreq_QueStatus
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
2869 proto_tree_add_item(mq_tree
, hf_mq_msgreq_RqstFlags
, tvb
, offset
+ 32, 4, p_mq_parm
->mq_int_enc
);
2870 proto_tree_add_item(mq_tree
, hf_mq_msgreq_GlbMsgIdx
, tvb
, offset
+ 36, 4, p_mq_parm
->mq_int_enc
);
2872 if (iFlags
& 0x00000010)
2874 proto_tree_add_item(mq_tree
, hf_mq_msgreq_SelectIdx
, tvb
, offset
+ 40, 2, p_mq_parm
->mq_int_enc
);
2875 proto_tree_add_item(mq_tree
, hf_mq_msgreq_MQMDVers
, tvb
, offset
+ 42, 2, p_mq_parm
->mq_int_enc
);
2876 proto_tree_add_item(mq_tree
, hf_mq_msgreq_ccsid
, tvb
, offset
+ 44, 4, p_mq_parm
->mq_int_enc
);
2877 dissect_mq_encoding(mq_tree
, hf_mq_msgreq_encoding
, tvb
, offset
+ 48, 4, p_mq_parm
->mq_int_enc
);
2878 proto_tree_add_item(mq_tree
, hf_mq_msgreq_MsgSeqNum
, tvb
, offset
+ 52, 4, p_mq_parm
->mq_int_enc
);
2879 proto_tree_add_item(mq_tree
, hf_mq_msgreq_offset
, tvb
, offset
+ 56, 4, p_mq_parm
->mq_int_enc
);
2880 dissect_mq_MQMO(tvb
, mq_tree
, offset
+ 60, ett_mq_gmo_matchoption
, p_mq_parm
);
2881 iOpt
= tvb_get_guint32_endian(tvb
, offset
+ 60, p_mq_parm
->mq_int_enc
);
2883 if (iOpt
& MQ_MQMO_MATCH_MSG_ID
)
2885 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchMsgId
, tvb
, offset
+ 64 + xOfs
, 24, p_mq_parm
->mq_str_enc
);
2888 if (iOpt
& MQ_MQMO_MATCH_CORREL_ID
)
2890 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchCorId
, tvb
, offset
+ 64 + xOfs
, 24, p_mq_parm
->mq_str_enc
);
2893 if (iOpt
& MQ_MQMO_MATCH_GROUP_ID
)
2895 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchGrpid
, tvb
, offset
+ 64 + xOfs
, 24, p_mq_parm
->mq_str_enc
);
2898 if (iOpt
& MQ_MQMO_MATCH_MSG_TOKEN
)
2900 proto_tree_add_item(mq_tree
, hf_mq_msgreq_mtchMsgTk
, tvb
, offset
+ 64 + xOfs
, 16, p_mq_parm
->mq_str_enc
);
2905 offset
+= (iFlags
& 0x00000010) ? (64+xOfs
) : 40;
2906 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2908 else if (p_mq_parm
->mq_opcode
== MQ_TST_ASYNC_MESSAGE
)
2918 iHdl
= tvb_get_guint32_endian(tvb
, offset
+ 4, p_mq_parm
->mq_int_enc
);
2919 iGlbMsgIdx
= tvb_get_guint32_endian(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
2920 iSegLength
= tvb_get_guint32_endian(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
2921 iSegmIndex
= tvb_get_guint16_endian(tvb
, offset
+ 20, p_mq_parm
->mq_int_enc
);
2923 if (iSegmIndex
== 0)
2925 iStrLen
= tvb_get_guint8(tvb
, offset
+ 54);
2926 iPadLen
= (2+1+iStrLen
) % 4;
2927 iPadLen
= (iPadLen
) ? 4-iPadLen
: 0;
2935 iHdrL
= (iSegmIndex
== 0) ? (54+1+iStrLen
+iPadLen
) : 24;
2937 if (!mq_in_reassembly
)
2939 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
2940 iHdl
, iGlbMsgIdx
, iSegmIndex
, iSegLength
);
2945 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iHdrL
, MQ_TEXT_ASYMSG
);
2946 mq_tree
= proto_item_add_subtree(ti
, ett_mq_msg
);
2948 proto_tree_add_item(mq_tree
, hf_mq_msgasy_version
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2949 proto_tree_add_item(mq_tree
, hf_mq_msgasy_handle
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2950 proto_tree_add_item(mq_tree
, hf_mq_msgasy_MsgIndex
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2951 proto_tree_add_item(mq_tree
, hf_mq_msgasy_GlbMsgIdx
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
2952 proto_tree_add_item(mq_tree
, hf_mq_msgasy_SegLength
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
2953 proto_tree_add_item(mq_tree
, hf_mq_msgasy_SegmIndex
, tvb
, offset
+ 20, 2, p_mq_parm
->mq_int_enc
);
2954 proto_tree_add_item(mq_tree
, hf_mq_msgasy_SeleIndex
, tvb
, offset
+ 22, 2, p_mq_parm
->mq_int_enc
);
2955 if (p_mq_parm
->mq_ctlf1
& MQ_TCF_FIRST
)
2957 proto_tree_add_item(mq_tree
, hf_mq_msgasy_ReasonCod
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
2958 proto_tree_add_item(mq_tree
, hf_mq_msgasy_ActMsgLen
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
2959 proto_tree_add_item(mq_tree
, hf_mq_msgasy_TotMsgLen
, tvb
, offset
+ 32, 4, p_mq_parm
->mq_int_enc
);
2960 proto_tree_add_item(mq_tree
, hf_mq_msgasy_MsgToken
, tvb
, offset
+ 36, 16, p_mq_parm
->mq_int_enc
);
2961 proto_tree_add_item(mq_tree
, hf_mq_msgasy_Status
, tvb
, offset
+ 52, 2, p_mq_parm
->mq_int_enc
);
2962 proto_tree_add_item(mq_tree
, hf_mq_msgasy_resolQNLn
, tvb
, offset
+ 54, 1, ENC_NA
);
2963 proto_tree_add_item(mq_tree
, hf_mq_msgasy_resolQNme
, tvb
, offset
+ 55, iStrLen
, p_mq_parm
->mq_str_enc
);
2965 proto_tree_add_item(mq_tree
, hf_mq_msgasy_padding
, tvb
, offset
+ 55 + iStrLen
, iPadLen
, p_mq_parm
->mq_str_enc
);
2969 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2971 iSizePayload
= tvb_length_remaining(tvb
, offset
);
2972 bPayload
= (iSizePayload
>0);
2974 else if ((p_mq_parm
->mq_opcode
== MQ_TST_SPI
|| p_mq_parm
->mq_opcode
== MQ_TST_SPI_REPLY
) && tvb_length_remaining(tvb
, offset
) >= 12)
2976 gint iOffsetSPI
= 0;
2977 guint32 iSpiVerb
= 0;
2979 p_mq_parm
->iOfsEnc
= offset
+ 12;
2980 p_mq_parm
->iOfsCcs
= offset
+ 16;
2981 p_mq_parm
->iOfsFmt
= offset
+ 20;
2983 iSpiVerb
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
2984 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " (%s)", val_to_str(iSpiVerb
, mq_spi_verbs_vals
, "Unknown (0x%08x)"));
2988 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, 12, MQ_TEXT_SPI
);
2989 mq_tree
= proto_item_add_subtree(ti
, ett_mq_spi
);
2991 proto_tree_add_item(mq_tree
, hf_mq_spi_verb
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
2992 proto_tree_add_item(mq_tree
, hf_mq_spi_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
2993 proto_tree_add_item(mq_tree
, hf_mq_spi_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
2997 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
2998 if (((p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxU
||
2999 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxU_EBCDIC
)
3000 && tvb_length_remaining(tvb
, offset
) >= 12)
3002 gint iSizeSPIMD
= 0;
3006 sStructId
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
, 4, ((p_mq_parm
->mq_strucID
& MQ_MASK_SPxx
) == MQ_STRUCTID_SPxx
) ? ENC_ASCII
: ENC_EBCDIC
);
3007 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, 12, "%s", sStructId
);
3008 mq_tree
= proto_item_add_subtree(ti
, ett_mq_spi_base
);
3010 proto_tree_add_item(mq_tree
, hf_mq_spi_base_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3011 proto_tree_add_item(mq_tree
, hf_mq_spi_base_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3012 proto_tree_add_item(mq_tree
, hf_mq_spi_base_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3015 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3017 if ((iSizeSPIMD
= dissect_mq_md(tvb
, mqroot_tree
, offset
, p_mq_parm
, TRUE
)) != 0)
3019 offset
+= iSizeSPIMD
;
3020 offset
+= dissect_mq_gmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
);
3021 offset
+= dissect_mq_pmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
3022 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3025 offset
+= dissect_mq_od(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
3027 if (((p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxO
||
3028 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxO_EBCDIC
||
3029 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxI
||
3030 (p_mq_parm
->mq_strucID
& MQ_MASK_SPxZ
) == MQ_STRUCTID_SPxI_EBCDIC
)
3031 && tvb_length_remaining(tvb
, offset
) >= 12)
3035 /* Dissect the common part of these structures */
3037 sStructId
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
, 4, ((p_mq_parm
->mq_strucID
& MQ_MASK_SPxx
) == MQ_STRUCTID_SPxx
) ? ENC_ASCII
: ENC_EBCDIC
);
3038 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, -1, "%s", sStructId
);
3039 mq_tree
= proto_item_add_subtree(ti
, ett_mq_spi_base
);
3041 proto_tree_add_item(mq_tree
, hf_mq_spi_base_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3042 proto_tree_add_item(mq_tree
, hf_mq_spi_base_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3043 proto_tree_add_item(mq_tree
, hf_mq_spi_base_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3046 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPQO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPQO_EBCDIC
)
3047 && tvb_length_remaining(tvb
, offset
) >= 16)
3051 gint iVerbNumber
= 0;
3052 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_nbverb
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3053 iVerbNumber
= tvb_get_guint32_endian(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
3055 if (tvb_length_remaining(tvb
, offset
) >= iVerbNumber
* 20 + 16)
3058 iOffsetSPI
= offset
+ 16;
3059 for (iVerb
= 0; iVerb
< iVerbNumber
; iVerb
++)
3061 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_verbid
, tvb
, iOffsetSPI
, 4, p_mq_parm
->mq_int_enc
);
3062 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_maxiover
, tvb
, iOffsetSPI
+ 4, 4, p_mq_parm
->mq_int_enc
);
3063 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_maxinver
, tvb
, iOffsetSPI
+ 8, 4, p_mq_parm
->mq_int_enc
);
3064 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_maxouver
, tvb
, iOffsetSPI
+ 12, 4, p_mq_parm
->mq_int_enc
);
3065 proto_tree_add_item(mq_tree
, hf_mq_spi_spqo_flags
, tvb
, iOffsetSPI
+ 16, 4, p_mq_parm
->mq_int_enc
);
3068 offset
+= iVerbNumber
* 20 + 16;
3072 else if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPAI
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPAI_EBCDIC
)
3073 && tvb_length_remaining(tvb
, offset
) >= 136)
3077 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_mode
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3078 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_unknown1
, tvb
, offset
+ 16, 48, p_mq_parm
->mq_str_enc
);
3079 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_unknown2
, tvb
, offset
+ 64, 48, p_mq_parm
->mq_str_enc
);
3080 proto_tree_add_item(mq_tree
, hf_mq_spi_spai_msgid
, tvb
, offset
+ 112, 24, p_mq_parm
->mq_str_enc
);
3084 else if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGI
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGI_EBCDIC
)
3085 && tvb_length_remaining(tvb
, offset
) >= 24)
3089 proto_tree_add_item(mq_tree
, hf_mq_spi_spgi_batchsz
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3090 proto_tree_add_item(mq_tree
, hf_mq_spi_spgi_batchint
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
3091 proto_tree_add_item(mq_tree
, hf_mq_spi_spgi_maxmsgsz
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
3095 else if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPPI
||
3096 p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPGO_EBCDIC
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_SPPI_EBCDIC
)
3097 && tvb_length_remaining(tvb
, offset
) >= 20)
3101 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 12, hf_mq_spi_spgo_options
, ett_mq_spi_options
, pf_flds_spiopt
, ENC_BIG_ENDIAN
);
3102 proto_tree_add_item(mq_tree
, hf_mq_spi_spgo_size
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
3104 iSizePayload
= tvb_get_guint32_endian(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
3112 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3116 else if ((p_mq_parm
->mq_opcode
>= 0xA0 && p_mq_parm
->mq_opcode
<= 0xB9) && tvb_length_remaining(tvb
, offset
) >= 16)
3118 /* The XA structures are special because they do not start with a structid */
3121 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, 16, "%s (%s)", MQ_TEXT_XA
,
3122 val_to_str(p_mq_parm
->mq_opcode
, mq_opcode_vals
, "Unknown (0x%02x)"));
3123 mq_tree
= proto_item_add_subtree(ti
, ett_mq_xa
);
3125 proto_tree_add_item(mq_tree
, hf_mq_xa_length
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
3126 proto_tree_add_item(mq_tree
, hf_mq_xa_returnvalue
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3128 proto_tree_add_bitmask(mq_tree
, tvb
, offset
+ 8, hf_mq_xa_tmflags
, ett_mq_xa_tmflags
, pf_flds_tmflags
, ENC_BIG_ENDIAN
);
3130 proto_tree_add_item(mq_tree
, hf_mq_xa_rmid
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3133 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
3134 || 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
3135 || p_mq_parm
->mq_opcode
== MQ_TST_XA_COMPLETE
)
3138 if ((iSizeXid
= dissect_mq_xid(tvb
, mqroot_tree
, p_mq_parm
, offset
)) != 0)
3141 else if ((p_mq_parm
->mq_opcode
== MQ_TST_XA_OPEN
|| p_mq_parm
->mq_opcode
== MQ_TST_XA_CLOSE
)
3142 && tvb_length_remaining(tvb
, offset
) >= 1)
3144 guint8 iXAInfoLength
= 0;
3145 iXAInfoLength
= tvb_get_guint8(tvb
, offset
);
3146 if (tvb_length_remaining(tvb
, offset
) >= iXAInfoLength
+ 1)
3150 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iXAInfoLength
+ 1, MQ_TEXT_XINF
);
3151 mq_tree
= proto_item_add_subtree(ti
, ett_mq_xa_info
);
3153 proto_tree_add_item(mq_tree
, hf_mq_xa_xainfo_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3154 proto_tree_add_item(mq_tree
, hf_mq_xa_xainfo_value
, tvb
, offset
+ 1, iXAInfoLength
, p_mq_parm
->mq_str_enc
);
3157 offset
+= 1 + iXAInfoLength
;
3159 else if ((p_mq_parm
->mq_opcode
== MQ_TST_XA_RECOVER
|| p_mq_parm
->mq_opcode
== MQ_TST_XA_RECOVER_REPLY
)
3160 && tvb_length_remaining(tvb
, offset
) >= 4)
3163 iNbXid
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
3166 proto_tree_add_item(mq_tree
, hf_mq_xa_count
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
3169 if (p_mq_parm
->mq_opcode
== MQ_TST_XA_RECOVER_REPLY
)
3172 for (iXid
= 0; iXid
< iNbXid
; iXid
++)
3175 if ((iSizeXid
= dissect_mq_xid(tvb
, mqroot_tree
, p_mq_parm
, offset
)) != 0)
3183 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_LPOO
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_LPOO_EBCDIC
) && tvb_length_remaining(tvb
, offset
) >= 32)
3186 guint iXtraData
= 0;
3188 iVersion
= tvb_get_guint32_endian(tvb
, offset
+4, p_mq_parm
->mq_int_enc
);
3192 iXtraData
= tvb_get_guint32_endian(tvb
, offset
+ 84, p_mq_parm
->mq_int_enc
);
3195 if (iSize
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSize
)
3199 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSize
, MQ_TEXT_LPOO
);
3200 mq_tree
= proto_item_add_subtree(ti
, ett_mq_lpoo
);
3202 proto_tree_add_item(mq_tree
, hf_mq_lpoo_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3203 proto_tree_add_item(mq_tree
, hf_mq_lpoo_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3205 dissect_mq_MQOO(tvb
, mq_tree
, offset
+8, ett_mq_lpoo_options
, hf_mq_lpoo_options
, p_mq_parm
);
3207 dissect_mq_LPOO_LPIOPTS(tvb
, mq_tree
, offset
+16, ett_mq_lpoo_lpiopts
, p_mq_parm
);
3208 proto_tree_add_item(mq_tree
, hf_mq_lpoo_defpersist
, tvb
, offset
+ 20, 4, p_mq_parm
->mq_int_enc
);
3209 proto_tree_add_item(mq_tree
, hf_mq_lpoo_defputresptype
, tvb
, offset
+ 24, 4, p_mq_parm
->mq_int_enc
);
3210 proto_tree_add_item(mq_tree
, hf_mq_lpoo_defreadahead
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3213 proto_tree_add_item(mq_tree
, hf_mq_lpoo_qprotect
, tvb
, offset
+ 32, 48, p_mq_parm
->mq_int_enc
);
3214 proto_tree_add_item(mq_tree
, hf_mq_lpoo_unknown6
, tvb
, offset
+ 80, 4, p_mq_parm
->mq_int_enc
);
3215 /*proto_tree_add_item(mq_tree, hf_mq_lpoo_unknown7, tvb, offset + 84, 2, p_mq_parm->mq_int_enc);*/
3216 proto_tree_add_item(mq_tree
, hf_mq_lpoo_xtradata
, tvb
, offset
+ 84, 4, p_mq_parm
->mq_int_enc
);
3220 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3223 if (p_mq_parm
->mq_opcode
== MQ_TST_SPI_REPLY
)
3226 iSizePayload
= iXtraData
;
3227 p_mq_parm
->iOfsFmt
= (offset
-iSize
);
3232 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_ID
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_ID_EBCDIC
) && tvb_length_remaining(tvb
, offset
) >= 5)
3234 offset
+= dissect_mq_id(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
);
3235 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3237 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_UID
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_UID_EBCDIC
) && tvb_length_remaining(tvb
, offset
) > 0)
3240 /* iSizeUID = (iVersionID < 5 ? 28 : 132); guess */
3241 /* The iVersionID is available in the previous ID segment, we should keep a state *
3242 * Instead we rely on the segment length announced in the TSH */
3243 iSizeUID
= iSegmentLength
- iSizeTSH
;
3244 if (iSizeUID
!= 28 && iSizeUID
!= 132)
3247 if (iSizeUID
!= 0 && tvb_length_remaining(tvb
, offset
) >= iSizeUID
)
3250 sUserId
= tvb_get_string_enc(wmem_packet_scope(), tvb
, offset
+ 4, 12, p_mq_parm
->mq_str_enc
);
3251 if (strip_trailing_blanks(sUserId
, 12) > 0)
3253 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " User=%s", sUserId
);
3258 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeUID
, MQ_TEXT_UID
);
3259 mq_tree
= proto_item_add_subtree(ti
, ett_mq_uid
);
3261 proto_tree_add_item(mq_tree
, hf_mq_uid_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3262 proto_tree_add_item(mq_tree
, hf_mq_uid_userid
, tvb
, offset
+ 4, 12, p_mq_parm
->mq_str_enc
);
3263 proto_tree_add_item(mq_tree
, hf_mq_uid_password
, tvb
, offset
+ 16, 12, p_mq_parm
->mq_str_enc
);
3266 if (iSizeUID
== 132)
3270 proto_tree_add_item(mq_tree
, hf_mq_uid_longuserid
, tvb
, offset
+ 28, 64, p_mq_parm
->mq_str_enc
);
3271 dissect_mq_sid(tvb
, mq_tree
, p_mq_parm
, offset
+ 92);
3276 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3279 offset
+= dissect_mq_od(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
);
3281 if ((iSizeMD
= dissect_mq_md(tvb
, mqroot_tree
, offset
, p_mq_parm
, TRUE
)) != 0)
3287 if ((iSizeGMO
= dissect_mq_gmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
)) != 0)
3292 else if ((iSizePMO
= dissect_mq_pmo(tvb
, pinfo
, mqroot_tree
, offset
, p_mq_parm
, &iDistributionListSize
)) != 0)
3297 if (tvb_length_remaining(tvb
, offset
) >= 4)
3299 if (bPayload
== TRUE
&& (p_mq_parm
->mq_opcode
!= MQ_TST_ASYNC_MESSAGE
))
3301 iSizePayload
= tvb_get_guint32_endian(tvb
, offset
, p_mq_parm
->mq_int_enc
);
3304 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, 4, MQ_TEXT_PUT
);
3305 mq_tree
= proto_item_add_subtree(ti
, ett_mq_put
);
3306 proto_tree_add_item(mq_tree
, hf_mq_put_length
, tvb
, offset
, 4, p_mq_parm
->mq_int_enc
);
3312 if (iDistributionListSize
> 0)
3314 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " (Distribution List, Size=%d)", iDistributionListSize
);
3316 if (bPayload
== TRUE
)
3318 if (iSizePayload
!= 0 && tvb_length_remaining(tvb
, offset
) > 0)
3320 /* For the following header structures, each structure has a "format" field
3321 which announces the type of the following structure. For dissection we
3322 do not use it and rely on the structid instead. */
3323 guint32 iHeadersLength
= 0;
3324 if (tvb_length_remaining(tvb
, offset
) >= 4)
3327 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
3329 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_XQH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_XQH_EBCDIC
) && tvb_length_remaining(tvb
, offset
) >= 104)
3331 /* if MD.format == MQXMIT */
3332 gint iSizeXQH
= 104;
3335 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeXQH
, MQ_TEXT_XQH
);
3336 mq_tree
= proto_item_add_subtree(ti
, ett_mq_xqh
);
3338 proto_tree_add_item(mq_tree
, hf_mq_xqh_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3339 proto_tree_add_item(mq_tree
, hf_mq_xqh_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3340 proto_tree_add_item(mq_tree
, hf_mq_xqh_remoteq
, tvb
, offset
+ 8, 48, p_mq_parm
->mq_str_enc
);
3341 proto_tree_add_item(mq_tree
, hf_mq_xqh_remoteqmgr
, tvb
, offset
+ 56, 48, p_mq_parm
->mq_str_enc
);
3344 iHeadersLength
+= iSizeXQH
;
3346 if ((iSizeMD2
= dissect_mq_md(tvb
, mqroot_tree
, offset
, p_mq_parm
, TRUE
)) != 0)
3349 iHeadersLength
+= iSizeMD2
;
3352 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3354 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_DH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_DH_EBCDIC
) && tvb_length_remaining(tvb
, offset
) >= 48)
3356 /* if MD.format == MQHDIST */
3358 gint iNbrRecords
= 0;
3359 guint32 iRecFlags
= 0;
3361 iNbrRecords
= tvb_get_guint32_endian(tvb
, offset
+ 36, p_mq_parm
->mq_int_enc
);
3362 iRecFlags
= tvb_get_guint32_endian(tvb
, offset
+ 32, p_mq_parm
->mq_int_enc
);
3363 p_mq_parm
->iOfsEnc
= offset
+ 12;
3364 p_mq_parm
->iOfsCcs
= offset
+ 16;
3365 p_mq_parm
->iOfsFmt
= offset
+ 20;
3367 p_mq_parm
->mq_head_ccsid
.encod
= tvb_get_guint32_endian(tvb
, offset
+ 12, p_mq_parm
->mq_int_enc
);
3368 p_mq_parm
->mq_head_ccsid
.ccsid
= tvb_get_guint32_endian(tvb
, offset
+ 16, p_mq_parm
->mq_int_enc
);
3372 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeDH
, MQ_TEXT_DH
);
3373 mq_tree
= proto_item_add_subtree(ti
, ett_mq_dh
);
3375 proto_tree_add_item(mq_tree
, hf_mq_head_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3376 proto_tree_add_item(mq_tree
, hf_mq_head_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3377 proto_tree_add_item(mq_tree
, hf_mq_head_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3378 dissect_mq_encoding(mq_tree
, hf_mq_head_encoding
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3379 proto_tree_add_item(mq_tree
, hf_mq_head_ccsid
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
3380 proto_tree_add_item(mq_tree
, hf_mq_head_format
, tvb
, offset
+ 20, 8, p_mq_parm
->mq_str_enc
);
3381 proto_tree_add_item(mq_tree
, hf_mq_head_flags
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3382 proto_tree_add_item(mq_tree
, hf_mq_dh_putmsgrecfld
, tvb
, offset
+ 32, 4, p_mq_parm
->mq_int_enc
);
3383 proto_tree_add_item(mq_tree
, hf_mq_dh_recspresent
, tvb
, offset
+ 36, 4, p_mq_parm
->mq_int_enc
);
3384 proto_tree_add_item(mq_tree
, hf_mq_dh_objrecofs
, tvb
, offset
+ 40, 4, p_mq_parm
->mq_int_enc
);
3385 proto_tree_add_item(mq_tree
, hf_mq_dh_putmsgrecofs
, tvb
, offset
+ 44, 4, p_mq_parm
->mq_int_enc
);
3388 iHeadersLength
+= iSizeDH
;
3390 if (iNbrRecords
> 0)
3393 gint iOffsetPMR
= 0;
3394 gint iSizeORPMR
= 0;
3396 iOffsetOR
= tvb_get_guint32_endian(tvb
, offset
- iSizeDH
+ 40, p_mq_parm
->mq_int_enc
);
3397 iOffsetPMR
= tvb_get_guint32_endian(tvb
, offset
- iSizeDH
+ 44, p_mq_parm
->mq_int_enc
);
3398 if ((iSizeORPMR
= dissect_mq_or(tvb
, mqroot_tree
, offset
, iNbrRecords
, iOffsetOR
, p_mq_parm
)) != 0)
3400 offset
+= iSizeORPMR
;
3401 iHeadersLength
+= iSizeORPMR
;
3403 if ((iSizeORPMR
= dissect_mq_pmr(tvb
, mqroot_tree
, offset
, iNbrRecords
, iOffsetPMR
, iRecFlags
, p_mq_parm
)) != 0)
3405 offset
+= iSizeORPMR
;
3406 iHeadersLength
+= iSizeORPMR
;
3410 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3412 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_DLH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_DLH_EBCDIC
) && tvb_length_remaining(tvb
, offset
) >= 172)
3414 /* if MD.format == MQDEAD */
3415 gint iSizeDLH
= 172;
3416 p_mq_parm
->iOfsEnc
= offset
+ 108;
3417 p_mq_parm
->iOfsCcs
= offset
+ 112;
3418 p_mq_parm
->iOfsFmt
= offset
+ 116;
3420 p_mq_parm
->mq_dlh_ccsid
.encod
= tvb_get_guint32_endian(tvb
, offset
+ 108, p_mq_parm
->mq_int_enc
);
3421 p_mq_parm
->mq_dlh_ccsid
.ccsid
= tvb_get_guint32_endian(tvb
, offset
+ 112, p_mq_parm
->mq_int_enc
);
3425 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeDLH
, MQ_TEXT_DLH
);
3426 mq_tree
= proto_item_add_subtree(ti
, ett_mq_dlh
);
3428 proto_tree_add_item(mq_tree
, hf_mq_dlh_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3429 proto_tree_add_item(mq_tree
, hf_mq_dlh_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3430 proto_tree_add_item(mq_tree
, hf_mq_dlh_reason
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3431 proto_tree_add_item(mq_tree
, hf_mq_dlh_destq
, tvb
, offset
+ 12, 48, p_mq_parm
->mq_str_enc
);
3432 proto_tree_add_item(mq_tree
, hf_mq_dlh_destqmgr
, tvb
, offset
+ 60, 48, p_mq_parm
->mq_str_enc
);
3433 dissect_mq_encoding(mq_tree
, hf_mq_dlh_encoding
, tvb
, offset
+ 108, 4, p_mq_parm
->mq_int_enc
);
3434 proto_tree_add_item(mq_tree
, hf_mq_dlh_ccsid
, tvb
, offset
+ 112, 4, p_mq_parm
->mq_int_enc
);
3435 proto_tree_add_item(mq_tree
, hf_mq_dlh_format
, tvb
, offset
+ 116, 8, p_mq_parm
->mq_str_enc
);
3436 proto_tree_add_item(mq_tree
, hf_mq_dlh_putappltype
, tvb
, offset
+ 124, 4, p_mq_parm
->mq_int_enc
);
3437 proto_tree_add_item(mq_tree
, hf_mq_dlh_putapplname
, tvb
, offset
+ 128, 28, p_mq_parm
->mq_str_enc
);
3438 proto_tree_add_item(mq_tree
, hf_mq_dlh_putdate
, tvb
, offset
+ 156, 8, p_mq_parm
->mq_str_enc
);
3439 proto_tree_add_item(mq_tree
, hf_mq_dlh_puttime
, tvb
, offset
+ 164, 8, p_mq_parm
->mq_str_enc
);
3442 iHeadersLength
+= iSizeDLH
;
3443 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3445 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_MDE
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_MDE_EBCDIC
) && tvb_length_remaining(tvb
, offset
) >= 72)
3447 /* if MD.format == MQHMDE */
3449 p_mq_parm
->iOfsEnc
= offset
+ 12;
3450 p_mq_parm
->iOfsCcs
= offset
+ 16;
3451 p_mq_parm
->iOfsFmt
= offset
+ 20;
3454 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeMDE
, MQ_TEXT_MDE
);
3455 mq_tree
= proto_item_add_subtree(ti
, ett_mq_mde
);
3457 proto_tree_add_item(mq_tree
, hf_mq_head_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3458 proto_tree_add_item(mq_tree
, hf_mq_head_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3459 proto_tree_add_item(mq_tree
, hf_mq_head_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3460 dissect_mq_encoding(mq_tree
, hf_mq_head_encoding
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3461 proto_tree_add_item(mq_tree
, hf_mq_head_ccsid
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
3462 proto_tree_add_item(mq_tree
, hf_mq_head_format
, tvb
, offset
+ 20, 8, p_mq_parm
->mq_str_enc
);
3463 proto_tree_add_item(mq_tree
, hf_mq_head_flags
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3464 proto_tree_add_item(mq_tree
, hf_mq_md_groupid
, tvb
, offset
+ 32, 24, ENC_NA
);
3465 proto_tree_add_item(mq_tree
, hf_mq_md_msgseqnumber
, tvb
, offset
+ 56, 4, p_mq_parm
->mq_int_enc
);
3466 proto_tree_add_item(mq_tree
, hf_mq_md_offset
, tvb
, offset
+ 60, 4, p_mq_parm
->mq_int_enc
);
3467 proto_tree_add_item(mq_tree
, hf_mq_md_msgflags
, tvb
, offset
+ 64, 4, p_mq_parm
->mq_int_enc
);
3468 proto_tree_add_item(mq_tree
, hf_mq_md_origlen
, tvb
, offset
+ 68, 4, p_mq_parm
->mq_int_enc
);
3471 iHeadersLength
+= iSizeMDE
;
3472 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3474 if ((p_mq_parm
->mq_strucID
== MQ_STRUCTID_CIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_CIH_EBCDIC
3475 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_IIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_IIH_EBCDIC
3476 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_RFH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_RFH_EBCDIC
3477 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_RMH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_RMH_EBCDIC
3478 || p_mq_parm
->mq_strucID
== MQ_STRUCTID_WIH
|| p_mq_parm
->mq_strucID
== MQ_STRUCTID_WIH_EBCDIC
)
3479 && tvb_length_remaining(tvb
, offset
) >= 12)
3481 /* Dissect the generic part of the other pre-defined headers */
3482 /* We assume that only one such header is present */
3483 gint iSizeHeader
= 0;
3484 iSizeHeader
= (gint
) tvb_get_guint32_endian(tvb
, offset
+ 8, p_mq_parm
->mq_int_enc
);
3485 /* XXX - 32 is inferred from the code below. What's the
3486 * correct minimum? */
3487 if (iSizeHeader
<= 32)
3488 THROW(ReportedBoundsError
);
3490 if (tvb_length_remaining(tvb
, offset
) >= iSizeHeader
)
3492 p_mq_parm
->iOfsEnc
= offset
+ 12;
3493 p_mq_parm
->iOfsCcs
= offset
+ 16;
3494 p_mq_parm
->iOfsFmt
= offset
+ 20;
3497 ti
= proto_tree_add_text(mqroot_tree
, tvb
, offset
, iSizeHeader
, "%s", val_to_str(p_mq_parm
->mq_strucID
, mq_StructID_vals
, "Unknown (0x%08x)"));
3498 mq_tree
= proto_item_add_subtree(ti
, ett_mq_head
);
3500 proto_tree_add_item(mq_tree
, hf_mq_head_StructID
, tvb
, offset
, 4, p_mq_parm
->mq_str_enc
);
3501 proto_tree_add_item(mq_tree
, hf_mq_head_version
, tvb
, offset
+ 4, 4, p_mq_parm
->mq_int_enc
);
3502 proto_tree_add_item(mq_tree
, hf_mq_head_length
, tvb
, offset
+ 8, 4, p_mq_parm
->mq_int_enc
);
3503 dissect_mq_encoding(mq_tree
, hf_mq_head_encoding
, tvb
, offset
+ 12, 4, p_mq_parm
->mq_int_enc
);
3504 proto_tree_add_item(mq_tree
, hf_mq_head_ccsid
, tvb
, offset
+ 16, 4, p_mq_parm
->mq_int_enc
);
3505 proto_tree_add_item(mq_tree
, hf_mq_head_format
, tvb
, offset
+ 20, 8, p_mq_parm
->mq_str_enc
);
3506 proto_tree_add_item(mq_tree
, hf_mq_head_flags
, tvb
, offset
+ 28, 4, p_mq_parm
->mq_int_enc
);
3507 proto_tree_add_item(mq_tree
, hf_mq_head_struct
, tvb
, offset
+ 32, iSizeHeader
- 32, ENC_NA
);
3510 offset
+= iSizeHeader
;
3511 iHeadersLength
+= iSizeHeader
;
3512 p_mq_parm
->mq_strucID
= (tvb_length_remaining(tvb
, offset
) >= 4) ? tvb_get_ntohl(tvb
, offset
) : MQ_STRUCTID_NULL
;
3517 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " (%d bytes)", iSizePayload
- iHeadersLength
);
3519 if (!mq_in_reassembly
)
3521 /* Call subdissector for the payload */
3524 struct mqinfo
*mqinfo
;
3525 mqinfo
= wmem_new0(wmem_packet_scope(), struct mqinfo
);
3526 /* Format, encoding and character set are "data type" information, not subprotocol information */
3527 mqinfo
->encoding
= tvb_get_guint32_endian(tvb
, p_mq_parm
->iOfsEnc
, p_mq_parm
->mq_int_enc
);
3528 mqinfo
->ccsid
= tvb_get_guint32_endian(tvb
, p_mq_parm
->iOfsCcs
, p_mq_parm
->mq_int_enc
);
3529 memcpy(mqinfo
->format
,
3530 tvb_get_string_enc(wmem_packet_scope(), tvb
, p_mq_parm
->iOfsFmt
, sizeof(mqinfo
->format
), p_mq_parm
->mq_str_enc
),
3531 sizeof(mqinfo
->format
));
3533 p_mq_parm
->mq_cur_ccsid
.encod
= tvb_get_guint32_endian(tvb
, p_mq_parm
->iOfsEnc
, p_mq_parm
->mq_int_enc
);
3534 p_mq_parm
->mq_cur_ccsid
.ccsid
= tvb_get_guint32_endian(tvb
, p_mq_parm
->iOfsCcs
, p_mq_parm
->mq_int_enc
);
3535 memcpy(p_mq_parm
->mq_format
,
3536 tvb_get_string_enc(wmem_packet_scope(), tvb
, p_mq_parm
->iOfsFmt
, sizeof(p_mq_parm
->mq_format
), p_mq_parm
->mq_str_enc
),
3537 sizeof(p_mq_parm
->mq_format
));
3539 next_tvb
= tvb_new_subset_remaining(tvb
, offset
);
3540 if (!dissector_try_heuristic(mq_heur_subdissector_list
, next_tvb
, pinfo
, mqroot_tree
, p_mq_parm
))
3541 call_dissector(data_handle
, next_tvb
, pinfo
, mqroot_tree
);
3546 next_tvb
= tvb_new_subset_remaining(tvb
, offset
);
3547 call_dissector(data_handle
, next_tvb
, pinfo
, mqroot_tree
);
3550 offset
= tvb_length(tvb
);
3552 /* After all recognised structures have been dissected, process remaining structure*/
3553 if (tvb_length_remaining(tvb
, offset
) >= 4)
3555 p_mq_parm
->mq_strucID
= tvb_get_ntohl(tvb
, offset
);
3558 proto_tree_add_text(mqroot_tree
, tvb
, offset
, -1, "%s", val_to_str(p_mq_parm
->mq_strucID
, mq_StructID_vals
, "Unknown (0x%08x)"));
3564 /* This is a MQ segment continuation (if MQ reassembly is not enabled) */
3565 col_append_str(pinfo
->cinfo
, COL_INFO
, " [Unreassembled MQ]");
3566 call_dissector(data_handle
, tvb_new_subset_remaining(tvb
, offset
), pinfo
, tree
);
3572 /* This packet is a TCP continuation of a segment (if desegmentation is not enabled) */
3573 col_append_str(pinfo
->cinfo
, COL_INFO
, " [Undesegmented]");
3576 proto_tree_add_item(tree
, proto_mq
, tvb
, offset
, -1, ENC_NA
);
3578 call_dissector(data_handle
, tvb_new_subset_remaining(tvb
, offset
), pinfo
, tree
);
3583 static int reassemble_mq(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
3587 /* Reassembly of the MQ messages that span several PDU (several TSH) */
3588 /* Typically a TCP PDU is 1460 bytes and a MQ PDU is 32766 bytes */
3589 if (tvb_length(tvb
) < 28)
3592 memset(&mq_parm
, 0, sizeof(mq_parm_t
));
3593 mq_parm
.mq_strucID
= tvb_get_ntohl(tvb
, 0);
3595 if ( (mq_parm
.mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
|| (mq_parm
.mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
3605 gboolean bSeg1st
= FALSE
;
3606 gboolean bSegLst
= FALSE
;
3607 gboolean bMore
= FALSE
;
3610 gint32 iGlbMsgIdx
= 0;
3611 gint32 iSegLength
= 0;
3612 gint16 iSegmIndex
= 0;
3617 /* TSHM structure as 8 bytes more after the length (convid/requestid) */
3618 if (mq_parm
.mq_strucID
== MQ_STRUCTID_TSHM
|| mq_parm
.mq_strucID
== MQ_STRUCTID_TSHM_EBCDIC
)
3621 /* Get the Encoding scheme */
3622 iEnco
= (tvb_get_guint8(tvb
, 8 + iMulS
) == MQ_LITTLE_ENDIAN
? ENC_LITTLE_ENDIAN
: ENC_BIG_ENDIAN
);
3623 /* Get the Operation Code */
3624 iOpcd
= tvb_get_guint8( tvb
, 9 + iMulS
);
3625 /* Get the Control Flag */
3626 iCtlF
= tvb_get_guint8( tvb
, 10 + iMulS
);
3627 /* Get the Semgnet Length */
3628 iSegL
= tvb_get_ntohl ( tvb
, 4);
3629 /* First Segment ? */
3630 bSeg1st
= ((iCtlF
& MQ_TCF_FIRST
) != 0);
3632 bSegLst
= ((iCtlF
& MQ_TCF_LAST
) != 0);
3634 mq_in_reassembly
= FALSE
;
3636 if ((iOpcd
> 0x80 && !(bSeg1st
&& bSegLst
)) || iOpcd
== MQ_TST_ASYNC_MESSAGE
)
3638 proto_tree
*mq_tree
= NULL
;
3640 /* Optimisation : only fragmented segments go through the reassembly process */
3642 It seems that after a PUT on a Queue, when doing a GET, MQ first get
3643 a small part of the response (4096 bytes)
3644 The response contain the number of bytes returned for this request (ActMsgLen)
3645 and the total number of bytes of this reply (TotMsgLen)
3647 this mean the flow seems to be :
3650 REQUEST_MSG (MaxLen=4096)
3651 ASYNC_MSG (1st/Lst Segment, ActMsgLen=4096, TotMsgLen=279420)
3652 as ActMsgLen!=TotMsgLen, this mean the MSG is not complete, we only receive some of 279420 bytes
3653 REQUEST_MSG (MaxLen=279420)
3654 ASYNC_MSG (1st Segment, SegIndex=0 ActMsgLen=279420, TotMsgLen=279420)
3655 ASYNC_MSG (Mid Segment, SegIndex=1)
3656 ASYNC_MSG (Mid Segment, SegIndex=2)
3658 ASYNC_MSG (Lst Segment, SegIndex=n)
3659 End of reassembling (we have 279420 bytes to decode)
3664 fragment_head
*fd_head
;
3665 guint32 iConnectionId
= (pinfo
->srcport
+ pinfo
->destport
);
3668 /* Get the MQ Handle of the Object */
3669 iHdl
= tvb_get_guint32_endian(tvb
, iHdrL
+ 4, iEnco
);
3670 /* Get the Global Message Index */
3671 iGlbMsgIdx
= tvb_get_guint32_endian(tvb
, iHdrL
+ 12, iEnco
);
3672 /* Get the Segment Length */
3673 iSegLength
= tvb_get_guint32_endian(tvb
, iHdrL
+ 16, iEnco
);
3674 /* Get the Segment Index */
3675 iSegmIndex
= tvb_get_guint16_endian(tvb
, iHdrL
+20, iEnco
);
3678 if SegmIndex == 0, it has 54 bytes + the length and padding
3679 of a variable string at the end of the Header
3682 if (iSegmIndex
== 0)
3684 uStrL
= tvb_get_guint8(tvb
, iHdrL
+ 54);
3685 uPadL
= ((((2+1+uStrL
)/4)+1)*4)-(2+1+uStrL
);
3689 First segment has a longer header
3691 iNxtP
= iHdrL
+ ((bSeg1st
) ? (54 + 1 + uStrL
+ uPadL
) : (24));
3692 iNxtP
+= dissect_mq_md(tvb
, NULL
, iNxtP
, &mq_parm
, FALSE
);
3695 if it is the 1st Segment, it means we are
3696 of the beginning of a reassembling. We must take the whole segment (with tSHM, and headers)
3698 iBegL
= (bSeg1st
) ? 0 : iNxtP
;
3700 fd_head
= fragment_add_seq_next(&mq_reassembly_table
,
3702 pinfo
, iConnectionId
, NULL
,
3703 iSegL
- iBegL
, bMore
);
3707 proto_item
*ti
= proto_tree_add_item(tree
, proto_mq
, tvb
, 0, -1, ENC_NA
);
3710 proto_item_append_text(ti
, " [%s of a Reassembled MQ Segment] Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
3711 val_to_str(iOpcd
, mq_opcode_vals
, "Unknown (0x%02x)"),
3712 iHdl
, iGlbMsgIdx
, iSegmIndex
, iSegLength
);
3716 proto_item_append_text(ti
, " %s Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
3717 val_to_str(iOpcd
, mq_opcode_vals
, "Unknown (0x%02x)"),
3718 iHdl
, iGlbMsgIdx
, iSegmIndex
, iSegLength
);
3720 mq_tree
= proto_item_add_subtree(ti
, ett_mq_reaasemb
);
3727 if (fd_head
!= NULL
&& pinfo
->fd
->num
== fd_head
->reassembled_in
)
3731 /* Reassembly finished */
3732 if (fd_head
->next
!= NULL
)
3734 /* 2 or more fragments */
3735 next_tvb
= tvb_new_chain(tvb
, fd_head
->tvb_data
);
3736 add_new_data_source(pinfo
, next_tvb
, "Reassembled MQ");
3740 /* Only 1 fragment */
3743 dissect_mq_pdu(next_tvb
, pinfo
, mq_tree
);
3744 return tvb_length(tvb
);
3748 mq_in_reassembly
= TRUE
;
3749 /* Reassembly in progress */
3750 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "MQ");
3751 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "[%s of a Reassembled MQ Segment] Hdl=0x%08x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
3752 val_to_str(iOpcd
, mq_opcode_vals
, "Unknown (0x%02x)"),
3753 iHdl
, iGlbMsgIdx
, iSegmIndex
, iSegLength
);
3754 dissect_mq_pdu(tvb
, pinfo
, mq_tree
);
3755 return tvb_length(tvb
);
3760 dissect_mq_pdu(tvb
, pinfo
, mq_tree
); /* XXX: mq_tree always NULL ?? */
3763 /* MQ segment is the first of a unreassembled series */
3764 col_append_str(pinfo
->cinfo
, COL_INFO
, " [Unreassembled MQ]");
3766 return tvb_length(tvb
);
3769 /* Reassembly not enabled or non-fragmented message */
3770 dissect_mq_pdu(tvb
, pinfo
, tree
);
3773 return tvb_length(tvb
);
3776 static guint
get_mq_pdu_len(packet_info
*pinfo _U_
, tvbuff_t
*tvb
, int offset
)
3778 if (tvb_length_remaining(tvb
, offset
) >= 8)
3780 guint32 mq_strucID
= tvb_get_ntohl(tvb
, 0);
3781 if ( (mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
|| (mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
3783 return tvb_get_ntohl(tvb
, offset
+ 4);
3789 static int dissect_mq_tcp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
3791 tcp_dissect_pdus(tvb
, pinfo
, tree
, mq_desegment
, 28, get_mq_pdu_len
, reassemble_mq
, data
);
3792 return tvb_length(tvb
);
3795 static void dissect_mq_spx(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
3797 /* Since SPX has no standard desegmentation, MQ cannot be performed as well */
3798 dissect_mq_pdu(tvb
, pinfo
, tree
);
3801 static gboolean
dissect_mq_heur(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, gint iProto
, void *data
)
3803 if (tvb_length(tvb
) >= 28)
3805 guint32 mq_strucID
= tvb_get_ntohl(tvb
, 0);
3806 if ( (mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx
|| (mq_strucID
& MQ_MASK_TSHx
) == MQ_STRUCTID_TSHx_EBCDIC
)
3808 /* Register this dissector for this conversation */
3809 conversation_t
*conversation
;
3811 conversation
= find_or_create_conversation(pinfo
);
3812 if (iProto
== MQ_XPT_TCP
)
3813 conversation_set_dissector(conversation
, mq_tcp_handle
);
3815 /* Dissect the packet */
3816 reassemble_mq(tvb
, pinfo
, tree
, data
);
3823 static gboolean
dissect_mq_heur_tcp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3825 return dissect_mq_heur(tvb
, pinfo
, tree
, MQ_XPT_TCP
, NULL
);
3828 static gboolean
dissect_mq_heur_netbios(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3830 return dissect_mq_heur(tvb
, pinfo
, tree
, MQ_XPT_NETBIOS
, NULL
);
3833 static gboolean
dissect_mq_heur_http(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3835 return dissect_mq_heur(tvb
, pinfo
, tree
, MQ_XPT_HTTP
, NULL
);
3838 static void mq_init(void)
3840 reassembly_table_init(&mq_reassembly_table
,
3841 &addresses_reassembly_table_functions
);
3844 void proto_register_mq(void)
3846 static hf_register_info hf
[] =
3848 { &hf_mq_tsh_StructID
, {"StructID..", "mq.tsh.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
3849 { &hf_mq_tsh_mqseglen
, {"MQSegmLen.", "mq.tsh.seglength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH MQ Segment length", HFILL
}},
3850 { &hf_mq_tsh_convid
, {"Convers ID", "mq.tsh.convid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH Conversation ID", HFILL
}},
3851 { &hf_mq_tsh_requestid
, {"Request ID", "mq.tsh.requestid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH Request ID", HFILL
}},
3852 { &hf_mq_tsh_byteorder
, {"Byte order", "mq.tsh.byteorder", FT_UINT8
, BASE_HEX
, VALS(GET_VALSV(byteorder
)), 0x0, "TSH Byte order", HFILL
}},
3853 { &hf_mq_tsh_opcode
, {"SegmType..", "mq.tsh.type", FT_UINT8
, BASE_HEX
, VALS(GET_VALSV(opcode
)), 0x0, "TSH MQ segment type", HFILL
}},
3854 { &hf_mq_tsh_ctlflgs1
, {"Ctl Flag 1", "mq.tsh.cflags1", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "TSH Control flags 1", HFILL
}},
3855 { &hf_mq_tsh_ctlflgs2
, {"Ctl Flag 2", "mq.tsh.cflags2", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "TSH Control flags 2", HFILL
}},
3856 { &hf_mq_tsh_luwid
, {"LUW Ident.", "mq.tsh.luwid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "TSH logical unit of work identifier", HFILL
}},
3857 { &hf_mq_tsh_encoding
, {"Encoding..", "mq.tsh.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "TSH Encoding", HFILL
}},
3858 { &hf_mq_tsh_ccsid
, {"CCSID.....", "mq.tsh.ccsid", FT_INT16
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(&GET_VALRV(ccsid
)), 0x0, "TSH CCSID", HFILL
}},
3859 { &hf_mq_tsh_reserved
, {"Reserved..", "mq.tsh.reserved", FT_UINT16
, BASE_HEX
, NULL
, 0x0, "TSH Reserved", HFILL
}},
3861 { &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
}},
3862 { &hf_mq_tsh_tcf_error
, {"Error", "mq.tsh.tcf.error", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_TCF_ERROR
, "TSH TCF Error", HFILL
}},
3863 { &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
}},
3864 { &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
}},
3865 { &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
}},
3866 { &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
}},
3867 { &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
}},
3868 { &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
}},
3870 { &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
}},
3871 { &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
}},
3872 { &hf_mq_tsh_tcf2_CSH
, {"CSH", "mq.tsh.tcf2.csh" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_TCF2_CSH
, "TSH TCF2 CSH", HFILL
}},
3873 { &hf_mq_tsh_tcf2_CmitIntv
, {"ComitIntvl", "mq.tsh.tcf.cmitintv", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_TCF2_CMIT_INTERVAL
, "TSH TCF2 Commit Interval", HFILL
}},
3875 { &hf_mq_api_replylen
, {"Reply len..", "mq.api.replylength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "API Reply length", HFILL
}},
3876 { &hf_mq_api_compcode
, {"Compl Code.", "mq.api.completioncode", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(mqcc
)), 0x0, "API Completion code", HFILL
}},
3877 { &hf_mq_api_reascode
, {"Reason Code", "mq.api.reasoncode", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(mqrc
)), 0x0, "API Reason code", HFILL
}},
3878 { &hf_mq_api_objecthdl
, {"Object Hdl.", "mq.api.hobj", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "API Object handle", HFILL
}},
3880 { &hf_mq_socket_conversid
, {"ConversId", "mq.socket.conversid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Conversation Id", HFILL
}},
3881 { &hf_mq_socket_requestid
, {"RequestId", "mq.socket.requestid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Request Id", HFILL
}},
3882 { &hf_mq_socket_type
, {"Type.....", "mq.socket.type", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Type", HFILL
}},
3883 { &hf_mq_socket_parm1
, {"Parm1....", "mq.socket.parm1", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Parameter 1", HFILL
}},
3884 { &hf_mq_socket_parm2
, {"Parm2....", "mq.socket.parm2", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "Socket Parameter 2", HFILL
}},
3886 { &hf_mq_caut_StructID
, {"StructID." , "mq.caut.structid" , FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
3887 { &hf_mq_caut_AuthType
, {"AuthType." , "mq.caut.authtype" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT Authority Type", HFILL
}},
3888 { &hf_mq_caut_UsrMaxLen
, {"UsrMaxLen", "mq.caut.usrmaxlen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT userid Maximum length", HFILL
}},
3889 { &hf_mq_caut_PwdMaxLen
, {"PwdMaxLen", "mq.caut.pwdmaxlen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT password Maximum length", HFILL
}},
3890 { &hf_mq_caut_UsrLength
, {"UsrLength", "mq.caut.usrlength", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT userid length", HFILL
}},
3891 { &hf_mq_caut_PwdLength
, {"PwdLength", "mq.caut.pswlength", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "CAUT password length", HFILL
}},
3892 { &hf_mq_caut_usr
, {"userid...", "mq.msh.userid" , FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "CAUT UserId", HFILL
}},
3893 { &hf_mq_caut_psw
, {"password.", "mq.msh.password" , FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "CAUT Password", HFILL
}},
3895 { &hf_mq_msh_StructID
, {"StructID", "mq.msh.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
3896 { &hf_mq_msh_seqnum
, {"Seq Numb", "mq.msh.seqnum", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MSH sequence number", HFILL
}},
3897 { &hf_mq_msh_datalength
, {"Buf len.", "mq.msh.buflength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MSH buffer length", HFILL
}},
3898 { &hf_mq_msh_unknown1
, {"Unknown1", "mq.msh.unknown1", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSH unknown1", HFILL
}},
3899 { &hf_mq_msh_msglength
, {"Msg len.", "mq.msh.msglength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MSH message length", HFILL
}},
3901 { &hf_mq_xqh_StructID
, {"StructID", "mq.xqh.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
3902 { &hf_mq_xqh_version
, {"Version.", "mq.xqh.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XQH version", HFILL
}},
3903 { &hf_mq_xqh_remoteq
, {"Remote Q", "mq.xqh.remoteq", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "XQH remote queue", HFILL
}},
3904 { &hf_mq_xqh_remoteqmgr
, {"Rmt QMgr", "mq.xqh.remoteqmgr", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "XQH remote queue manager", HFILL
}},
3906 { &hf_mq_id_StructID
, {"Structid..", "mq.id.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
3907 { &hf_mq_id_FapLevel
, {"FAP level.", "mq.id.level", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "ID Formats And Protocols level", HFILL
}},
3908 { &hf_mq_id_icf1
, {"CapFlag1..", "mq.id.idflags", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID Capability Flags 1", HFILL
}},
3909 { &hf_mq_id_Eicf1
, {"ECapFlag1.", "mq.id.ideflags", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID E Capability Flags 1", HFILL
}},
3910 { &hf_mq_id_ief1
, {"IniErrFlg1", "mq.id.ief", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID Initial Error Flags 1", HFILL
}},
3911 { &hf_mq_id_Reserved
, {"Reserved..", "mq.id.unknown04", FT_UINT16
, BASE_HEX
, NULL
, 0x0, "ID Reserved", HFILL
}},
3912 { &hf_mq_id_MaxMsgBatch
, {"MaxMsgBtch", "mq.id.MaxMsgBatch", FT_UINT16
, BASE_DEC
, NULL
, 0x0, "ID max msg per batch", HFILL
}},
3913 { &hf_mq_id_MaxTrSize
, {"MaxTrSize.", "mq.id.MaxTrSize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID max trans size", HFILL
}},
3914 { &hf_mq_id_MaxMsgSize
, {"MaxMsgSize", "mq.id.maxmsgsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID max msg size", HFILL
}},
3915 { &hf_mq_id_SeqWrapVal
, {"SeqWrapVal", "mq.id.seqwrap", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID seq wrap value", HFILL
}},
3916 { &hf_mq_id_channel
, {"ChannelNme", "mq.id.channelname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "ID channel name", HFILL
}},
3917 { &hf_mq_id_icf2
, {"CapFlag2..", "mq.id.idflags2", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID Capability flags 2", HFILL
}},
3918 { &hf_mq_id_Eicf2
, {"ECapFlag2.", "mq.id.ideflags2", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "ID E Capabitlity flags 2", HFILL
}},
3919 { &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
}},
3920 { &hf_mq_id_qmgrname
, {"QMgrName..", "mq.id.qm", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "ID Queue Manager Name", HFILL
}},
3921 { &hf_mq_id_HBInterval
, {"HBInterval", "mq.id.hbint", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "ID Heartbeat interval", HFILL
}},
3922 { &hf_mq_id_EFLLength
, {"EFLLength.", "mq.id.efllength", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "ID EFL Length", HFILL
}},
3923 { &hf_mq_id_ief2
, {"IniErrFlg2", "mq.id.inierrflg2", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID Initial Error Flags 2", HFILL
}},
3924 { &hf_mq_id_Reserved1
, {"Reserved1.", "mq.id.reserved1", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID Reserved 1", HFILL
}},
3925 { &hf_mq_id_HdrCprsLst
, {"HdrCprsLst", "mq.id.hdrcprslst", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "ID Hdr Cprs Lst", HFILL
}},
3926 { &hf_mq_id_MsgCprsLst
, {"MsgCprsLst", "mq.id.msgcprslst", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "ID Msg Cprs Lst", HFILL
}},
3927 { &hf_mq_id_Reserved2
, {"Reserved2.", "mq.id.reserved2", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "ID Reserved 2", HFILL
}},
3928 { &hf_mq_id_SSLKeyRst
, {"SSLKeyRst.", "mq.id.sslkeyrst", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID SSL Key Reset", HFILL
}},
3929 { &hf_mq_id_ConvBySkt
, {"ConvBySkt.", "mq.id.convbyskt", FT_INT32
, BASE_DEC
, NULL
, 0x0, "ID Conv Per Socket", HFILL
}},
3930 { &hf_mq_id_icf3
, {"CapFlag3..", "mq.id.idflags3", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID Capability flags 3", HFILL
}},
3931 { &hf_mq_id_Eicf3
, {"ECapFlag3.", "mq.id.ideflags3", FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0, "ID E Capability flags 3", HFILL
}},
3932 { &hf_mq_id_Reserved3
, {"Reserved3.", "mq.id.reserved3", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "ID Reserved 3", HFILL
}},
3933 { &hf_mq_id_ProcessId
, {"ProcessId.", "mq.id.processid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID Process Identifier", HFILL
}},
3934 { &hf_mq_id_ThreadId
, {"ThreadId..", "mq.id.threadid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID Thread Identifier", HFILL
}},
3935 { &hf_mq_id_TraceId
, {"TraceId...", "mq.id.traceid", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "ID Trace Identifier", HFILL
}},
3936 { &hf_mq_id_ProdId
, {"ProdId....", "mq.id.prodid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "ID Product Identifier", HFILL
}},
3937 { &hf_mq_id_mqmid
, {"MQM ID....", "mq.id.mqmid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "ID MQM ID", HFILL
}},
3939 { &hf_mq_id_icf1_msgseq
, {"Message sequence", "mq.id.icf.msgseq" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_MSG_SEQ
, "ID ICF Message sequence", HFILL
}},
3940 { &hf_mq_id_icf1_convcap
, {"Conversion capable", "mq.id.icf.convcap" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_CONVERSION_CAPABLE
, "ID ICF Conversion capable", HFILL
}},
3941 { &hf_mq_id_icf1_splitmsg
, {"Split messages", "mq.id.icf.splitmsg", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_SPLIT_MESSAGE
, "ID ICF Split message", HFILL
}},
3942 { &hf_mq_id_icf1_RqstInit
, {"Request Initiation", "mq.id.icf.rqstinit", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_REQUEST_INITIATION
, "ID ICF Request Initiation", HFILL
}},
3943 { &hf_mq_id_icf1_RqstSecu
, {"Request Security", "mq.id.icf.rqstsecu", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_REQUEST_SECURITY
, "ID ICF Request Security", HFILL
}},
3944 { &hf_mq_id_icf1_mqreq
, {"MQ request", "mq.id.icf.mqreq" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_MQREQUEST
, "ID ICF MQ request", HFILL
}},
3945 { &hf_mq_id_icf1_svrsec
, {"Srvr Con security", "mq.id.icf.svrsec" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_SVRCONN_SECURITY
, "ID ICF Server connection security", HFILL
}},
3946 { &hf_mq_id_icf1_runtime
, {"Runtime applic", "mq.id.icf.runtime" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF1_RUNTIME
, "ID ICF Runtime application", HFILL
}},
3948 { &hf_mq_id_icf2_CanDstLst
, {"DistListCapable", "mq.id.icf2.distlistcap" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_DIST_LIST_CAPABLE
, "ID ICF2 Distribution List Capable", HFILL
}},
3949 { &hf_mq_id_icf2_FstMsgReq
, {"Fast Msg Reqrd", "mq.id.icf2.fastmsgrqrd" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_FAST_MESSAGES_REQUIRED
, "ID ICF2 Fast Message Required", HFILL
}},
3950 { &hf_mq_id_icf2_RespConv
, {"RspndrConversion", "mq.id.icf2.respndrconvers", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_RESPONDER_CONVERSION
, "ID ICF2 Responder Conversion", HFILL
}},
3951 { &hf_mq_id_icf2_XARequest
, {"XARequest", "mq.id.icf2.xarequest" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_XAREQUEST
, "ID ICF2 XA Request", HFILL
}},
3952 { &hf_mq_id_icf2_XARunTApp
, {"XARunTypApp", "mq.id.icf2.xaruntypapp" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_XARUNTIME_APP
, "ID ICF2 XA Runtime App", HFILL
}},
3953 { &hf_mq_id_icf2_SPIRqst
, {"SPIRequest", "mq.id.icf2.spirequest" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_SPIREQUEST
, "ID ICF2 SPI Request", HFILL
}},
3954 { &hf_mq_id_icf2_DualUOW
, {"DualUOW", "mq.id.icf2.dualuow" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_DUAL_UOW
, "ID ICF2 Dual UOW", HFILL
}},
3955 { &hf_mq_id_icf2_CanTrcRte
, {"Trace Rte Capab", "mq.id.icf2.cantraceroute" , FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF2_TRACE_ROUTE_CAPABLE
, "ID ICF2 Trace Route Capable", HFILL
}},
3957 { &hf_mq_id_icf3_CanMsgPrp
, {"Msg Property Cap", "mq.id.icf.msgprpcap", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF3_MSG_PROP_CAPABLE
, "ID ICF3 Message PropertyCapable", HFILL
}},
3958 { &hf_mq_id_icf3_Unknown02
, {"Unknownx02", "mq.id.icf.unknown02", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_ICF3_UNKNOWNX02
, "ID ICF3 Unknown Falg x02", HFILL
}},
3960 { &hf_mq_id_ief1_ccsid
, {"Invalid CCSID", "mq.id.ief1.ccsid", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_IEF1_CCSID
, "ID invalid CCSID", HFILL
}},
3961 { &hf_mq_id_ief1_enc
, {"Invalid encoding", "mq.id.ief1.enc", FT_BOOLEAN
, 8, TFS(&tfs_set_notset
), MQ_IEF1_ENCODING
, "ID invalid encoding", HFILL
}},
3962 { &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
}},
3963 { &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
}},
3964 { &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
}},
3965 { &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
}},
3966 { &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
}},
3967 { &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
}},
3969 { &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
}},
3970 { &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
}},
3971 { &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
}},
3973 { &hf_mq_uid_StructID
, {"Structid", "mq.uid.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
3974 { &hf_mq_uid_userid
, {"User ID.", "mq.uid.userid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "UID structid", HFILL
}},
3975 { &hf_mq_uid_password
, {"Password", "mq.uid.password", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "UID password", HFILL
}},
3976 { &hf_mq_uid_longuserid
, {"Long UID", "mq.uid.longuserid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "UID long user id", HFILL
}},
3978 { &hf_mq_sidlen
, {"SID Len.", "mq.uid.sidlen", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "Sid Len", HFILL
}},
3979 { &hf_mq_sidtyp
, {"SIDType.", "mq.uid.sidtyp", FT_UINT8
, BASE_DEC
, VALS(GET_VALSV(sidtype
)), 0x0, "Sid Typ", HFILL
}},
3980 { &hf_mq_securityid
, {"SecurID.", "mq.uid.securityid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Security ID", HFILL
}},
3982 { &hf_mq_conn_QMgr
, {"QMgr....", "mq.conn.qm", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "CONN queue manager", HFILL
}},
3983 { &hf_mq_conn_appname
, {"ApplName", "mq.conn.appname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "CONN application name", HFILL
}},
3984 { &hf_mq_conn_apptype
, {"ApplType", "mq.conn.apptype", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(mqat
)), 0x0, "CONN application type", HFILL
}},
3985 { &hf_mq_conn_acttoken
, {"AccntTok", "mq.conn.acttoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "CONN accounting token", HFILL
}},
3986 { &hf_mq_conn_version
, {"Version.", "mq.conn.version", FT_UINT32
, BASE_DEC
, VALS(mq_conn_version_vals
), 0x0, "CONN version", HFILL
}},
3987 { &hf_mq_conn_options
, {"Options.", "mq.conn.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "CONN options", HFILL
}},
3989 { &hf_mq_fcno_StructID
, {"StructId.", "mq.fcno.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
3990 { &hf_mq_fcno_unknown00
, {"unknown00", "mq.fcno.unknown00", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "FCNO unknown00", HFILL
}},
3991 { &hf_mq_fcno_unknown01
, {"unknown01", "mq.fcno.unknown01", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "FCNO unknown01", HFILL
}},
3992 { &hf_mq_fcno_unknown02
, {"unknown02", "mq.fcno.unknown02", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "FCNO unknown02", HFILL
}},
3993 { &hf_mq_fcno_msgid
, {"msgid....", "mq.fcno.msgid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "FCNO Msg ID", HFILL
}},
3994 { &hf_mq_fcno_mqmid
, {"MqmId....", "mq.fcno.mqmid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "FCNO Mqm ID", HFILL
}},
3996 { &hf_mq_inq_nbsel
, {"Selector count..", "mq.inq.nbsel", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Selector count", HFILL
}},
3997 { &hf_mq_inq_nbint
, {"Integer count...", "mq.inq.nbint", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Integer count", HFILL
}},
3998 { &hf_mq_inq_charlen
, {"Character length", "mq.inq.charlen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Character length", HFILL
}},
3999 { &hf_mq_inq_sel
, {"Selector........", "mq.inq.sel", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(selector
)), 0x0, "INQ Selector", HFILL
}},
4000 { &hf_mq_inq_intvalue
, {"Integer value...", "mq.inq.intvalue", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "INQ Integer value", HFILL
}},
4001 { &hf_mq_inq_charvalues
, {"Char values.....", "mq.inq.charvalues", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "INQ Character values", HFILL
}},
4003 { &hf_mq_spi_verb
, {"SPI Verb", "mq.spi.verb", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(spi_verbs
)), 0x0, NULL
, HFILL
}},
4004 { &hf_mq_spi_version
, {"Version", "mq.spi.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Version", HFILL
}},
4005 { &hf_mq_spi_length
, {"Max reply size", "mq.spi.replength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Max reply size", HFILL
}},
4007 { &hf_mq_spi_base_StructID
, {"SPI Structid", "mq.spib.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4008 { &hf_mq_spi_base_version
, {"Version", "mq.spib.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Base Version", HFILL
}},
4009 { &hf_mq_spi_base_length
, {"Length", "mq.spib.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Base Length", HFILL
}},
4011 { &hf_mq_spi_spqo_nbverb
, {"Number of verbs", "mq.spqo.nbverb", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Number of verbs", HFILL
}},
4012 { &hf_mq_spi_spqo_verbid
, {"Verb", "mq.spqo.verb", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(spi_verbs
)), 0x0, "SPI Query Output VerbId", HFILL
}},
4013 { &hf_mq_spi_spqo_maxiover
, {"Max InOut Version", "mq.spqo.maxiov", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Max InOut Version", HFILL
}},
4014 { &hf_mq_spi_spqo_maxinver
, {"Max In Version", "mq.spqo.maxiv", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Max In Version", HFILL
}},
4015 { &hf_mq_spi_spqo_maxouver
, {"Max Out Version", "mq.spqo.maxov", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output Max Out Version", HFILL
}},
4016 { &hf_mq_spi_spqo_flags
, {"Flags", "mq.spqo.flags", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Query Output flags", HFILL
}},
4018 { &hf_mq_spi_spai_mode
, {"Mode", "mq.spai.mode", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(spi_activate
)), 0x0, "SPI Activate Input mode", HFILL
}},
4019 { &hf_mq_spi_spai_unknown1
, {"Unknown1", "mq.spai.unknown1", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "SPI Activate Input unknown1", HFILL
}},
4020 { &hf_mq_spi_spai_unknown2
, {"Unknown2", "mq.spai.unknown2", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "SPI Activate Input unknown2", HFILL
}},
4021 { &hf_mq_spi_spai_msgid
, {"Message Id", "mq.spai.msgid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "SPI Activate Input message id", HFILL
}},
4022 { &hf_mq_spi_spgi_batchsz
, {"Batch size", "mq.spgi.batchsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Input batch size", HFILL
}},
4023 { &hf_mq_spi_spgi_batchint
, {"Batch interval", "mq.spgi.batchint", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Input batch interval", HFILL
}},
4024 { &hf_mq_spi_spgi_maxmsgsz
, {"Max message size", "mq.spgi.maxmsgsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Input max message size", HFILL
}},
4026 { &hf_mq_spi_spgo_options
, {"Options", "mq.spgo.options", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Output options", HFILL
}},
4027 { &hf_mq_spi_spgo_size
, {"Size", "mq.spgo.size", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "SPI Get Output size", HFILL
}},
4028 { &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
}},
4029 { &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
}},
4030 { &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
}},
4032 { &hf_mq_put_length
, {"Data length", "mq.put.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PUT Data length", HFILL
}},
4034 { &hf_mq_close_options
, {"Options", "mq.close.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "CLOSE options", HFILL
}},
4035 { &hf_mq_close_options_DELETE
, {"DELETE", "mq.close.options.Delete", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQCO_DELETE
, "CLOSE options DELETE", HFILL
}},
4036 { &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
}},
4037 { &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
}},
4038 { &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
}},
4039 { &hf_mq_close_options_QUIESCE
, {"QUIESCE", "mq.close.options.Quiesce", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQCO_QUIESCE
, "CLOSE options QUIESCE", HFILL
}},
4041 { &hf_mq_open_options
, {"Options", "mq.open.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "OPEN options", HFILL
}},
4042 { &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
}},
4043 { &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
}},
4044 { &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
}},
4045 { &hf_mq_open_options_BROWSE
, {"BROWSE", "mq.open.options.Browse", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_BROWSE
, "OPEN options BROWSE", HFILL
}},
4046 { &hf_mq_open_options_OUTPUT
, {"OUTPUT", "mq.open.options.Output", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_OUTPUT
, "OPEN options OUTPUT", HFILL
}},
4047 { &hf_mq_open_options_INQUIRE
, {"INQUIRE", "mq.open.options.Inquire", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_INQUIRE
, "OPEN options INQUIRE", HFILL
}},
4048 { &hf_mq_open_options_SET
, {"SET", "mq.open.options.Set", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQOO_SET
, "OPEN options SET", HFILL
}},
4049 { &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
}},
4050 { &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
}},
4051 { &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
}},
4052 { &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
}},
4053 { &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
}},
4054 { &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
}},
4055 { &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
}},
4056 { &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
}},
4057 { &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
}},
4058 { &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
}},
4059 { &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
}},
4060 { &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
}},
4061 { &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
}},
4062 { &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
}},
4063 { &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
}},
4064 { &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
}},
4066 { &hf_mq_fopa_StructID
, {"StructId", "mq.fopa.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4067 { &hf_mq_fopa_version
, {"Version.", "mq.fopa.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "FOPA Version", HFILL
}},
4068 { &hf_mq_fopa_length
, {"Length..", "mq.fopa.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "FOPA Length", HFILL
}},
4069 { &hf_mq_fopa_unknown1
, {"Unknown1", "mq.fopa.unknown1", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "FOPA unknown1", HFILL
}},
4070 { &hf_mq_fopa_unknown2
, {"Unknown2", "mq.fopa.unknown2", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "FOPA unknown2", HFILL
}},
4071 { &hf_mq_fopa_unknown3
, {"Unknown3", "mq.fopa.unknown3", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "FOPA unknown3", HFILL
}},
4072 { &hf_mq_fopa_qprotect
, {"qprotect", "mq.fopa.qprotect", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "FOPA queue protection", HFILL
}},
4073 { &hf_mq_fopa_unknown4
, {"Unknown4", "mq.fopa.unknown4", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "FOPA unknown4", HFILL
}},
4074 { &hf_mq_fopa_unknown5
, {"Unknown5", "mq.fopa.unknown5", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "FOPA unknown5", HFILL
}},
4076 { &hf_mq_msgreq_version
, {"version..", "mq.msgreq.version" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ version", HFILL
}},
4077 { &hf_mq_msgreq_handle
, {"handle...", "mq.msgreq.handle" , FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSGREQ handle", HFILL
}},
4078 { &hf_mq_msgreq_RecvBytes
, {"RecvBytes", "mq.msgreq.unknown1" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Received Bytes", HFILL
}},
4079 { &hf_mq_msgreq_RqstBytes
, {"RqstBytes", "mq.msgreq.rqstbytes", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Requesed Bytes", HFILL
}},
4080 { &hf_mq_msgreq_MaxMsgLen
, {"MaxMsgLen", "mq.msgreq.maxmsglen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Maximum Msg Length", HFILL
}},
4081 { &hf_mq_msgreq_WaitIntrv
, {"WaitIntrv", "mq.msgreq.waitintrv", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Wait Interval", HFILL
}},
4082 { &hf_mq_msgreq_QueStatus
, {"QueStatus", "mq.msgreq.questatus", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSGREQ Queue Status", HFILL
}},
4083 { &hf_mq_msgreq_RqstFlags
, {"RqstFlags", "mq.msgreq.rqstflags", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Request Flags", HFILL
}},
4084 { &hf_mq_msgreq_GlbMsgIdx
, {"GlbMsgIdx", "mq.msgreq.glbmsgidx", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Global Message Index", HFILL
}},
4085 { &hf_mq_msgreq_SelectIdx
, {"SelectIdx", "mq.msgreq.selectIdx", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Selection Index", HFILL
}},
4086 { &hf_mq_msgreq_MQMDVers
, {"MQMDVers.", "mq.msgreq.mqmdvers" , FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ MQMD Version", HFILL
}},
4087 { &hf_mq_msgreq_ccsid
, {"CCSID....", "mq.msgreq.ccsid" , FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(&GET_VALRV(ccsid
)), 0x0, "MSGREQ ccsid", HFILL
}},
4088 { &hf_mq_msgreq_encoding
, {"Encoding.", "mq.msgreq.encoding" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ encoding", HFILL
}},
4089 { &hf_mq_msgreq_MsgSeqNum
, {"MsgSeqNum", "mq.msgreq.msgseqnum", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Message Sequence Number", HFILL
}},
4090 { &hf_mq_msgreq_offset
, {"Offset...", "mq.msgreq.offset" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGREQ Offset", HFILL
}},
4091 { &hf_mq_msgreq_mtchMsgId
, {"mtchMsgId", "mq.msgreq.mtchMsgId", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match MsgID", HFILL
}},
4092 { &hf_mq_msgreq_mtchCorId
, {"mtchCorID", "mq.msgreq.mtchcorid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match Correlation Id", HFILL
}},
4093 { &hf_mq_msgreq_mtchGrpid
, {"mtchGrpID", "mq.msgreq.mtchgrpid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match Group ID", HFILL
}},
4094 { &hf_mq_msgreq_mtchMsgTk
, {"mtchMsgTk", "mq.msgreq.mtchmsgtk", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGREQ match Message Token", HFILL
}},
4096 { &hf_mq_msgasy_version
, {"version..", "mq.msgasy.version" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC version", HFILL
}},
4097 { &hf_mq_msgasy_handle
, {"handle...", "mq.msgasy.handle" , FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSGASYNC handle", HFILL
}},
4098 { &hf_mq_msgasy_MsgIndex
, {"MsgIndex.", "mq.msgasy.msgindex" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Message Index", HFILL
}},
4099 { &hf_mq_msgasy_GlbMsgIdx
, {"GlbMsgIdx", "mq.msgasy.glbmsgidx", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Global Message Index", HFILL
}},
4100 { &hf_mq_msgasy_SegLength
, {"SegLength", "mq.msgasy.seglength", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Segment Length", HFILL
}},
4101 { &hf_mq_msgasy_SegmIndex
, {"SegmIndex", "mq.msgasy.segmindex", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Segment Index", HFILL
}},
4102 { &hf_mq_msgasy_SeleIndex
, {"SeleIndex", "mq.msgasy.seleindex", FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Selection Index", HFILL
}},
4103 { &hf_mq_msgasy_ReasonCod
, {"ReasonCod", "mq.msgasy.reasoncod", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MSGASYNC Reason Code", HFILL
}},
4104 { &hf_mq_msgasy_ActMsgLen
, {"ActMsgLen", "mq.msgasy.actmsglen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Actual Message Length", HFILL
}},
4105 { &hf_mq_msgasy_TotMsgLen
, {"TotMsgLen", "mq.msgasy.totmsglen", FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "MSGASYNC Total Message Length", HFILL
}},
4106 { &hf_mq_msgasy_MsgToken
, {"MsgToken.", "mq.msgasy.msgtoken" , FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGASYNC Mesasage Token", HFILL
}},
4107 { &hf_mq_msgasy_Status
, {"status...", "mq.msgasy.status" , FT_UINT16
, BASE_HEX
, NULL
, 0x0, "MSGASYNC Status", HFILL
}},
4108 { &hf_mq_msgasy_resolQNLn
, {"resolQNLn", "mq.msgasy.resolqnln", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "MSGASYNC Resolved Queue Name Length", HFILL
}},
4109 { &hf_mq_msgasy_resolQNme
, {"resolQNme", "mq.msgasy.resolqnme", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MSGASYNC Resolved Queue Name", HFILL
}},
4110 { &hf_mq_msgasy_padding
, {"Padding..", "mq.msgasy.padding" , FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MSGASYNC Padding", HFILL
}},
4112 { &hf_mq_notif_vers
, {"version.", "mq.notif.vers" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "NOTIFICATION version", HFILL
}},
4113 { &hf_mq_notif_handle
, {"handle..", "mq.notif.handle", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "NOTIFICATION handle", HFILL
}},
4114 { &hf_mq_notif_code
, {"code....", "mq.notif.code" , FT_UINT32
, BASE_HEX_DEC
, VALS(GET_VALSV(notifcode
)), 0x0, "NOTIFICATION code", HFILL
}},
4115 { &hf_mq_notif_value
, {"value...", "mq.notif.value" , FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0, "NOTIFICATION MQRC", HFILL
}},
4117 { &hf_mq_ping_length
, {"Length", "mq.ping.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PING length", HFILL
}},
4118 { &hf_mq_ping_buffer
, {"Buffer", "mq.ping.buffer", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PING buffer", HFILL
}},
4120 { &hf_mq_reset_length
, {"Length", "mq.reset.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "RESET length", HFILL
}},
4121 { &hf_mq_reset_seqnum
, {"SeqNum", "mq.reset.seqnum", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "RESET sequence number", HFILL
}},
4123 { &hf_mq_status_length
, {"Length", "mq.status.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "STATUS length", HFILL
}},
4124 { &hf_mq_status_code
, {"Code..", "mq.status.code" , FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(status
)), 0x0, "STATUS code", HFILL
}},
4125 { &hf_mq_status_value
, {"Value.", "mq.status.value" , FT_UINT32
, BASE_DEC
, NULL
, 0x0, "STATUS value", HFILL
}},
4127 { &hf_mq_od_StructID
, {"StructID.........", "mq.od.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4128 { &hf_mq_od_version
, {"version..........", "mq.od.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD version", HFILL
}},
4129 { &hf_mq_od_objecttype
, {"ObjType..........", "mq.od.objtype", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(objtype
)), 0x0, "OD object type", HFILL
}},
4130 { &hf_mq_od_objectname
, {"ObjName..........", "mq.od.objname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OD object name", HFILL
}},
4131 { &hf_mq_od_objqmgrname
, {"ObjQMgr..........", "mq.od.objqmgrname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OD object queue manager name", HFILL
}},
4132 { &hf_mq_od_dynqname
, {"DynQName.........", "mq.od.dynqname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OD dynamic queue name", HFILL
}},
4133 { &hf_mq_od_altuserid
, {"AltUserID........", "mq.od.altuserid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OD alternate userid", HFILL
}},
4134 { &hf_mq_od_recspresent
, {"NbrRecord........", "mq.od.nbrrec", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD number of records", HFILL
}},
4135 { &hf_mq_od_knowndstcnt
, {"Known Dest Count.", "mq.od.kdestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD known destination count", HFILL
}},
4136 { &hf_mq_od_unknowdstcnt
, {"Unknown Dest Cnt.", "mq.od.udestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD unknown destination count", HFILL
}},
4137 { &hf_mq_od_invaldstcnt
, {"Invalid Dest Cnt.", "mq.od.idestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD invalid destination count", HFILL
}},
4138 { &hf_mq_od_objrecofs
, {"Offset of 1st OR.", "mq.od.offsetor", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD offset of first OR", HFILL
}},
4139 { &hf_mq_od_resprecofs
, {"Offset of 1st RR.", "mq.od.offsetrr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OD offset of first RR", HFILL
}},
4140 { &hf_mq_od_objrecptr
, {"Addr of 1st OR.", "mq.od.addror", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "OD address of first OR", HFILL
}},
4141 { &hf_mq_od_resprecptr
, {"Addr of 1st RR.", "mq.od.addrrr", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "OD address of first RR", HFILL
}},
4142 { &hf_mq_od_altsecurid
, {"Alt security id..", "mq.od.altsecid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OD alternate security id", HFILL
}},
4143 { &hf_mq_od_resolvqname
, {"Resolved Q Name..", "mq.od.resolvq", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OD resolved queue name", HFILL
}},
4144 { &hf_mq_od_resolvqmgrnm
, {"Resolved QMgrName", "mq.od.resolvqmgr", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OD resolved queue manager name", HFILL
}},
4145 { &hf_mq_od_resolvobjtyp
, {"Resolv Obj Type..", "mq.od.resolvedobjtype", FT_UINT32
, BASE_DEC
, VALS(GET_VALSV(objtype
)), 0x0, "OD resolved object type", HFILL
}},
4147 { &hf_mq_or_objname
, {"Object name...", "mq.or.objname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OR object name", HFILL
}},
4148 { &hf_mq_or_objqmgrname
, {"Object QMgr Nm", "mq.or.objqmgrname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "OR object queue manager name", HFILL
}},
4150 { &hf_mq_rr_compcode
, {"Comp Code", "mq.rr.completioncode", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OR completion code", HFILL
}},
4151 { &hf_mq_rr_reascode
, {"Reas Code", "mq.rr.reasoncode", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "OR reason code", HFILL
}},
4153 { &hf_mq_pmr_msgid
, {"Message Id", "mq.pmr.msgid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR Message Id", HFILL
}},
4154 { &hf_mq_pmr_correlid
, {"Correlation Id", "mq.pmr.correlid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR Correlation Id", HFILL
}},
4155 { &hf_mq_pmr_groupid
, {"GroupId", "mq.pmr.groupid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR GroupId", HFILL
}},
4156 { &hf_mq_pmr_feedback
, {"Feedback", "mq.pmr.feedback", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMR Feedback", HFILL
}},
4157 { &hf_mq_pmr_acttoken
, {"Accounting token", "mq.pmr.acttoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "PMR accounting token", HFILL
}},
4159 { &hf_mq_md_StructID
, {"StructID.", "mq.md.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4160 { &hf_mq_md_version
, {"Version..", "mq.md.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD version", HFILL
}},
4161 { &hf_mq_md_report
, {"Report...", "mq.md.report", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD report", HFILL
}},
4162 { &hf_mq_md_msgtype
, {"Msg Type.", "mq.md.msgtype", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD message type", HFILL
}},
4163 { &hf_mq_md_expiry
, {"Expiry .", "mq.md.expiry", FT_INT32
, BASE_DEC
, NULL
, 0x0, "MD expiry", HFILL
}},
4164 { &hf_mq_md_feedback
, {"Feedback.", "mq.md.feedback", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD feedback", HFILL
}},
4165 { &hf_mq_md_encoding
, {"Encoding.", "mq.md.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD encoding", HFILL
}},
4166 { &hf_mq_md_ccsid
, {"CCSID....", "mq.md.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(&GET_VALRV(ccsid
)), 0x0, "MD character set", HFILL
}},
4167 { &hf_mq_md_format
, {"Format...", "mq.md.format", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD format", HFILL
}},
4168 { &hf_mq_md_priority
, {"Priority.", "mq.md.priority", FT_INT32
, BASE_DEC
, NULL
, 0x0, "MD priority", HFILL
}},
4169 { &hf_mq_md_persistence
, {"Persist..", "mq.md.persistence", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD persistence", HFILL
}},
4170 { &hf_mq_md_msgid
, {"Msg ID...", "mq.md.msgid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD Message Id", HFILL
}},
4171 { &hf_mq_md_correlid
, {"CorrelID.", "mq.md.correlid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD Correlation Id", HFILL
}},
4172 { &hf_mq_md_backoutcnt
, {"BackoCnt.", "mq.md.backount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD Backout count", HFILL
}},
4173 { &hf_mq_md_replytoq
, {"ReplyToQ.", "mq.md.replytoq", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD ReplyTo queue", HFILL
}},
4174 { &hf_mq_md_replytoqmgr
, {"RepToQMgr", "mq.md.replytoqmgr", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD ReplyTo queue manager", HFILL
}},
4175 { &hf_mq_md_userid
, {"UserId...", "mq.md.userid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD UserId", HFILL
}},
4176 { &hf_mq_md_acttoken
, {"AccntTok.", "mq.md.acttoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD accounting token", HFILL
}},
4177 { &hf_mq_md_appliddata
, {"AppIdData", "mq.md.appldata", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD Put applicationId data", HFILL
}},
4178 { &hf_mq_md_putappltype
, {"PutAppTyp", "mq.md.appltype", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(mqat
)), 0x0, "MD Put application type", HFILL
}},
4179 { &hf_mq_md_putapplname
, {"PutAppNme", "mq.md.applname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD Put application name", HFILL
}},
4180 { &hf_mq_md_putdate
, {"PutDatGMT", "mq.md.date", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD Put date", HFILL
}},
4181 { &hf_mq_md_puttime
, {"PutTimGMT", "mq.md.time", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD Put time", HFILL
}},
4182 { &hf_mq_md_apporigdata
, {"AppOriDat", "mq.md.origdata", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "MD Application original data", HFILL
}},
4183 { &hf_mq_md_groupid
, {"GroupId..", "mq.md.groupid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "MD GroupId", HFILL
}},
4184 { &hf_mq_md_msgseqnumber
, {"MsgSeqNum", "mq.md.msgseqnumber", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD Message sequence number", HFILL
}},
4185 { &hf_mq_md_offset
, {"Offset...", "mq.md.offset", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "MD Offset", HFILL
}},
4186 { &hf_mq_md_msgflags
, {"Msg flags", "mq.md.msgflags", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "MD Message flags", HFILL
}},
4187 { &hf_mq_md_origlen
, {"Orig len.", "mq.md.origlength", FT_INT32
, BASE_DEC
, NULL
, 0x0, "MD Original length", HFILL
}},
4189 { &hf_mq_dlh_StructID
, {"StructID.", "mq.dlh.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4190 { &hf_mq_dlh_version
, {"Version..", "mq.dlh.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DLH version", HFILL
}},
4191 { &hf_mq_dlh_reason
, {"Reason...", "mq.dlh.reason", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DLH reason", HFILL
}},
4192 { &hf_mq_dlh_destq
, {"Dest Q...", "mq.dlh.destq", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "DLH destination queue", HFILL
}},
4193 { &hf_mq_dlh_destqmgr
, {"DestQMgr.", "mq.dlh.destqmgr", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "DLH destination queue manager", HFILL
}},
4194 { &hf_mq_dlh_encoding
, {"Encoding.", "mq.dlh.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DLH encoding", HFILL
}},
4195 { &hf_mq_dlh_ccsid
, {"CCSID....", "mq.dlh.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(&GET_VALRV(ccsid
)), 0x0, "DLH character set", HFILL
}},
4196 { &hf_mq_dlh_format
, {"Format...", "mq.dlh.format", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "DLH format", HFILL
}},
4197 { &hf_mq_dlh_putappltype
, {"PutAppTyp", "mq.dlh.putappltype", FT_INT32
, BASE_DEC
, VALS(GET_VALSV(mqat
)), 0x0, "DLH put application type", HFILL
}},
4198 { &hf_mq_dlh_putapplname
, {"PutAppNme", "mq.dlh.putapplname", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "DLH put application name", HFILL
}},
4199 { &hf_mq_dlh_putdate
, {"PutDatGMT", "mq.dlh.putdate", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "DLH put date", HFILL
}},
4200 { &hf_mq_dlh_puttime
, {"PutTimGMT", "mq.dlh.puttime", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "DLH put time", HFILL
}},
4201 { &hf_mq_dh_putmsgrecfld
, {"Flags PMR", "mq.dh.flagspmr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH flags PMR", HFILL
}},
4202 { &hf_mq_dh_recspresent
, {"NumOfRecs", "mq.dh.nbrrec", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH number of records", HFILL
}},
4203 { &hf_mq_dh_objrecofs
, {"Ofs1stOR.", "mq.dh.offsetor", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH offset of first OR", HFILL
}},
4204 { &hf_mq_dh_putmsgrecofs
, {"Ofs1stPMR", "mq.dh.offsetpmr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "DH offset of first PMR", HFILL
}},
4206 { &hf_mq_gmo_StructID
, {"StructID.", "mq.gmo.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4207 { &hf_mq_gmo_version
, {"Version..", "mq.gmo.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "GMO version", HFILL
}},
4208 { &hf_mq_gmo_options
, {"GetMsgOpt", "mq.gmo.getmsgopt", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO Get Message Options", HFILL
}},
4210 { &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
}},
4211 { &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
}},
4212 { &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
}},
4213 { &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
}},
4214 { &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
}},
4215 { &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
}},
4216 { &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
}},
4217 { &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
}},
4218 { &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
}},
4219 { &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
}},
4220 { &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
}},
4221 { &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
}},
4222 { &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
}},
4223 { &hf_mq_gmo_options_CONVERT
, {"CONVERT", "mq.gmo.options.CONVERT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_CONVERT
, "GMO options CONVERT", HFILL
}},
4224 { &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
}},
4225 { &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
}},
4226 { &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
}},
4227 { &hf_mq_gmo_options_UNLOCK
, {"UNLOCK", "mq.gmo.options.UNLOCK", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_UNLOCK
, "GMO options UNLOCK", HFILL
}},
4228 { &hf_mq_gmo_options_LOCK
, {"LOCK", "mq.gmo.options.LOCK", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_LOCK
, "GMO options LOCK", HFILL
}},
4229 { &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
}},
4230 { &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
}},
4231 { &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
}},
4232 { &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
}},
4233 { &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
}},
4234 { &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
}},
4235 { &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
}},
4236 { &hf_mq_gmo_options_SYNCPOINT
, {"SYNCPOINT", "mq.gmo.options.SYNCPOINT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_SYNCPOINT
, "GMO options SYNCPOINT", HFILL
}},
4237 { &hf_mq_gmo_options_WAIT
, {"WAIT", "mq.gmo.options.WAIT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQGMO_WAIT
, "GMO options WAIT", HFILL
}},
4239 { &hf_mq_gmo_waitinterval
, {"WaitIntv.", "mq.gmo.waitint", FT_INT32
, BASE_DEC
, NULL
, 0x0, "GMO wait interval", HFILL
}},
4240 { &hf_mq_gmo_signal1
, {"Signal 1.", "mq.gmo.signal1", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO signal 1", HFILL
}},
4241 { &hf_mq_gmo_signal2
, {"Signal 2.", "mq.gmo.signal2", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO signal 2", HFILL
}},
4242 { &hf_mq_gmo_resolvqname
, {"ResQName.", "mq.gmo.resolvq", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "GMO resolved queue name", HFILL
}},
4243 { &hf_mq_gmo_matchoptions
, {"MatchOpt.", "mq.gmo.matchopt", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "GMO match options", HFILL
}},
4245 { &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
}},
4246 { &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
}},
4247 { &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
}},
4248 { &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
}},
4249 { &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
}},
4250 { &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
}},
4252 { &hf_mq_gmo_groupstatus
, {"GrpStatus", "mq.gmo.grpstat", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO group status", HFILL
}},
4253 { &hf_mq_gmo_segmstatus
, {"SegStatus", "mq.gmo.sgmtstat", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO segment status", HFILL
}},
4254 { &hf_mq_gmo_segmentation
, {"Segmentat", "mq.gmo.segmentation", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO segmentation", HFILL
}},
4255 { &hf_mq_gmo_reserved
, {"Reserved.", "mq.gmo.reserved", FT_UINT8
, BASE_HEX
, NULL
, 0x0, "GMO reserved", HFILL
}},
4256 { &hf_mq_gmo_msgtoken
, {"MsgToken.", "mq.gmo.msgtoken", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "GMO message token", HFILL
}},
4257 { &hf_mq_gmo_returnedlen
, {"RtnLength", "mq.gmo.retlen", FT_INT32
, BASE_DEC
, NULL
, 0x0, "GMO returned length", HFILL
}},
4259 { &hf_mq_lpoo_StructID
, {"StructID......", "mq.lpoo.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4260 { &hf_mq_lpoo_version
, {"Version.......", "mq.lpoo.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "LPOO version", HFILL
}},
4261 { &hf_mq_lpoo_options
, {"Options.......", "mq.lpoo.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "LPOO options", HFILL
}},
4262 { &hf_mq_lpoo_lpiopts
, {"LpiOpts.......", "mq.lpoo.lpioopts", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "LPOO Lpi Options", HFILL
}},
4264 { &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
}},
4265 { &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
}},
4266 { &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
}},
4268 { &hf_mq_lpoo_defpersist
, {"DefPersitence.", "mq.lpoo.defpersist", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "LPOO Default Persitence", HFILL
}},
4269 { &hf_mq_lpoo_defputresptype
, {"DefPutRespType", "mq.lpoo.defputresptype", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "LPOO Default Put Response Type", HFILL
}},
4270 { &hf_mq_lpoo_defreadahead
, {"DefReadAHead..", "mq.lpoo.defreadahead", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "LPOO Default Read AHead", HFILL
}},
4272 { &hf_mq_lpoo_qprotect
, {"qprotect......", "mq.lpoo.qprotect", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "LPOO queue protection", HFILL
}},
4273 { &hf_mq_lpoo_unknown6
, {"Unknown6......", "mq.lpoo.unknown6", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "LPOO unknown6", HFILL
}},
4274 /*{ &hf_mq_lpoo_unknown7 , {"Unknown7......", "mq.lpoo.unknown7", FT_UINT16, BASE_HEX, NULL, 0x0, "LPOO unknown7", HFILL }},*/
4275 { &hf_mq_lpoo_xtradata
, {"ExtraData.....", "mq.lpoo.extradata", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "LPOO Extra Data", HFILL
}},
4277 { &hf_mq_pmo_StructID
, {"StructID.", "mq.pmo.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4278 { &hf_mq_pmo_version
, {"Version..", "mq.pmo.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO version", HFILL
}},
4279 { &hf_mq_pmo_options
, {"Options..", "mq.pmo.options", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO options", HFILL
}},
4280 { &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
}},
4281 { &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
}},
4282 { &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
}},
4283 { &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
}},
4284 { &hf_mq_pmo_options_RETAIN
, {"RETAIN", "mq.pmo.options.RETAIN", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQPMO_RETAIN
, "PMO options RETAIN", HFILL
}},
4285 { &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
}},
4286 { &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
}},
4287 { &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
}},
4288 { &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
}},
4289 { &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
}},
4290 { &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
}},
4291 { &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
}},
4292 { &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
}},
4293 { &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
}},
4294 { &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
}},
4295 { &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
}},
4296 { &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
}},
4297 { &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
}},
4298 { &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
}},
4299 { &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
}},
4300 { &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
}},
4301 { &hf_mq_pmo_options_SYNCPOINT
, {"SYNCPOINT", "mq.pmo.options.SYNCPOINT", FT_BOOLEAN
, 32, TFS(&tfs_set_notset
), MQ_MQPMO_SYNCPOINT
, "PMO options SYNCPOINT", HFILL
}},
4303 { &hf_mq_pmo_timeout
, {"Timeout..", "mq.pmo.timeout", FT_INT32
, BASE_DEC
, NULL
, 0x0, "PMO time out", HFILL
}},
4304 { &hf_mq_pmo_context
, {"Context..", "mq.pmo.context", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO context", HFILL
}},
4305 { &hf_mq_pmo_knowndstcnt
, {"KnDstCnt.", "mq.pmo.kdstcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO known destination count", HFILL
}},
4306 { &hf_mq_pmo_unkndstcnt
, {"UkDstCnt.", "mq.pmo.udestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO unknown destination count", HFILL
}},
4307 { &hf_mq_pmo_invaldstcnt
, {"InDstCnt.", "mq.pmo.idestcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO invalid destination count", HFILL
}},
4308 { &hf_mq_pmo_resolvqname
, {"ResQName.", "mq.pmo.resolvq", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "PMO resolved queue name", HFILL
}},
4309 { &hf_mq_pmo_resolvqmgr
, {"ResQMgr..", "mq.pmo.resolvqmgr", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "PMO resolved queue manager name", HFILL
}},
4310 { &hf_mq_pmo_recspresent
, {"NumRecs..", "mq.pmo.nbrrec", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO number of records", HFILL
}},
4311 { &hf_mq_pmo_putmsgrecfld
, {"PMR Flag.", "mq.pmo.flagspmr", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO flags PMR fields", HFILL
}},
4312 { &hf_mq_pmo_putmsgrecofs
, {"Ofs1stPMR", "mq.pmo.offsetpmr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO offset of first PMR", HFILL
}},
4313 { &hf_mq_pmo_resprecofs
, {"Off1stRR.", "mq.pmo.offsetrr", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "PMO offset of first RR", HFILL
}},
4314 { &hf_mq_pmo_putmsgrecptr
, {"Adr1stPMR", "mq.pmo.addrrec", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO address of first record", HFILL
}},
4315 { &hf_mq_pmo_resprecptr
, {"Adr1stRR.", "mq.pmo.addrres", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "PMO address of first response record", HFILL
}},
4317 { &hf_mq_head_StructID
, {"Structid", "mq.head.structid", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "Header structid", HFILL
}},
4318 { &hf_mq_head_version
, {"version.", "mq.head.version", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Header version", HFILL
}},
4319 { &hf_mq_head_length
, {"Length..", "mq.head.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Header length", HFILL
}},
4320 { &hf_mq_head_encoding
, {"Encoding", "mq.head.encoding", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Header encoding", HFILL
}},
4321 { &hf_mq_head_ccsid
, {"CCSID...", "mq.head.ccsid", FT_INT32
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(&GET_VALRV(ccsid
)), 0x0, "Header character set", HFILL
}},
4322 { &hf_mq_head_format
, {"Format..", "mq.head.format", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "Header format", HFILL
}},
4323 { &hf_mq_head_flags
, {"Flags...", "mq.head.flags", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "Header flags", HFILL
}},
4324 { &hf_mq_head_struct
, {"Struct..", "mq.head.struct", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "Header struct", HFILL
}},
4326 { &hf_mq_xa_length
, {"Length.......", "mq.xa.length", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XA Length", HFILL
}},
4327 { &hf_mq_xa_returnvalue
, {"Return value.", "mq.xa.returnvalue", FT_INT32
, BASE_DEC
, VALS(mq_xaer_vals
), 0x0, "XA Return Value", HFILL
}},
4328 { &hf_mq_xa_tmflags
, {"TransMgrFlags", "mq.xa.tmflags", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "XA Transaction Manager Flags", HFILL
}},
4329 { &hf_mq_xa_rmid
, {"ResourceMgrID", "mq.xa.rmid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XA Resource Manager ID", HFILL
}},
4330 { &hf_mq_xa_count
, {"Number of Xid", "mq.xa.nbxid", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "XA Number of Xid", HFILL
}},
4331 { &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
}},
4332 { &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
}},
4333 { &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
}},
4334 { &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
}},
4335 { &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
}},
4336 { &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
}},
4337 { &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
}},
4338 { &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
}},
4340 { &hf_mq_xa_xid_formatid
, {"Format ID....", "mq.xa.xid.formatid", FT_INT32
, BASE_DEC
, NULL
, 0x0, "XA Xid Format ID", HFILL
}},
4341 { &hf_mq_xa_xid_glbxid_len
, {"GlbTransIDLen", "mq.xa.xid.gxidl", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "XA Xid Global TransactionId Length", HFILL
}},
4342 { &hf_mq_xa_xid_brq_length
, {"BranchQualLen", "mq.xa.xid.bql", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "XA Xid Branch Qualifier Length", HFILL
}},
4343 { &hf_mq_xa_xid_globalxid
, {"GlbTransactID", "mq.xa.xid.gxid", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "XA Xid Global TransactionId", HFILL
}},
4344 { &hf_mq_xa_xid_brq
, {"BranchQualif.", "mq.xa.xid.bq", FT_BYTES
, BASE_NONE
, NULL
, 0x0, "XA Xid Branch Qualifier", HFILL
}},
4345 { &hf_mq_xa_xainfo_length
, {"Length.......", "mq.xa.xainfo.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, "XA XA_info Length", HFILL
}},
4346 { &hf_mq_xa_xainfo_value
, {"Value........", "mq.xa.xainfo.value", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "XA XA_info Value", HFILL
}},
4348 { &hf_mq_charv_vsptr
, {"VLStr Addr.", "mq.charv.vsptr", FT_UINT32
, BASE_HEX
, NULL
, 0x0, "VS Address", HFILL
}},
4349 { &hf_mq_charv_vsoffset
, {"VLStr Offs.", "mq.charv.vsoffset", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "VS Offset", HFILL
}},
4350 { &hf_mq_charv_vsbufsize
, {"VLStr BufSz", "mq.charv.vsbufsize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "VS BufSize", HFILL
}},
4351 { &hf_mq_charv_vslength
, {"VLStr Len..", "mq.charv.vslength", FT_UINT32
, BASE_DEC
, NULL
, 0x0, "VS Length", HFILL
}},
4352 { &hf_mq_charv_vsccsid
, {"VLStr Ccsid", "mq.charv.vsccsid", FT_INT32
, BASE_DEC
, NULL
, 0x0, "VS CCSID", HFILL
}},
4353 { &hf_mq_charv_vsvalue
, {"VLStr Value", "mq.charv.vsvalue", FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, "VS value", HFILL
}}
4356 static gint
*ett
[] =
4380 &ett_mq_spi_options
,
4383 &ett_mq_open_option
,
4384 &ett_mq_close_option
,
4391 &ett_mq_od_resobjstr
,
4401 &ett_mq_gmo_matchoption
,
4407 &ett_mq_lpoo_options
,
4408 &ett_mq_lpoo_lpiopts
,
4418 module_t
*mq_module
;
4420 proto_mq
= proto_register_protocol("WebSphere MQ", "MQ", "mq");
4421 proto_register_field_array(proto_mq
, hf
, array_length(hf
));
4422 proto_register_subtree_array(ett
, array_length(ett
));
4424 register_heur_dissector_list("mq", &mq_heur_subdissector_list
);
4425 register_init_routine(mq_init
);
4427 mq_module
= prefs_register_protocol(proto_mq
, NULL
);
4428 prefs_register_bool_preference(mq_module
, "desegment",
4429 "Reassemble MQ messages spanning multiple TCP segments",
4430 "Whether the MQ dissector should reassemble messages spanning multiple TCP segments."
4431 " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
4433 prefs_register_bool_preference(mq_module
, "reassembly",
4434 "Reassemble segmented MQ messages",
4435 "Whether the MQ dissector should reassemble MQ messages spanning multiple TSH segments",
4439 void proto_reg_handoff_mq(void)
4441 /* Unlike some protocol (HTTP, POP3, ...) that clearly map to a standard
4442 * class of applications (web browser, e-mail client, ...) and have a very well
4443 * known port number, the MQ applications are most often specific to a business application */
4445 mq_tcp_handle
= new_create_dissector_handle(dissect_mq_tcp
, proto_mq
);
4446 mq_spx_handle
= create_dissector_handle(dissect_mq_spx
, proto_mq
);
4448 dissector_add_handle("tcp.port", mq_tcp_handle
);
4449 heur_dissector_add("tcp", dissect_mq_heur_tcp
, proto_mq
);
4450 heur_dissector_add("netbios", dissect_mq_heur_netbios
, proto_mq
);
4451 heur_dissector_add("http", dissect_mq_heur_http
, proto_mq
);
4452 dissector_add_uint("spx.socket", MQ_SOCKET_SPX
, mq_spx_handle
);
4453 data_handle
= find_dissector("data");
4454 mqpcf_handle
= find_dissector("mqpcf");
4458 * Editor modelines - http://www.wireshark.org/tools/modelines.html
4463 * indent-tabs-mode: t
4466 * vi: set shiftwidth=4 tabstop=4 noexpandtab:
4467 * :indentSize=4:tabSize=4:noTabs=false: