From 2e3e285f03f32ebdb6a0079aeaebe6be7e0961b3 Mon Sep 17 00:00:00 2001 From: Robert Grange Date: Sat, 8 Oct 2016 12:49:49 +0200 Subject: [PATCH] packet-mq: Handle MQV9 Handle Put Message Option V3 Add various new defines Fix a typo Bug: 13006 Change-Id: I022de9f131558bb8a0144d840a6484944f75cffe Reviewed-on: https://code.wireshark.org/review/18121 Petri-Dish: Michael Mann Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann --- epan/dissectors/packet-mq-base.c | 27 ++++++++++ epan/dissectors/packet-mq.c | 92 +++++++++++++++++++------------- epan/dissectors/packet-mq.h | 18 ++++++- 3 files changed, 99 insertions(+), 38 deletions(-) diff --git a/epan/dissectors/packet-mq-base.c b/epan/dissectors/packet-mq-base.c index 5283d329e1..b60a0ecff9 100644 --- a/epan/dissectors/packet-mq-base.c +++ b/epan/dissectors/packet-mq-base.c @@ -65,6 +65,11 @@ DEF_VALRB(ccsid) /* >=1*/ DEF_VALR3(MQCCSI_1, MQCCSI_65535, ""), DEF_VALRE; +DEF_VALSB(Keyreusecount) +/* 0 */ DEF_VALS1(MQKEY_REUSE_DISABLED), +/* -1 */ DEF_VALS1(MQKEY_REUSE_UNLIMITED), +DEF_VALSE; + DEF_VALSBX(mqcc) /* -1*/ DEF_VALS1(MQCC_UNKNOWN), /* 0*/ DEF_VALS1(MQCC_OK), @@ -186,6 +191,7 @@ DEF_VALSB(AdoptNewMCACheck) /* 1*/ DEF_VALS1(MQADOPT_CHECK_ALL), /* 2*/ DEF_VALS1(MQADOPT_CHECK_Q_MGR_NAME), /* 4*/ DEF_VALS1(MQADOPT_CHECK_NET_ADDR), +/* 8*/ DEF_VALS1(MQADOPT_CHECK_CHANNEL_NAME), DEF_VALSE; DEF_VALSB(ActivityRecording) @@ -2327,6 +2333,7 @@ DEF_VALSB(mqrc) /* 2596*/ DEF_VALS1(MQRC_CERT_LABEL_NOT_ALLOWED), /* 2598*/ DEF_VALS1(MQRC_ADMIN_TOPIC_STRING_ERROR), /* 2599*/ DEF_VALS1(MQRC_AMQP_NOT_AVAILABLE), +/* 2600*/ DEF_VALS1(MQRC_CCDT_URL_ERROR), /* 3001*/ DEF_VALS1(MQRCCF_CFH_TYPE_ERROR), /* 3002*/ DEF_VALS1(MQRCCF_CFH_LENGTH_ERROR), /* 3003*/ DEF_VALS1(MQRCCF_CFH_VERSION_ERROR), @@ -2742,6 +2749,7 @@ DEF_VALSB(objtype) /* 1019*/ DEF_VALS1(MQOT_PROT_POLICY), /* 1020*/ DEF_VALS1(MQOT_TT_CHANNEL), /* 1021*/ DEF_VALS1(MQOT_AMQP_CHANNEL), +/* 1022*/ DEF_VALS1(MQOT_AUTH_REC), DEF_VALSE; DEF_VALS_EXTBX(objtype); @@ -2963,6 +2971,21 @@ DEF_VALSB(PrmId) /* 250*/ DEF_VALS1(MQIA_DEF_CLUSTER_XMIT_Q_TYPE), /* 251*/ DEF_VALS1(MQIA_PROT_POLICY_CAPABILITY), /* 252*/ DEF_VALS1(MQIA_CERT_VAL_POLICY), +/* 253*/ DEF_VALS1(MQIA_TOPIC_NODE_COUNT), +/* 254*/ DEF_VALS1(MQIA_REVERSE_DNS_LOOKUP), +/* 255*/ DEF_VALS1(MQIA_CLUSTER_PUB_ROUTE), +/* 256*/ DEF_VALS1(MQIA_CLUSTER_OBJECT_STATE), +/* 257*/ DEF_VALS1(MQIA_CHECK_LOCAL_BINDING), +/* 258*/ DEF_VALS1(MQIA_CHECK_CLIENT_BINDING), +/* 259*/ DEF_VALS1(MQIA_AUTHENTICATION_FAIL_DELAY), +/* 260*/ DEF_VALS1(MQIA_ADOPT_CONTEXT), +/* 261*/ DEF_VALS1(MQIA_LDAP_SECURE_COMM), +/* 262*/ DEF_VALS1(MQIA_DISPLAY_TYPE), +/* 263*/ DEF_VALS1(MQIA_LDAP_AUTHORMD), +/* 264*/ DEF_VALS1(MQIA_LDAP_NESTGRP), +/* 265*/ DEF_VALS1(MQIA_AMQP_CAPABILITY), +/* 266*/ DEF_VALS1(MQIA_AUTHENTICATION_METHOD), +/* 267*/ DEF_VALS1(MQIA_KEY_REUSE_COUNT), /* 702*/ DEF_VALS1(MQIAMO_AVG_BATCH_SIZE), /* 703*/ DEF_VALS1(MQIAMO_AVG_Q_TIME), /* 703*/ DEF_VALS1(MQIAMO64_AVG_Q_TIME), @@ -3445,6 +3468,9 @@ DEF_VALSB(PrmId) /* 1409*/ DEF_VALS1(MQIACF_LDAP_CONNECTION_STATUS), /* 1410*/ DEF_VALS1(MQIACF_SYSP_MAX_ACE_POOL), /* 1411*/ DEF_VALS1(MQIACF_PAGECLAS), +/* 1412*/ DEF_VALS1(MQIACF_AUTH_REC_TYPE), +/* 1413*/ DEF_VALS1(MQIACF_SYSP_MAX_CONC_OFFLOADS), +/* 1414*/ DEF_VALS1(MQIACF_SYSP_ZHYPERWRITE), /* 1501*/ DEF_VALS1(MQIACH_XMIT_PROTOCOL_TYPE), /* 1502*/ DEF_VALS1(MQIACH_BATCH_SIZE), /* 1503*/ DEF_VALS1(MQIACH_DISC_INTERVAL), @@ -4484,6 +4510,7 @@ DEF_VALSB(MQCFINT_Parse) /* 250*/ DEF_VALS2(MQIA_DEF_CLUSTER_XMIT_Q_TYPE, GET_VALSP(DefClusXmitTyp)), /* 251*/ DEF_VALS2(MQIA_PROT_POLICY_CAPABILITY, GET_VALSP(Capability)), /* 252*/ DEF_VALS2(MQIA_CERT_VAL_POLICY, GET_VALSP(CertValPolicy)), +/* 267*/ DEF_VALS2(MQIA_KEY_REUSE_COUNT, GET_VALSP(Keyreusecount)), /* 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)), diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c index ff59c11a60..361698bd6f 100644 --- a/epan/dissectors/packet-mq.c +++ b/epan/dissectors/packet-mq.c @@ -646,6 +646,10 @@ static int hf_mq_pmo_putmsgrecofs = -1; static int hf_mq_pmo_resprecofs = -1; static int hf_mq_pmo_putmsgrecptr = -1; static int hf_mq_pmo_resprecptr = -1; +static int hf_mq_pmo_originalmsghandle = -1; +static int hf_mq_pmo_newmsghandle = -1; +static int hf_mq_pmo_action = -1; +static int hf_mq_pmo_publevel = -1; static int hf_mq_xa_length = -1; static int hf_mq_xa_returnvalue = -1; @@ -2053,6 +2057,8 @@ static gint dissect_mq_gmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, mq_parm_t *p_mq_parm, gint *iDistributionListSize) { gint iSize = 0; + gint iPosV2 = offset + 128; + gint offsetb = offset; 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_PMO || p_mq_parm->mq_strucID == MQ_STRUCTID_PMO_EBCDIC) @@ -2062,8 +2068,9 @@ static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* Compute length according to version */ switch (iVersion) { - case 1: iSize = 128; break; - case 2: iSize = 152;break; + case 1: iSize = 128; break; + case 2: iSize = 152; break; + case 3: iSize = 176; break; } if (iSize != 0 && tvb_reported_length_remaining(tvb, offset) >= iSize) @@ -2093,15 +2100,24 @@ static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(mq_tree, hf_mq_pmo_invaldstcnt, tvb, offset + 28, 4, p_mq_parm->mq_int_enc); proto_tree_add_item(mq_tree, hf_mq_pmo_resolvqname, tvb, offset + 32, 48, p_mq_parm->mq_str_enc); proto_tree_add_item(mq_tree, hf_mq_pmo_resolvqmgr , tvb, offset + 80, 48, p_mq_parm->mq_str_enc); - + offset += 128; if (iVersion >= 2) { - proto_tree_add_item(mq_tree, hf_mq_pmo_recspresent , tvb, offset + 128, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecfld, tvb, offset + 132, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecofs, tvb, offset + 136, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_pmo_resprecofs , tvb, offset + 140, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecptr, tvb, offset + 144, 4, p_mq_parm->mq_int_enc); - proto_tree_add_item(mq_tree, hf_mq_pmo_resprecptr , tvb, offset + 148, 4, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_recspresent , tvb, offset, 4, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecfld, tvb, offset + 4, 4, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecofs, tvb, offset + 8, 4, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_resprecofs , tvb, offset + 12, 4, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_putmsgrecptr, tvb, offset + 16, 4, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_resprecptr , tvb, offset + 20, 4, p_mq_parm->mq_int_enc); + offset += 24; + } + if (iVersion >= 3) + { + proto_tree_add_item(mq_tree, hf_mq_pmo_originalmsghandle, tvb, offset, 8, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_newmsghandle, tvb, offset + 8, 8, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_action, tvb, offset + 16, 4, p_mq_parm->mq_int_enc); + proto_tree_add_item(mq_tree, hf_mq_pmo_publevel, tvb, offset + 20, 4, p_mq_parm->mq_int_enc); + offset += 24; } } if (iVersion >= 2) @@ -2109,8 +2125,8 @@ static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint iNbrRecords = 0; guint32 iRecFlags = 0; - iNbrRecords = tvb_get_guint32(tvb, offset + 128, p_mq_parm->mq_int_enc); - iRecFlags = tvb_get_guint32(tvb, offset + 132, p_mq_parm->mq_int_enc); + iNbrRecords = tvb_get_guint32(tvb, iPosV2, p_mq_parm->mq_int_enc); + iRecFlags = tvb_get_guint32(tvb, iPosV2 + 4, p_mq_parm->mq_int_enc); if (iNbrRecords > 0) { @@ -2118,10 +2134,10 @@ static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint iOffsetRR = 0; *iDistributionListSize = iNbrRecords; - iOffsetPMR = tvb_get_guint32(tvb, offset + 136, p_mq_parm->mq_int_enc); - iOffsetRR = tvb_get_guint32(tvb, offset + 140, p_mq_parm->mq_int_enc); - iSize += dissect_mq_pmr(tvb, tree, offset + iSize, iNbrRecords, iOffsetPMR, iRecFlags, p_mq_parm); - iSize += dissect_mq_rr(tvb, tree, offset + iSize, iNbrRecords, iOffsetRR, p_mq_parm); + iOffsetPMR = tvb_get_guint32(tvb, iPosV2 + 8, p_mq_parm->mq_int_enc); + iOffsetRR = tvb_get_guint32(tvb, iPosV2 + 12, p_mq_parm->mq_int_enc); + iSize += dissect_mq_pmr(tvb, tree, offsetb + iSize, iNbrRecords, iOffsetPMR, iRecFlags, p_mq_parm); + iSize += dissect_mq_rr(tvb, tree, offsetb + iSize, iNbrRecords, iOffsetRR, p_mq_parm); } } } @@ -4523,9 +4539,9 @@ void proto_register_mq(void) { &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 }}, - { &hf_mq_pmo_StructID , {"StructID.", "mq.pmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }}, - { &hf_mq_pmo_version , {"Version..", "mq.pmo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO version", HFILL }}, - { &hf_mq_pmo_options , {"Options..", "mq.pmo.options", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO options", HFILL }}, + { &hf_mq_pmo_StructID , {"StructID...", "mq.pmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_mq_pmo_version , {"Version....", "mq.pmo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO version", HFILL }}, + { &hf_mq_pmo_options , {"Options....", "mq.pmo.options", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO options", HFILL }}, { &hf_mq_pmo_options_NOT_OWN_SUBS , {"NOT_OWN_SUBS", "mq.pmo.options.NOT_OWN_SUBS", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NOT_OWN_SUBS , "PMO options NOT_OWN_SUBS", HFILL }}, { &hf_mq_pmo_options_SUPPRESS_REPLYTO , {"SUPPRESS_REPLYTO", "mq.pmo.options.SUPPRESS_REPLYTO", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SUPPRESS_REPLYTO , "PMO options SUPPRESS_REPLYTO", HFILL }}, { &hf_mq_pmo_options_SCOPE_QMGR , {"SCOPE_QMGR", "mq.pmo.options.SCOPE_QMGR", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SCOPE_QMGR , "PMO options SCOPE_QMGR", HFILL }}, @@ -4549,25 +4565,29 @@ void proto_register_mq(void) { &hf_mq_pmo_options_NO_SYNCPOINT , {"NO_SYNCPOINT", "mq.pmo.options.NO_SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NO_SYNCPOINT , "PMO options NO_SYNCPOINT", HFILL }}, { &hf_mq_pmo_options_SYNCPOINT , {"SYNCPOINT", "mq.pmo.options.SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SYNCPOINT , "PMO options SYNCPOINT", HFILL }}, - { &hf_mq_pmo_timeout , {"Timeout..", "mq.pmo.timeout", FT_INT32, BASE_DEC, NULL, 0x0, "PMO time out", HFILL }}, - { &hf_mq_pmo_context , {"Context..", "mq.pmo.context", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO context", HFILL }}, - { &hf_mq_pmo_knowndstcnt , {"KnDstCnt.", "mq.pmo.kdstcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO known destination count", HFILL }}, - { &hf_mq_pmo_unkndstcnt , {"UkDstCnt.", "mq.pmo.udestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO unknown destination count", HFILL }}, - { &hf_mq_pmo_invaldstcnt , {"InDstCnt.", "mq.pmo.idestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO invalid destination count", HFILL }}, - { &hf_mq_pmo_resolvqname , {"ResQName.", "mq.pmo.resolvq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "PMO resolved queue name", HFILL }}, - { &hf_mq_pmo_resolvqmgr , {"ResQMgr..", "mq.pmo.resolvqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "PMO resolved queue manager name", HFILL }}, - { &hf_mq_pmo_recspresent , {"NumRecs..", "mq.pmo.nbrrec", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO number of records", HFILL }}, - { &hf_mq_pmo_putmsgrecfld, {"PMR Flag.", "mq.pmo.flagspmr", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO flags PMR fields", HFILL }}, - { &hf_mq_pmo_putmsgrecofs, {"Ofs1stPMR", "mq.pmo.offsetpmr", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO offset of first PMR", HFILL }}, - { &hf_mq_pmo_resprecofs , {"Off1stRR.", "mq.pmo.offsetrr", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO offset of first RR", HFILL }}, - { &hf_mq_pmo_putmsgrecptr, {"Adr1stPMR", "mq.pmo.addrrec", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO address of first record", HFILL }}, - { &hf_mq_pmo_resprecptr , {"Adr1stRR.", "mq.pmo.addrres", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO address of first response record", HFILL }}, + { &hf_mq_pmo_timeout , {"Timeout....", "mq.pmo.timeout", FT_INT32, BASE_DEC, NULL, 0x0, "PMO time out", HFILL }}, + { &hf_mq_pmo_context , {"Context....", "mq.pmo.context", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO context", HFILL }}, + { &hf_mq_pmo_knowndstcnt , {"KnDstCnt...", "mq.pmo.kdstcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO known destination count", HFILL }}, + { &hf_mq_pmo_unkndstcnt , {"UkDstCnt...", "mq.pmo.udestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO unknown destination count", HFILL }}, + { &hf_mq_pmo_invaldstcnt , {"InDstCnt...", "mq.pmo.idestcount", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO invalid destination count", HFILL }}, + { &hf_mq_pmo_resolvqname , {"ResQName...", "mq.pmo.resolvq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "PMO resolved queue name", HFILL }}, + { &hf_mq_pmo_resolvqmgr , {"ResQMgr....", "mq.pmo.resolvqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "PMO resolved queue manager name", HFILL }}, + { &hf_mq_pmo_recspresent , {"NumRecs....", "mq.pmo.nbrrec", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO number of records", HFILL }}, + { &hf_mq_pmo_putmsgrecfld, {"PMR Flag...", "mq.pmo.flagspmr", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO flags PMR fields", HFILL }}, + { &hf_mq_pmo_putmsgrecofs, {"Ofs1stPMR..", "mq.pmo.offsetpmr", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO offset of first PMR", HFILL }}, + { &hf_mq_pmo_resprecofs , {"Off1stRR...", "mq.pmo.offsetrr", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO offset of first RR", HFILL }}, + { &hf_mq_pmo_putmsgrecptr, {"Adr1stPMR..", "mq.pmo.addrrec", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO address of first record", HFILL }}, + { &hf_mq_pmo_resprecptr , {"Adr1stRR...", "mq.pmo.addrres", FT_UINT32, BASE_HEX, NULL, 0x0, "PMO address of first response record", HFILL }}, + { &hf_mq_pmo_originalmsghandle ,{"OrigMsgHdl.", "mq.pmo.originalmsghandle", FT_UINT64, BASE_HEX, NULL, 0x0, "PMO original message handle", HFILL}}, + { &hf_mq_pmo_newmsghandle, {"NewMsgHdl..", "mq.pmo.newmsghandle", FT_UINT64, BASE_HEX, NULL, 0x0, "PMO new message handle", HFILL}}, + { &hf_mq_pmo_action , {"Action.....", "mq.pmo.action", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO action", HFILL}}, + { &hf_mq_pmo_publevel , {"PubLevel...", "mq.pmo.publevel", FT_UINT32, BASE_DEC, NULL, 0x0, "PMO pub level", HFILL}}, - { &hf_mq_xa_length , {"Length.......", "mq.xa.length", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Length", HFILL }}, - { &hf_mq_xa_returnvalue , {"Return value.", "mq.xa.returnvalue", FT_INT32, BASE_DEC, VALS(mq_xaer_vals), 0x0, "XA Return Value", HFILL }}, - { &hf_mq_xa_tmflags , {"TransMgrFlags", "mq.xa.tmflags", FT_UINT32, BASE_HEX, NULL, 0x0, "XA Transaction Manager Flags", HFILL }}, - { &hf_mq_xa_rmid , {"ResourceMgrID", "mq.xa.rmid", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Resource Manager ID", HFILL }}, - { &hf_mq_xa_count , {"Number of Xid", "mq.xa.nbxid", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Number of Xid", HFILL }}, + { &hf_mq_xa_length , {"Length.......", "mq.xa.length", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Length", HFILL }}, + { &hf_mq_xa_returnvalue , {"Return value.", "mq.xa.returnvalue", FT_INT32, BASE_DEC, VALS(mq_xaer_vals), 0x0, "XA Return Value", HFILL }}, + { &hf_mq_xa_tmflags , {"TransMgrFlags", "mq.xa.tmflags", FT_UINT32, BASE_HEX, NULL, 0x0, "XA Transaction Manager Flags", HFILL }}, + { &hf_mq_xa_rmid , {"ResourceMgrID", "mq.xa.rmid", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Resource Manager ID", HFILL }}, + { &hf_mq_xa_count , {"Number of Xid", "mq.xa.nbxid", FT_UINT32, BASE_DEC, NULL, 0x0, "XA Number of Xid", HFILL }}, { &hf_mq_xa_tmflags_join , {"JOIN", "mq.xa.tmflags.join", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMJOIN, "XA TM Flags JOIN", HFILL }}, { &hf_mq_xa_tmflags_endrscan , {"ENDRSCAN", "mq.xa.tmflags.endrscan", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMENDRSCAN, "XA TM Flags ENDRSCAN", HFILL }}, { &hf_mq_xa_tmflags_startrscan, {"STARTRSCAN", "mq.xa.tmflags.startrscan", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSTARTRSCAN, "XA TM Flags STARTRSCAN", HFILL }}, diff --git a/epan/dissectors/packet-mq.h b/epan/dissectors/packet-mq.h index dc21cfebee..42edcac930 100644 --- a/epan/dissectors/packet-mq.h +++ b/epan/dissectors/packet-mq.h @@ -738,6 +738,7 @@ typedef struct _mq_parm_t #define MQ_MQOT_PROT_POLICY 1019 #define MQ_MQOT_TT_CHANNEL 1020 #define MQ_MQOT_AMQP_CHANNEL 1021 +#define MQ_MQOT_AUTH_REC 1022 /* Property Descriptor Options */ #define MQ_MQPD_NONE 0x00000000 @@ -1528,6 +1529,7 @@ typedef struct _mq_parm_t #define MQ_MQRC_CERT_LABEL_NOT_ALLOWED 2596 #define MQ_MQRC_ADMIN_TOPIC_STRING_ERROR 2598 #define MQ_MQRC_AMQP_NOT_AVAILABLE 2599 +#define MQ_MQRC_CCDT_URL_ERROR 2600 #define MQ_MQRC_REOPEN_EXCL_INPUT_ERROR 6100 #define MQ_MQRC_REOPEN_INQUIRE_ERROR 6101 #define MQ_MQRC_REOPEN_SAVED_CONTEXT_ERR 6102 @@ -1719,6 +1721,7 @@ typedef struct _mq_parm_t #define MQ_MQADOPT_CHECK_ALL 1 #define MQ_MQADOPT_CHECK_Q_MGR_NAME 2 #define MQ_MQADOPT_CHECK_NET_ADDR 4 +#define MQ_MQADOPT_CHECK_CHANNEL_NAME 8 /* Adopt New MCA Types */ #define MQ_MQADOPT_TYPE_NO 0 @@ -1770,7 +1773,13 @@ typedef struct _mq_parm_t #define MQ_MQCMDL_LEVEL_800 800 #define MQ_MQCMDL_LEVEL_801 801 #define MQ_MQCMDL_LEVEL_802 802 -#define MQ_MQCMDL_CURRENT_LEVEL 802 +#define MQ_MQCMDL_LEVEL_900 900 +#define MQ_MQCMDL_CURRENT_LEVEL 900 + + +/* Key reuse count */ +#define MQ_MQKEY_REUSE_DISABLED 0 +#define MQ_MQKEY_REUSE_UNLIMITED (-1) /* Command Server Options */ #define MQ_MQCSRV_CONVERT_NO 0 @@ -2334,6 +2343,7 @@ typedef struct _mq_parm_t #define MQ_MQIA_INHIBIT_SUB 182 #define MQ_MQIA_INTRA_GROUP_QUEUING 64 #define MQ_MQIA_IP_ADDRESS_VERSION 93 +#define MQ_MQIA_KEY_REUSE_COUNT 267 #define MQ_MQIA_LAST 2000 #define MQ_MQIA_LAST_USED 266 #define MQ_MQIA_LDAP_AUTHORMD 263 @@ -3735,7 +3745,11 @@ typedef struct _mq_parm_t #define MQ_MQIACF_LDAP_CONNECTION_STATUS 1409 #define MQ_MQIACF_SYSP_MAX_ACE_POOL 1410 #define MQ_MQIACF_PAGECLAS 1411 -#define MQ_MQIACF_LAST_USED 1411 +#define MQ_MQIACF_AUTH_REC_TYPE 1412 /*MQV8*/ +#define MQ_MQIACF_SYSP_MAX_CONC_OFFLOADS 1413 /*MQV9*/ +#define MQ_MQIACF_SYSP_ZHYPERWRITE 1414 /*MQV9*/ + +#define MQ_MQIACF_LAST_USED 1414 /* Access Options */ #define MQ_MQCFACCESS_ENABLED 0