diff options
author | Dario Lombardo <lomato@gmail.com> | 2018-01-16 14:40:06 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-02-02 05:22:18 +0000 |
commit | bec60fa461dc2f225929cbcec33308b430f55a08 (patch) | |
tree | dc3abccdde6d6b904c628b6e686343b99b09460f /epan/dissectors | |
parent | 0fda778b45bc2d6977a87404bc3fac5c30826b8a (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.c | 40 | ||||
-rw-r--r-- | epan/dissectors/packet-mq-pcf.c | 32 | ||||
-rw-r--r-- | epan/dissectors/packet-mq.c | 1091 | ||||
-rw-r--r-- | epan/dissectors/packet-mq.h | 445 |
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); |