aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorDario Lombardo <lomato@gmail.com>2018-01-16 14:40:06 +0100
committerAnders Broman <a.broman58@gmail.com>2018-02-02 05:22:18 +0000
commitbec60fa461dc2f225929cbcec33308b430f55a08 (patch)
treedc3abccdde6d6b904c628b6e686343b99b09460f /epan/dissectors
parent0fda778b45bc2d6977a87404bc3fac5c30826b8a (diff)
packet-mq: Add support for IMS+TM Struct
Added support for IMS, TM, TMC2 Struct Improve display some Flags in ID Struct Fix display for FCNO Struct Fix error in get_mq_pdu_len Code reformat (VS2017) Moved DEFINE to header file More struct display fixed Fix for IMS Msg len display Change-Id: I80bfd25a5079598fc44124dc2c7b850640a38b00 Reviewed-on: https://code.wireshark.org/review/25295 Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-mq-base.c40
-rw-r--r--epan/dissectors/packet-mq-pcf.c32
-rw-r--r--epan/dissectors/packet-mq.c1091
-rw-r--r--epan/dissectors/packet-mq.h445
4 files changed, 891 insertions, 717 deletions
diff --git a/epan/dissectors/packet-mq-base.c b/epan/dissectors/packet-mq-base.c
index f4bd9c3003..db6ba01411 100644
--- a/epan/dissectors/packet-mq-base.c
+++ b/epan/dissectors/packet-mq-base.c
@@ -2,7 +2,7 @@
* Routines for IBM WebSphere MQ packet dissection base
*
* metatech <metatech@flashmail.com>
- * robionekenobi <robionekenobi@bluewin.ch>
+ * Robert Grange <robionekenobi@bluewin.ch>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -129,7 +129,7 @@ DEF_VALSBX(FilterOP)
/* 29*/ DEF_VALS1(MQCFOP_EXCLUDES_GEN),
DEF_VALSE;
-DEF_VALSB(PutResponse)
+DEF_VALSBX(MQPRT)
/* 0*/ DEF_VALS1(MQPRT_RESPONSE_AS_PARENT),
/* 1*/ DEF_VALS1(MQPRT_SYNC_RESPONSE),
/* 2*/ DEF_VALS1(MQPRT_ASYNC_RESPONSE),
@@ -424,7 +424,7 @@ DEF_VALSB(ReorgCtls)
DEF_VALSE;
#endif
-DEF_VALSB(MQREADA)
+DEF_VALSBX(MQREADA)
/* 0*/ DEF_VALS1(MQREADA_NO),
/* 1*/ DEF_VALS1(MQREADA_YES),
/* 2*/ DEF_VALS1(MQREADA_DISABLED),
@@ -432,7 +432,7 @@ DEF_VALSB(MQREADA)
/* 4*/ DEF_VALS1(MQREADA_BACKLOG),
DEF_VALSE;
-DEF_VALSB(PropertyCtlVal)
+DEF_VALSBX(MQPROP)
/* 0*/ DEF_VALS1(MQPROP_COMPATIBILITY),
/* 1*/ DEF_VALS1(MQPROP_NONE),
/* 2*/ DEF_VALS1(MQPROP_ALL),
@@ -452,7 +452,7 @@ DEF_VALSB(EvtOrig)
/* 8*/ DEF_VALS1(MQEVO_REST),
DEF_VALSE;
-DEF_VALSB(Persistence)
+DEF_VALSBX(MQPER)
/* -1*/ DEF_VALS1(MQPER_PERSISTENCE_AS_PARENT),
/* 0*/ DEF_VALS1(MQPER_NOT_PERSISTENT),
/* 1*/ DEF_VALS1(MQPER_PERSISTENT),
@@ -485,8 +485,9 @@ DEF_VALSB(MQIMGRCOV)
/* 1*/ DEF_VALS1(MQIMGRCOV_YES),
/* 2*/ DEF_VALS1(MQIMGRCOV_AS_Q_MGR),
DEF_VALSE;
+#endif
-DEF_VALSB(MsgType)
+DEF_VALSBX(MQMT)
/* 1*/ DEF_VALS1(MQMT_REQUEST),
/* 2*/ DEF_VALS1(MQMT_REPLY),
/* 3*/ DEF_VALS1(MQMT_DATAGRAM),
@@ -494,7 +495,6 @@ DEF_VALSB(MsgType)
/* 112*/ DEF_VALS1(MQMT_MQE_FIELDS_FROM_MQE),
/* 113*/ DEF_VALS1(MQMT_MQE_FIELDS),
DEF_VALSE;
-#endif
DEF_VALSB(Platform)
/* 1*/ DEF_VALS2(MQPL_ZOS, "ZOS/MVS/OS390"),
@@ -1609,7 +1609,7 @@ DEF_VALSB(SMDSUsage)
/* 1*/ DEF_VALS1(MQUSAGE_SMDS_NO_DATA),
DEF_VALSE;
-DEF_VALSB(mqat)
+DEF_VALSB(MQAT)
/* 0*/ DEF_VALS1(MQAT_NO_CONTEXT),
/* 1*/ DEF_VALS1(MQAT_CICS),
/* 2*/ DEF_VALS1(MQAT_ZOS),
@@ -1646,9 +1646,9 @@ DEF_VALSB(mqat)
/* 37*/ DEF_VALS1(MQAT_AMQP),
/* -1*/ DEF_VALS1(MQAT_UNKNOWN),
DEF_VALSE;
-DEF_VALS_EXTBX(mqat);
+DEF_VALS_EXTBX(MQAT);
-DEF_VALSB(mqcmd)
+DEF_VALSB(MQCMD)
/* 0*/ DEF_VALS1(MQCMD_NONE),
/* 1*/ DEF_VALS1(MQCMD_CHANGE_Q_MGR),
/* 2*/ DEF_VALS1(MQCMD_INQUIRE_Q_MGR),
@@ -1843,9 +1843,9 @@ DEF_VALSB(mqcmd)
/* 217*/ DEF_VALS1(MQCMD_AMQP_DIAGNOSTICS),
DEF_VALSE;
-DEF_VALS_EXTBX(mqcmd);
+DEF_VALS_EXTBX(MQCMD);
-DEF_VALSB(mqrc)
+DEF_VALSB(MQRC)
/* 0*/ DEF_VALS1(MQRC_NONE),
/* 2001*/ DEF_VALS1(MQRC_ALIAS_BASE_Q_TYPE_ERROR),
/* 2002*/ DEF_VALS1(MQRC_ALREADY_CONNECTED),
@@ -2744,7 +2744,7 @@ DEF_VALSB(mqrc)
/* 6129*/ DEF_VALS1(MQRC_REFERENCE_ERROR),
/* 6130*/ DEF_VALS1(MQRC_XR_NOT_AVAILABLE),
DEF_VALSE;
-DEF_VALS_EXTBX(mqrc);
+DEF_VALS_EXTBX(MQRC);
DEF_VALSB(objtype)
/* 0*/ DEF_VALS1(MQOT_NONE),
@@ -4468,9 +4468,9 @@ DEF_VALSE;
DEF_VALS_EXTBX(selector);
DEF_VALSB(MQCFINT_Parse)
-/* 1*/ DEF_VALS2(MQIA_APPL_TYPE, GET_VALSP(mqat)),
+/* 1*/ DEF_VALS2(MQIA_APPL_TYPE, GET_VALSP(MQAT)),
/* 4*/ DEF_VALS2(MQIA_DEF_INPUT_OPEN_OPTION, GET_VALSP(InputOpenOption)),
-/* 5*/ DEF_VALS2(MQIA_DEF_PERSISTENCE, GET_VALSP(Persistence)),
+/* 5*/ DEF_VALS2(MQIA_DEF_PERSISTENCE, GET_VALSP(MQPER)),
/* 6*/ DEF_VALS2(MQIA_DEF_PRIORITY, GET_VALSP(MQPRI)),
/* 7*/ DEF_VALS2(MQIA_DEFINITION_TYPE, GET_VALSP(DefinitionType)),
/* 8*/ DEF_VALS2(MQIA_HARDEN_GET_BACKOUT, GET_VALSP(BackOutHardening)),
@@ -4544,12 +4544,12 @@ DEF_VALSB(MQCFINT_Parse)
/* 176*/ DEF_VALS2(MQIA_MULTICAST, GET_VALSP(MQMC)),
/* 181*/ DEF_VALS2(MQIA_INHIBIT_PUB, GET_VALSP(InhibitPublications)),
/* 182*/ DEF_VALS2(MQIA_INHIBIT_SUB, GET_VALSP(InhibitSubscriptions)),
-/* 184*/ DEF_VALS2(MQIA_DEF_PUT_RESPONSE_TYPE, GET_VALSP(PutResponse)),
-/* 185*/ DEF_VALS2(MQIA_TOPIC_DEF_PERSISTENCE, GET_VALSP(Persistence)),
+/* 184*/ DEF_VALS2(MQIA_DEF_PUT_RESPONSE_TYPE, GET_VALSP(MQPRT)),
+/* 185*/ DEF_VALS2(MQIA_TOPIC_DEF_PERSISTENCE, GET_VALSP(MQPER)),
/* 187*/ DEF_VALS2(MQIA_PUBSUB_MODE, GET_VALSP(PubSubMode)),
/* 188*/ DEF_VALS2(MQIA_DEF_READ_AHEAD, GET_VALSP(MQREADA)),
/* 189*/ DEF_VALS2(MQIA_READ_AHEAD, GET_VALSP(MQREADA)),
-/* 190*/ DEF_VALS2(MQIA_PROPERTY_CONTROL, GET_VALSP(PropertyCtlVal)),
+/* 190*/ DEF_VALS2(MQIA_PROPERTY_CONTROL, GET_VALSP(MQPROP)),
/* 193*/ DEF_VALS2(MQIA_BASE_TYPE, GET_VALSP(objtype)),
/* 195*/ DEF_VALS2(MQIA_PM_DELIVERY, GET_VALSP(MsgDelivery)),
/* 196*/ DEF_VALS2(MQIA_NPM_DELIVERY, GET_VALSP(MsgDelivery)),
@@ -4594,12 +4594,12 @@ DEF_VALSB(MQCFINT_Parse)
/* 1001*/ DEF_VALS2(MQIACF_Q_MGR_ATTRS, GET_VALSP(PrmId)),
/* 1002*/ DEF_VALS2(MQIACF_Q_ATTRS, GET_VALSP(PrmId)),
/* 1006*/ DEF_VALS2(MQIACF_REPLACE, GET_VALSP(ReplaceOptions)),
-/* 1010*/ DEF_VALS2(MQIACF_EVENT_APPL_TYPE, GET_VALSP(mqat)),
+/* 1010*/ DEF_VALS2(MQIACF_EVENT_APPL_TYPE, GET_VALSP(MQAT)),
/* 1011*/ DEF_VALS2(MQIACF_EVENT_ORIGIN, GET_VALSP(EvtOrig)),
/* 1012*/ DEF_VALS2(MQIACF_PARAMETER_ID, GET_VALSP(PrmId)),
/* 1016*/ DEF_VALS2(MQIACF_OBJECT_TYPE, GET_VALSP(objtype)),
/* 1020*/ DEF_VALS2(MQIACF_REASON_QUALIFIER, GET_VALSP(MQRQ)),
-/* 1021*/ DEF_VALS2(MQIACF_COMMAND, GET_VALSP(mqcmd)),
+/* 1021*/ DEF_VALS2(MQIACF_COMMAND, GET_VALSP(MQCMD)),
/* 1023*/ DEF_VALS2(MQIACF_OPEN_TYPE, GET_VALSP(QueueStatusOpenTypes)),
/* 1026*/ DEF_VALS2(MQIACF_Q_STATUS_ATTRS, GET_VALSP(PrmId)),
/* 1028*/ DEF_VALS2(MQIACF_HANDLE_STATE, GET_VALSP(HandleStates)),
diff --git a/epan/dissectors/packet-mq-pcf.c b/epan/dissectors/packet-mq-pcf.c
index 700260ce13..26cb8f0e4b 100644
--- a/epan/dissectors/packet-mq-pcf.c
+++ b/epan/dissectors/packet-mq-pcf.c
@@ -2,7 +2,7 @@
* Routines for IBM WebSphere MQ PCF packet dissection
*
* metatech <metatech@flashmail.com>
- * robionekenobi <robionekenobi@bluewin.ch>
+ * Robert Grange <robionekenobi@bluewin.ch>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -102,7 +102,7 @@ static guint32 dissect_mqpcf_getDigits(guint uCnt)
* Here we get a special value_string, that return another value_string
* pointer instead of string value. This let us use the try_val_to_str
* to get val_to_str value from the value of a parameter on a more
-* easier way than using switch cases
+* easier way than using switch cases.
*/
static const guint8 *dissect_mqpcf_parm_getintval(guint uPrm, guint uVal)
{
@@ -279,7 +279,7 @@ void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tree,
uCCS = tvb_get_guint32(tvb, offset + uLenF, bLittleEndian);
uSLn = tvb_get_guint32(tvb, offset + uLenF + 4, bLittleEndian);
sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 8,
- uSLn, (uCCS != 500) ? ENC_ASCII : ENC_EBCDIC);
+ uSLn, IS_EBCDIC(uCCS) ? ENC_EBCDIC : ENC_ASCII);
if (*sStr)
strip_trailing_blanks(sStr, uSLn);
if (*sStr)
@@ -293,7 +293,7 @@ void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tree,
proto_tree_add_item(tree, hf_mq_pcf_prmccsid , tvb, offset + 12, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmstrlen, tvb, offset + 16, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_string, tvb, offset + uLenF + 8, uSLn, (uCCS != 500) ? ENC_ASCII : ENC_EBCDIC);
+ proto_tree_add_item(tree, hf_mq_pcf_string, tvb, offset + uLenF + 8, uSLn, IS_EBCDIC(uCCS) ? ENC_EBCDIC : ENC_ASCII);
}
break;
case MQ_MQCFT_INTEGER_LIST:
@@ -352,7 +352,7 @@ void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tree,
for (u2 = 0; u2 < uCnt && u2 < mq_pcf_maxlst; u2++)
{
sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset,
- uSLn, (uCCS != 500) ? ENC_ASCII : ENC_EBCDIC);
+ uSLn, IS_EBCDIC(uCCS) ? ENC_EBCDIC : ENC_ASCII);
if (*sStr)
strip_trailing_blanks(sStr, uSLn);
if (*sStr)
@@ -441,7 +441,9 @@ void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tree,
uOpe = tvb_get_guint32(tvb, offset + uLenF, bLittleEndian);
uCCS = tvb_get_guint32(tvb, offset + uLenF + 4, bLittleEndian);
uSLn = tvb_get_guint32(tvb, offset + uLenF + 8, bLittleEndian);
- sStr = (guint8 *)format_text_chr(wmem_packet_scope(), tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 12, uSLn, (uCCS != 500) ? ENC_ASCII : ENC_EBCDIC), uSLn, '.');
+ sStr = (guint8 *)format_text_chr(wmem_packet_scope(),
+ tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 12, uSLn, IS_EBCDIC(uCCS) ? ENC_EBCDIC : ENC_ASCII),
+ uSLn, '.');
strip_trailing_blanks(sStr, uSLn);
tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s %s %s",
@@ -454,7 +456,7 @@ void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tree,
proto_tree_add_item(tree, hf_mq_pcf_prmccsid , tvb, offset + 16, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmstrlen, tvb, offset + 20, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_string, tvb, offset + uLenF + 12, uSLn, (uCCS != 500) ? ENC_ASCII : ENC_EBCDIC);
+ proto_tree_add_item(tree, hf_mq_pcf_string, tvb, offset + uLenF + 12, uSLn, IS_EBCDIC(uCCS) ? ENC_EBCDIC : ENC_ASCII);
}
break;
case MQ_MQCFT_BYTE_STRING_FILTER:
@@ -588,23 +590,23 @@ static void dissect_mqpcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, m
g_snprintf(sTmp, (gulong)sizeof(sTmp)-1, " %-s [%d-%s] {%d-%s} PrmCnt(%d) CC(%d-%s) RC(%d-%s)",
MQ_TEXT_CFH,
uTyp, val_to_str_const(uTyp, GET_VALSV(mqcft), "Unknown"),
- uCmd, val_to_str_ext_const(uCmd, GET_VALS_EXTP(mqcmd), "Unknown"),
+ uCmd, val_to_str_ext_const(uCmd, GET_VALS_EXTP(MQCMD), "Unknown"),
uCnt,
uCC, val_to_str_const(uCC, GET_VALSV(mqcc), "Unknown"),
- uRC, val_to_str_ext_const(uRC, GET_VALS_EXTP(mqrc), "Unknown"));
+ uRC, val_to_str_ext_const(uRC, GET_VALS_EXTP(MQRC), "Unknown"));
}
else
{
g_snprintf(sTmp, (gulong)sizeof(sTmp)-1, " %-s [%d-%s] {%d-%s} PrmCnt(%d)",
MQ_TEXT_CFH,
uTyp, val_to_str_const(uTyp, GET_VALSV(mqcft), "Unknown"),
- uCmd, val_to_str_ext_const(uCmd, GET_VALS_EXTP(mqcmd), "Unknown"),
+ uCmd, val_to_str_ext_const(uCmd, GET_VALS_EXTP(MQCMD), "Unknown"),
uCnt);
}
ti = proto_tree_add_item(tree, proto_mqpcf, tvb, offset, -1, ENC_NA);
- proto_item_append_text(ti, " (%s)", val_to_str_ext_const(iCommand, GET_VALS_EXTP(mqcmd), "Unknown (0x%02x)"));
+ proto_item_append_text(ti, " (%s)", val_to_str_ext_const(iCommand, GET_VALS_EXTP(MQCMD), "Unknown (0x%02x)"));
mqroot_tree = proto_item_add_subtree(ti, ett_mqpcf);
mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeMQCFH, ett_mqpcf_cfh, NULL, sTmp);
@@ -656,16 +658,16 @@ void proto_register_mqpcf(void)
{ &hf_mqpcf_cfh_type , { "Type.....", "mqpcf.cfh.type" , FT_UINT32, BASE_DEC, VALS(mq_mqcft_vals), 0x0, "CFH type", HFILL }},
{ &hf_mqpcf_cfh_length , { "Length...", "mqpcf.cfh.length" , FT_UINT32, BASE_DEC, NULL, 0x0, "CFH length", HFILL }},
{ &hf_mqpcf_cfh_version , { "Version..", "mqpcf.cfh.version" , FT_UINT32, BASE_DEC, NULL, 0x0, "CFH version", HFILL }},
- { &hf_mqpcf_cfh_command , { "Command..", "mqpcf.cfh.command" , FT_UINT32, BASE_DEC | BASE_EXT_STRING, &mq_mqcmd_xvals, 0x0, "CFH command", HFILL }},
+ { &hf_mqpcf_cfh_command , { "Command..", "mqpcf.cfh.command" , FT_UINT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQCMD), 0x0, "CFH command", HFILL }},
{ &hf_mqpcf_cfh_MsgSeqNbr, { "MsgSeqNbr", "mqpcf.cfh.MsgSeqNbr" , FT_UINT32, BASE_DEC, NULL, 0x0, "CFH message sequence number", HFILL }},
{ &hf_mqpcf_cfh_control , { "Control..", "mqpcf.cfh.control" , FT_UINT32, BASE_DEC, VALS(mq_CtlOpt_vals), 0x0, "CFH control", HFILL }},
{ &hf_mqpcf_cfh_compcode , { "CompCode.", "mqpcf.cfh.compcode" , FT_UINT32, BASE_DEC, VALS(mq_mqcc_vals), 0x0, "CFH completion code", HFILL }},
- { &hf_mqpcf_cfh_reason , { "ReasCode.", "mqpcf.cfh.reasoncode", FT_UINT32, BASE_DEC | BASE_EXT_STRING, &mq_mqrc_xvals, 0x0, "CFH reason code", HFILL }},
+ { &hf_mqpcf_cfh_reason , { "ReasCode.", "mqpcf.cfh.reasoncode", FT_UINT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQRC), 0x0, "CFH reason code", HFILL }},
{ &hf_mqpcf_cfh_ParmCount, { "ParmCount", "mqpcf.cfh.ParmCount" , FT_UINT32, BASE_DEC, NULL, 0x0, "CFH parameter count", HFILL }},
- { &hf_mq_pcf_prmtyp , { "ParmTyp..", "mqpcf.parm.type" , FT_UINT32 , BASE_DEC | BASE_EXT_STRING, &mq_PrmTyp_xvals, 0x0, "MQPCF parameter type", HFILL }},
+ { &hf_mq_pcf_prmtyp , { "ParmTyp..", "mqpcf.parm.type" , FT_UINT32 , BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(PrmTyp), 0x0, "MQPCF parameter type", HFILL }},
{ &hf_mq_pcf_prmlen , { "ParmLen..", "mqpcf.parm.len" , FT_UINT32 , BASE_DEC, NULL, 0x0, "MQPCF parameter length", HFILL }},
- { &hf_mq_pcf_prmid , { "ParmID...", "mqpcf.parm.id" , FT_UINT32 , BASE_DEC | BASE_EXT_STRING, &mq_PrmId_xvals, 0x0, "MQPCF parameter id", HFILL }},
+ { &hf_mq_pcf_prmid , { "ParmID...", "mqpcf.parm.id" , FT_UINT32 , BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(PrmId), 0x0, "MQPCF parameter id", HFILL }},
{ &hf_mq_pcf_prmidnovals , { "ParmID...", "mqpcf.parm.idNoVals" , FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "MQPCF parameter id No Vals", HFILL }},
{ &hf_mq_pcf_filterop , { "FilterOP.", "mqpcf.filter.op" , FT_UINT32 , BASE_DEC, VALS(mq_FilterOP_vals), 0x0, "MQPCF Filter operator", HFILL }},
{ &hf_mq_pcf_prmccsid , { "ParmCCSID", "mqpcf.parm.ccsid" , FT_UINT32 , BASE_DEC | BASE_RANGE_STRING, RVALS(mq_ccsid_rvals), 0x0, "MQPCF parameter ccsid", HFILL }},
diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c
index c72bb1c5cb..4c2a055c29 100644
--- a/epan/dissectors/packet-mq.c
+++ b/epan/dissectors/packet-mq.c
@@ -2,7 +2,7 @@
* Routines for IBM WebSphere MQ packet dissection
*
* metatech <metatechbe@gmail.com>
- * robionekenobi <robionekenobi@bluewin.ch>
+ * Robert Grange <robionekenobi@bluewin.ch>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -130,9 +130,9 @@ static const int *pf_flds_tcf[] =
};
/* Transmission Segment Control Flags 2 */
-static int hf_mq_tsh_tcf2_HdrComp = -1;
-static int hf_mq_tsh_tcf2_MsgComp = -1;
-static int hf_mq_tsh_tcf2_CSH = -1;
+static int hf_mq_tsh_tcf2_HdrComp = -1;
+static int hf_mq_tsh_tcf2_MsgComp = -1;
+static int hf_mq_tsh_tcf2_CSH = -1;
static int hf_mq_tsh_tcf2_CmitIntv = -1;
static const int *pf_flds_tcf2[] =
{
@@ -244,11 +244,11 @@ static const int *pf_flds_ief1[] =
/* Initial Data Capability Flag 2 */
static int hf_mq_id_icf2_CanDstLst = -1;
static int hf_mq_id_icf2_FstMsgReq = -1;
-static int hf_mq_id_icf2_RespConv = -1;
+static int hf_mq_id_icf2_RespConv = -1;
static int hf_mq_id_icf2_XARequest = -1;
static int hf_mq_id_icf2_XARunTApp = -1;
-static int hf_mq_id_icf2_SPIRqst = -1;
-static int hf_mq_id_icf2_DualUOW = -1;
+static int hf_mq_id_icf2_SPIRqst = -1;
+static int hf_mq_id_icf2_DualUOW = -1;
static int hf_mq_id_icf2_CanTrcRte = -1;
static const int *pf_flds_icf2[] =
{
@@ -266,7 +266,7 @@ static const int *pf_flds_icf2[] =
/* Initial Data Error Flag 2 */
static int hf_mq_id_ief2_HdrCmpLst = -1;
static int hf_mq_id_ief2_MsgCmpLst = -1;
-static int hf_mq_id_ief2_SSLReset = -1;
+static int hf_mq_id_ief2_SSLReset = -1;
static const int *pf_flds_ief2[] =
{
&hf_mq_id_ief2_SSLReset ,
@@ -277,13 +277,29 @@ static const int *pf_flds_ief2[] =
/* Initial Data Capability Flag 3 */
static int hf_mq_id_icf3_CanMsgPrp = -1;
-static int hf_mq_id_icf3_Unknown02 = -1;
+static int hf_mq_id_icf3_CanMulticast = -1;
static int hf_mq_id_icf3_MPlxSyGet = -1;
static const int *pf_flds_icf3[] =
{
- &hf_mq_id_icf3_Unknown02,
- &hf_mq_id_icf3_CanMsgPrp,
&hf_mq_id_icf3_MPlxSyGet,
+ &hf_mq_id_icf3_CanMulticast,
+ &hf_mq_id_icf3_CanMsgPrp,
+ NULL
+};
+
+/* Initial Data Error Flag 3 */
+static int hf_mq_id_ief3_CanMsgPrp = -1;
+static int hf_mq_id_ief3_CanMulticast = -1;
+static int hf_mq_id_ief3_PropIntSep = -1;
+static int hf_mq_id_ief3_MPlxSyGet = -1;
+static int hf_mq_id_ief3_ProtAlgorit = -1;
+static const int *pf_flds_ief3[] =
+{
+ &hf_mq_id_ief3_ProtAlgorit,
+ &hf_mq_id_ief3_MPlxSyGet,
+ &hf_mq_id_ief3_PropIntSep,
+ &hf_mq_id_ief3_CanMulticast,
+ &hf_mq_id_ief3_CanMsgPrp,
NULL
};
@@ -299,7 +315,7 @@ static int hf_mq_conn_QMgr = -1;
static int hf_mq_conn_appname = -1;
static int hf_mq_conn_apptype = -1;
static int hf_mq_conn_acttoken = -1;
-static int hf_mq_conn_version = -1;
+static int hf_mq_conn_Xoptions = -1;
static int hf_mq_conn_options = -1;
static int hf_mq_fcno_StructID = -1;
static int hf_mq_fcno_msgid = -1;
@@ -352,11 +368,11 @@ static const int *pf_flds_spiopt[] =
static int hf_mq_put_length = -1;
static int hf_mq_close_options = -1;
-static int hf_mq_close_options_DELETE = -1;
-static int hf_mq_close_options_DELETE_PURGE = -1;
-static int hf_mq_close_options_KEEP_SUB = -1;
-static int hf_mq_close_options_REMOVE_SUB = -1;
-static int hf_mq_close_options_QUIESCE = -1;
+static int hf_mq_close_options_DELETE = -1;
+static int hf_mq_close_options_DELETE_PURGE = -1;
+static int hf_mq_close_options_KEEP_SUB = -1;
+static int hf_mq_close_options_REMOVE_SUB = -1;
+static int hf_mq_close_options_QUIESCE = -1;
static const int *pf_flds_clsopt[] =
{
&hf_mq_close_options_QUIESCE ,
@@ -422,12 +438,10 @@ static const int *pf_flds_opnopt[] =
static int hf_mq_fopa_StructID = -1;
static int hf_mq_fopa_version = -1;
static int hf_mq_fopa_length = -1;
-static int hf_mq_fopa_unknown1 = -1;
-static int hf_mq_fopa_unknown2 = -1;
-static int hf_mq_fopa_unknown3 = -1;
-static int hf_mq_fopa_qprotect = -1;
-static int hf_mq_fopa_unknown4 = -1;
-static int hf_mq_fopa_unknown5 = -1;
+static int hf_mq_fopa_DefPersistence = -1;
+static int hf_mq_fopa_DefPutRespType = -1;
+static int hf_mq_fopa_DefReadAhead = -1;
+static int hf_mq_fopa_PropertyControl = -1;
static int hf_mq_ping_length = -1;
static int hf_mq_ping_buffer = -1;
@@ -623,7 +637,7 @@ static int hf_mq_lpoo_unknown6 = -1;
static int hf_mq_lpoo_xtradata = -1;
static int hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT = -1;
-static int hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT = -1 ;
+static int hf_mq_lpoo_lpiopts_SAVE_ORIGIN_CTXT = -1;
static int hf_mq_lpoo_lpiopts_SAVE_USER_CTXT = -1;
static const int *pf_flds_lpooopt[] =
{
@@ -765,6 +779,19 @@ static int hf_mq_msgreq_mtchCorId = -1;
static int hf_mq_msgreq_mtchGrpid = -1;
static int hf_mq_msgreq_mtchMsgTk = -1;
+static int hf_mq_msgreq_flags_selection = -1;
+static int hf_mq_msgreq_flags_F00000008 = -1;
+static int hf_mq_msgreq_flags_F00000004 = -1;
+static int hf_mq_msgreq_flags_F00000002 = -1;
+static const int *pf_flds_msgreq_flags[] =
+{
+ &hf_mq_msgreq_flags_selection,
+ &hf_mq_msgreq_flags_F00000008,
+ &hf_mq_msgreq_flags_F00000004,
+ &hf_mq_msgreq_flags_F00000002,
+ NULL
+};
+
static int hf_mq_msgasy_version = -1;
static int hf_mq_msgasy_handle = -1;
static int hf_mq_msgasy_MsgIndex = -1;
@@ -781,10 +808,10 @@ static int hf_mq_msgasy_resolQNLn = -1;
static int hf_mq_msgasy_resolQNme = -1;
static int hf_mq_msgasy_padding = -1;
-static int hf_mq_notif_vers = -1;
+static int hf_mq_notif_vers = -1;
static int hf_mq_notif_handle = -1;
-static int hf_mq_notif_code = -1;
-static int hf_mq_notif_value = -1;
+static int hf_mq_notif_code = -1;
+static int hf_mq_notif_value = -1;
static int hf_mq_head_StructID = -1;
static int hf_mq_head_version = -1;
@@ -806,10 +833,10 @@ static int hf_mq_dh_recspresent = -1;
static int hf_mq_dh_objrecofs = -1;
static int hf_mq_dh_putmsgrecofs = -1;
-static int hf_mq_iih_flags_passexpir = -1;
+static int hf_mq_iih_flags_passexpir = -1;
static int hf_mq_iih_flags_replyfmtnone = -1;
-static int hf_mq_iih_flags_ignorepurg = -1;
-static int hf_mq_iih_flags_cmqrqstresp = -1;
+static int hf_mq_iih_flags_ignorepurg = -1;
+static int hf_mq_iih_flags_cmqrqstresp = -1;
static const int *pf_flds_iih_flags[] =
{
&hf_mq_iih_flags_cmqrqstresp ,
@@ -819,18 +846,44 @@ static const int *pf_flds_iih_flags[] =
NULL
};
static int hf_mq_iih_ltermoverride = -1;
-static int hf_mq_iih_mfsmapname = -1;
-static int hf_mq_iih_replytofmt = -1;
+static int hf_mq_iih_mfsmapname = -1;
+static int hf_mq_iih_replytofmt = -1;
static int hf_mq_iih_authenticator = -1;
-static int hf_mq_iih_transinstid = -1;
-static int hf_mq_iih_transstate = -1;
-static int hf_mq_iih_commimode = -1;
+static int hf_mq_iih_transinstid = -1;
+static int hf_mq_iih_transstate = -1;
+static int hf_mq_iih_commimode = -1;
static int hf_mq_iih_securityscope = -1;
-static int hf_mq_iih_reserved = -1;
-
-static int hf_mq_cih_flags_synconret = -1;
+static int hf_mq_iih_reserved = -1;
+
+static int hf_mq_ims_ll = -1;
+static int hf_mq_ims_zz = -1;
+static int hf_mq_ims_trx = -1;
+static int hf_mq_ims_data = -1;
+
+static int hf_mq_tm_StructID = -1;
+static int hf_mq_tm_version = -1;
+static int hf_mq_tm_QName = -1;
+static int hf_mq_tm_ProcessNme = -1;
+static int hf_mq_tm_TriggerData = -1;
+static int hf_mq_tm_ApplType = -1;
+static int hf_mq_tm_ApplId = -1;
+static int hf_mq_tm_EnvData = -1;
+static int hf_mq_tm_UserData = -1;
+
+static int hf_mq_tmc2_StructID = -1;
+static int hf_mq_tmc2_version = -1;
+static int hf_mq_tmc2_QName = -1;
+static int hf_mq_tmc2_ProcessNme = -1;
+static int hf_mq_tmc2_TriggerData = -1;
+static int hf_mq_tmc2_ApplType = -1;
+static int hf_mq_tmc2_ApplId = -1;
+static int hf_mq_tmc2_EnvData = -1;
+static int hf_mq_tmc2_UserData = -1;
+static int hf_mq_tmc2_QMgrName = -1;
+
+static int hf_mq_cih_flags_synconret = -1;
static int hf_mq_cih_flags_replywonulls = -1;
-static int hf_mq_cih_flags_passexpir = -1;
+static int hf_mq_cih_flags_passexpir = -1;
static const int *pf_flds_cih_flags[] =
{
&hf_mq_cih_flags_synconret ,
@@ -838,66 +891,66 @@ static const int *pf_flds_cih_flags[] =
&hf_mq_cih_flags_passexpir ,
NULL
};
-static int hf_mq_cih_returncode = -1;
-static int hf_mq_cih_compcode = -1;
-static int hf_mq_cih_reasoncode = -1;
-static int hf_mq_cih_uowcontrols = -1;
-static int hf_mq_cih_getwaitintv = -1;
-static int hf_mq_cih_linktype = -1;
-static int hf_mq_cih_outdatalen = -1;
+static int hf_mq_cih_returncode = -1;
+static int hf_mq_cih_compcode = -1;
+static int hf_mq_cih_reasoncode = -1;
+static int hf_mq_cih_uowcontrols = -1;
+static int hf_mq_cih_getwaitintv = -1;
+static int hf_mq_cih_linktype = -1;
+static int hf_mq_cih_outdatalen = -1;
static int hf_mq_cih_facilkeeptime = -1;
static int hf_mq_cih_adsdescriptor = -1;
-static int hf_mq_cih_converstask = -1;
+static int hf_mq_cih_converstask = -1;
static int hf_mq_cih_taskendstatus = -1;
static int hf_mq_cih_bridgefactokn = -1;
-static int hf_mq_cih_function = -1;
-static int hf_mq_cih_abendcode = -1;
+static int hf_mq_cih_function = -1;
+static int hf_mq_cih_abendcode = -1;
static int hf_mq_cih_authenticator = -1;
-static int hf_mq_cih_reserved = -1;
-static int hf_mq_cih_replytofmt = -1;
-static int hf_mq_cih_remotesysid = -1;
+static int hf_mq_cih_reserved = -1;
+static int hf_mq_cih_replytofmt = -1;
+static int hf_mq_cih_remotesysid = -1;
static int hf_mq_cih_remotetransid = -1;
static int hf_mq_cih_transactionid = -1;
-static int hf_mq_cih_facilitylike = -1;
-static int hf_mq_cih_attentionid = -1;
-static int hf_mq_cih_startcode = -1;
-static int hf_mq_cih_cancelcode = -1;
-static int hf_mq_cih_nexttransid = -1;
-static int hf_mq_cih_reserved2 = -1;
-static int hf_mq_cih_reserved3 = -1;
-static int hf_mq_cih_cursorpos = -1;
-static int hf_mq_cih_erroroffset = -1;
-static int hf_mq_cih_inputitem = -1;
-static int hf_mq_cih_reserved4 = -1;
-
-static int hf_mq_rfh_ccsid = -1;
-static int hf_mq_rfh_length = -1;
-static int hf_mq_rfh_string = -1;
-
-static int hf_mq_rmh_flags_last = -1;
+static int hf_mq_cih_facilitylike = -1;
+static int hf_mq_cih_attentionid = -1;
+static int hf_mq_cih_startcode = -1;
+static int hf_mq_cih_cancelcode = -1;
+static int hf_mq_cih_nexttransid = -1;
+static int hf_mq_cih_reserved2 = -1;
+static int hf_mq_cih_reserved3 = -1;
+static int hf_mq_cih_cursorpos = -1;
+static int hf_mq_cih_erroroffset = -1;
+static int hf_mq_cih_inputitem = -1;
+static int hf_mq_cih_reserved4 = -1;
+
+static int hf_mq_rfh_ccsid = -1;
+static int hf_mq_rfh_length = -1;
+static int hf_mq_rfh_string = -1;
+
+static int hf_mq_rmh_flags_last = -1;
static const int *pf_flds_rmh_flags[] =
{
&hf_mq_rmh_flags_last,
NULL
};
-static int hf_mq_rmh_objecttype = -1;
-static int hf_mq_rmh_objectinstid = -1;
-static int hf_mq_rmh_srcenvlen = -1;
-static int hf_mq_rmh_srcenvofs = -1;
-static int hf_mq_rmh_srcnamelen = -1;
-static int hf_mq_rmh_srcnameofs = -1;
-static int hf_mq_rmh_dstenvlen = -1;
-static int hf_mq_rmh_dstenvofs = -1;
-static int hf_mq_rmh_dstnamelen = -1;
-static int hf_mq_rmh_dstnameofs = -1;
-static int hf_mq_rmh_datalogiclen = -1;
+static int hf_mq_rmh_objecttype = -1;
+static int hf_mq_rmh_objectinstid = -1;
+static int hf_mq_rmh_srcenvlen = -1;
+static int hf_mq_rmh_srcenvofs = -1;
+static int hf_mq_rmh_srcnamelen = -1;
+static int hf_mq_rmh_srcnameofs = -1;
+static int hf_mq_rmh_dstenvlen = -1;
+static int hf_mq_rmh_dstenvofs = -1;
+static int hf_mq_rmh_dstnamelen = -1;
+static int hf_mq_rmh_dstnameofs = -1;
+static int hf_mq_rmh_datalogiclen = -1;
static int hf_mq_rmh_datalogicofsl = -1;
static int hf_mq_rmh_datalogicofsh = -1;
-static int hf_mq_wih_servicename = -1;
-static int hf_mq_wih_servicestep = -1;
-static int hf_mq_wih_msgtoken = -1;
-static int hf_mq_wih_reserved = -1;
+static int hf_mq_wih_servicename = -1;
+static int hf_mq_wih_servicestep = -1;
+static int hf_mq_wih_msgtoken = -1;
+static int hf_mq_wih_reserved = -1;
static gint ett_mq = -1;
static gint ett_mq_tsh = -1;
@@ -949,13 +1002,15 @@ static gint ett_mq_gmo_matchoption = -1;
static gint ett_mq_pmo = -1;
static gint ett_mq_pmo_option = -1;
static gint ett_mq_rfh_ValueName = -1;
+static gint ett_mq_msgreq_RqstFlags = -1;
static gint ett_mq_lpoo = -1;
static gint ett_mq_lpoo_options = -1;
static gint ett_mq_lpoo_lpiopts = -1;
-static gint ett_mq_head = -1; /* Factorisation of common Header structure items (DH, MDE, CIH, IIH, RFH, RMH, WIH */
+static gint ett_mq_head = -1; /* Factorisation of common Header structure items (DH, MDE, CIH, IIH, RFH, RMH, WIH, TM, TMC2 */
static gint ett_mq_head_flags = -1;
+static gint ett_mq_ims = -1;
static gint ett_mq_xa = -1;
static gint ett_mq_xa_tmflags = -1;
@@ -986,421 +1041,6 @@ static guint32 mq_AsyMsgTot;
static reassembly_table mq_reassembly_table;
-#define MQ_PORT_TCP 1414
-#define MQ_SOCKET_SPX 0x5E86
-
-#define MQ_STRUCTID_NULL 0x00000000
-
-#define MQ_STRUCTID_CAUT 0x43415554
-#define MQ_STRUCTID_CIH 0x43494820
-#define MQ_STRUCTID_DH 0x44482020
-#define MQ_STRUCTID_DLH 0x444C4820
-#define MQ_STRUCTID_FCNO 0x46434E4F /* FCNO */
-#define MQ_STRUCTID_FOPA 0x464F5041
-#define MQ_STRUCTID_GMO 0x474D4F20
-#define MQ_STRUCTID_ID 0x49442020
-#define MQ_STRUCTID_IIH 0x49494820
-#define MQ_STRUCTID_LPOO 0x4C504F4F /* LPOO */
-#define MQ_STRUCTID_MD 0x4D442020
-#define MQ_STRUCTID_MDE 0x4D444520
-#define MQ_STRUCTID_MSH 0x4D534820
-#define MQ_STRUCTID_OD 0x4F442020
-#define MQ_STRUCTID_PMO 0x504D4F20
-#define MQ_STRUCTID_RFH 0x52464820
-#define MQ_STRUCTID_RMH 0x524D4820
-
-#define MQ_STRUCTID_SPxx 0x53500000 /* SPxx */
-#define MQ_STRUCTID_SPxI 0x53500049 /* SPxI */
-#define MQ_STRUCTID_SPxO 0x5350004F /* SPxO */
-#define MQ_STRUCTID_SPxU 0x53500055 /* SPxU */
-#define MQ_STRUCTID_SPAI 0x53504149 /* SPI Activate In */
-#define MQ_STRUCTID_SPAO 0x5350414F /* SPI Activate Out */
-#define MQ_STRUCTID_SPAU 0x53504155 /* SPI Activate InOut */
-#define MQ_STRUCTID_SPGI 0x53504749 /* SPI Get In */
-#define MQ_STRUCTID_SPGO 0x5350474F /* SPI Get Out */
-#define MQ_STRUCTID_SPGU 0x53504755 /* SPI Get InOut */
-#define MQ_STRUCTID_SPOI 0x53504F49 /* SPI In */
-#define MQ_STRUCTID_SPOO 0x53504F4F /* SPI Out */
-#define MQ_STRUCTID_SPOU 0x53504F55 /* SPI InOut */
-#define MQ_STRUCTID_SPPI 0x53505049 /* SPI Put In */
-#define MQ_STRUCTID_SPPO 0x5350504F /* SPI Put Out */
-#define MQ_STRUCTID_SPPU 0x53505055 /* SPI Put InOut */
-#define MQ_STRUCTID_SPQI 0x53505149 /* SPI Query In */
-#define MQ_STRUCTID_SPQO 0x5350514F /* SPI Query Out */
-#define MQ_STRUCTID_SPQU 0x53505155 /* SPI Query InOut */
-#define MQ_STRUCTID_TM 0x544D2020
-#define MQ_STRUCTID_TMC2 0x544D4332
-
-#define MQ_MASK_TSHx 0xffffff00
-#define MQ_STRUCTID_TSHx 0x54534800 /* TSHx */
-
-#define MQ_STRUCTID_TSH 0x54534820
-#define MQ_STRUCTID_TSHC 0x54534843
-#define MQ_STRUCTID_TSHM 0x5453484D
-#define MQ_STRUCTID_UID 0x55494420
-#define MQ_STRUCTID_WIH 0x57494820
-#define MQ_STRUCTID_XQH 0x58514820
-
-#define MQ_STRUCTID_CAUT_EBCDIC 0xC3C1E4E3
-#define MQ_STRUCTID_CIH_EBCDIC 0xC3C9C840
-#define MQ_STRUCTID_DH_EBCDIC 0xC4C84040
-#define MQ_STRUCTID_DLH_EBCDIC 0xC4D3C840
-#define MQ_STRUCTID_FCNO_EBCDIC 0xC6C3D5D6 /* FCNO */
-#define MQ_STRUCTID_GMO_EBCDIC 0xC7D4D640
-#define MQ_STRUCTID_ID_EBCDIC 0xC9C44040
-#define MQ_STRUCTID_IIH_EBCDIC 0xC9C9C840
-#define MQ_STRUCTID_LPOO_EBCDIC 0xD3D7D6D6 /* LPOO */
-#define MQ_STRUCTID_MD_EBCDIC 0xD4C44040
-#define MQ_STRUCTID_MDE_EBCDIC 0xD4C4C540
-#define MQ_STRUCTID_MSH_EBCDIC 0xD4E2C840
-#define MQ_STRUCTID_FOPA_EBCDIC 0xD64FD7C1
-#define MQ_STRUCTID_OD_EBCDIC 0xD6C44040
-#define MQ_STRUCTID_PMO_EBCDIC 0xD7D4D640
-#define MQ_STRUCTID_RFH_EBCDIC 0xD9C6C840
-#define MQ_STRUCTID_RMH_EBCDIC 0xD9D4C840
-
-#define MQ_STRUCTID_SPxx_EBCDIC 0xE2D70000 /* SPxx */
-#define MQ_STRUCTID_SPxI_EBCDIC 0xE2D700C9 /* SPxI */
-#define MQ_STRUCTID_SPxO_EBCDIC 0xE2D700D6 /* SPxO */
-#define MQ_STRUCTID_SPxU_EBCDIC 0xE2D700E4 /* SPxU */
-#define MQ_STRUCTID_SPAI_EBCDIC 0xE2D7C1C9 /* SPI Activate In */
-#define MQ_STRUCTID_SPAO_EBCDIC 0xE2D7C1D6 /* SPI Activate Out */
-#define MQ_STRUCTID_SPAU_EBCDIC 0xE2D7C1E4 /* SPI Activate InOut */
-#define MQ_STRUCTID_SPGI_EBCDIC 0xE2D7C7C9 /* SPI Get In */
-#define MQ_STRUCTID_SPGO_EBCDIC 0xE2D7C7D6 /* SPI Get Out */
-#define MQ_STRUCTID_SPGU_EBCDIC 0xE2D7C7E4 /* SPI Get InOut */
-#define MQ_STRUCTID_SPOI_EBCDIC 0xE2D7D6C9 /* SPI In */
-#define MQ_STRUCTID_SPOO_EBCDIC 0xE2D7D6D6 /* SPI Out */
-#define MQ_STRUCTID_SPOU_EBCDIC 0xE2D7D6E4 /* SPI InOut */
-#define MQ_STRUCTID_SPPI_EBCDIC 0xE2D7D7C9 /* SPI Put In */
-#define MQ_STRUCTID_SPPO_EBCDIC 0xE2D7D7D6 /* SPI Put Out */
-#define MQ_STRUCTID_SPPU_EBCDIC 0xE2D7D7E4 /* SPI Put InOut */
-#define MQ_STRUCTID_SPQI_EBCDIC 0xE2D7D8C9 /* SPI Query In */
-#define MQ_STRUCTID_SPQO_EBCDIC 0xE2D7D8D6 /* SPI Query Out */
-#define MQ_STRUCTID_SPQU_EBCDIC 0xE2D7D8E4 /* SPI Query InOut */
-#define MQ_STRUCTID_TM_EBCDIC 0xE3D44040
-#define MQ_STRUCTID_TMC2_EBCDIC 0xE3D4C3F2
-
-#define MQ_STRUCTID_TSHx_EBCDIC 0xE3E2C800
-#define MQ_STRUCTID_TSH_EBCDIC 0xE3E2C840
-#define MQ_STRUCTID_TSHC_EBCDIC 0xE3E2C8C3
-#define MQ_STRUCTID_TSHM_EBCDIC 0xE3E2C8D4
-
-#define MQ_STRUCTID_UID_EBCDIC 0xE4C9C440
-#define MQ_STRUCTID_WIH_EBCDIC 0xE6C9C840
-#define MQ_STRUCTID_XQH_EBCDIC 0xE7D8C840
-
-#define MQ_MASK_SPxx 0xffff0000
-#define MQ_MASK_SPxZ 0xffff00ff
-
-#define MQ_TST_INITIAL 0x01
-#define MQ_TST_RESYNC 0x02
-#define MQ_TST_RESET 0x03
-#define MQ_TST_MESSAGE 0x04
-#define MQ_TST_STATUS 0x05
-#define MQ_TST_SECURITY 0x06
-#define MQ_TST_PING 0x07
-#define MQ_TST_USERID 0x08
-#define MQ_TST_HEARTBEAT 0x09
-#define MQ_TST_CONAUTH_INFO 0x0A
-#define MQ_TST_RENEGOTIATE_DATA 0x0B
-#define MQ_TST_SOCKET_ACTION 0x0C
-#define MQ_TST_ASYNC_MESSAGE 0x0D
-#define MQ_TST_REQUEST_MSGS 0x0E
-#define MQ_TST_NOTIFICATION 0x0F
-#define MQ_TST_MQCONN 0x81
-#define MQ_TST_MQDISC 0x82
-#define MQ_TST_MQOPEN 0x83
-#define MQ_TST_MQCLOSE 0x84
-#define MQ_TST_MQGET 0x85
-#define MQ_TST_MQPUT 0x86
-#define MQ_TST_MQPUT1 0x87
-#define MQ_TST_MQSET 0x88
-#define MQ_TST_MQINQ 0x89
-#define MQ_TST_MQCMIT 0x8A
-#define MQ_TST_MQBACK 0x8B
-#define MQ_TST_SPI 0x8C
-#define MQ_TST_MQSTAT 0x8D
-#define MQ_TST_MQSUB 0x8E
-#define MQ_TST_MQSUBRQ 0x8F
-#define MQ_TST_MQCONN_REPLY 0x91
-#define MQ_TST_MQDISC_REPLY 0x92
-#define MQ_TST_MQOPEN_REPLY 0x93
-#define MQ_TST_MQCLOSE_REPLY 0x94
-#define MQ_TST_MQGET_REPLY 0x95
-#define MQ_TST_MQPUT_REPLY 0x96
-#define MQ_TST_MQPUT1_REPLY 0x97
-#define MQ_TST_MQSET_REPLY 0x98
-#define MQ_TST_MQINQ_REPLY 0x99
-#define MQ_TST_MQCMIT_REPLY 0x9A
-#define MQ_TST_MQBACK_REPLY 0x9B
-#define MQ_TST_SPI_REPLY 0x9C
-#define MQ_TST_MQSTAT_REPLY 0x9D
-#define MQ_TST_MQSUB_REPLY 0x9E
-#define MQ_TST_MQSUBRQ_REPLY 0x9F
-#define MQ_TST_XA_START 0xA1
-#define MQ_TST_XA_END 0xA2
-#define MQ_TST_XA_OPEN 0xA3
-#define MQ_TST_XA_CLOSE 0xA4
-#define MQ_TST_XA_PREPARE 0xA5
-#define MQ_TST_XA_COMMIT 0xA6
-#define MQ_TST_XA_ROLLBACK 0xA7
-#define MQ_TST_XA_FORGET 0xA8
-#define MQ_TST_XA_RECOVER 0xA9
-#define MQ_TST_XA_COMPLETE 0xAA
-#define MQ_TST_XA_START_REPLY 0xB1
-#define MQ_TST_XA_END_REPLY 0xB2
-#define MQ_TST_XA_OPEN_REPLY 0xB3
-#define MQ_TST_XA_CLOSE_REPLY 0xB4
-#define MQ_TST_XA_PREPARE_REPLY 0xB5
-#define MQ_TST_XA_COMMIT_REPLY 0xB6
-#define MQ_TST_XA_ROLLBACK_REPLY 0xB7
-#define MQ_TST_XA_FORGET_REPLY 0xB8
-#define MQ_TST_XA_RECOVER_REPLY 0xB9
-#define MQ_TST_XA_COMPLETE_REPLY 0xBA
-
-#define MQ_SPI_QUERY 0x01
-#define MQ_SPI_PUT 0x02
-#define MQ_SPI_GET 0x03
-#define MQ_SPI_ACTIVATE 0x04
-#define MQ_SPI_OPEN 0x0C
-
-#define MQ_SPI_ACTIVATE_ENABLE 0x01
-#define MQ_SPI_ACTIVATE_DISABLE 0x02
-
-#define MQ_SPI_OPTIONS_BLANK_PADDED 0x01
-#define MQ_SPI_OPTIONS_SYNCPOINT 0x02
-#define MQ_SPI_OPTIONS_DEFERRED 0x04
-
-#define MQ_TCF_CONFIRM_REQUEST 0x01
-#define MQ_TCF_ERROR 0x02
-#define MQ_TCF_REQUEST_CLOSE 0x04
-#define MQ_TCF_CLOSE_CHANNEL 0x08
-#define MQ_TCF_FIRST 0x10
-#define MQ_TCF_LAST 0x20
-#define MQ_TCF_REQUEST_ACCEPTED 0x40
-#define MQ_TCF_DLQ_USED 0x80
-
-#define MQ_TCF2_HDRCOMP 0x01
-#define MQ_TCF2_MSGCOMP 0x02
-#define MQ_TCF2_CSH 0x04
-#define MQ_TCF2_CMIT_INTERVAL 0x08
-
-#define MQ_ICF1_MSG_SEQ 0x01
-#define MQ_ICF1_CONVERSION_CAPABLE 0x02
-#define MQ_ICF1_SPLIT_MESSAGE 0x04
-#define MQ_ICF1_REQUEST_INITIATION 0x08
-#define MQ_ICF1_REQUEST_SECURITY 0x10
-#define MQ_ICF1_MQREQUEST 0x20
-#define MQ_ICF1_SVRCONN_SECURITY 0x40
-#define MQ_ICF1_RUNTIME 0x80
-
-#define MQ_ICF2_DIST_LIST_CAPABLE 0x01
-#define MQ_ICF2_FAST_MESSAGES_REQUIRED 0x02
-#define MQ_ICF2_RESPONDER_CONVERSION 0x04
-#define MQ_ICF2_DUAL_UOW 0x08
-#define MQ_ICF2_XAREQUEST 0x10
-#define MQ_ICF2_XARUNTIME_APP 0x20
-#define MQ_ICF2_SPIREQUEST 0x40
-#define MQ_ICF2_TRACE_ROUTE_CAPABLE 0x80
-
-#define MQ_ICF3_MSG_PROP_CAPABLE 0x01
-#define MQ_ICF3_UNKNOWNX02 0x02
-#define MQ_ICF3_MULTIPLEX_SYNCGET 0x08
-
-#define MQ_IEF1_CCSID 0x01
-#define MQ_IEF1_ENCODING 0x02
-#define MQ_IEF1_MAX_TRANSMISSION_SIZE 0x04
-#define MQ_IEF1_FAP_LEVEL 0x08
-#define MQ_IEF1_MAX_MSG_SIZE 0x10
-#define MQ_IEF1_MAX_MSG_PER_BATCH 0x20
-#define MQ_IEF1_SEQ_WRAP_VALUE 0x40
-#define MQ_IEF1_HEARTBEAT_INTERVAL 0x80
-
-#define MQ_IEF2_HDRCOMPLIST 0x01
-#define MQ_IEF2_MSGCOMPLIST 0x02
-#define MQ_IEF2_SSL_RESET 0x04
-
-#define MQ_BIG_ENDIAN 0x01
-#define MQ_LITTLE_ENDIAN 0x02
-
-#define MQ_CONN_VERSION 0x01
-#define MQ_CONNX_VERSION 0x03
-
-#define MQ_STATUS_ERR_NO_CHANNEL 0x01
-#define MQ_STATUS_ERR_CHANNEL_WRONG_TYPE 0x02
-#define MQ_STATUS_ERR_QM_UNAVAILABLE 0x03
-#define MQ_STATUS_ERR_MSG_SEQUENCE_ERROR 0x04
-#define MQ_STATUS_ERR_QM_TERMINATING 0x05
-#define MQ_STATUS_ERR_CAN_NOT_STORE 0x06
-#define MQ_STATUS_ERR_USER_CLOSED 0x07
-#define MQ_STATUS_ERR_TIMEOUT_EXPIRED 0x08
-#define MQ_STATUS_ERR_TARGET_Q_UNKNOWN 0x09
-#define MQ_STATUS_ERR_PROTOCOL_SEGMENT_TYPE 0x0A
-#define MQ_STATUS_ERR_PROTOCOL_LENGTH_ERROR 0x0B
-#define MQ_STATUS_ERR_PROTOCOL_INVALID_DATA 0x0C
-#define MQ_STATUS_ERR_PROTOCOL_SEGMENT_ERROR 0x0D
-#define MQ_STATUS_ERR_PROTOCOL_ID_ERROR 0x0E
-#define MQ_STATUS_ERR_PROTOCOL_MSH_ERROR 0x0F
-#define MQ_STATUS_ERR_PROTOCOL_GENERAL 0x10
-#define MQ_STATUS_ERR_BATCH_FAILURE 0x11
-#define MQ_STATUS_ERR_MESSAGE_LENGTH_ERROR 0x12
-#define MQ_STATUS_ERR_SEGMENT_NUMBER_ERROR 0x13
-#define MQ_STATUS_ERR_SECURITY_FAILURE 0x14
-#define MQ_STATUS_ERR_WRAP_VALUE_ERROR 0x15
-#define MQ_STATUS_ERR_CHANNEL_UNAVAILABLE 0x16
-#define MQ_STATUS_ERR_CLOSED_BY_EXIT 0x17
-#define MQ_STATUS_ERR_CIPHER_SPEC 0x18
-#define MQ_STATUS_ERR_PEER_NAME 0x19
-#define MQ_STATUS_ERR_SSL_CLIENT_CERTIFICATE 0x1A
-#define MQ_STATUS_ERR_RMT_RSRCS_IN_RECOVERY 0x1B
-#define MQ_STATUS_ERR_SSL_REFRESHING 0x1C
-#define MQ_STATUS_ERR_INVALID_HOBJ 0x1D
-#define MQ_STATUS_ERR_CONV_ID_ERROR 0x1E
-#define MQ_STATUS_ERR_SOCKET_ACTION_TYPE 0x1F
-#define MQ_STATUS_ERR_STANDBY_Q_MGR 0x20
-
-#define MQ_STATUS_ERR_CCSID_NOT_SUPPORTED 0xF0
-#define MQ_STATUS_ERR_ENCODING_INVALID 0xF1
-#define MQ_STATUS_ERR_FAP_LEVEL 0xF2
-#define MQ_STATUS_ERR_NEGOTIATION_FAILED 0xF3
-
-/* These errors codes are documented in javax.transaction.xa.XAException */
-#define MQ_XA_RBROLLBACK 100
-#define MQ_XA_RBCOMMFAIL 101
-#define MQ_XA_RBDEADLOCK 102
-#define MQ_XA_RBINTEGRITY 103
-#define MQ_XA_RBOTHER 104
-#define MQ_XA_RBPROTO 105
-#define MQ_XA_RBTIMEOUT 106
-#define MQ_XA_RBTRANSIENT 107
-#define MQ_XA_NOMIGRATE 9
-#define MQ_XA_HEURHAZ 8
-#define MQ_XA_HEURCOM 7
-#define MQ_XA_HEURRB 6
-#define MQ_XA_HEURMIX 5
-#define MQ_XA_RETRY 4
-#define MQ_XA_RDONLY 3
-#define MQ_XA_OK 0
-#define MQ_XAER_ASYNC -2
-#define MQ_XAER_RMERR -3
-#define MQ_XAER_NOTA -4
-#define MQ_XAER_INVAL -5
-#define MQ_XAER_PROTO -6
-#define MQ_XAER_RMFAIL -7
-#define MQ_XAER_DUPID -8
-#define MQ_XAER_OUTSIDE -9
-
-/* These flags are documented in javax.transaction.xa.XAResource */
-#define MQ_XA_TMNOFLAGS 0
-#define MQ_XA_TMJOIN 0x200000
-#define MQ_XA_TMENDRSCAN 0x800000
-#define MQ_XA_TMSTARTRSCAN 0x1000000
-#define MQ_XA_TMSUSPEND 0x2000000
-#define MQ_XA_TMSUCCESS 0x4000000
-#define MQ_XA_TMRESUME 0x8000000
-#define MQ_XA_TMFAIL 0x20000000
-#define MQ_XA_TMONEPHASE 0x40000000
-
-#define MQ_PMRF_NONE 0x00
-#define MQ_PMRF_MSG_ID 0x01
-#define MQ_PMRF_CORREL_ID 0x02
-#define MQ_PMRF_GROUP_ID 0x04
-#define MQ_PMRF_FEEDBACK 0x08
-#define MQ_PMRF_ACCOUNTING_TOKEN 0x10
-
-/* MQ structures */
-/* Undocumented structures */
-#define MQ_TEXT_TSH "Transmission Segment Header"
-#define MQ_TEXT_TSHC "Transmission Segment Header Common"
-#define MQ_TEXT_TSHM "Transmission Segment Header Multiplexed"
-#define MQ_TEXT_FCNO "F Connect Option"
-#define MQ_TEXT_API "API Header"
-#define MQ_TEXT_SOCKET "Socket Action"
-#define MQ_TEXT_ID "Initial Data"
-#define MQ_TEXT_UID "User Id Data"
-#define MQ_TEXT_MSH "Message Segment Header"
-#define MQ_TEXT_CAUT "Connection Authority"
-#define MQ_TEXT_CONN "MQCONN"
-#define MQ_TEXT_INQ "MQINQ/MQSET"
-#define MQ_TEXT_PUT "MQPUT/MQGET"
-#define MQ_TEXT_OPEN "MQOPEN/MQCLOSE"
-#define MQ_TEXT_REQMSG "REQUEST MESSAGE"
-#define MQ_TEXT_ASYMSG "ASYNC MESSAGE"
-#define MQ_TEXT_NOTIFICATION "NOTIFICATION"
-#define MQ_TEXT_BIND_READAHEAD_AS_Q_DEF "Bind/Read Ahead As Q Def"
-#define MQ_TEXT_IMMEDIATE_NONE "Close Immediate/No option"
-#define MQ_TEXT_MQPMO_NONE "Resp as Q Def/Resp as Topic Def/None"
-#define MQ_TEXT_MQGMO_NONE "No Wait/Prop as Q Def/None"
-#define MQ_TEXT_MQMO_NONE "None"
-#define MQ_TEXT_LPOOOPT_NONE "None"
-
-#define MQ_TEXT_PING "PING"
-#define MQ_TEXT_RESET "RESET"
-#define MQ_TEXT_STAT "STATUS"
-#define MQ_TEXT_SPI "SPI"
-#define MQ_TEXT_XA "XA"
-#define MQ_TEXT_XID "Xid"
-#define MQ_TEXT_XINF "XA_info"
-
-#define MQ_TEXT_SPQU "SPI Query InOut"
-#define MQ_TEXT_SPQI "SPI Query In"
-#define MQ_TEXT_SPQO "SPI Query Out"
-#define MQ_TEXT_SPPU "SPI Put InOut"
-#define MQ_TEXT_SPPI "SPI Put In"
-#define MQ_TEXT_SPPO "SPI Put Out"
-#define MQ_TEXT_SPGU "SPI Get InOut"
-#define MQ_TEXT_SPGI "SPI Get In"
-#define MQ_TEXT_SPGO "SPI Get Out"
-#define MQ_TEXT_SPAU "SPI Activate InOut"
-#define MQ_TEXT_SPAI "SPI Activate In"
-#define MQ_TEXT_SPAO "SPI Activate Out"
-#define MQ_TEXT_SPOU "SPI InOut"
-#define MQ_TEXT_SPOI "SPI In"
-#define MQ_TEXT_SPOO "SPI Out"
-#define MQ_TEXT_LPOO "LPOO"
-#define MQ_TEXT_FOPA "FOPA"
-
-/* Documented structures with structid */
-#define MQ_TEXT_CIH "CICS bridge Header"
-#define MQ_TEXT_DH "Distribution Header"
-#define MQ_TEXT_DLH "Dead-Letter Header"
-#define MQ_TEXT_GMO "Get Message Options"
-#define MQ_TEXT_IIH "IMS Information Header"
-#define MQ_TEXT_MD "Message Descriptor"
-#define MQ_TEXT_MDE "Message Descriptor Extension"
-#define MQ_TEXT_OD "Object Descriptor"
-#define MQ_TEXT_PMO "Put Message Options"
-#define MQ_TEXT_RMH "Reference Message Header"
-#define MQ_TEXT_RFH "Rules and Formatting Header"
-#define MQ_TEXT_TM "Trigger Message"
-#define MQ_TEXT_TMC2 "Trigger Message 2 (character format)"
-#define MQ_TEXT_WIH "Work Information Header"
-#define MQ_TEXT_XQH "Transmission Queue Header"
-
-/* Documented structures without structid */
-#define MQ_TEXT_OR "Object Record"
-#define MQ_TEXT_PMR "Put Message Record"
-#define MQ_TEXT_RR "Response Record"
-
-#define MQ_NC_GET_INHIBITED 1
-#define MQ_NC_GET_ALLOWED 2
-#define MQ_NC_CONN_STATE 3
-#define MQ_NC_CONN_STATE_REPLY 4
-#define MQ_NC_Q_STATE 5
-#define MQ_NC_Q_STATE_REPLY 6
-#define MQ_NC_QM_QUIESCING 7
-#define MQ_NC_TXN_ALLOWED 8
-#define MQ_NC_TXN_REVOKE 9
-#define MQ_NC_TXN_REVOKE_REPLY 10
-#define MQ_NC_CHECK_MSG 11
-#define MQ_NC_BROWSE_FIRST 12
-#define MQ_NC_MESSAGE_TOO_LARGE 13
-#define MQ_NC_STREAMING_FAILURE 14
-#define MQ_NC_CLIENT_ASYNC_EMPTY 15
-#define MQ_NC_STREAMING_TXN_PAUSED 16
-#define MQ_NC_RECONNECTION_COMPLETE 17
-
DEF_VALSB(notifcode)
DEF_VALS2(NC_GET_INHIBITED , "GET_INHIBITED"),
DEF_VALS2(NC_GET_ALLOWED , "GET_ALLOWED"),
@@ -1658,9 +1298,9 @@ DEF_VALSB(byteorder)
DEF_VALS2(BIG_ENDIAN , "Big endian"),
DEF_VALSE;
-DEF_VALSB(conn_version)
- DEF_VALS2(CONN_VERSION , "MQCONN"),
- DEF_VALS2(CONNX_VERSION, "MQCONNX"),
+DEF_VALSB(conn_options)
+ DEF_VALS2(CONN_OPTION , "MQCONN"),
+ DEF_VALS2(CONNX_OPTION, "MQCONNX"),
DEF_VALSE;
DEF_VALSB(sidtype)
@@ -1706,7 +1346,8 @@ static gint dissect_mq_encoding(proto_tree *tree, int hfindex, tvbuff_t *tvb, co
else if (CHECK_ENC(MQ_MQENC_FLOAT_MASK, MQ_MQENC_FLOAT_TNS))
{
DOPRT("FLT_TNS");
- } else
+ }
+ else
{
DOPRT("FLT_UNKNOWN");
}
@@ -1750,7 +1391,7 @@ static gint dissect_mq_encoding(proto_tree *tree, int hfindex, tvbuff_t *tvb, co
#undef DOPRT
proto_tree_add_uint_format_value(tree, hfindex, tvb, start, length, uEnc,
- "%8x-%d (%s)", uEnc, uEnc, sEnc);
+ "%8x-%d (%s)", uEnc, uEnc, sEnc);
return length;
}
@@ -1968,7 +1609,7 @@ static gint dissect_mq_or(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iNb
{
gint iOffsetOR = 0;
gint iRecord = 0;
- for (iRecord = 0; iRecord < iNbrRecords ; iRecord++)
+ for (iRecord = 0; iRecord < iNbrRecords; iRecord++)
{
proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset + iOffsetOR, 96, ett_mq_or, NULL, MQ_TEXT_OR);
proto_tree_add_item(mq_tree, hf_mq_or_objname, tvb, offset + iOffsetOR, 48, p_mq_parm->mq_str_enc);
@@ -2014,9 +1655,9 @@ static gint dissect_mq_gmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Compute length according to version */
switch (iVersion)
{
- case 1: iSize = 72; break;
- case 2: iSize = 80; break;
- case 3: iSize = 100; break;
+ case 1: iSize = 72; break;
+ case 2: iSize = 80; break;
+ case 3: iSize = 100; break;
}
if (iSize != 0 && tvb_reported_length_remaining(tvb, offset) >= iSize)
@@ -2169,10 +1810,10 @@ static gint dissect_mq_od(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
/* Compute length according to version */
switch (iVersion)
{
- case 1: iSize = 168; break;
- case 2: iSize = 200; break;
- case 3: iSize = 336; break;
- case 4: iSize = 336+3*20+4; break;
+ case 1: iSize = 168; break;
+ case 2: iSize = 200; break;
+ case 3: iSize = 336; break;
+ case 4: iSize = 336 + 3 * 20 + 4; break;
}
if (iSize != 0 && tvb_reported_length_remaining(tvb, offset) >= iSize)
@@ -2225,9 +1866,9 @@ static gint dissect_mq_od(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
}
if (iVersion >= 4)
{
- dissect_mq_charv(tvb, mq_tree, offset+336, 20, ett_mq_od_objstr, "Object string", p_mq_parm);
- dissect_mq_charv(tvb, mq_tree, offset+356, 20, ett_mq_od_selstr, "Selection string", p_mq_parm);
- dissect_mq_charv(tvb, mq_tree, offset+376, 20, ett_mq_od_resobjstr, "Resolved object string", p_mq_parm);
+ dissect_mq_charv(tvb, mq_tree, offset + 336, 20, ett_mq_od_objstr, "Object string", p_mq_parm);
+ dissect_mq_charv(tvb, mq_tree, offset + 356, 20, ett_mq_od_selstr, "Selection string", p_mq_parm);
+ dissect_mq_charv(tvb, mq_tree, offset + 376, 20, ett_mq_od_resobjstr, "Resolved object string", p_mq_parm);
proto_tree_add_item(mq_tree, hf_mq_od_resolvobjtyp, tvb, offset + 396, 4, p_mq_parm->mq_int_enc);
}
}
@@ -2286,7 +1927,7 @@ static gint dissect_mq_sid(tvbuff_t *tvb, proto_tree *tree, mq_parm_t *p_mq_parm
guint8 iSIDL;
guint8 iSID;
char *sid_str;
- gint bOffset = offset;
+ gint bOffset = offset;
iSIDL = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_mq_sidlen, tvb, offset, 1, p_mq_parm->mq_int_enc);
@@ -2350,7 +1991,7 @@ static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_
{
col_append_fstr(pinfo->cinfo, COL_INFO, ", QM=%s", sQMgr);
}
- p_mq_parm->mq_id_ccsid.ccsid = (guint32)tvb_get_guint16(tvb, offset + 46, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_id_ccsid.ccsid = (guint32)tvb_get_guint16(tvb, offset + 46, p_mq_parm->mq_int_enc);
}
if (mqroot_tree)
{
@@ -2397,7 +2038,7 @@ static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_
/* ID Capability flags 3 */
proto_tree_add_bitmask(mq_tree, tvb, offset + 132, hf_mq_id_icf3, ett_mq_id_icf3, pf_flds_icf3, ENC_BIG_ENDIAN);
- proto_tree_add_bitmask(mq_tree, tvb, offset + 133, hf_mq_id_Eicf3, ett_mq_id_eicf3, pf_flds_icf3, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 133, hf_mq_id_Eicf3, ett_mq_id_eicf3, pf_flds_ief3, ENC_BIG_ENDIAN);
proto_tree_add_item(mq_tree, hf_mq_id_Reserved3, tvb, offset + 134, 2, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_id_ProcessId, tvb, offset + 136, 4, p_mq_parm->mq_int_enc);
@@ -2431,8 +2072,8 @@ static gint dissect_mq_md(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_parm_
/* Compute length according to version */
switch (iVersion)
{
- case 1: iSize = 324; break;
- case 2: iSize = 364; break;
+ case 1: iSize = 324; break;
+ case 2: iSize = 364; break;
}
if (bDecode && iSize != 0 && tvb_reported_length_remaining(tvb, offset) >= iSize)
@@ -2441,8 +2082,8 @@ static gint dissect_mq_md(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_parm_
p_mq_parm->iOfsCcs = offset + 28;
p_mq_parm->iOfsFmt = offset + 32;
- p_mq_parm->mq_md_ccsid.encod = tvb_get_guint32(tvb, offset + 24, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_md_ccsid.ccsid = tvb_get_guint32(tvb, offset + 28, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_md_ccsid.encod = tvb_get_guint32(tvb, offset + 24, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_md_ccsid.ccsid = tvb_get_guint32(tvb, offset + 28, p_mq_parm->mq_int_enc);
if (tree)
{
proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSize, ett_mq_md, NULL, MQ_TEXT_MD);
@@ -2474,11 +2115,11 @@ static gint dissect_mq_md(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_parm_
if (iVersion >= 2)
{
- proto_tree_add_item(mq_tree, hf_mq_md_groupid, tvb, offset + 324, 24, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_md_groupid , tvb, offset + 324, 24, ENC_NA);
proto_tree_add_item(mq_tree, hf_mq_md_msgseqnumber, tvb, offset + 348, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_offset, tvb, offset + 352, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_msgflags, tvb, offset + 356, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_md_origlen, tvb, offset + 360, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_offset , tvb, offset + 352, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_msgflags , tvb, offset + 356, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_origlen , tvb, offset + 360, 4, p_mq_parm->mq_int_enc);
}
}
}
@@ -2492,23 +2133,19 @@ static gint dissect_mq_fopa(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_par
p_mq_parm->mq_strucID = (tvb_reported_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
if (p_mq_parm->mq_strucID == MQ_STRUCTID_FOPA || p_mq_parm->mq_strucID == MQ_STRUCTID_FOPA_EBCDIC)
{
- iSize = tvb_get_guint32(tvb, offset+8, p_mq_parm->mq_int_enc);
+ iSize = tvb_get_guint32(tvb, offset + 8, p_mq_parm->mq_int_enc);
if (iSize != 0 && tvb_reported_length_remaining(tvb, offset) >= iSize)
{
proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSize, ett_mq_fopa, NULL, MQ_TEXT_FOPA);
- proto_tree_add_item(mq_tree, hf_mq_fopa_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_StructID, tvb, offset , 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_fopa_version , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_fopa_length , tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown3, tvb, offset + 20, 8, p_mq_parm->mq_str_enc);
- if (iSize > 28)
- {
- proto_tree_add_item(mq_tree, hf_mq_fopa_qprotect, tvb, offset + 28, 48, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown4, tvb, offset + 76, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_fopa_unknown5, tvb, offset + 80, 4, p_mq_parm->mq_int_enc);
- }
+
+ proto_tree_add_item(mq_tree, hf_mq_fopa_DefPersistence, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_DefPutRespType, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_DefReadAhead, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_fopa_PropertyControl, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
}
}
return iSize;
@@ -2530,7 +2167,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_mq_parm->mq_strucID = MQ_STRUCTID_NULL;
p_mq_parm->mq_int_enc = ENC_BIG_ENDIAN;
- p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA;
+ p_mq_parm->mq_str_enc = ENC_UTF_8 | ENC_NA;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ");
@@ -2542,7 +2179,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
if (((p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx ||
- (p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
+ (p_mq_parm->mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
&& tvb_reported_length_remaining(tvb, offset) >= 28)
{
proto_tree *mq_tree = NULL;
@@ -2576,7 +2213,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
p_mq_parm->iOfsEnc = offset + iSizeMPF + 20;
p_mq_parm->iOfsCcs = offset + iSizeMPF + 24;
- p_mq_parm->iOfsFmt = offset ;
+ p_mq_parm->iOfsFmt = offset;
}
p_mq_parm->mq_int_enc = (tvb_get_guint8(tvb, offset + iSizeMPF + 8) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
p_mq_parm->mq_ctlf1 = tvb_get_guint8(tvb, offset + iSizeMPF + 10);
@@ -2585,7 +2222,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_mq_parm->mq_tsh_ccsid.encod = tvb_get_guint32(tvb, offset + iSizeMPF + 20, p_mq_parm->mq_int_enc);
p_mq_parm->mq_tsh_ccsid.ccsid = tvb_get_guint16(tvb, offset + iSizeMPF + 24, p_mq_parm->mq_int_enc);
- if (p_mq_parm->mq_tsh_ccsid.ccsid == 500 && !bEBCDIC)
+ if (IS_EBCDIC(p_mq_parm->mq_tsh_ccsid.ccsid) && !bEBCDIC)
{
bEBCDIC = TRUE;
p_mq_parm->mq_str_enc = ENC_EBCDIC | ENC_NA;
@@ -2595,8 +2232,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
col_clear_fence(pinfo->cinfo, COL_INFO);
col_clear(pinfo->cinfo, COL_INFO);
- col_append_sep_fstr(pinfo->cinfo, COL_INFO, " | ", " %-17s", val_to_str_ext(p_mq_parm->mq_opcode, GET_VALS_EXTP(opcode), "Unknown (0x%02x)"));
- col_set_fence(pinfo->cinfo, COL_INFO);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%-17s", val_to_str_ext(p_mq_parm->mq_opcode, GET_VALS_EXTP(opcode), "Unknown (0x%02x)"));
}
if (tree)
@@ -2668,7 +2304,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += iSizeAPI;
p_mq_parm->mq_strucID = (tvb_reported_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
}
- capLen = tvb_reported_length_remaining(tvb , offset);
+ capLen = tvb_reported_length_remaining(tvb, offset);
if ((p_mq_parm->mq_strucID == MQ_STRUCTID_MSH || p_mq_parm->mq_strucID == MQ_STRUCTID_MSH_EBCDIC) && capLen >= 20)
{
gint iSize = 20;
@@ -2853,12 +2489,14 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
iApp = tvb_get_guint32(tvb, offset + 48 + 28, iCod);
- sApplicationName = format_text_chr(wmem_packet_scope(), tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 28, iEnc), 28, '.');
+ sApplicationName = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 28, iEnc);
+ sApplicationName = format_text_chr(wmem_packet_scope(), sApplicationName, strlen(sApplicationName), '.');
if (strip_trailing_blanks((guint8 *)sApplicationName, 28) > 0)
{
col_append_fstr(pinfo->cinfo, COL_INFO, " App=%s", sApplicationName);
}
- sQMgr = format_text_chr(wmem_packet_scope(), tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 48, iEnc), 48, '.');
+ sQMgr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 48, iEnc);
+ sQMgr = format_text_chr(wmem_packet_scope(), sQMgr, strlen(sQMgr), '.');
if (strip_trailing_blanks((guint8 *)sQMgr, 48) > 0)
{
col_append_fstr(pinfo->cinfo, COL_INFO, " QM=%s", sQMgr);
@@ -2878,8 +2516,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (iSizeCONN >= 120)
{
- ptvcursor_add(cursor, hf_mq_conn_version, 4, iCod);
ptvcursor_add(cursor, hf_mq_conn_options, 4, iCod);
+ ptvcursor_add(cursor, hf_mq_conn_Xoptions, 4, iCod);
}
if (iSizeCONN >= 260)
{
@@ -2897,9 +2535,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ptvcursor_add(cursor, hf_mq_fcno_option, 4, iCod);
if (iVersion == 2)
{
+ ptvcursor_add(cursor, hf_mq_fcno_connid, 24, iEnc);
+ ptvcursor_add(cursor, hf_mq_fcno_unknown02, 116, ENC_NA);
ptvcursor_add(cursor, hf_mq_fcno_msgid, 12, iEnc);
ptvcursor_add(cursor, hf_mq_fcno_mqmid, 48, iEnc);
- ptvcursor_add(cursor, hf_mq_fcno_unknown02, 68, ENC_NA);
}
if (iVersion == 1)
{
@@ -2995,7 +2634,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(mq_tree, hf_mq_notif_code, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_notif_value, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- offset+=16;
+ offset += 16;
p_mq_parm->mq_strucID = (tvb_reported_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
}
else if (p_mq_parm->mq_opcode == MQ_TST_REQUEST_MSGS)
@@ -3004,22 +2643,20 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint iFlags;
gint iGlbMsgIdx;
gint iMaxMsgLen;
- gint xOfs;
gint iOpt;
- xOfs = 0;
iHdl = tvb_get_guint32(tvb, offset + 4, p_mq_parm->mq_int_enc);
iMaxMsgLen = tvb_get_guint32(tvb, offset + 16, p_mq_parm->mq_int_enc);
iFlags = tvb_get_guint32(tvb, offset + 32, p_mq_parm->mq_int_enc);
iGlbMsgIdx = tvb_get_guint32(tvb, offset + 36, p_mq_parm->mq_int_enc);
- if (iFlags & 0x00000010)
+ if (iFlags & MQ_REQUEST_MSG_SELECTION)
{
p_mq_parm->mq_msgreq_ccsid.encod = tvb_get_guint32(tvb, offset + 44, p_mq_parm->mq_int_enc);
p_mq_parm->mq_msgreq_ccsid.ccsid = tvb_get_guint32(tvb, offset + 48, p_mq_parm->mq_int_enc);
}
dissect_mq_addCR_colinfo(pinfo, p_mq_parm);
- col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%04x GlbMsgIdx=%d, MaxLen=%d",
- iHdl, iGlbMsgIdx, iMaxMsgLen);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%04x RqstFlags=%08x GlbMsgIdx=%d MaxLen=%d ",
+ iHdl, iFlags, iGlbMsgIdx, iMaxMsgLen);
if (tree)
{
@@ -3034,10 +2671,11 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(mq_tree, hf_mq_msgreq_WaitIntrv, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msgreq_QueStatus, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_RqstFlags, tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 32, hf_mq_msgreq_RqstFlags, ett_mq_msgreq_RqstFlags, pf_flds_msgreq_flags, p_mq_parm->mq_int_enc);
+
proto_tree_add_item(mq_tree, hf_mq_msgreq_GlbMsgIdx, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
- if (iFlags & 0x00000010)
+ if (iFlags & MQ_REQUEST_MSG_SELECTION)
{
proto_tree_add_item(mq_tree, hf_mq_msgreq_SelectIdx, tvb, offset + 40, 2, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msgreq_MQMDVers , tvb, offset + 42, 2, p_mq_parm->mq_int_enc);
@@ -3048,29 +2686,33 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dissect_mq_MQMO(tvb, mq_tree, offset + 60, ett_mq_gmo_matchoption, p_mq_parm);
iOpt = tvb_get_guint32(tvb, offset + 60, p_mq_parm->mq_int_enc);
+ offset += MQ_REQUEST_MSG_SIZE_V1_SELECTION_FIXED_PART;
if (iOpt & MQ_MQMO_MATCH_MSG_ID)
{
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
- xOfs += 24;
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgId, tvb, offset, 24, p_mq_parm->mq_str_enc);
+ offset += 24;
}
if (iOpt & MQ_MQMO_MATCH_CORREL_ID)
{
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchCorId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
- xOfs += 24;
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchCorId, tvb, offset, 24, p_mq_parm->mq_str_enc);
+ offset += 24;
}
if (iOpt & MQ_MQMO_MATCH_GROUP_ID)
{
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchGrpid, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
- xOfs += 24;
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchGrpid, tvb, offset, 24, p_mq_parm->mq_str_enc);
+ offset += 24;
}
if (iOpt & MQ_MQMO_MATCH_MSG_TOKEN)
{
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgTk, tvb, offset + 64 + xOfs, 16, p_mq_parm->mq_str_enc);
- xOfs += 16;
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchMsgTk, tvb, offset, 16, p_mq_parm->mq_str_enc);
+ offset += 16;
}
}
+ else
+ {
+ offset += MQ_REQUEST_MSG_SIZE_V1_NO_SELECTION;
+ }
}
- offset += (iFlags & 0x00000010) ? (64+xOfs) : 40;
p_mq_parm->mq_strucID = (tvb_reported_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
}
else if (p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE)
@@ -3105,7 +2747,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
iStrLen = 0;
}
- iHdrL = (iSegmIndex == 0) ? (54+1+iStrLen+iPadLen) : 24;
+ iHdrL = (iSegmIndex == 0) ? (54 + 1 + iStrLen + iPadLen) : 24;
if (!mq_in_reassembly)
{
@@ -3113,7 +2755,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_append_fstr(pinfo->cinfo, COL_INFO,
" Hdl=0x%04x GlbMsgIdx=%d, Full Message, RC=%d(0x%x) - %s",
iHdl, iGlbMsgIdx, iReasnCode, iReasnCode,
- val_to_str_ext(iReasnCode, GET_VALS_EXTP(mqrc), "Unknown (0x%02x)"));
+ val_to_str_ext(iReasnCode, GET_VALS_EXTP(MQRC), "Unknown (0x%02x)"));
}
mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iHdrL, ett_mq_msg, NULL, MQ_TEXT_ASYMSG);
@@ -3128,8 +2770,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (p_mq_parm->mq_ctlf1 & MQ_TCF_FIRST)
{
proto_tree_add_item(mq_tree, hf_mq_msgasy_ReasonCod, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_ActMsgLen, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_TotMsgLen, tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_TotMsgLen, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_ActMsgLen, tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msgasy_MsgToken , tvb, offset + 36, 16, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msgasy_Status , tvb, offset + 52, 2, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msgasy_resolQNLn, tvb, offset + 54, 1, ENC_NA);
@@ -3137,7 +2779,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (iPadLen)
proto_tree_add_item(mq_tree, hf_mq_msgasy_padding , tvb, offset + 55 + iStrLen, iPadLen, p_mq_parm->mq_str_enc);
}
- offset+=iHdrL;
+ offset += iHdrL;
p_mq_parm->mq_strucID = (tvb_reported_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
iSizePayload = tvb_reported_length_remaining(tvb, offset);
@@ -3230,7 +2872,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPAI || p_mq_parm->mq_strucID == MQ_STRUCTID_SPAI_EBCDIC)
- && tvb_reported_length_remaining(tvb, offset) >= 136)
+ && tvb_reported_length_remaining(tvb, offset) >= 136)
{
proto_tree_add_item(mq_tree, hf_mq_spi_spai_mode , tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_spi_spai_unknown1, tvb, offset + 16, 48, p_mq_parm->mq_str_enc);
@@ -3239,7 +2881,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 136;
}
else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPGI || p_mq_parm->mq_strucID == MQ_STRUCTID_SPGI_EBCDIC)
- && tvb_reported_length_remaining(tvb, offset) >= 24)
+ && tvb_reported_length_remaining(tvb, offset) >= 24)
{
proto_tree_add_item(mq_tree, hf_mq_spi_spgi_batchsz , tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_spi_spgi_batchint, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
@@ -3247,8 +2889,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 24;
}
else if ((p_mq_parm->mq_strucID == MQ_STRUCTID_SPGO || p_mq_parm->mq_strucID == MQ_STRUCTID_SPPI ||
- p_mq_parm->mq_strucID == MQ_STRUCTID_SPGO_EBCDIC || p_mq_parm->mq_strucID == MQ_STRUCTID_SPPI_EBCDIC)
- && tvb_reported_length_remaining(tvb, offset) >= 20)
+ p_mq_parm->mq_strucID == MQ_STRUCTID_SPGO_EBCDIC || p_mq_parm->mq_strucID == MQ_STRUCTID_SPPI_EBCDIC)
+ && tvb_reported_length_remaining(tvb, offset) >= 20)
{
proto_tree_add_bitmask(mq_tree, tvb, offset + 12, hf_mq_spi_spgo_options, ett_mq_spi_options, pf_flds_spiopt, ENC_BIG_ENDIAN);
proto_tree_add_item(mq_tree, hf_mq_spi_spgo_size, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
@@ -3268,7 +2910,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* The XA structures are special because they do not start with a structid */
mq_tree = proto_tree_add_subtree_format(mqroot_tree, tvb, offset, 16, ett_mq_xa, NULL,
- "%s (%s)", MQ_TEXT_XA, val_to_str_ext(p_mq_parm->mq_opcode, GET_VALS_EXTP(opcode), "Unknown (0x%02x)"));
+ "%s (%s)", MQ_TEXT_XA, val_to_str_ext(p_mq_parm->mq_opcode, GET_VALS_EXTP(opcode), "Unknown (0x%02x)"));
proto_tree_add_item(mq_tree, hf_mq_xa_length, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(mq_tree, hf_mq_xa_returnvalue, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -3286,7 +2928,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += iSizeXid;
}
else if ((p_mq_parm->mq_opcode == MQ_TST_XA_OPEN || p_mq_parm->mq_opcode == MQ_TST_XA_CLOSE)
- && tvb_reported_length_remaining(tvb, offset) >= 1)
+ && tvb_reported_length_remaining(tvb, offset) >= 1)
{
guint8 iXAInfoLength = 0;
iXAInfoLength = tvb_get_guint8(tvb, offset);
@@ -3300,7 +2942,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 1 + iXAInfoLength;
}
else if ((p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER || p_mq_parm->mq_opcode == MQ_TST_XA_RECOVER_REPLY)
- && tvb_reported_length_remaining(tvb, offset) >= 4)
+ && tvb_reported_length_remaining(tvb, offset) >= 4)
{
gint iNbXid = 0;
iNbXid = tvb_get_guint32(tvb, offset, p_mq_parm->mq_int_enc);
@@ -3325,7 +2967,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint iVersion;
guint iXtraData = 0;
gint iSize = 32;
- iVersion = tvb_get_guint32(tvb, offset+4, p_mq_parm->mq_int_enc);
+ iVersion = tvb_get_guint32(tvb, offset + 4, p_mq_parm->mq_int_enc);
if (iVersion >= 3)
{
iSize += 56;
@@ -3339,9 +2981,9 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(mq_tree, hf_mq_lpoo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_lpoo_version , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- dissect_mq_MQOO(tvb, mq_tree, offset+8, ett_mq_lpoo_options, hf_mq_lpoo_options, p_mq_parm);
+ dissect_mq_MQOO(tvb, mq_tree, offset + 8, ett_mq_lpoo_options, hf_mq_lpoo_options, p_mq_parm);
- dissect_mq_LPOO_LPIOPTS(tvb, mq_tree, offset+12, ett_mq_lpoo_lpiopts, p_mq_parm);
+ dissect_mq_LPOO_LPIOPTS(tvb, mq_tree, offset + 12, ett_mq_lpoo_lpiopts, p_mq_parm);
proto_tree_add_item(mq_tree, hf_mq_lpoo_unknown5 , tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_lpoo_defpersist , tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_lpoo_defputresptype, tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
@@ -3354,7 +2996,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
offset += iSize;
p_mq_parm->mq_strucID = (tvb_reported_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
- if (iXtraData>0)
+ if (iXtraData > 0)
{
if (p_mq_parm->mq_opcode == MQ_TST_SPI_REPLY)
{
@@ -3416,13 +3058,13 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if ((iSizeGMO = dissect_mq_gmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm)) != 0)
{
- offset += iSizeGMO;
- bPayload = TRUE;
+ offset += iSizeGMO;
+ bPayload = TRUE;
}
else if ((iSizePMO = dissect_mq_pmo(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize)) != 0)
{
- offset += iSizePMO;
- bPayload = TRUE;
+ offset += iSizePMO;
+ bPayload = TRUE;
}
if (tvb_reported_length_remaining(tvb, offset) >= 4)
{
@@ -3511,18 +3153,59 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
iHeadersLength += iSizeDLH;
p_mq_parm->mq_strucID = (tvb_reported_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
}
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_TM || p_mq_parm->mq_strucID == MQ_STRUCTID_TM_EBCDIC)
+ && tvb_reported_length_remaining(tvb, offset) >= 8)
+ {
+
+ if (tree)
+ {
+ mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, tvb_reported_length_remaining(tvb, offset), ett_mq_head, NULL,
+ val_to_str_ext(p_mq_parm->mq_strucID, GET_VALS_EXTP(StructID), "Unknown (0x%08x)"));
+ }
+ proto_tree_add_item(mq_tree, hf_mq_tm_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_QName, tvb, offset + 8, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_ProcessNme, tvb, offset + 56, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_TriggerData, tvb, offset + 104, 64, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_ApplType, tvb, offset + 168, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_ApplId, tvb, offset + 172, 256, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_EnvData, tvb, offset + 428, 128, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tm_UserData, tvb, offset + 556, 128, p_mq_parm->mq_str_enc);
+ offset += 684;
+ }
+ if ((p_mq_parm->mq_strucID == MQ_STRUCTID_TMC2 || p_mq_parm->mq_strucID == MQ_STRUCTID_TMC2_EBCDIC)
+ && tvb_reported_length_remaining(tvb, offset) >= 8)
+ {
+ if (tree)
+ {
+ mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, tvb_reported_length_remaining(tvb, offset), ett_mq_head, NULL,
+ val_to_str_ext(p_mq_parm->mq_strucID, GET_VALS_EXTP(StructID), "Unknown (0x%08x)"));
+ }
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_version, tvb, offset + 4, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_QName, tvb, offset + 8, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_ProcessNme, tvb, offset + 56, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_TriggerData, tvb, offset + 104, 64, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_ApplType, tvb, offset + 168, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_ApplId, tvb, offset + 172, 256, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_EnvData, tvb, offset + 428, 128, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_UserData, tvb, offset + 556, 128, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tmc2_QMgrName, tvb, offset + 684, 48, p_mq_parm->mq_str_enc);
+ offset += 732;
+ }
if ((p_mq_parm->mq_strucID == MQ_STRUCTID_MDE || p_mq_parm->mq_strucID == MQ_STRUCTID_MDE_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_CIH || p_mq_parm->mq_strucID == MQ_STRUCTID_CIH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH_EBCDIC
- || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH_EBCDIC)
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_CIH || p_mq_parm->mq_strucID == MQ_STRUCTID_CIH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH || p_mq_parm->mq_strucID == MQ_STRUCTID_RFH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH || p_mq_parm->mq_strucID == MQ_STRUCTID_RMH_EBCDIC
+ || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH || p_mq_parm->mq_strucID == MQ_STRUCTID_WIH_EBCDIC
+ )
&& tvb_reported_length_remaining(tvb, offset) >= 12)
{
/* Dissect the generic part of the other pre-defined headers */
/* We assume that only one such header is present */
gint iSizeHeader;
- iSizeHeader = (gint) tvb_get_guint32(tvb, offset + 8, p_mq_parm->mq_int_enc);
+ iSizeHeader = (gint)tvb_get_guint32(tvb, offset + 8, p_mq_parm->mq_int_enc);
/* XXX - 32 is inferred from the code below. What's the
* correct minimum? */
if (iSizeHeader <= 32)
@@ -3542,21 +3225,21 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_mq_parm->iOfsCcs = offset + 16;
p_mq_parm->iOfsFmt = offset + 20;
- iVer = (gint)tvb_get_guint32(tvb, offset + 4, p_mq_parm->mq_int_enc);
- iLen = (gint)tvb_get_guint32(tvb, offset + 8, p_mq_parm->mq_int_enc);
+ iVer = (gint)tvb_get_guint32(tvb, offset + 4, p_mq_parm->mq_int_enc);
+ iLen = (gint)tvb_get_guint32(tvb, offset + 8, p_mq_parm->mq_int_enc);
iTmp = p_mq_parm->mq_head_ccsid.ccsid;
if (iTmp == 0)
iTmp = p_mq_parm->mq_md_ccsid.ccsid;
- if (iTmp == 500)
- p_mq_parm->mq_str_enc = ENC_EBCDIC|ENC_NA;
+ if (IS_EBCDIC(iTmp))
+ p_mq_parm->mq_str_enc = ENC_EBCDIC | ENC_NA;
else
- p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA;
+ p_mq_parm->mq_str_enc = ENC_UTF_8 | ENC_NA;
if (tree)
{
mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeHeader, ett_mq_head, NULL,
- val_to_str_ext(p_mq_parm->mq_strucID, GET_VALS_EXTP(StructID), "Unknown (0x%08x)"));
+ val_to_str_ext(p_mq_parm->mq_strucID, GET_VALS_EXTP(StructID), "Unknown (0x%08x)"));
proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_head_version , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -3602,16 +3285,29 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
else if (p_mq_parm->mq_strucID == MQ_STRUCTID_IIH || p_mq_parm->mq_strucID == MQ_STRUCTID_IIH_EBCDIC)
{
+ gint16 sLen;
+ gint32 iPos;
+ proto_tree *mq_ims;
+
proto_tree_add_bitmask(mq_tree, tvb, offset + 28, hf_mq_head_flags, ett_mq_head_flags, pf_flds_iih_flags, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_iih_ltermoverride, tvb, offset + 32, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_iih_mfsmapname , tvb, offset + 40, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_iih_replytofmt , tvb, offset + 48, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_iih_authenticator, tvb, offset + 56, 8, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_iih_transinstid , tvb, offset + 64, 16, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_iih_transstate , tvb, offset + 80, 1, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_iih_commimode , tvb, offset + 81, 1, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_iih_securityscope, tvb, offset + 82, 1, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_iih_reserved , tvb, offset + 83, 1, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_ltermoverride, tvb, offset + 32, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_mfsmapname, tvb, offset + 40, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_replytofmt, tvb, offset + 48, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_authenticator, tvb, offset + 56, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_transinstid, tvb, offset + 64, 16, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_iih_transstate, tvb, offset + 80, 1, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_commimode, tvb, offset + 81, 1, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_securityscope, tvb, offset + 82, 1, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_iih_reserved, tvb, offset + 83, 1, p_mq_parm->mq_str_enc);
+
+ iPos = offset + iSizeHeader;
+ sLen = tvb_get_guint16(tvb, iPos, p_mq_parm->mq_int_enc);
+ mq_ims = proto_tree_add_subtree(mq_tree, tvb, iPos, sLen, ett_mq_ims, NULL, "IMS Message");
+ proto_tree_add_item(mq_ims, hf_mq_ims_ll, tvb, iPos + 0, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_ims, hf_mq_ims_zz, tvb, iPos + 2, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_ims, hf_mq_ims_trx, tvb, iPos + 4, 8, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_ims, hf_mq_ims_data, tvb, iPos + 12, sLen - 12, ENC_NA);
+ offset += sLen;
}
else if (p_mq_parm->mq_strucID == MQ_STRUCTID_CIH || p_mq_parm->mq_strucID == MQ_STRUCTID_CIH_EBCDIC)
{
@@ -3684,10 +3380,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *rfh_tree;
- proto_tree_add_item(mq_tree, hf_mq_head_flags , tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
iPos = offset + 32;
iEnd = offset + iLen - 32;
- if ( iVer > 1 )
+ if (iVer > 1)
{
iCCSID = (int)tvb_get_guint32(tvb, iPos, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_rfh_ccsid, tvb, iPos, 4, p_mq_parm->mq_int_enc);
@@ -3700,13 +3396,13 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
while (iPos < iEnd)
{
iLenStr = (int)tvb_get_guint32(tvb, iPos, p_mq_parm->mq_int_enc);
- sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, iPos + 4, iLenStr, (iCCSID != 500) ? ENC_ASCII : ENC_EBCDIC);
+ sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, iPos + 4, iLenStr, IS_EBCDIC(iCCSID) ? ENC_EBCDIC : ENC_ASCII);
if (*sStr)
strip_trailing_blanks(sStr, iLenStr);
if (*sStr)
sStr = (guint8*)format_text_chr(wmem_packet_scope(), sStr, strlen((const char *)sStr), '.');
- rfh_tree = proto_tree_add_subtree_format(mq_tree, tvb, iPos, iLenStr+4, ett_mq_rfh_ValueName, NULL, "NameValue: %s", sStr);
+ rfh_tree = proto_tree_add_subtree_format(mq_tree, tvb, iPos, iLenStr + 4, ett_mq_rfh_ValueName, NULL, "NameValue: %s", sStr);
proto_tree_add_item(rfh_tree, hf_mq_rfh_length, tvb, iPos, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(rfh_tree, hf_mq_rfh_string, tvb, iPos + 4, iLenStr, p_mq_parm->mq_str_enc);
@@ -3715,7 +3411,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
else
{
- proto_tree_add_item(mq_tree, hf_mq_head_flags , tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_head_flags, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_head_struct, tvb, offset + 32, iSizeHeader - 32, ENC_NA);
}
}
@@ -3736,8 +3432,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_mq_parm->mq_cur_ccsid.encod = tvb_get_guint32(tvb, p_mq_parm->iOfsEnc, p_mq_parm->mq_int_enc);
p_mq_parm->mq_cur_ccsid.ccsid = tvb_get_guint32(tvb, p_mq_parm->iOfsCcs, p_mq_parm->mq_int_enc);
memcpy(p_mq_parm->mq_format,
- tvb_get_string_enc(wmem_packet_scope(), tvb, p_mq_parm->iOfsFmt, sizeof(p_mq_parm->mq_format), p_mq_parm->mq_str_enc),
- sizeof(p_mq_parm->mq_format));
+ tvb_get_string_enc(wmem_packet_scope(), tvb, p_mq_parm->iOfsFmt, sizeof(p_mq_parm->mq_format), p_mq_parm->mq_str_enc),
+ sizeof(p_mq_parm->mq_format));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, mqroot_tree, &hdtbl_entry, p_mq_parm))
@@ -3757,7 +3453,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
proto_tree_add_subtree_format(mqroot_tree, tvb, offset, -1, ett_mq_structid, NULL,
- "%s", val_to_str_ext(p_mq_parm->mq_strucID, GET_VALS_EXTP(StructID), "Unknown (0x%08x)"));
+ "%s", val_to_str_ext(p_mq_parm->mq_strucID, GET_VALS_EXTP(StructID), "Unknown (0x%08x)"));
}
}
else
@@ -3793,7 +3489,7 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
memset(&mq_parm, 0, sizeof(mq_parm_t));
mq_parm.mq_strucID = tvb_get_ntohl(tvb, 0);
- if ( (mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
+ if ((mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_parm.mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
{
guint8 iCtlF = 0;
gint32 iSegL = 0;
@@ -3820,11 +3516,11 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
iMulS = 8;
/* Get the Semgnet Length */
- iSegL = tvb_get_ntohl ( tvb, 4);
- if (iMulS==8)
+ iSegL = tvb_get_ntohl(tvb, 4);
+ if (iMulS == 8)
{
- mq_parm.mq_convID = tvb_get_ntohl (tvb, 8);
- mq_parm.mq_rqstID = tvb_get_ntohl (tvb, 12);
+ mq_parm.mq_convID = tvb_get_ntohl(tvb, 8);
+ mq_parm.mq_rqstID = tvb_get_ntohl(tvb, 12);
}
else
{
@@ -3833,13 +3529,13 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
}
/* Get the Encoding scheme */
- iEnco = (tvb_get_guint8(tvb, 8 + iMulS) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
+ iEnco = (tvb_get_guint8(tvb, 8 + iMulS) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
mq_parm.mq_int_enc = iEnco;
/* Get the Operation Code */
- iOpcd = tvb_get_guint8( tvb, 9 + iMulS);
+ iOpcd = tvb_get_guint8(tvb, 9 + iMulS);
mq_parm.mq_opcode = iOpcd;
/* Get the Control Flag */
- iCtlF = tvb_get_guint8( tvb, 10 + iMulS);
+ iCtlF = tvb_get_guint8(tvb, 10 + iMulS);
mq_parm.mq_ctlf1 = iCtlF;
/* First Segment ? */
bSeg1st = ((iCtlF & MQ_TCF_FIRST) != 0);
@@ -3889,7 +3585,7 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
/* Get the Segment Length */
iSegLength = tvb_get_guint32(tvb, iHdrL + 16, iEnco);
/* Get the Segment Index */
- iSegmIndex = tvb_get_guint16(tvb, iHdrL +20, iEnco);
+ iSegmIndex = tvb_get_guint16(tvb, iHdrL + 20, iEnco);
/*
if SegmIndex == 0, it has 54 bytes + the length and padding
@@ -3902,13 +3598,13 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
mq_AsyMsgAct = tvb_get_guint32(tvb, iHdrL + 28, iEnco);
mq_AsyMsgTot = tvb_get_guint32(tvb, iHdrL + 32, iEnco);
uStrL = tvb_get_guint8(tvb, iHdrL + 54);
- uPadL = ((((2+1+uStrL)/4)+1)*4)-(2+1+uStrL);
+ uPadL = ((((2 + 1 + uStrL) / 4) + 1) * 4) - (2 + 1 + uStrL);
}
bMore = !bSegLst;
/*
First segment has a longer header
*/
- iNxtP = iHdrL + ((bSeg1st) ? (54 + 1 + uStrL + uPadL) : (24));
+ iNxtP = iHdrL + ((bSeg1st) ? (54 + 1 + uStrL + uPadL) : (24));
iNxtP += dissect_mq_md(tvb, NULL, iNxtP, &mq_parm, FALSE);
/*
@@ -3926,9 +3622,9 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
else
{
fd_head = fragment_add_seq_next(&mq_reassembly_table,
- tvb, iBegL,
- pinfo, iConnectionId, NULL,
- iSegL - iBegL, bMore);
+ tvb, iBegL,
+ pinfo, iConnectionId, NULL,
+ iSegL - iBegL, bMore);
}
if (tree)
@@ -3941,7 +3637,6 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
else
proto_item_append_text(ti, " [%s of a Reassembled MQ Segment]",
val_to_str_ext(iOpcd, GET_VALS_EXTP(opcode), "Unknown (0x%02x)"));
- dissect_mq_addCR_colinfo(pinfo, &mq_parm);
proto_item_append_text(ti, " Hdl=0x%04x GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
@@ -3984,12 +3679,11 @@ static int reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
ti = proto_tree_add_item(tree, proto_mq, tvb, 0, -1, ENC_NA);
proto_item_append_text(ti, "%s",
val_to_str_ext(iOpcd, GET_VALS_EXTP(opcode), "Unknown (0x%02x)"));
- dissect_mq_addCR_colinfo(pinfo, &mq_parm);
proto_item_append_text(ti, " Hdl=0x%04x GlbMsgIdx=%d, Full, Len=%d, RC=%d(0x%x) - %s",
iHdl, iGlbMsgIdx,
tvb_reported_length_remaining(next_tvb, 0),
mq_AsyMsgRsn, mq_AsyMsgRsn,
- val_to_str_ext(mq_AsyMsgRsn, GET_VALS_EXTP(mqrc), "Unknown (0x%02x)"));
+ val_to_str_ext(mq_AsyMsgRsn, GET_VALS_EXTP(MQRC), "Unknown (0x%02x)"));
mq_tree = proto_item_add_subtree(ti, ett_mq_reassemb);
}
else
@@ -4036,11 +3730,13 @@ static guint get_mq_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb,
{
if (tvb_reported_length_remaining(tvb, offset) >= 8)
{
- guint32 mq_strucID = tvb_get_ntohl(tvb, 0);
- if ( (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
+ guint32 mq_strucID = tvb_get_ntohl(tvb, offset + 0);
+ if ((mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
{
return tvb_get_ntohl(tvb, offset + 4);
}
+ else
+ return tvb_reported_length_remaining(tvb, offset);
}
return 0;
}
@@ -4059,12 +3755,12 @@ static int dissect_mq_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v
}
static gboolean dissect_mq_heur(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree, gboolean is_tcp, dissector_handle_t *ssl_app_handle)
+ proto_tree *tree, gboolean is_tcp, dissector_handle_t *ssl_app_handle)
{
if ((tvb_captured_length(tvb) >= 4) && (tvb_reported_length(tvb) >= 28))
{
guint32 mq_strucID = tvb_get_ntohl(tvb, 0);
- if ( (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC )
+ if ((mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx || (mq_strucID & MQ_MASK_TSHx) == MQ_STRUCTID_TSHx_EBCDIC)
{
/* Register this dissector for this conversation */
conversation_t *conversation;
@@ -4095,7 +3791,7 @@ static gboolean dissect_mq_heur_nontcp(tvbuff_t *tvb, packet_info *pinfo, pro
static gboolean dissect_mq_heur_ssl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
- dissector_handle_t *app_handle = (dissector_handle_t *) data;
+ dissector_handle_t *app_handle = (dissector_handle_t *)data;
return dissect_mq_heur(tvb, pinfo, tree, FALSE, app_handle);
}
@@ -4132,7 +3828,7 @@ void proto_register_mq(void)
{ &hf_mq_api_replylen , {"Reply len..", "mq.api.replylength", FT_UINT32, BASE_DEC, NULL, 0x0, "API Reply length", HFILL }},
{ &hf_mq_api_compcode , {"Compl Code.", "mq.api.completioncode", FT_UINT32, BASE_DEC, VALS(GET_VALSV(mqcc)), 0x0, "API Completion code", HFILL }},
- { &hf_mq_api_reascode , {"Reason Code", "mq.api.reasoncode", FT_UINT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(mqrc), 0x0, "API Reason code", HFILL }},
+ { &hf_mq_api_reascode , {"Reason Code", "mq.api.reasoncode", FT_UINT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQRC), 0x0, "API Reason code", HFILL }},
{ &hf_mq_api_objecthdl, {"Object Hdl.", "mq.api.hobj", FT_UINT32, BASE_HEX, NULL, 0x0, "API Object handle", HFILL }},
{ &hf_mq_socket_conversid, {"ConversId", "mq.socket.conversid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Conversation Id", HFILL }},
@@ -4214,12 +3910,12 @@ void proto_register_mq(void)
{ &hf_mq_id_icf2_DualUOW , {"DualUOW", "mq.id.icf2.dualuow" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_DUAL_UOW, "ID ICF2 Dual UOW", HFILL }},
{ &hf_mq_id_icf2_CanTrcRte, {"Trace Rte Capab", "mq.id.icf2.cantraceroute" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_TRACE_ROUTE_CAPABLE, "ID ICF2 Trace Route Capable", HFILL }},
- { &hf_mq_id_icf3_CanMsgPrp, {"Msg Property Cap", "mq.id.icf.msgprpcap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_MSG_PROP_CAPABLE, "ID ICF3 Message PropertyCapable", HFILL }},
- { &hf_mq_id_icf3_Unknown02, {"Unknownx02", "mq.id.icf.unknown02", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_UNKNOWNX02, "ID ICF3 Unknown Flag x02", HFILL }},
- { &hf_mq_id_icf3_MPlxSyGet, {"Multiplex_synchget", "mq.id.icf.Multiplex_synchget", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_MULTIPLEX_SYNCGET, "ID ICF3 MULTIPLEX_SYNCGET", HFILL }},
+ { &hf_mq_id_icf3_CanMsgPrp , {"Msg Property Cap", "mq.id.icf3.msgpropertycap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_MSG_PROP_CAPABLE, "ID ICF3 Message PropertyCapable", HFILL }},
+ { &hf_mq_id_icf3_CanMulticast, {"Multicast Cap", "mq.id.icf3.multicastcap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_MULTICAST_CAPABLE, "ID ICF3 Mutlicast Capabilities", HFILL }},
+ { &hf_mq_id_icf3_MPlxSyGet , {"Multiplex_synchget", "mq.id.icf3.multiplexsynchget", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF3_MULTIPLEX_SYNCGET, "ID ICF3 MULTIPLEX_SYNCGET", HFILL }},
- { &hf_mq_id_ief1_ccsid , {"Invalid CCSID", "mq.id.ief1.ccsid", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_CCSID, "ID invalid CCSID", HFILL }},
- { &hf_mq_id_ief1_enc , {"Invalid encoding", "mq.id.ief1.enc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_ENCODING, "ID invalid encoding", HFILL }},
+ { &hf_mq_id_ief1_ccsid , {"Invalid CCSID", "mq.id.ief1.ccsid", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_CCSID_NOT_SUPPORTED, "ID invalid CCSID", HFILL }},
+ { &hf_mq_id_ief1_enc , {"Invalid encoding", "mq.id.ief1.enc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_ENCODING_INVALID, "ID invalid encoding", HFILL }},
{ &hf_mq_id_ief1_mxtrsz , {"Invalid Max Trans Size", "mq.id.ief1.mxtrsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_TRANSMISSION_SIZE, "ID invalid maximum transmission size", HFILL }},
{ &hf_mq_id_ief1_fap , {"Invalid FAP level", "mq.id.ief1.fap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_FAP_LEVEL, "ID invalid FAP level", HFILL }},
{ &hf_mq_id_ief1_mxmsgsz, {"Invalid message size", "mq.id.ief1.mxmsgsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_MSG_SIZE, "ID invalid message size", HFILL }},
@@ -4231,6 +3927,12 @@ void proto_register_mq(void)
{ &hf_mq_id_ief2_MsgCmpLst, {"Invalid Msg CompLst", "mq.id.ief2.msgcomplst", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_MSGCOMPLIST, "ID invalid Message Compression List", HFILL }},
{ &hf_mq_id_ief2_SSLReset , {"Invalid SSL Reset", "mq.id.ief2.sslreset" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_SSL_RESET , "ID invalid SSL Reset", HFILL }},
+ {&hf_mq_id_ief3_CanMsgPrp ,{"Invalid Property Cap", "mq.id.ief3.msgpropertycap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF3_MSG_PROP_CAPABLE, "ID invalid Message PropertyCapable", HFILL}},
+ {&hf_mq_id_ief3_CanMulticast,{"Invalid Multicast Cap", "mq.id.ief3.multicastcap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF3_MULTICAST_CAPABLE, "ID invalid Mutlicast Capabilities", HFILL}},
+ {&hf_mq_id_ief3_PropIntSep ,{"Invalid Prop Int Separate", "mq.id.ief3.propintseparate" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF3_MSG_PROP_INT_SEPARATE, "ID invalid Properety Int Separate", HFILL}},
+ {&hf_mq_id_ief3_MPlxSyGet ,{"Invalid Multiplex_synchget", "mq.id.ief3.multiplexsynchget" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF3_MULTIPLEX_SYNCGET, "ID invalid MULTIPLEX_SYNCGET", HFILL}},
+ {&hf_mq_id_ief3_ProtAlgorit ,{"Invalid Prot Algorithms", "mq.id.ief3.protalgorithms" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF3_PROT_ALGORITHMS, "ID invalid Prot Algorithms", HFILL}},
+
{ &hf_mq_uid_StructID , {"Structid", "mq.uid.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_uid_userid , {"User ID.", "mq.uid.userid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "UID structid", HFILL }},
{ &hf_mq_uid_password , {"Password", "mq.uid.password", FT_STRINGZ, BASE_NONE, NULL, 0x0, "UID password", HFILL }},
@@ -4242,10 +3944,10 @@ void proto_register_mq(void)
{ &hf_mq_conn_QMgr , {"QMgr....", "mq.conn.qm", FT_STRINGZ, BASE_NONE, NULL, 0x0, "CONN queue manager", HFILL }},
{ &hf_mq_conn_appname , {"ApplName", "mq.conn.appname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "CONN application name", HFILL }},
- { &hf_mq_conn_apptype , {"ApplType", "mq.conn.apptype", FT_INT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(mqat), 0x0, "CONN application type", HFILL }},
+ { &hf_mq_conn_apptype , {"ApplType", "mq.conn.apptype", FT_INT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQAT), 0x0, "CONN application type", HFILL }},
{ &hf_mq_conn_acttoken , {"AccntTok", "mq.conn.acttoken", FT_BYTES, BASE_NONE, NULL, 0x0, "CONN accounting token", HFILL }},
- { &hf_mq_conn_version , {"Version.", "mq.conn.version", FT_UINT32, BASE_DEC, VALS(mq_conn_version_vals), 0x0, "CONN version", HFILL }},
- { &hf_mq_conn_options , {"Options.", "mq.conn.options", FT_UINT32, BASE_HEX, NULL, 0x0, "CONN options", HFILL }},
+ { &hf_mq_conn_options , {"Options.", "mq.conn.options", FT_UINT32, BASE_DEC, VALS(mq_conn_options_vals), 0x0, "CONN options", HFILL }},
+ { &hf_mq_conn_Xoptions , {"XOptions", "mq.conn.xoptions", FT_UINT32, BASE_HEX, NULL, 0x0, "CONN Xoptions", HFILL }},
{ &hf_mq_fcno_StructID , {"StructId.", "mq.fcno.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_fcno_version , {"version..", "mq.fcno.version", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "FCNO version", HFILL }},
@@ -4325,15 +4027,13 @@ void proto_register_mq(void)
{ &hf_mq_open_options_NO_MULTICAST , {"NO_MULTICAST", "mq.open.options.NoMulticast", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_NO_MULTICAST, "OPEN options NO_MULTICAST", HFILL }},
{ &hf_mq_open_options_BIND_ON_GROUP , {"BIND_ON_GROUP", "mq.open.options.BindOnGroup", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_ON_GROUP, "OPEN options BIND_ON_GROUP", HFILL }},
- { &hf_mq_fopa_StructID, {"StructId", "mq.fopa.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_fopa_version , {"Version.", "mq.fopa.version", FT_UINT32, BASE_DEC, NULL, 0x0, "FOPA Version", HFILL }},
- { &hf_mq_fopa_length , {"Length..", "mq.fopa.length", FT_UINT32, BASE_DEC, NULL, 0x0, "FOPA Length", HFILL }},
- { &hf_mq_fopa_unknown1, {"Unknown1", "mq.fopa.unknown1", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown1", HFILL }},
- { &hf_mq_fopa_unknown2, {"Unknown2", "mq.fopa.unknown2", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown2", HFILL }},
- { &hf_mq_fopa_unknown3, {"Unknown3", "mq.fopa.unknown3", FT_STRINGZ, BASE_NONE, NULL, 0x0, "FOPA unknown3", HFILL }},
- { &hf_mq_fopa_qprotect, {"qprotect", "mq.fopa.qprotect", FT_STRINGZ, BASE_NONE, NULL, 0x0, "FOPA queue protection", HFILL }},
- { &hf_mq_fopa_unknown4, {"Unknown4", "mq.fopa.unknown4", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown4", HFILL }},
- { &hf_mq_fopa_unknown5, {"Unknown5", "mq.fopa.unknown5", FT_UINT32, BASE_HEX, NULL, 0x0, "FOPA unknown5", HFILL }},
+ { &hf_mq_fopa_StructID , {"StructId.......", "mq.fopa.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_fopa_version , {"Version........", "mq.fopa.version", FT_UINT32, BASE_DEC, NULL, 0x0, "FOPA Version", HFILL }},
+ { &hf_mq_fopa_length , {"Length.........", "mq.fopa.length", FT_UINT32, BASE_DEC, NULL, 0x0, "FOPA Length", HFILL }},
+ { &hf_mq_fopa_DefPersistence , {"DefPersistence.", "mq.fopa.defpersistence", FT_UINT32, BASE_DEC, VALS(GET_VALSV(MQPER)), 0x0, "FOPA DefPersistence", HFILL }},
+ { &hf_mq_fopa_DefPutRespType , {"DefPutRespType.", "mq.fopa.defputresponsetype", FT_UINT32, BASE_DEC , VALS(GET_VALSV(MQPRT)), 0x0, "FOPA DefPutRespType", HFILL }},
+ { &hf_mq_fopa_DefReadAhead , {"DefReadAhead...", "mq.fopa.defreadahaed", FT_UINT32, BASE_DEC , VALS(GET_VALSV(MQREADA)), 0x0, "FOPA DefReadAhead", HFILL }},
+ { &hf_mq_fopa_PropertyControl, {"PropertyControl", "mq.fopa.propertycontrol", FT_UINT32, BASE_DEC , VALS(GET_VALSV(MQPROP)), 0x0, "FOPA PropertyControl", HFILL }},
{ &hf_mq_msgreq_version , {"version..", "mq.msgreq.version" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ version", HFILL }},
{ &hf_mq_msgreq_handle , {"handle...", "mq.msgreq.handle" , FT_UINT32, BASE_HEX, NULL, 0x0, "MSGREQ handle", HFILL }},
@@ -4343,6 +4043,11 @@ void proto_register_mq(void)
{ &hf_mq_msgreq_WaitIntrv, {"WaitIntrv", "mq.msgreq.waitintrv", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Wait Interval", HFILL }},
{ &hf_mq_msgreq_QueStatus, {"QueStatus", "mq.msgreq.questatus", FT_UINT32, BASE_HEX , NULL, 0x0, "MSGREQ Queue Status", HFILL }},
{ &hf_mq_msgreq_RqstFlags, {"RqstFlags", "mq.msgreq.rqstflags", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Request Flags", HFILL }},
+ { &hf_mq_msgreq_flags_selection,{"REQ_MSG_SELECTION", "mq.msgreq.rqstflags.SELECTION", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_REQUEST_MSG_SELECTION, "Request Message flag SELECTION", HFILL}},
+ { &hf_mq_msgreq_flags_F00000008,{"REQ_MSG_F00000008", "mq.msgreq.rqstflags.F00000008", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_REQUEST_MSG_F00000008, "Request Message flag F00000008", HFILL}},
+ { &hf_mq_msgreq_flags_F00000004,{"REQ_MSG_F00000004", "mq.msgreq.rqstflags.F00000004", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_REQUEST_MSG_F00000004, "Request Message flag F00000004", HFILL}},
+ { &hf_mq_msgreq_flags_F00000002,{"REQ_MSG_F00000002", "mq.msgreq.rqstflags.F00000002", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_REQUEST_MSG_F00000002, "Request Message flag F00000002", HFILL}},
+
{ &hf_mq_msgreq_GlbMsgIdx, {"GlbMsgIdx", "mq.msgreq.glbmsgidx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Global Message Index", HFILL }},
{ &hf_mq_msgreq_SelectIdx, {"SelectIdx", "mq.msgreq.selectIdx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Selection Index", HFILL }},
{ &hf_mq_msgreq_MQMDVers , {"MQMDVers.", "mq.msgreq.mqmdvers" , FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ MQMD Version", HFILL }},
@@ -4362,7 +4067,7 @@ void proto_register_mq(void)
{ &hf_mq_msgasy_SegLength, {"SegLength", "mq.msgasy.seglength", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Segment Length", HFILL }},
{ &hf_mq_msgasy_SegmIndex, {"SegmIndex", "mq.msgasy.segmindex", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Segment Index", HFILL }},
{ &hf_mq_msgasy_SeleIndex, {"SeleIndex", "mq.msgasy.seleindex", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Selection Index", HFILL }},
- { &hf_mq_msgasy_ReasonCod, {"ReasonCod", "mq.msgasy.reasoncod", FT_UINT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(mqrc), 0x0, "MSGASYNC Reason Code", HFILL }},
+ { &hf_mq_msgasy_ReasonCod, {"ReasonCod", "mq.msgasy.reasoncod", FT_UINT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQRC), 0x0, "MSGASYNC Reason Code", HFILL }},
{ &hf_mq_msgasy_ActMsgLen, {"ActMsgLen", "mq.msgasy.actmsglen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Actual Message Length", HFILL }},
{ &hf_mq_msgasy_TotMsgLen, {"TotMsgLen", "mq.msgasy.totmsglen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Total Message Length", HFILL }},
{ &hf_mq_msgasy_MsgToken , {"MsgToken.", "mq.msgasy.msgtoken" , FT_BYTES , BASE_NONE , NULL, 0x0, "MSGASYNC Mesasage Token", HFILL }},
@@ -4421,14 +4126,14 @@ void proto_register_mq(void)
{ &hf_mq_md_StructID , {"StructID.", "mq.md.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_md_version , {"Version..", "mq.md.version", FT_UINT32, BASE_DEC, NULL, 0x0, "MD version", HFILL }},
{ &hf_mq_md_report , {"Report...", "mq.md.report", FT_UINT32, BASE_DEC, NULL, 0x0, "MD report", HFILL }},
- { &hf_mq_md_msgtype , {"Msg Type.", "mq.md.msgtype", FT_UINT32, BASE_DEC, NULL, 0x0, "MD message type", HFILL }},
+ { &hf_mq_md_msgtype , {"Msg Type.", "mq.md.msgtype", FT_UINT32, BASE_DEC , VALS(GET_VALSV(MQMT)), 0x0, "MD message type", HFILL }},
{ &hf_mq_md_expiry , {"Expiry .", "mq.md.expiry", FT_INT32, BASE_DEC, NULL, 0x0, "MD expiry", HFILL }},
{ &hf_mq_md_feedback , {"Feedback.", "mq.md.feedback", FT_UINT32, BASE_DEC, NULL, 0x0, "MD feedback", HFILL }},
{ &hf_mq_md_encoding , {"Encoding.", "mq.md.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "MD encoding", HFILL }},
{ &hf_mq_md_ccsid , {"CCSID....", "mq.md.ccsid", FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "MD character set", HFILL }},
{ &hf_mq_md_format , {"Format...", "mq.md.format", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD format", HFILL }},
{ &hf_mq_md_priority , {"Priority.", "mq.md.priority", FT_INT32, BASE_DEC, NULL, 0x0, "MD priority", HFILL }},
- { &hf_mq_md_persistence , {"Persist..", "mq.md.persistence", FT_UINT32, BASE_DEC, NULL, 0x0, "MD persistence", HFILL }},
+ { &hf_mq_md_persistence , {"Persist..", "mq.md.persistence", FT_UINT32, BASE_DEC , VALS(GET_VALSV(MQPER)), 0x0, "MD persistence", HFILL }},
{ &hf_mq_md_msgid , {"Msg ID...", "mq.md.msgid", FT_BYTES, BASE_NONE, NULL, 0x0, "MD Message Id", HFILL }},
{ &hf_mq_md_correlid , {"CorrelID.", "mq.md.correlid", FT_BYTES, BASE_NONE, NULL, 0x0, "MD Correlation Id", HFILL }},
{ &hf_mq_md_backoutcnt , {"BackoCnt.", "mq.md.backount", FT_UINT32, BASE_DEC, NULL, 0x0, "MD Backout count", HFILL }},
@@ -4437,7 +4142,7 @@ void proto_register_mq(void)
{ &hf_mq_md_userid , {"UserId...", "mq.md.userid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD UserId", HFILL }},
{ &hf_mq_md_acttoken , {"AccntTok.", "mq.md.acttoken", FT_BYTES, BASE_NONE, NULL, 0x0, "MD accounting token", HFILL }},
{ &hf_mq_md_appliddata , {"AppIdData", "mq.md.appldata", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put applicationId data", HFILL }},
- { &hf_mq_md_putappltype , {"PutAppTyp", "mq.md.appltype", FT_INT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(mqat), 0x0, "MD Put application type", HFILL }},
+ { &hf_mq_md_putappltype , {"PutAppTyp", "mq.md.appltype", FT_INT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQAT), 0x0, "MD Put application type", HFILL }},
{ &hf_mq_md_putapplname , {"PutAppNme", "mq.md.applname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put application name", HFILL }},
{ &hf_mq_md_putdate , {"PutDatGMT", "mq.md.date", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put date", HFILL }},
{ &hf_mq_md_puttime , {"PutTimGMT", "mq.md.time", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Put time", HFILL }},
@@ -4456,7 +4161,7 @@ void proto_register_mq(void)
{ &hf_mq_dlh_encoding , {"Encoding.", "mq.dlh.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "DLH encoding", HFILL }},
{ &hf_mq_dlh_ccsid , {"CCSID....", "mq.dlh.ccsid", FT_INT32, BASE_DEC | BASE_RANGE_STRING, RVALS(&GET_VALRV(ccsid)), 0x0, "DLH character set", HFILL }},
{ &hf_mq_dlh_format , {"Format...", "mq.dlh.format", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH format", HFILL }},
- { &hf_mq_dlh_putappltype, {"PutAppTyp", "mq.dlh.putappltype", FT_INT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(mqat), 0x0, "DLH put application type", HFILL }},
+ { &hf_mq_dlh_putappltype, {"PutAppTyp", "mq.dlh.putappltype", FT_INT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQAT), 0x0, "DLH put application type", HFILL }},
{ &hf_mq_dlh_putapplname, {"PutAppNme", "mq.dlh.putapplname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH put application name", HFILL }},
{ &hf_mq_dlh_putdate , {"PutDatGMT", "mq.dlh.putdate", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH put date", HFILL }},
{ &hf_mq_dlh_puttime , {"PutTimGMT", "mq.dlh.puttime", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH put time", HFILL }},
@@ -4524,9 +4229,9 @@ void proto_register_mq(void)
{ &hf_mq_lpoo_lpiopts_SAVE_IDENTITY_CTXT, {"SAVE_IDENTITY_CTXT", "mq.lpoo.opts.SAVE_IDENTITY_CTXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_LPOO_SAVE_IDENTITY_CTXT, "LPOO options SAVE_IDENTITY_CTXT", HFILL }},
{ &hf_mq_lpoo_unknown5 , {"Unknown5......", "mq.lpoo.unknown5", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown5", HFILL }},
- { &hf_mq_lpoo_defpersist , {"DefPersitence.", "mq.lpoo.defpersist", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO Default Persitence", HFILL }},
- { &hf_mq_lpoo_defputresptype, {"DefPutRespType", "mq.lpoo.defputresptype", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO Default Put Response Type", HFILL }},
- { &hf_mq_lpoo_defreadahead , {"DefReadAHead..", "mq.lpoo.defreadahead", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO Default Read AHead", HFILL }},
+ { &hf_mq_lpoo_defpersist , {"DefPersistence", "mq.lpoo.defpersist", FT_UINT32, BASE_DEC, VALS(GET_VALSV(MQPER)), 0x0, "LPOO Default Persistence", HFILL }},
+ { &hf_mq_lpoo_defputresptype, {"DefPutRespType", "mq.lpoo.defputresptype", FT_UINT32, BASE_DEC, VALS(GET_VALSV(MQPRT)), 0x0, "LPOO Default Put Response Type", HFILL }},
+ { &hf_mq_lpoo_defreadahead , {"DefReadAHead..", "mq.lpoo.defreadahead", FT_UINT32, BASE_DEC, VALS(GET_VALSV(MQREADA)), 0x0, "LPOO Default Read AHead", HFILL }},
{ &hf_mq_lpoo_qprotect , {"qprotect......", "mq.lpoo.qprotect", FT_STRINGZ, BASE_NONE, NULL, 0x0, "LPOO queue protection", HFILL }},
{ &hf_mq_lpoo_unknown6 , {"Unknown6......", "mq.lpoo.unknown6", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown6", HFILL }},
{ &hf_mq_lpoo_xtradata , {"ExtraData.....", "mq.lpoo.extradata", FT_UINT32, BASE_DEC, NULL, 0x0, "LPOO Extra Data", HFILL }},
@@ -4589,7 +4294,7 @@ void proto_register_mq(void)
{ &hf_mq_xa_tmflags_fail , {"FAIL", "mq.xa.tmflags.fail", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMFAIL, "XA TM Flags FAIL", HFILL }},
{ &hf_mq_xa_tmflags_onephase , {"ONEPHASE", "mq.xa.tmflags.onephase", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMONEPHASE, "XA TM Flags ONEPHASE", HFILL }},
- { &hf_mq_xa_xid_formatid , {"Format ID....", "mq.xa.xid.formatid", FT_INT32, BASE_DEC, NULL, 0x0, "XA Xid Format ID", HFILL }},
+ { &hf_mq_xa_xid_formatid , {"Format ID....", "mq.xa.xid.formatid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "XA Xid Format ID", HFILL }},
{ &hf_mq_xa_xid_glbxid_len, {"GlbTransIDLen", "mq.xa.xid.gxidl", FT_UINT8, BASE_DEC, NULL, 0x0, "XA Xid Global TransactionId Length", HFILL }},
{ &hf_mq_xa_xid_brq_length, {"BranchQualLen", "mq.xa.xid.bql", FT_UINT8, BASE_DEC, NULL, 0x0, "XA Xid Branch Qualifier Length", HFILL }},
{ &hf_mq_xa_xid_globalxid , {"GlbTransactID", "mq.xa.xid.gxid", FT_BYTES, BASE_NONE, NULL, 0x0, "XA Xid Global TransactionId", HFILL }},
@@ -4636,9 +4341,35 @@ void proto_register_mq(void)
{ &hf_mq_iih_securityscope, {"SecurityScope.", "mq.iih.securityscope", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Security Scope", HFILL }},
{ &hf_mq_iih_reserved , {"Reserved......", "mq.iih.reserved" , FT_STRINGZ, BASE_NONE, NULL, 0x0, "Reserved", HFILL }},
- { &hf_mq_cih_flags_synconret , {"SYNC_ON_RETURN", "mq.iih.flags.synconret" , FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCIH_SYNC_ON_RETURN, "MQ CIH Flags IGNORE_PURG", HFILL }},
- { &hf_mq_cih_flags_replywonulls, {"REPLY_WO_NULLS", "mq.iih.flags.replywonulls", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCIH_REPLY_WITHOUT_NULLS, "MQ CIH Flags REPLY_WITHOUT_NULLS", HFILL }},
- { &hf_mq_cih_flags_passexpir , {"PASS_EXPIR....", "mq.iih.flags.passexpir" , FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCIH_PASS_EXPIRATION, "MQ CIH Flags PASS_EXPIRATION", HFILL }},
+ {&hf_mq_cih_flags_synconret ,{"SYNC_ON_RETURN", "mq.iih.flags.synconret" , FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCIH_SYNC_ON_RETURN, "MQ CIH Flags IGNORE_PURG", HFILL}},
+ {&hf_mq_cih_flags_replywonulls,{"REPLY_WO_NULLS", "mq.iih.flags.replywonulls", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCIH_REPLY_WITHOUT_NULLS, "MQ CIH Flags REPLY_WITHOUT_NULLS", HFILL}},
+ {&hf_mq_cih_flags_passexpir ,{"PASS_EXPIR....", "mq.iih.flags.passexpir" , FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCIH_PASS_EXPIRATION, "MQ CIH Flags PASS_EXPIRATION", HFILL}},
+
+ {&hf_mq_ims_ll ,{"ll..", "mq.ims.ll" , FT_UINT16, BASE_DEC, NULL, 0x0, "IMS ll", HFILL}},
+ {&hf_mq_ims_zz ,{"zz..", "mq.ims.zz" , FT_UINT16, BASE_DEC, NULL, 0x0, "IMS zz", HFILL}},
+ {&hf_mq_ims_trx ,{"trx.", "mq.ims.trx", FT_STRINGZ, BASE_NONE, NULL, 0x0, "IMS Transaction", HFILL}},
+ {&hf_mq_ims_data,{"data", "mq.ims.data", FT_BYTES, BASE_NONE, NULL, 0x0, "Transaction Instance Identifier", HFILL}},
+
+ {&hf_mq_tm_StructID ,{"Structid", "mq.tm.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TM structid", HFILL}},
+ {&hf_mq_tm_version ,{"version.", "mq.tm.version", FT_UINT32, BASE_DEC, NULL, 0x0, "TM version", HFILL}},
+ {&hf_mq_tm_QName ,{"QName...", "mq.tm.qname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TM Queue Name", HFILL}},
+ {&hf_mq_tm_ProcessNme ,{"ProcName", "mq.tm.procname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TM Process Name", HFILL}},
+ {&hf_mq_tm_TriggerData,{"TrigData", "mq.tm.triggerdata", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TM Trigger Data", HFILL}},
+ {&hf_mq_tm_ApplType ,{"ApplType", "mq.tm.appltype", FT_UINT32, BASE_DEC | BASE_EXT_STRING, GET_VALS_EXTP(MQAT), 0x0, "TM Application Type", HFILL}},
+ {&hf_mq_tm_ApplId ,{"ApplId..", "mq.tm.applid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TM Application ID", HFILL}},
+ {&hf_mq_tm_EnvData ,{"EnvData.", "mq.tm.envdaqta", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TM Environment Data", HFILL}},
+ {&hf_mq_tm_UserData ,{"UserData.", "mq.t2.userdata", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TM User Data", HFILL}},
+
+ {&hf_mq_tmc2_StructID ,{"Structid", "mq.tmc2.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 structid", HFILL}},
+ {&hf_mq_tmc2_version ,{"version.", "mq.tmc2.version", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 version", HFILL}},
+ {&hf_mq_tmc2_QName ,{"QName...", "mq.tmc2.qname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 Queue Name", HFILL}},
+ {&hf_mq_tmc2_ProcessNme ,{"ProcName", "mq.tmc2.procname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 Process Name", HFILL}},
+ {&hf_mq_tmc2_TriggerData,{"TrigData", "mq.tmc2.triggerdata", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 Trigger Data", HFILL}},
+ {&hf_mq_tmc2_ApplType ,{"ApplType", "mq.tmc2.appltype", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 Application Type", HFILL}},
+ {&hf_mq_tmc2_ApplId ,{"ApplId..", "mq.tmc2.applid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 Application ID", HFILL}},
+ {&hf_mq_tmc2_EnvData ,{"EnvData.", "mq.tmc2.envdaqta", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 Environment Data", HFILL}},
+ {&hf_mq_tmc2_UserData ,{"UserData", "mq.tmc2.userdata", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 User Data", HFILL}},
+ {&hf_mq_tmc2_QMgrName ,{"QMgrName", "mq.tmc2.qmgrname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "TMC2 Queue Manager Name", HFILL}},
{ &hf_mq_cih_returncode , {"ReturnCode...", "mq.cih.returncode" , FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "Return Code", HFILL }},
{ &hf_mq_cih_compcode , {"ComplCode....", "mq.cih.compcode" , FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "Completion Code", HFILL }},
@@ -4687,7 +4418,7 @@ void proto_register_mq(void)
{ &hf_mq_rmh_dstenvlen , {"DstEnvLen....", "mq.rmh.dstenvlen" , FT_UINT32 , BASE_DEC , NULL, 0x0, "Length of destination environment data", HFILL }},
{ &hf_mq_rmh_dstenvofs , {"DstEnvOfs....", "mq.rmh.dstenvofs" , FT_UINT32 , BASE_DEC_HEX, NULL, 0x0, "Offset of destination environment data", HFILL }},
{ &hf_mq_rmh_dstnamelen , {"DstNameLen...", "mq.rmh.dstnamelen" , FT_UINT32 , BASE_DEC , NULL, 0x0, "Length of destination object name", HFILL }},
- { &hf_mq_rmh_dstnameofs , {"DstNameOfs...", "mq.rmh.dstnameofs" , FT_UINT32 , BASE_DEC | BASE_HEX, NULL, 0x0, "Offset of destination object name", HFILL }},
+ { &hf_mq_rmh_dstnameofs , {"DstNameOfs...", "mq.rmh.dstnameofs" , FT_UINT32 , BASE_DEC | BASE_HEX, NULL, 0x0, "Offset of destination object name", HFILL }},
{ &hf_mq_rmh_datalogiclen , {"DataLogicLen.", "mq.rmh.datalogiclen" , FT_UINT32 , BASE_DEC , NULL, 0x0, "Length of bulk data", HFILL }},
{ &hf_mq_rmh_datalogicofsl, {"DataLogicOfsL", "mq.rmh.datalogicofsl", FT_UINT32 , BASE_DEC_HEX, NULL, 0x0, "Low offset of bulk data", HFILL }},
{ &hf_mq_rmh_datalogicofsh, {"DataLogicOfsH", "mq.rmh.datalogicofsh", FT_UINT32 , BASE_DEC_HEX, NULL, 0x0, "High offset of bulk data", HFILL }},
@@ -4746,6 +4477,7 @@ void proto_register_mq(void)
&ett_mq_gmo,
&ett_mq_gmo_option,
&ett_mq_gmo_matchoption,
+ &ett_mq_msgreq_RqstFlags,
&ett_mq_pmo,
&ett_mq_pmo_option,
&ett_mq_fcno,
@@ -4755,6 +4487,7 @@ void proto_register_mq(void)
&ett_mq_lpoo_lpiopts,
&ett_mq_head,
&ett_mq_head_flags,
+ &ett_mq_ims,
&ett_mq_xa,
&ett_mq_xa_tmflags,
&ett_mq_xa_xid,
@@ -4783,20 +4516,20 @@ void proto_register_mq(void)
mq_heur_subdissector_list = register_heur_dissector_list("mq", proto_mq);
reassembly_table_register(&mq_reassembly_table,
- &addresses_reassembly_table_functions);
+ &addresses_reassembly_table_functions);
mq_module = prefs_register_protocol(proto_mq, NULL);
mq_handle = register_dissector("mq", dissect_mq_tcp, proto_mq);
prefs_register_bool_preference(mq_module, "desegment",
- "Reassemble MQ messages spanning multiple TCP segments",
- "Whether the MQ dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
- &mq_desegment);
+ "Reassemble MQ messages spanning multiple TCP segments",
+ "Whether the MQ dissector should reassemble messages spanning multiple TCP segments."
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &mq_desegment);
prefs_register_bool_preference(mq_module, "reassembly",
- "Reassemble segmented MQ messages",
- "Whether the MQ dissector should reassemble MQ messages spanning multiple TSH segments",
- &mq_reassembly);
+ "Reassemble segmented MQ messages",
+ "Whether the MQ dissector should reassemble MQ messages spanning multiple TSH segments",
+ &mq_reassembly);
}
void proto_reg_handoff_mq(void)
@@ -4809,10 +4542,10 @@ void proto_reg_handoff_mq(void)
dissector_add_for_decode_as_with_preference("tcp.port", mq_handle);
ssl_dissector_add(0, mq_handle);
- heur_dissector_add("tcp", dissect_mq_heur_tcp, "WebSphere MQ over TCP", "mq_tcp", proto_mq, HEURISTIC_ENABLE);
+ heur_dissector_add("tcp", dissect_mq_heur_tcp, "WebSphere MQ over TCP", "mq_tcp", proto_mq, HEURISTIC_ENABLE);
heur_dissector_add("netbios", dissect_mq_heur_nontcp, "WebSphere MQ over Netbios", "mq_netbios", proto_mq, HEURISTIC_ENABLE);
- heur_dissector_add("http", dissect_mq_heur_nontcp, "WebSphere MQ over HTTP", "mq_http", proto_mq, HEURISTIC_ENABLE);
- heur_dissector_add("ssl", dissect_mq_heur_ssl, "WebSphere MQ over SSL", "mq_ssl", proto_mq, HEURISTIC_ENABLE);
+ heur_dissector_add("http", dissect_mq_heur_nontcp, "WebSphere MQ over HTTP", "mq_http", proto_mq, HEURISTIC_ENABLE);
+ heur_dissector_add("ssl", dissect_mq_heur_ssl, "WebSphere MQ over SSL", "mq_ssl", proto_mq, HEURISTIC_ENABLE);
dissector_add_uint("spx.socket", MQ_SOCKET_SPX, mq_spx_handle);
mqpcf_handle = find_dissector("mqpcf");
}
diff --git a/epan/dissectors/packet-mq.h b/epan/dissectors/packet-mq.h
index e77b036520..17a76e4aac 100644
--- a/epan/dissectors/packet-mq.h
+++ b/epan/dissectors/packet-mq.h
@@ -64,6 +64,439 @@
{ 0, 0, NULL } \
}
+#define IS_EBCDIC(a) ((a == 500) || (a == 1047))
+
+#define MQ_PORT_TCP 1414
+#define MQ_SOCKET_SPX 0x5E86
+
+#define MQ_STRUCTID_NULL 0x00000000
+
+#define MQ_STRUCTID_CAUT 0x43415554
+#define MQ_STRUCTID_CIH 0x43494820
+#define MQ_STRUCTID_DH 0x44482020
+#define MQ_STRUCTID_DLH 0x444C4820
+#define MQ_STRUCTID_FCNO 0x46434E4F
+#define MQ_STRUCTID_FOPA 0x464F5041
+#define MQ_STRUCTID_GMO 0x474D4F20
+#define MQ_STRUCTID_ID 0x49442020
+#define MQ_STRUCTID_IIH 0x49494820
+#define MQ_STRUCTID_LPOO 0x4C504F4F
+#define MQ_STRUCTID_MD 0x4D442020
+#define MQ_STRUCTID_MDE 0x4D444520
+#define MQ_STRUCTID_MSH 0x4D534820
+#define MQ_STRUCTID_OD 0x4F442020
+#define MQ_STRUCTID_PMO 0x504D4F20
+#define MQ_STRUCTID_RFH 0x52464820
+#define MQ_STRUCTID_RMH 0x524D4820
+
+#define MQ_STRUCTID_SPxx 0x53500000 /* SPxx */
+#define MQ_STRUCTID_SPxI 0x53500049 /* SPxI */
+#define MQ_STRUCTID_SPxO 0x5350004F /* SPxO */
+#define MQ_STRUCTID_SPxU 0x53500055 /* SPxU */
+#define MQ_STRUCTID_SPAI 0x53504149 /* SPI Activate In */
+#define MQ_STRUCTID_SPAO 0x5350414F /* SPI Activate Out */
+#define MQ_STRUCTID_SPAU 0x53504155 /* SPI Activate InOut */
+#define MQ_STRUCTID_SPGI 0x53504749 /* SPI Get In */
+#define MQ_STRUCTID_SPGO 0x5350474F /* SPI Get Out */
+#define MQ_STRUCTID_SPGU 0x53504755 /* SPI Get InOut */
+#define MQ_STRUCTID_SPOI 0x53504F49 /* SPI In */
+#define MQ_STRUCTID_SPOO 0x53504F4F /* SPI Out */
+#define MQ_STRUCTID_SPOU 0x53504F55 /* SPI InOut */
+#define MQ_STRUCTID_SPPI 0x53505049 /* SPI Put In */
+#define MQ_STRUCTID_SPPO 0x5350504F /* SPI Put Out */
+#define MQ_STRUCTID_SPPU 0x53505055 /* SPI Put InOut */
+#define MQ_STRUCTID_SPQI 0x53505149 /* SPI Query In */
+#define MQ_STRUCTID_SPQO 0x5350514F /* SPI Query Out */
+#define MQ_STRUCTID_SPQU 0x53505155 /* SPI Query InOut */
+#define MQ_STRUCTID_TM 0x544D2020
+#define MQ_STRUCTID_TMC2 0x544D4332
+
+#define MQ_MASK_TSHx 0xffffff00
+#define MQ_STRUCTID_TSHx 0x54534800
+
+#define MQ_STRUCTID_TSH 0x54534820
+#define MQ_STRUCTID_TSHC 0x54534843
+#define MQ_STRUCTID_TSHM 0x5453484D
+#define MQ_STRUCTID_UID 0x55494420
+#define MQ_STRUCTID_WIH 0x57494820
+#define MQ_STRUCTID_XQH 0x58514820
+
+#define MQ_STRUCTID_CAUT_EBCDIC 0xC3C1E4E3
+#define MQ_STRUCTID_CIH_EBCDIC 0xC3C9C840
+#define MQ_STRUCTID_DH_EBCDIC 0xC4C84040
+#define MQ_STRUCTID_DLH_EBCDIC 0xC4D3C840
+#define MQ_STRUCTID_FCNO_EBCDIC 0xC6C3D5D6
+#define MQ_STRUCTID_GMO_EBCDIC 0xC7D4D640
+#define MQ_STRUCTID_ID_EBCDIC 0xC9C44040
+#define MQ_STRUCTID_IIH_EBCDIC 0xC9C9C840
+#define MQ_STRUCTID_LPOO_EBCDIC 0xD3D7D6D6
+#define MQ_STRUCTID_MD_EBCDIC 0xD4C44040
+#define MQ_STRUCTID_MDE_EBCDIC 0xD4C4C540
+#define MQ_STRUCTID_MSH_EBCDIC 0xD4E2C840
+#define MQ_STRUCTID_FOPA_EBCDIC 0xC6D6D7C1
+#define MQ_STRUCTID_OD_EBCDIC 0xD6C44040
+#define MQ_STRUCTID_PMO_EBCDIC 0xD7D4D640
+#define MQ_STRUCTID_RFH_EBCDIC 0xD9C6C840
+#define MQ_STRUCTID_RMH_EBCDIC 0xD9D4C840
+
+#define MQ_STRUCTID_SPxx_EBCDIC 0xE2D70000 /* SPxx */
+#define MQ_STRUCTID_SPxI_EBCDIC 0xE2D700C9 /* SPxI */
+#define MQ_STRUCTID_SPxO_EBCDIC 0xE2D700D6 /* SPxO */
+#define MQ_STRUCTID_SPxU_EBCDIC 0xE2D700E4 /* SPxU */
+#define MQ_STRUCTID_SPAI_EBCDIC 0xE2D7C1C9 /* SPI Activate In */
+#define MQ_STRUCTID_SPAO_EBCDIC 0xE2D7C1D6 /* SPI Activate Out */
+#define MQ_STRUCTID_SPAU_EBCDIC 0xE2D7C1E4 /* SPI Activate InOut */
+#define MQ_STRUCTID_SPGI_EBCDIC 0xE2D7C7C9 /* SPI Get In */
+#define MQ_STRUCTID_SPGO_EBCDIC 0xE2D7C7D6 /* SPI Get Out */
+#define MQ_STRUCTID_SPGU_EBCDIC 0xE2D7C7E4 /* SPI Get InOut */
+#define MQ_STRUCTID_SPOI_EBCDIC 0xE2D7D6C9 /* SPI In */
+#define MQ_STRUCTID_SPOO_EBCDIC 0xE2D7D6D6 /* SPI Out */
+#define MQ_STRUCTID_SPOU_EBCDIC 0xE2D7D6E4 /* SPI InOut */
+#define MQ_STRUCTID_SPPI_EBCDIC 0xE2D7D7C9 /* SPI Put In */
+#define MQ_STRUCTID_SPPO_EBCDIC 0xE2D7D7D6 /* SPI Put Out */
+#define MQ_STRUCTID_SPPU_EBCDIC 0xE2D7D7E4 /* SPI Put InOut */
+#define MQ_STRUCTID_SPQI_EBCDIC 0xE2D7D8C9 /* SPI Query In */
+#define MQ_STRUCTID_SPQO_EBCDIC 0xE2D7D8D6 /* SPI Query Out */
+#define MQ_STRUCTID_SPQU_EBCDIC 0xE2D7D8E4 /* SPI Query InOut */
+#define MQ_STRUCTID_TM_EBCDIC 0xE3D44040
+#define MQ_STRUCTID_TMC2_EBCDIC 0xE3D4C3F2
+
+#define MQ_STRUCTID_TSHx_EBCDIC 0xE3E2C800
+#define MQ_STRUCTID_TSH_EBCDIC 0xE3E2C840
+#define MQ_STRUCTID_TSHC_EBCDIC 0xE3E2C8C3
+#define MQ_STRUCTID_TSHM_EBCDIC 0xE3E2C8D4
+
+#define MQ_STRUCTID_UID_EBCDIC 0xE4C9C440
+#define MQ_STRUCTID_WIH_EBCDIC 0xE6C9C840
+#define MQ_STRUCTID_XQH_EBCDIC 0xE7D8C840
+
+#define MQ_MASK_SPxx 0xffff0000
+#define MQ_MASK_SPxZ 0xffff00ff
+
+#define MQ_TST_INITIAL 0x01
+#define MQ_TST_RESYNC 0x02
+#define MQ_TST_RESET 0x03
+#define MQ_TST_MESSAGE 0x04
+#define MQ_TST_STATUS 0x05
+#define MQ_TST_SECURITY 0x06
+#define MQ_TST_PING 0x07
+#define MQ_TST_USERID 0x08
+#define MQ_TST_HEARTBEAT 0x09
+#define MQ_TST_CONAUTH_INFO 0x0A
+#define MQ_TST_RENEGOTIATE_DATA 0x0B
+#define MQ_TST_SOCKET_ACTION 0x0C
+#define MQ_TST_ASYNC_MESSAGE 0x0D
+#define MQ_TST_REQUEST_MSGS 0x0E
+#define MQ_TST_NOTIFICATION 0x0F
+#define MQ_TST_MQCONN 0x81
+#define MQ_TST_MQDISC 0x82
+#define MQ_TST_MQOPEN 0x83
+#define MQ_TST_MQCLOSE 0x84
+#define MQ_TST_MQGET 0x85
+#define MQ_TST_MQPUT 0x86
+#define MQ_TST_MQPUT1 0x87
+#define MQ_TST_MQSET 0x88
+#define MQ_TST_MQINQ 0x89
+#define MQ_TST_MQCMIT 0x8A
+#define MQ_TST_MQBACK 0x8B
+#define MQ_TST_SPI 0x8C
+#define MQ_TST_MQSTAT 0x8D
+#define MQ_TST_MQSUB 0x8E
+#define MQ_TST_MQSUBRQ 0x8F
+#define MQ_TST_MQCONN_REPLY 0x91
+#define MQ_TST_MQDISC_REPLY 0x92
+#define MQ_TST_MQOPEN_REPLY 0x93
+#define MQ_TST_MQCLOSE_REPLY 0x94
+#define MQ_TST_MQGET_REPLY 0x95
+#define MQ_TST_MQPUT_REPLY 0x96
+#define MQ_TST_MQPUT1_REPLY 0x97
+#define MQ_TST_MQSET_REPLY 0x98
+#define MQ_TST_MQINQ_REPLY 0x99
+#define MQ_TST_MQCMIT_REPLY 0x9A
+#define MQ_TST_MQBACK_REPLY 0x9B
+#define MQ_TST_SPI_REPLY 0x9C
+#define MQ_TST_MQSTAT_REPLY 0x9D
+#define MQ_TST_MQSUB_REPLY 0x9E
+#define MQ_TST_MQSUBRQ_REPLY 0x9F
+#define MQ_TST_XA_START 0xA1
+#define MQ_TST_XA_END 0xA2
+#define MQ_TST_XA_OPEN 0xA3
+#define MQ_TST_XA_CLOSE 0xA4
+#define MQ_TST_XA_PREPARE 0xA5
+#define MQ_TST_XA_COMMIT 0xA6
+#define MQ_TST_XA_ROLLBACK 0xA7
+#define MQ_TST_XA_FORGET 0xA8
+#define MQ_TST_XA_RECOVER 0xA9
+#define MQ_TST_XA_COMPLETE 0xAA
+#define MQ_TST_XA_START_REPLY 0xB1
+#define MQ_TST_XA_END_REPLY 0xB2
+#define MQ_TST_XA_OPEN_REPLY 0xB3
+#define MQ_TST_XA_CLOSE_REPLY 0xB4
+#define MQ_TST_XA_PREPARE_REPLY 0xB5
+#define MQ_TST_XA_COMMIT_REPLY 0xB6
+#define MQ_TST_XA_ROLLBACK_REPLY 0xB7
+#define MQ_TST_XA_FORGET_REPLY 0xB8
+#define MQ_TST_XA_RECOVER_REPLY 0xB9
+#define MQ_TST_XA_COMPLETE_REPLY 0xBA
+
+#define MQ_SPI_QUERY 0x01
+#define MQ_SPI_PUT 0x02
+#define MQ_SPI_GET 0x03
+#define MQ_SPI_ACTIVATE 0x04
+#define MQ_SPI_OPEN 0x0C
+
+#define MQ_SPI_ACTIVATE_ENABLE 0x01
+#define MQ_SPI_ACTIVATE_DISABLE 0x02
+
+#define MQ_SPI_OPTIONS_BLANK_PADDED 0x01
+#define MQ_SPI_OPTIONS_SYNCPOINT 0x02
+#define MQ_SPI_OPTIONS_DEFERRED 0x04
+
+#define MQ_TCF_CONFIRM_REQUEST 0x01
+#define MQ_TCF_ERROR 0x02
+#define MQ_TCF_REQUEST_CLOSE 0x04
+#define MQ_TCF_CLOSE_CHANNEL 0x08
+#define MQ_TCF_FIRST 0x10
+#define MQ_TCF_LAST 0x20
+#define MQ_TCF_REQUEST_ACCEPTED 0x40
+#define MQ_TCF_DLQ_USED 0x80
+
+#define MQ_TCF2_HDRCOMP 0x01
+#define MQ_TCF2_MSGCOMP 0x02
+#define MQ_TCF2_CSH 0x04
+#define MQ_TCF2_CMIT_INTERVAL 0x08
+
+#define MQ_ICF1_MSG_SEQ 0x01
+#define MQ_ICF1_CONVERSION_CAPABLE 0x02
+#define MQ_ICF1_SPLIT_MESSAGE 0x04
+#define MQ_ICF1_REQUEST_INITIATION 0x08
+#define MQ_ICF1_REQUEST_SECURITY 0x10
+#define MQ_ICF1_MQREQUEST 0x20
+#define MQ_ICF1_SVRCONN_SECURITY 0x40
+#define MQ_ICF1_RUNTIME 0x80
+
+#define MQ_ICF2_DIST_LIST_CAPABLE 0x01
+#define MQ_ICF2_FAST_MESSAGES_REQUIRED 0x02
+#define MQ_ICF2_RESPONDER_CONVERSION 0x04
+#define MQ_ICF2_DUAL_UOW 0x08
+#define MQ_ICF2_XAREQUEST 0x10
+#define MQ_ICF2_XARUNTIME_APP 0x20
+#define MQ_ICF2_SPIREQUEST 0x40
+#define MQ_ICF2_TRACE_ROUTE_CAPABLE 0x80
+
+#define MQ_ICF3_MSG_PROP_CAPABLE 0x01
+#define MQ_ICF3_MULTICAST_CAPABLE 0x02
+#define MQ_ICF3_MSG_PROP_INT_SEPARATE 0x04
+#define MQ_ICF3_MULTIPLEX_SYNCGET 0x08
+#define MQ_ICF3_PROT_ALGORITHMS 0x10
+
+#define MQ_IEF1_CCSID_NOT_SUPPORTED 0x01
+#define MQ_IEF1_ENCODING_INVALID 0x02
+#define MQ_IEF1_MAX_TRANSMISSION_SIZE 0x04
+#define MQ_IEF1_FAP_LEVEL 0x08
+#define MQ_IEF1_MAX_MSG_SIZE 0x10
+#define MQ_IEF1_MAX_MSG_PER_BATCH 0x20
+#define MQ_IEF1_SEQ_WRAP_VALUE 0x40
+#define MQ_IEF1_HEARTBEAT_INTERVAL 0x80
+
+#define MQ_IEF2_HDRCOMPLIST 0x01
+#define MQ_IEF2_MSGCOMPLIST 0x02
+#define MQ_IEF2_SSL_RESET 0x04
+
+#define MQ_IEF3_MSG_PROP_CAPABLE 0x01
+#define MQ_IEF3_MULTICAST_CAPABLE 0x02
+#define MQ_IEF3_MSG_PROP_INT_SEPARATE 0x04
+#define MQ_IEF3_MULTIPLEX_SYNCGET 0x08
+#define MQ_IEF3_PROT_ALGORITHMS 0x10
+
+#define MQ_BIG_ENDIAN 0x01
+#define MQ_LITTLE_ENDIAN 0x02
+
+#define MQ_CONN_OPTION 0x01
+#define MQ_CONNX_OPTION 0x03
+
+#define MQ_REQUEST_MSG_SELECTION 0x00000010
+#define MQ_REQUEST_MSG_F00000008 0x00000008
+#define MQ_REQUEST_MSG_F00000004 0x00000004
+#define MQ_REQUEST_MSG_F00000002 0x00000002
+
+#define MQ_REQUEST_MSG_SIZE_V1_SELECTION_FIXED_PART 64
+#define MQ_REQUEST_MSG_SIZE_V1_NO_SELECTION 40
+
+#define MQ_STATUS_ERR_NO_CHANNEL 0x01
+#define MQ_STATUS_ERR_CHANNEL_WRONG_TYPE 0x02
+#define MQ_STATUS_ERR_QM_UNAVAILABLE 0x03
+#define MQ_STATUS_ERR_MSG_SEQUENCE_ERROR 0x04
+#define MQ_STATUS_ERR_QM_TERMINATING 0x05
+#define MQ_STATUS_ERR_CAN_NOT_STORE 0x06
+#define MQ_STATUS_ERR_USER_CLOSED 0x07
+#define MQ_STATUS_ERR_TIMEOUT_EXPIRED 0x08
+#define MQ_STATUS_ERR_TARGET_Q_UNKNOWN 0x09
+#define MQ_STATUS_ERR_PROTOCOL_SEGMENT_TYPE 0x0A
+#define MQ_STATUS_ERR_PROTOCOL_LENGTH_ERROR 0x0B
+#define MQ_STATUS_ERR_PROTOCOL_INVALID_DATA 0x0C
+#define MQ_STATUS_ERR_PROTOCOL_SEGMENT_ERROR 0x0D
+#define MQ_STATUS_ERR_PROTOCOL_ID_ERROR 0x0E
+#define MQ_STATUS_ERR_PROTOCOL_MSH_ERROR 0x0F
+#define MQ_STATUS_ERR_PROTOCOL_GENERAL 0x10
+#define MQ_STATUS_ERR_BATCH_FAILURE 0x11
+#define MQ_STATUS_ERR_MESSAGE_LENGTH_ERROR 0x12
+#define MQ_STATUS_ERR_SEGMENT_NUMBER_ERROR 0x13
+#define MQ_STATUS_ERR_SECURITY_FAILURE 0x14
+#define MQ_STATUS_ERR_WRAP_VALUE_ERROR 0x15
+#define MQ_STATUS_ERR_CHANNEL_UNAVAILABLE 0x16
+#define MQ_STATUS_ERR_CLOSED_BY_EXIT 0x17
+#define MQ_STATUS_ERR_CIPHER_SPEC 0x18
+#define MQ_STATUS_ERR_PEER_NAME 0x19
+#define MQ_STATUS_ERR_SSL_CLIENT_CERTIFICATE 0x1A
+#define MQ_STATUS_ERR_RMT_RSRCS_IN_RECOVERY 0x1B
+#define MQ_STATUS_ERR_SSL_REFRESHING 0x1C
+#define MQ_STATUS_ERR_INVALID_HOBJ 0x1D
+#define MQ_STATUS_ERR_CONV_ID_ERROR 0x1E
+#define MQ_STATUS_ERR_SOCKET_ACTION_TYPE 0x1F
+#define MQ_STATUS_ERR_STANDBY_Q_MGR 0x20
+
+#define MQ_STATUS_ERR_CCSID_NOT_SUPPORTED 0xF0
+#define MQ_STATUS_ERR_ENCODING_INVALID 0xF1
+#define MQ_STATUS_ERR_FAP_LEVEL 0xF2
+#define MQ_STATUS_ERR_NEGOTIATION_FAILED 0xF3
+
+/* These errors codes are documented in javax.transaction.xa.XAException */
+#define MQ_XA_RBROLLBACK 100
+#define MQ_XA_RBCOMMFAIL 101
+#define MQ_XA_RBDEADLOCK 102
+#define MQ_XA_RBINTEGRITY 103
+#define MQ_XA_RBOTHER 104
+#define MQ_XA_RBPROTO 105
+#define MQ_XA_RBTIMEOUT 106
+#define MQ_XA_RBTRANSIENT 107
+#define MQ_XA_NOMIGRATE 9
+#define MQ_XA_HEURHAZ 8
+#define MQ_XA_HEURCOM 7
+#define MQ_XA_HEURRB 6
+#define MQ_XA_HEURMIX 5
+#define MQ_XA_RETRY 4
+#define MQ_XA_RDONLY 3
+#define MQ_XA_OK 0
+#define MQ_XAER_ASYNC -2
+#define MQ_XAER_RMERR -3
+#define MQ_XAER_NOTA -4
+#define MQ_XAER_INVAL -5
+#define MQ_XAER_PROTO -6
+#define MQ_XAER_RMFAIL -7
+#define MQ_XAER_DUPID -8
+#define MQ_XAER_OUTSIDE -9
+
+/* These flags are documented in javax.transaction.xa.XAResource */
+#define MQ_XA_TMNOFLAGS 0
+#define MQ_XA_TMJOIN 0x200000
+#define MQ_XA_TMENDRSCAN 0x800000
+#define MQ_XA_TMSTARTRSCAN 0x1000000
+#define MQ_XA_TMSUSPEND 0x2000000
+#define MQ_XA_TMSUCCESS 0x4000000
+#define MQ_XA_TMRESUME 0x8000000
+#define MQ_XA_TMFAIL 0x20000000
+#define MQ_XA_TMONEPHASE 0x40000000
+
+#define MQ_PMRF_NONE 0x00
+#define MQ_PMRF_MSG_ID 0x01
+#define MQ_PMRF_CORREL_ID 0x02
+#define MQ_PMRF_GROUP_ID 0x04
+#define MQ_PMRF_FEEDBACK 0x08
+#define MQ_PMRF_ACCOUNTING_TOKEN 0x10
+
+/* MQ structures */
+/* Undocumented structures */
+#define MQ_TEXT_TSH "Transmission Segment Header"
+#define MQ_TEXT_TSHC "Transmission Segment Header Common"
+#define MQ_TEXT_TSHM "Transmission Segment Header Multiplexed"
+#define MQ_TEXT_FCNO "F Connect Option"
+#define MQ_TEXT_API "API Header"
+#define MQ_TEXT_SOCKET "Socket Action"
+#define MQ_TEXT_ID "Initial Data"
+#define MQ_TEXT_UID "User Id Data"
+#define MQ_TEXT_MSH "Message Segment Header"
+#define MQ_TEXT_CAUT "Connection Authority"
+#define MQ_TEXT_CONN "MQCONN"
+#define MQ_TEXT_INQ "MQINQ/MQSET"
+#define MQ_TEXT_PUT "MQPUT/MQGET"
+#define MQ_TEXT_OPEN "MQOPEN/MQCLOSE"
+#define MQ_TEXT_REQMSG "REQUEST MESSAGE"
+#define MQ_TEXT_ASYMSG "ASYNC MESSAGE"
+#define MQ_TEXT_NOTIFICATION "NOTIFICATION"
+#define MQ_TEXT_BIND_READAHEAD_AS_Q_DEF "Bind/Read Ahead As Q Def"
+#define MQ_TEXT_IMMEDIATE_NONE "Close Immediate/No option"
+#define MQ_TEXT_MQPMO_NONE "Resp as Q Def/Resp as Topic Def/None"
+#define MQ_TEXT_MQGMO_NONE "No Wait/Prop as Q Def/None"
+#define MQ_TEXT_MQMO_NONE "None"
+#define MQ_TEXT_LPOOOPT_NONE "None"
+
+#define MQ_TEXT_PING "PING"
+#define MQ_TEXT_RESET "RESET"
+#define MQ_TEXT_STAT "STATUS"
+#define MQ_TEXT_SPI "SPI"
+#define MQ_TEXT_XA "XA"
+#define MQ_TEXT_XID "Xid"
+#define MQ_TEXT_XINF "XA_info"
+
+#define MQ_TEXT_SPQU "SPI Query InOut"
+#define MQ_TEXT_SPQI "SPI Query In"
+#define MQ_TEXT_SPQO "SPI Query Out"
+#define MQ_TEXT_SPPU "SPI Put InOut"
+#define MQ_TEXT_SPPI "SPI Put In"
+#define MQ_TEXT_SPPO "SPI Put Out"
+#define MQ_TEXT_SPGU "SPI Get InOut"
+#define MQ_TEXT_SPGI "SPI Get In"
+#define MQ_TEXT_SPGO "SPI Get Out"
+#define MQ_TEXT_SPAU "SPI Activate InOut"
+#define MQ_TEXT_SPAI "SPI Activate In"
+#define MQ_TEXT_SPAO "SPI Activate Out"
+#define MQ_TEXT_SPOU "SPI InOut"
+#define MQ_TEXT_SPOI "SPI In"
+#define MQ_TEXT_SPOO "SPI Out"
+#define MQ_TEXT_LPOO "LPOO"
+#define MQ_TEXT_FOPA "FOPA"
+
+/* Documented structures with structid */
+#define MQ_TEXT_CIH "CICS bridge Header"
+#define MQ_TEXT_DH "Distribution Header"
+#define MQ_TEXT_DLH "Dead-Letter Header"
+#define MQ_TEXT_GMO "Get Message Options"
+#define MQ_TEXT_IIH "IMS Information Header"
+#define MQ_TEXT_MD "Message Descriptor"
+#define MQ_TEXT_MDE "Message Descriptor Extension"
+#define MQ_TEXT_OD "Object Descriptor"
+#define MQ_TEXT_PMO "Put Message Options"
+#define MQ_TEXT_RMH "Reference Message Header"
+#define MQ_TEXT_RFH "Rules and Formatting Header"
+#define MQ_TEXT_TM "Trigger Message"
+#define MQ_TEXT_TMC2 "Trigger Message 2 (character format)"
+#define MQ_TEXT_WIH "Work Information Header"
+#define MQ_TEXT_XQH "Transmission Queue Header"
+
+/* Documented structures without structid */
+#define MQ_TEXT_OR "Object Record"
+#define MQ_TEXT_PMR "Put Message Record"
+#define MQ_TEXT_RR "Response Record"
+
+#define MQ_NC_GET_INHIBITED 1
+#define MQ_NC_GET_ALLOWED 2
+#define MQ_NC_CONN_STATE 3
+#define MQ_NC_CONN_STATE_REPLY 4
+#define MQ_NC_Q_STATE 5
+#define MQ_NC_Q_STATE_REPLY 6
+#define MQ_NC_QM_QUIESCING 7
+#define MQ_NC_TXN_ALLOWED 8
+#define MQ_NC_TXN_REVOKE 9
+#define MQ_NC_TXN_REVOKE_REPLY 10
+#define MQ_NC_CHECK_MSG 11
+#define MQ_NC_BROWSE_FIRST 12
+#define MQ_NC_MESSAGE_TOO_LARGE 13
+#define MQ_NC_STREAMING_FAILURE 14
+#define MQ_NC_CLIENT_ASYNC_EMPTY 15
+#define MQ_NC_STREAMING_TXN_PAUSED 16
+#define MQ_NC_RECONNECTION_COMPLETE 17
+
typedef struct _mq_ccsid_t
{
guint32 encod;
@@ -5057,9 +5490,9 @@ extern void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree
DEF_VALSX(mqcc);
-DEF_VALS_EXTX(mqat);
-DEF_VALS_EXTX(mqcmd);
-DEF_VALS_EXTX(mqrc);
+DEF_VALS_EXTX(MQAT);
+DEF_VALS_EXTX(MQCMD);
+DEF_VALS_EXTX(MQRC);
DEF_VALS_EXTX(objtype);
DEF_VALS_EXTX(PrmId);
DEF_VALS_EXTX(PrmTyp);
@@ -5069,6 +5502,12 @@ DEF_VALS_EXTX(MQCFINT_Parse);
DEF_VALSX(CtlOpt);
DEF_VALSX(mqcft);
+DEF_VALSX(MQPER);
+DEF_VALSX(MQPRT);
+DEF_VALSX(MQREADA);
+DEF_VALSX(MQPROP);
+DEF_VALSX(MQMT);
+
DEF_VALSX(FilterOP);
DEF_VALSX(UOWControls);
DEF_VALSX(LinkType);