aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-10-20 12:11:55 +0000
committerMichael Mann <mmann78@netscape.net>2013-10-20 12:11:55 +0000
commit94c3d2155039015f833bd91c051e5d07c1fe1bfe (patch)
tree8be4eefff91b2e815c18b64effae4d4e044d70e1
parentbad81b517fc829ae90a65bc19f445bdee0c3d2bf (diff)
Enhancement of the packet-mq dissector (WMQ 7.1-7.5). Bug 9267 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9267)
From robionekenobi From me: Pass data through dissectors instead of using pinfo->private_data svn path=/trunk/; revision=52707
-rw-r--r--epan/dissectors/packet-mq-base.c293
-rw-r--r--epan/dissectors/packet-mq-pcf.c436
-rw-r--r--epan/dissectors/packet-mq.c1678
-rw-r--r--epan/dissectors/packet-mq.h56
4 files changed, 1540 insertions, 923 deletions
diff --git a/epan/dissectors/packet-mq-base.c b/epan/dissectors/packet-mq-base.c
index ef40e2b745..2b797ff70e 100644
--- a/epan/dissectors/packet-mq-base.c
+++ b/epan/dissectors/packet-mq-base.c
@@ -1,34 +1,32 @@
/* packet-mq-base.c
-* Routines for IBM WebSphere MQ PCF packet dissection
-*
-* metatech <metatech@flashmail.com>
-* robionekenobi <robionekenobi@bluewin.ch>
-*
-* $Id$
-*
-* Wireshark - Network traffic analyzer
-* By Gerald Combs <gerald@wireshark.org>
-* Copyright 1998 Gerald Combs
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * Routines for IBM WebSphere MQ packet dissection base
+ *
+ * metatech <metatech@flashmail.com>
+ * robionekenobi <robionekenobi@bluewin.ch>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "config.h"
-
#include <string.h>
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-mq.h"
@@ -618,9 +616,24 @@ DEF_VALSB(mqrc)
DEF_VALS1(MQRC_PRECONN_EXIT_NOT_FOUND ),
DEF_VALS1(MQRC_PRECONN_EXIT_ERROR ),
DEF_VALS1(MQRC_CD_ARRAY_ERROR ),
+ DEF_VALS1(MQRC_CHANNEL_BLOCKED ),
+ DEF_VALS1(MQRC_CHANNEL_BLOCKED_WARNING ),
+ DEF_VALS1(MQRC_SUBSCRIPTION_CREATE ),
+ DEF_VALS1(MQRC_SUBSCRIPTION_DELETE ),
+ DEF_VALS1(MQRC_SUBSCRIPTION_CHANGE ),
+ DEF_VALS1(MQRC_SUBSCRIPTION_REFRESH ),
+ DEF_VALS1(MQRC_INSTALLATION_MISMATCH ),
+ DEF_VALS1(MQRC_NOT_PRIVILEGED ),
+ DEF_VALS1(MQRC_PROPERTIES_DISABLED ),
+ DEF_VALS1(MQRC_HMSG_NOT_AVAILABLE ),
+ DEF_VALS1(MQRC_EXIT_PROPS_NOT_SUPPORTED ),
+ DEF_VALS1(MQRC_INSTALLATION_MISSING ),
+ DEF_VALS1(MQRC_FASTPATH_NOT_AVAILABLE ),
+ DEF_VALS1(MQRC_CIPHER_SPEC_NOT_SUITE_B ),
+ DEF_VALS1(MQRC_SUITE_B_ERROR ),
+ DEF_VALS1(MQRC_CERT_VAL_POLICY_ERROR ),
DEF_VALS1(MQRCCF_CFH_TYPE_ERROR ),
- DEF_VALS1(MQRCCF_CFH_TYPE_ERROR ),
DEF_VALS1(MQRCCF_CFH_LENGTH_ERROR ),
DEF_VALS1(MQRCCF_CFH_VERSION_ERROR ),
DEF_VALS1(MQRCCF_CFH_MSG_SEQ_NUMBER_ERR ),
@@ -942,6 +955,7 @@ DEF_VALSB(mqrc)
DEF_VALS1(MQRC_INCONSISTENT_OPEN_OPTIONS ),
DEF_VALS1(MQRC_WRONG_VERSION ),
DEF_VALS1(MQRC_REFERENCE_ERROR ),
+ DEF_VALS1(MQRC_XR_NOT_AVAILABLE ),
DEF_VALSE;
DEF_VALSB(selector)
@@ -1844,7 +1858,7 @@ DEF_VALSB(ReadAheadValues)
DEF_VALS1(MQREADA_BACKLOG ),
DEF_VALSE;
-DEF_VALSB(ChanPropCtlVal)
+DEF_VALSB(PropertyCtlVal)
DEF_VALS1(MQPROP_COMPATIBILITY),
DEF_VALS1(MQPROP_NONE),
DEF_VALS1(MQPROP_ALL),
@@ -2204,6 +2218,7 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQBACF_SUB_ID ),
DEF_VALS1(MQCACF_ACTIVITY_DESC ),
DEF_VALS1(MQCACF_ADMIN_TOPIC_NAMES ),
+ DEF_VALS1(MQCACF_ADMIN_TOPIC_NAMES ),
DEF_VALS1(MQCACF_ALIAS_Q_NAMES ),
DEF_VALS1(MQCACF_APPL_DESC ),
DEF_VALS1(MQCACF_APPL_IDENTITY_DATA ),
@@ -2368,16 +2383,53 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQCACF_USAGE_LOG_RBA ),
DEF_VALS1(MQCACF_USER_IDENTIFIER ),
DEF_VALS1(MQCACF_VALUE_NAME ),
+ DEF_VALS1(MQCACF_ALTERNATE_USERID ),
+ DEF_VALS1(MQCACF_APPL_DESC ),
+ DEF_VALS1(MQCACF_APPL_FUNCTION ),
+ DEF_VALS1(MQCACF_CF_OFFLOAD_SIZE1 ),
+ DEF_VALS1(MQCACF_CF_OFFLOAD_SIZE2 ),
+ DEF_VALS1(MQCACF_CF_OFFLOAD_SIZE3 ),
+ DEF_VALS1(MQCACF_CF_SMDS ),
+ DEF_VALS1(MQCACF_CF_SMDSCONN ),
+ DEF_VALS1(MQCACF_CF_SMDS_GENERIC_NAME ),
+ DEF_VALS1(MQCACF_CF_STRUC_NAME ),
+ DEF_VALS1(MQCACF_CHAR_ATTRS ),
+ DEF_VALS1(MQCACF_DYNAMIC_Q_NAME ),
+ DEF_VALS1(MQCACF_FROM_COMM_INFO_NAME ),
+ DEF_VALS1(MQCACF_HOST_NAME ),
+ DEF_VALS1(MQCACF_MQCB_NAME ),
+ DEF_VALS1(MQCACF_OBJECT_STRING ),
+ DEF_VALS1(MQCACF_Q_MGR_START_DATE ),
+ DEF_VALS1(MQCACF_Q_MGR_START_TIME ),
+ DEF_VALS1(MQCACF_RECOVERY_DATE ),
+ DEF_VALS1(MQCACF_RECOVERY_TIME ),
+ DEF_VALS1(MQCACF_RESOLVED_LOCAL_Q_MGR ),
+ DEF_VALS1(MQCACF_RESOLVED_LOCAL_Q_NAME ),
+ DEF_VALS1(MQCACF_RESOLVED_OBJECT_STRING ),
+ DEF_VALS1(MQCACF_RESOLVED_Q_MGR ),
+ DEF_VALS1(MQCACF_ROUTING_FINGER_PRINT ),
+ DEF_VALS1(MQCACF_SELECTION_STRING ),
+ DEF_VALS1(MQCACF_TO_COMM_INFO_NAME ),
+ DEF_VALS1(MQCACF_XA_INFO ),
+ DEF_VALS1(MQCACF_XQH_PUT_DATE ),
+ DEF_VALS1(MQCACF_XQH_PUT_TIME ),
+ DEF_VALS1(MQCACF_XQH_REMOTE_Q_MGR ),
+ DEF_VALS1(MQCACF_XQH_REMOTE_Q_NAME ),
DEF_VALS1(MQCACH_CHANNEL_NAME ),
DEF_VALS1(MQCACH_CHANNEL_NAMES ),
DEF_VALS1(MQCACH_CHANNEL_START_DATE ),
DEF_VALS1(MQCACH_CHANNEL_START_TIME ),
+ DEF_VALS1(MQCACH_CLIENT_ID ),
+ DEF_VALS1(MQCACH_CLIENT_USER_ID ),
DEF_VALS1(MQCACH_CONNECTION_NAME ),
+ DEF_VALS1(MQCACH_CONNECTION_NAME_LIST ),
DEF_VALS1(MQCACH_CURRENT_LUWID ),
DEF_VALS1(MQCACH_DESC ),
DEF_VALS1(MQCACH_FORMAT_NAME ),
+ DEF_VALS1(MQCACH_GROUP_ADDRESS ),
DEF_VALS1(MQCACH_IP_ADDRESS ),
+ DEF_VALS1(MQCACH_JAAS_CONFIG ),
DEF_VALS1(MQCACH_LAST_LUWID ),
DEF_VALS1(MQCACH_LAST_MSG_DATE ),
DEF_VALS1(MQCACH_LAST_MSG_TIME ),
@@ -2391,6 +2443,7 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQCACH_MCA_JOB_NAME ),
DEF_VALS1(MQCACH_MCA_NAME ),
DEF_VALS1(MQCACH_MCA_USER_ID ),
+ DEF_VALS1(MQCACH_MCA_USER_ID_LIST ),
DEF_VALS1(MQCACH_MODE_NAME ),
DEF_VALS1(MQCACH_MR_EXIT_NAME ),
DEF_VALS1(MQCACH_MR_EXIT_USER_DATA ),
@@ -2400,6 +2453,8 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQCACH_RCV_EXIT_NAME ),
DEF_VALS1(MQCACH_RCV_EXIT_USER_DATA ),
DEF_VALS1(MQCACH_REMOTE_APPL_TAG ),
+ DEF_VALS1(MQCACH_REMOTE_VERSION ),
+ DEF_VALS1(MQCACH_REMOTE_PRODUCT ),
DEF_VALS1(MQCACH_SEC_EXIT_NAME ),
DEF_VALS1(MQCACH_SEC_EXIT_USER_DATA ),
DEF_VALS1(MQCACH_SEND_EXIT_NAME ),
@@ -2407,15 +2462,18 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQCACH_SSL_CERT_ISSUER_NAME ),
DEF_VALS1(MQCACH_SSL_CERT_USER_ID ),
DEF_VALS1(MQCACH_SSL_CIPHER_SPEC ),
+ DEF_VALS1(MQCACH_SSL_CIPHER_SUITE ),
DEF_VALS1(MQCACH_SSL_HANDSHAKE_STAGE ),
DEF_VALS1(MQCACH_SSL_KEY_RESET_DATE ),
DEF_VALS1(MQCACH_SSL_KEY_RESET_TIME ),
+ DEF_VALS1(MQCACH_SSL_KEY_PASSPHRASE ),
DEF_VALS1(MQCACH_SSL_PEER_NAME ),
DEF_VALS1(MQCACH_SSL_SHORT_PEER_NAME ),
DEF_VALS1(MQCACH_TCP_NAME ),
DEF_VALS1(MQCACH_TP_NAME ),
DEF_VALS1(MQCACH_USER_ID ),
DEF_VALS1(MQCACH_XMIT_Q_NAME ),
+
DEF_VALS1(MQCAMO_CLOSE_DATE ),
DEF_VALS1(MQCAMO_CLOSE_TIME ),
DEF_VALS1(MQCAMO_CONN_DATE ),
@@ -2538,7 +2596,10 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQCA_SIGNER_DN ),
DEF_VALS1(MQCA_XR_VERSION ),
DEF_VALS1(MQCA_XR_SSL_CIPHER_SUITES ),
+
DEF_VALS1(MQGACF_ACTIVITY ),
+ DEF_VALS1(MQGACF_APP_DIST_LIST ),
+ DEF_VALS1(MQGACF_ACTIVITY_TRACE ),
DEF_VALS1(MQGACF_CHL_STATISTICS_DATA ),
DEF_VALS1(MQGACF_COMMAND_CONTEXT ),
DEF_VALS1(MQGACF_COMMAND_DATA ),
@@ -2550,6 +2611,7 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQGACF_Q_STATISTICS_DATA ),
DEF_VALS1(MQGACF_TRACE_ROUTE ),
DEF_VALS1(MQGACF_VALUE_NAMING ),
+
DEF_VALS1(MQIACF_ACTION ),
DEF_VALS1(MQIACF_ALL ),
DEF_VALS1(MQIACF_ANONYMOUS_COUNT ),
@@ -2583,6 +2645,7 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIACF_CF_STRUC_TYPE ),
DEF_VALS1(MQIACF_CHANNEL_ATTRS ),
DEF_VALS1(MQIACF_CHINIT_STATUS ),
+ DEF_VALS1(MQIACF_CHLAUTH_TYPE ),
DEF_VALS1(MQIACF_CLEAR_SCOPE ),
DEF_VALS1(MQIACF_CLEAR_TYPE ),
DEF_VALS1(MQIACF_CLUSTER_INFO ),
@@ -2810,6 +2873,7 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIACF_WAIT_INTERVAL ),
DEF_VALS1(MQIACF_WILDCARD_SCHEMA ),
DEF_VALS1(MQIACF_MCAST_REL_INDICATOR ),
+
DEF_VALS1(MQIACH_ACTIVE_CHL ),
DEF_VALS1(MQIACH_ACTIVE_CHL_MAX ),
DEF_VALS1(MQIACH_ACTIVE_CHL_PAUSED ),
@@ -2828,9 +2892,7 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIACH_BATCH_INTERVAL ),
DEF_VALS1(MQIACH_BATCH_SIZE ),
DEF_VALS1(MQIACH_BATCH_SIZE_INDICATOR ),
- DEF_VALS2(MQIACH_BUFFERS_RECEIVED,"MQIACH_BUFFERS_RCVD"),
DEF_VALS1(MQIACH_BUFFERS_SENT ),
- DEF_VALS2(MQIACH_BYTES_RECEIVED,"MQIACH_BYTES_RCVD"),
DEF_VALS1(MQIACH_BYTES_SENT ),
DEF_VALS1(MQIACH_CHANNEL_DISP ),
DEF_VALS1(MQIACH_CHANNEL_ERROR_DATA ),
@@ -2854,7 +2916,6 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIACH_CURRENT_CHL_MAX ),
DEF_VALS1(MQIACH_CURRENT_CHL_TCP ),
DEF_VALS1(MQIACH_CURRENT_MSGS ),
- DEF_VALS2(MQIACH_CURRENT_SEQUENCE_NUMBER,"MQIACH_CURRENT_SEQ_NUMBER"),
DEF_VALS1(MQIACH_CURRENT_SHARING_CONVS ),
DEF_VALS1(MQIACH_DATA_CONVERSION ),
DEF_VALS1(MQIACH_DATA_COUNT ),
@@ -2870,7 +2931,6 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIACH_INDOUBT_STATUS ),
DEF_VALS1(MQIACH_IN_DOUBT ),
DEF_VALS1(MQIACH_KEEP_ALIVE_INTERVAL ),
- DEF_VALS2(MQIACH_LAST_SEQUENCE_NUMBER,"MQIACH_LAST_SEQ_NUMBER"),
DEF_VALS1(MQIACH_LISTENER_CONTROL ),
DEF_VALS1(MQIACH_LISTENER_STATUS ),
DEF_VALS1(MQIACH_LONG_RETRIES_LEFT ),
@@ -2912,14 +2972,44 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIACH_XMITQ_MSGS_AVAILABLE ),
DEF_VALS1(MQIACH_XMITQ_TIME_INDICATOR ),
DEF_VALS1(MQIACH_XMIT_PROTOCOL_TYPE ),
+ DEF_VALS2(MQIACH_BUFFERS_RECEIVED,"MQIACH_BUFFERS_RCVD"),
+ DEF_VALS2(MQIACH_BYTES_RECEIVED,"MQIACH_BYTES_RCVD"),
+ DEF_VALS2(MQIACH_CURRENT_SEQUENCE_NUMBER,"MQIACH_CURRENT_SEQ_NUMBER"),
+ DEF_VALS2(MQIACH_LAST_SEQUENCE_NUMBER, "MQIACH_LAST_SEQ_NUMBER"),
+ DEF_VALS1(MQIACH_AVAILABLE_CIPHERSPECS ),
+ DEF_VALS1(MQIACH_BATCH_DATA_LIMIT ),
+ DEF_VALS1(MQIACH_CHANNEL_SUMMARY_ATTRS ),
+ DEF_VALS1(MQIACH_DEF_RECONNECT ),
+ DEF_VALS1(MQIACH_IN_DOUBT_IN ),
+ DEF_VALS1(MQIACH_IN_DOUBT_OUT ),
+ DEF_VALS1(MQIACH_MATCH ),
+ DEF_VALS1(MQIACH_MC_HB_INTERVAL ),
+ DEF_VALS1(MQIACH_MQTT_KEEP_ALIVE ),
+ DEF_VALS1(MQIACH_MSGS_RCVD ),
+ DEF_VALS1(MQIACH_MSGS_RECEIVED ),
+ DEF_VALS1(MQIACH_MSGS_SENT ),
+ DEF_VALS1(MQIACH_MSG_HISTORY ),
+ DEF_VALS1(MQIACH_MULTICAST_PROPERTIES ),
+ DEF_VALS1(MQIACH_NEW_SUBSCRIBER_HISTORY ),
+ DEF_VALS1(MQIACH_PENDING_OUT ),
+ DEF_VALS1(MQIACH_RESET_REQUESTED ),
+ DEF_VALS1(MQIACH_USER_SOURCE ),
+ DEF_VALS1(MQIACH_USE_CLIENT_ID ),
+ DEF_VALS1(MQIACH_WARNING ),
+
DEF_VALS1(MQIAMO64_BROWSE_BYTES ),
DEF_VALS1(MQIAMO64_BYTES ),
DEF_VALS1(MQIAMO64_GET_BYTES ),
DEF_VALS1(MQIAMO64_PUBLISH_MSG_BYTES ),
DEF_VALS1(MQIAMO64_PUT_BYTES ),
DEF_VALS1(MQIAMO64_TOPIC_PUT_BYTES ),
+ DEF_VALS1(MQIAMO64_AVG_Q_TIME ),
+ DEF_VALS1(MQIAMO64_Q_TIME_AVG ),
+ DEF_VALS1(MQIAMO64_Q_TIME_MAX ),
+ DEF_VALS1(MQIAMO64_Q_TIME_MIN ),
+ DEF_VALS1(MQIAMO64_HIGHRES_TIME ),
+
DEF_VALS1(MQIAMO_AVG_BATCH_SIZE ),
- DEF_VALS2(MQIAMO_AVG_Q_TIME,"MQIAMO64_AVG_Q_TIME"),
DEF_VALS1(MQIAMO_BACKOUTS ),
DEF_VALS1(MQIAMO_BROWSES ),
DEF_VALS1(MQIAMO_BROWSES_FAILED ),
@@ -2971,9 +3061,6 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIAMO_PUT_RETRIES ),
DEF_VALS1(MQIAMO_Q_MAX_DEPTH ),
DEF_VALS1(MQIAMO_Q_MIN_DEPTH ),
- DEF_VALS2(MQIAMO_Q_TIME_AVG,"MQIAMO64_Q_TIME_AVG"),
- DEF_VALS2(MQIAMO_Q_TIME_MAX,"MQIAMO64_Q_TIME_MAX"),
- DEF_VALS2(MQIAMO_Q_TIME_MIN,"MQIAMO64_Q_TIME_MIN"),
DEF_VALS1(MQIAMO_SETS ),
DEF_VALS1(MQIAMO_SETS_FAILED ),
DEF_VALS1(MQIAMO_STATS ),
@@ -2994,6 +3081,61 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIAMO_UNSUBS_DUR ),
DEF_VALS1(MQIAMO_UNSUBS_FAILED ),
DEF_VALS1(MQIAMO_UNSUBS_NDUR ),
+ DEF_VALS2(MQIAMO_AVG_Q_TIME,"MQIAMO64_AVG_Q_TIME"),
+ DEF_VALS2(MQIAMO_Q_TIME_AVG,"MQIAMO64_Q_TIME_AVG"),
+ DEF_VALS2(MQIAMO_Q_TIME_MAX,"MQIAMO64_Q_TIME_MAX"),
+ DEF_VALS2(MQIAMO_Q_TIME_MIN,"MQIAMO64_Q_TIME_MIN"),
+ DEF_VALS1(MQIAMO_ACKS_RCVD ),
+ DEF_VALS1(MQIAMO_ACK_FEEDBACK ),
+ DEF_VALS1(MQIAMO_ACTIVE_ACKERS ),
+ DEF_VALS1(MQIAMO_BYTES_SENT ),
+ DEF_VALS1(MQIAMO_DEST_DATA_PORT ),
+ DEF_VALS1(MQIAMO_DEST_REPAIR_PORT ),
+ DEF_VALS1(MQIAMO_FEEDBACK_MODE ),
+ DEF_VALS1(MQIAMO_HISTORY_PKTS ),
+ DEF_VALS1(MQIAMO_INTERVAL ),
+ DEF_VALS1(MQIAMO_LAST_USED ),
+ DEF_VALS1(MQIAMO_LATE_JOIN_MARK ),
+ DEF_VALS1(MQIAMO_MCAST_BATCH_TIME ),
+ DEF_VALS1(MQIAMO_MCAST_HEARTBEAT ),
+ DEF_VALS1(MQIAMO_MCAST_XMIT_RATE ),
+ DEF_VALS1(MQIAMO_MSGS_DELIVERED ),
+ DEF_VALS1(MQIAMO_MSGS_RCVD ),
+ DEF_VALS1(MQIAMO_MSGS_SENT ),
+ DEF_VALS1(MQIAMO_MSG_BYTES_RCVD ),
+ DEF_VALS1(MQIAMO_NACKS_CREATED ),
+ DEF_VALS1(MQIAMO_NACKS_RCVD ),
+ DEF_VALS1(MQIAMO_NACK_FEEDBACK ),
+ DEF_VALS1(MQIAMO_NACK_PKTS_SENT ),
+ DEF_VALS1(MQIAMO_NUM_STREAMS ),
+ DEF_VALS1(MQIAMO_PENDING_PKTS ),
+ DEF_VALS1(MQIAMO_PKTS_DELIVERED ),
+ DEF_VALS1(MQIAMO_PKTS_DROPPED ),
+ DEF_VALS1(MQIAMO_PKTS_DUPLICATED ),
+ DEF_VALS1(MQIAMO_PKTS_LOST ),
+ DEF_VALS1(MQIAMO_PKTS_PROCESSED ),
+ DEF_VALS1(MQIAMO_PKTS_REPAIRED ),
+ DEF_VALS1(MQIAMO_PKTS_SENT ),
+ DEF_VALS1(MQIAMO_PKT_RATE ),
+ DEF_VALS1(MQIAMO_RELIABILITY_TYPE ),
+ DEF_VALS1(MQIAMO_REPAIR_BYTES ),
+ DEF_VALS1(MQIAMO_REPAIR_PKTS ),
+ DEF_VALS1(MQIAMO_REPAIR_PKTS_RCVD ),
+ DEF_VALS1(MQIAMO_REPAIR_PKTS_RQSTD ),
+ DEF_VALS1(MQIAMO_TOTAL_BYTES_SENT ),
+ DEF_VALS1(MQIAMO_TOTAL_MSGS_DELIVERED ),
+ DEF_VALS1(MQIAMO_TOTAL_MSGS_EXPIRED ),
+ DEF_VALS1(MQIAMO_TOTAL_MSGS_PROCESSED ),
+ DEF_VALS1(MQIAMO_TOTAL_MSGS_RCVD ),
+ DEF_VALS1(MQIAMO_TOTAL_MSGS_RETURNED ),
+ DEF_VALS1(MQIAMO_TOTAL_MSGS_SELECTED ),
+ DEF_VALS1(MQIAMO_TOTAL_MSGS_SENT ),
+ DEF_VALS1(MQIAMO_TOTAL_MSG_BYTES_RCVD ),
+ DEF_VALS1(MQIAMO_TOTAL_PKTS_SENT ),
+ DEF_VALS1(MQIAMO_TOTAL_REPAIR_PKTS ),
+ DEF_VALS1(MQIAMO_TOTAL_REPAIR_PKTS_RCVD ),
+ DEF_VALS1(MQIAMO_TOTAL_REPAIR_PKTS_RQSTD),
+
DEF_VALS1(MQIACH_AVAILABLE_CIPHERSPECS ),
DEF_VALS1(MQIACH_BATCH_DATA_LIMIT ),
DEF_VALS1(MQIACH_CHANNEL_SUMMARY_ATTRS ),
@@ -3007,6 +3149,7 @@ DEF_VALSB(PrmId)
DEF_VALS1(MQIACH_RESET_REQUESTED ),
DEF_VALS1(MQIACH_USER_SOURCE ),
DEF_VALS1(MQIACH_WARNING ),
+
DEF_VALS1(MQIA_ACCOUNTING_CONN_OVERRIDE ),
DEF_VALS1(MQIA_ACCOUNTING_INTERVAL ),
DEF_VALS1(MQIA_ACCOUNTING_MQI ),
@@ -4138,7 +4281,7 @@ DEF_VALSB(IndoubtStatus)
DEF_VALS1(MQCHIDS_INDOUBT ),
DEF_VALSE;
-DEF_VALSB(ChannelDispositions)
+DEF_VALSB(ChannelDisp)
DEF_VALS1(MQCHLD_ALL ),
DEF_VALS1(MQCHLD_DEFAULT ),
DEF_VALS1(MQCHLD_SHARED ),
@@ -4562,11 +4705,16 @@ DEF_VALSB(SystemParameterValues)
DEF_VALS1(MQSYSP_STATUS_COPYING_LOG ),
DEF_VALSE;
-DEF_VALSB(SubscriptionDurable)
+DEF_VALSB(DurableSubscriptions)
+ DEF_VALS1(MQSUB_DURABLE_AS_PARENT ),
+ DEF_VALS1(MQSUB_DURABLE_ALLOWED ),
+ DEF_VALS1(MQSUB_DURABLE_INHIBITED),
+DEF_VALSE;
+
+DEF_VALSB(Durable)
DEF_VALS1(MQSUB_DURABLE_ALL ),
DEF_VALS1(MQSUB_DURABLE_YES ),
DEF_VALS1(MQSUB_DURABLE_NO ),
- DEF_VALS1(MQSUB_DURABLE_AS_PARENT ),
DEF_VALSE;
DEF_VALSB(SubscriptionTypes)
@@ -4700,12 +4848,7 @@ DEF_VALSB(PublishSubscribeProperties)
DEF_VALS1(MQPSPROP_MSGPROP ),
DEF_VALSE;
-DEF_VALSB(SubscriptionScope)
- DEF_VALS1(MQTSCOPE_ALL ),
- DEF_VALS1(MQTSCOPE_QMGR ),
-DEF_VALSE;
-
-DEF_VALSB(PublicationScope)
+DEF_VALSB(PubSubScope)
DEF_VALS1(MQSCOPE_ALL ),
DEF_VALS1(MQSCOPE_AS_PARENT ),
DEF_VALS1(MQSCOPE_QMGR ),
@@ -4747,36 +4890,76 @@ DEF_VALSB(SecurityCase)
DEF_VALS1(MQSCYC_MIXED),
DEF_VALSE;
+DEF_VALSB(ChlauthType)
+ DEF_VALS1(MQCAUT_BLOCKUSER ),
+ DEF_VALS1(MQCAUT_BLOCKADDR ),
+ DEF_VALS1(MQCAUT_SSLPEERMAP),
+ DEF_VALS1(MQCAUT_ADDRESSMAP),
+ DEF_VALS1(MQCAUT_USERMAP ),
+ DEF_VALS1(MQCAUT_QMGRMAP ),
+DEF_VALSE;
+
+DEF_VALSB(UserSource)
+ DEF_VALS1(MQUSRC_MAP ),
+ DEF_VALS1(MQUSRC_NOACCESS),
+ DEF_VALS1(MQUSRC_CHANNEL ),
+DEF_VALSE;
+
+DEF_VALSB(Warning)
+ DEF_VALS1(MQWARN_NO ),
+ DEF_VALS1(MQWARN_YES),
+DEF_VALSE;
+
DEF_VALSB(MQCFINT_Parse)
+ DEF_VALS2(MQIACF_ASYNC_STATE ,GET_VALSP(AsynchronousStateValues)),
+ DEF_VALS2(MQIACF_CLUSTER_Q_MGR_ATTRS ,GET_VALSP(PrmId)),
+ DEF_VALS2(MQIACF_CHLAUTH_TYPE ,GET_VALSP(ChlauthType)),
DEF_VALS2(MQIACF_COMMAND ,GET_VALSP(Command)),
+ DEF_VALS2(MQIACF_CONNECTION_ATTRS ,GET_VALSP(PrmId)),
DEF_VALS2(MQIACF_CONN_INFO_TYPE ,GET_VALSP(ConnInfoType)),
DEF_VALS2(MQIACF_EVENT_APPL_TYPE ,GET_VALSP(ApplType)),
DEF_VALS2(MQIACF_EVENT_ORIGIN ,GET_VALSP(EvtOrig)),
+ DEF_VALS2(MQIACF_HANDLE_STATE ,GET_VALSP(HandleStates)),
DEF_VALS2(MQIACF_OBJECT_TYPE ,GET_VALSP(ObjType)),
+ DEF_VALS2(MQIACF_OPEN_BROWSE ,GET_VALSP(QueueStatusOptionsYesNo)),
+ DEF_VALS2(MQIACF_OPEN_INPUT_TYPE ,GET_VALSP(QueueStatusOpenOptions)),
+ DEF_VALS2(MQIACF_OPEN_INQUIRE ,GET_VALSP(QueueStatusOptionsYesNo)),
+ DEF_VALS2(MQIACF_OPEN_OUTPUT ,GET_VALSP(QueueStatusOptionsYesNo)),
DEF_VALS2(MQIACF_OPEN_TYPE ,GET_VALSP(QueueStatusOpenTypes)),
+ DEF_VALS2(MQIACF_OPEN_SET ,GET_VALSP(QueueStatusOptionsYesNo)),
DEF_VALS2(MQIACF_PARAMETER_ID ,GET_VALSP(PrmId)),
DEF_VALS2(MQIACF_Q_ATTRS ,GET_VALSP(PrmId)),
DEF_VALS2(MQIACF_Q_MGR_ATTRS ,GET_VALSP(PrmId)),
+ DEF_VALS2(MQIACF_QSG_DISPS ,GET_VALSP(QShrGrpDisp)),
DEF_VALS2(MQIACF_Q_STATUS_ATTRS ,GET_VALSP(PrmId)),
DEF_VALS2(MQIACF_Q_STATUS_TYPE ,GET_VALSP(PrmId)),
DEF_VALS2(MQIACF_Q_TYPES ,GET_VALSP(QueueType)),
- DEF_VALS2(MQIACH_CHANNEL_STATUS ,GET_VALSP(ChannelStatus)),
+ DEF_VALS2(MQIACF_UOW_TYPE ,GET_VALSP(UOWTypes)),
+ DEF_VALS2(MQIACF_UOW_STATE ,GET_VALSP(UOWStates)),
+ DEF_VALS2(MQIACH_CHANNEL_DISP ,GET_VALSP(ChannelDisp)),
+ DEF_VALS2(MQIACH_CHANNEL_INSTANCE_TYPE ,GET_VALSP(ObjType)),
+ DEF_VALS2(MQIACH_CHANNEL_STATUS ,GET_VALSP(ChannelStatus)),
DEF_VALS2(MQIACH_CHANNEL_SUBSTATE ,GET_VALSP(ChannelSubStates)),
DEF_VALS2(MQIACH_CHANNEL_TYPE ,GET_VALSP(ChannelType)),
DEF_VALS2(MQIACH_DATA_CONVERSION ,GET_VALSP(DataConversion)),
DEF_VALS2(MQIACH_HDR_COMPRESSION ,GET_VALSP(HeaderCompression)),
+ DEF_VALS2(MQIACH_INDOUBT_STATUS ,GET_VALSP(IndoubtStatus)),
+ DEF_VALS2(MQIACH_MCA_STATUS ,GET_VALSP(MessageChannelAgentStatus)),
DEF_VALS2(MQIACH_MCA_TYPE ,GET_VALSP(MCAType)),
DEF_VALS2(MQIACH_MSG_COMPRESSION ,GET_VALSP(MessageCompression)),
DEF_VALS2(MQIACH_NPM_SPEED ,GET_VALSP(NonPersistentMsgSpeed)),
DEF_VALS2(MQIACH_PUT_AUTHORITY ,GET_VALSP(PutAuthority)),
DEF_VALS2(MQIACH_SSL_CLIENT_AUTH ,GET_VALSP(SSLClientAuthentication)),
DEF_VALS2(MQIACH_STOP_REQUESTED ,GET_VALSP(ChannelStopOptions)),
+ DEF_VALS2(MQIACH_USER_SOURCE ,GET_VALSP(UserSource)),
+ DEF_VALS2(MQIACH_WARNING ,GET_VALSP(Warning)),
DEF_VALS2(MQIACH_XMIT_PROTOCOL_TYPE ,GET_VALSP(TransportType)),
DEF_VALS2(MQIA_ACCOUNTING_Q ,GET_VALSP(Monitoring)),
DEF_VALS2(MQIA_ACTIVITY_RECORDING ,GET_VALSP(ActivityRecording)),
DEF_VALS2(MQIA_ADOPTNEWMCA_CHECK ,GET_VALSP(AdoptNewMCACheck)),
DEF_VALS2(MQIA_ADOPTNEWMCA_TYPE ,GET_VALSP(AdoptNewMCAType)),
DEF_VALS2(MQIA_APPL_TYPE ,GET_VALSP(ApplType)),
+ DEF_VALS2(MQIA_AUTH_INFO_TYPE ,GET_VALSP(AuthInfoType)),
DEF_VALS2(MQIA_AUTHORITY_EVENT ,GET_VALSP(EventRule)),
DEF_VALS2(MQIA_BASE_TYPE ,GET_VALSP(BaseType)),
DEF_VALS2(MQIA_BRIDGE_EVENT ,GET_VALSP(EventRule)),
@@ -4790,23 +4973,34 @@ DEF_VALSB(MQCFINT_Parse)
DEF_VALS2(MQIA_DEF_INPUT_OPEN_OPTION ,GET_VALSP(InputOpenOption)),
DEF_VALS2(MQIA_DEF_PERSISTENCE ,GET_VALSP(Persistence)),
DEF_VALS2(MQIA_DEF_PUT_RESPONSE_TYPE ,GET_VALSP(PutResponse)),
+ DEF_VALS2(MQIA_DEF_READ_AHEAD ,GET_VALSP(ReadAheadValues)),
+ DEF_VALS2(MQIA_DURABLE_SUB ,GET_VALSP(DurableSubscriptions)),
+ DEF_VALS2(MQIA_DIST_LISTS ,GET_VALSP(DistributionLists)),
DEF_VALS2(MQIA_DNS_WLM ,GET_VALSP(DNSWLM)),
DEF_VALS2(MQIA_GROUP_UR ,GET_VALSP(GroupUR)),
DEF_VALS2(MQIA_HARDEN_GET_BACKOUT ,GET_VALSP(BackOutHardening)),
DEF_VALS2(MQIA_IGQ_PUT_AUTHORITY ,GET_VALSP(IGQPutAuthority)),
+ DEF_VALS2(MQIA_INDEX_TYPE ,GET_VALSP(IndexTypes)),
DEF_VALS2(MQIA_INHIBIT_EVENT ,GET_VALSP(EventRule)),
DEF_VALS2(MQIA_INHIBIT_GET ,GET_VALSP(InhibitGetVal)),
+ DEF_VALS2(MQIA_INHIBIT_PUB ,GET_VALSP(InhibitPublications)),
DEF_VALS2(MQIA_INHIBIT_PUT ,GET_VALSP(InhibitPutVal)),
+ DEF_VALS2(MQIA_INHIBIT_SUB ,GET_VALSP(InhibitSubscriptions)),
DEF_VALS2(MQIA_INTRA_GROUP_QUEUING ,GET_VALSP(IntraGroupQueuing)),
DEF_VALS2(MQIA_IP_ADDRESS_VERSION ,GET_VALSP(IPAddressVersion)),
DEF_VALS2(MQIA_LOCAL_EVENT ,GET_VALSP(EventRule)),
DEF_VALS2(MQIA_MONITORING_AUTO_CLUSSDR ,GET_VALSP(Monitoring)),
DEF_VALS2(MQIA_MONITORING_CHANNEL ,GET_VALSP(Monitoring)),
- DEF_VALS2(MQIA_MONITORING_CHANNEL ,GET_VALSP(Monitoring)),
DEF_VALS2(MQIA_MONITORING_Q ,GET_VALSP(Monitoring)),
DEF_VALS2(MQIA_MSG_DELIVERY_SEQUENCE ,GET_VALSP(MsgDelivSeq)),
+ DEF_VALS2(MQIA_PM_DELIVERY ,GET_VALSP(MsgDelivery)),
+ DEF_VALS2(MQIA_NPM_DELIVERY ,GET_VALSP(MsgDelivery)),
+ DEF_VALS2(MQIA_NPM_CLASS ,GET_VALSP(NonpersistentMsgCls)),
DEF_VALS2(MQIA_PERFORMANCE_EVENT ,GET_VALSP(EventRule)),
DEF_VALS2(MQIA_PLATFORM ,GET_VALSP(Platform)),
+ DEF_VALS2(MQIA_PROPERTY_CONTROL ,GET_VALSP(PropertyCtlVal)),
+ DEF_VALS2(MQIA_PROXY_SUB ,GET_VALSP(ProxySubscriptions)),
+ DEF_VALS2(MQIA_PUB_SCOPE ,GET_VALSP(PubSubScope)),
DEF_VALS2(MQIA_PUBSUB_CLUSTER ,GET_VALSP(PubSubCluster)),
DEF_VALS2(MQIA_PUBSUB_MODE ,GET_VALSP(PubSubMode)),
DEF_VALS2(MQIA_PUBSUB_NP_MSG ,GET_VALSP(PubSubNP)),
@@ -4821,18 +5015,23 @@ DEF_VALSB(MQCFINT_Parse)
DEF_VALS2(MQIA_Q_TYPE ,GET_VALSP(QueueType)),
DEF_VALS2(MQIA_RECEIVE_TIMEOUT_TYPE ,GET_VALSP(ReceiveTimeoutType)),
DEF_VALS2(MQIA_REMOTE_EVENT ,GET_VALSP(EventRule)),
+ DEF_VALS2(MQIA_SCOPE ,GET_VALSP(QueueDefinitionScope)),
DEF_VALS2(MQIA_SECURITY_CASE ,GET_VALSP(SecurityCase)),
DEF_VALS2(MQIA_SHAREABILITY ,GET_VALSP(Shareability)),
DEF_VALS2(MQIA_SHARED_Q_Q_MGR_NAME ,GET_VALSP(SharedQueueQueueManagerName)),
DEF_VALS2(MQIA_SSL_EVENT ,GET_VALSP(EventRule)),
+ DEF_VALS2(MQIA_SUB_SCOPE ,GET_VALSP(PubSubScope)),
DEF_VALS2(MQIA_START_STOP_EVENT ,GET_VALSP(EventRule)),
DEF_VALS2(MQIA_TCP_KEEP_ALIVE ,GET_VALSP(TCPKeepAlive)),
DEF_VALS2(MQIA_TCP_STACK_TYPE ,GET_VALSP(TCPStackType)),
DEF_VALS2(MQIA_TOPIC_DEF_PERSISTENCE ,GET_VALSP(Persistence)),
+ DEF_VALS2(MQIA_TOPIC_TYPE ,GET_VALSP(TopicType)),
DEF_VALS2(MQIA_TRACE_ROUTE_RECORDING ,GET_VALSP(TraceRouteRecording)),
DEF_VALS2(MQIA_TRIGGER_CONTROL ,GET_VALSP(TriggerControl)),
DEF_VALS2(MQIA_TRIGGER_TYPE ,GET_VALSP(TriggerType)),
+ DEF_VALS2(MQIA_UR_DISP ,GET_VALSP(QShrGrpDisp)),
DEF_VALS2(MQIA_USAGE ,GET_VALSP(Usage)),
+ DEF_VALS2(MQIA_WILDCARD_OPERATION ,GET_VALSP(WildcardOperation)),
DEF_VALSE;
/*
diff --git a/epan/dissectors/packet-mq-pcf.c b/epan/dissectors/packet-mq-pcf.c
index 30b35f0876..bbec082c0f 100644
--- a/epan/dissectors/packet-mq-pcf.c
+++ b/epan/dissectors/packet-mq-pcf.c
@@ -26,15 +26,16 @@
*/
/* MQ PCF in a nutshell
-*
-* The MQ Programmable Command Formats API allows remotely configuring a queue manager.
-*
-* MQ PCF documentation is called "WebSphere MQ Programmable Command Formats and Administration Interface"
+ *
+ * The MQ Programmable Command Formats API allows remotely configuring a queue manager.
+ *
+ * MQ PCF documentation is called "WebSphere MQ Programmable Command Formats and Administration Interface"
*/
-
+
#include "config.h"
-
+
#include <string.h>
+#include <math.h>
#include <glib.h>
#include <epan/packet.h>
@@ -42,6 +43,7 @@
#include <epan/expert.h>
#include <epan/prefs.h>
#include <epan/value_string.h>
+#include <epan/strutil.h>
#include "packet-mq.h"
#include "wmem/wmem.h"
@@ -57,15 +59,16 @@ static int hf_mqpcf_cfh_type = -1;
static int hf_mqpcf_cfh_length = -1;
static int hf_mqpcf_cfh_version = -1;
static int hf_mqpcf_cfh_command = -1;
-static int hf_mqpcf_cfh_msgseqnumber = -1;
+static int hf_mqpcf_cfh_MsgSeqNbr = -1;
static int hf_mqpcf_cfh_control = -1;
static int hf_mqpcf_cfh_compcode = -1;
static int hf_mqpcf_cfh_reason = -1;
-static int hf_mqpcf_cfh_paramcount = -1;
+static int hf_mqpcf_cfh_ParmCount = -1;
static int hf_mq_pcf_prmtyp = -1;
static int hf_mq_pcf_prmlen = -1;
static int hf_mq_pcf_prmid = -1;
+static int hf_mq_pcf_filterop = -1;
static int hf_mq_pcf_prmccsid = -1;
static int hf_mq_pcf_prmstrlen = -1;
static int hf_mq_pcf_prmcount = -1;
@@ -91,6 +94,11 @@ static gint ett_mqpcf_cfh = -1;
#define MQ_TEXT_CFH "MQ Command Format Header"
+guint32 dissect_mqpcf_getDigits(guint uCnt)
+{
+ return (guint) log10(uCnt) + 1;
+}
+
guint8 *dissect_mqpcf_parm_getintval(guint uPrm,guint uVal)
{
value_string *pVs=NULL;
@@ -103,7 +111,8 @@ guint8 *dissect_mqpcf_parm_getintval(guint uPrm,guint uVal)
return NULL;
}
-void dissect_mqpcf_parm_int(tvbuff_t *tvb, proto_tree *tree, guint offset,guint uPrm,guint uVal,int hfindex)
+void dissect_mqpcf_parm_int(tvbuff_t *tvb, proto_tree *tree, guint offset, guint uPrm,
+ guint uVal, int hfindex, guint iCnt, guint iMaxCnt, guint iDigit)
{
header_field_info *hfinfo;
guint8 *pVal;
@@ -111,15 +120,31 @@ void dissect_mqpcf_parm_int(tvbuff_t *tvb, proto_tree *tree, guint offset,guint
pVal=dissect_mqpcf_parm_getintval(uPrm,uVal);
hfinfo=proto_registrar_get_nth(hfindex);
- if (pVal)
+ if (iMaxCnt>1)
{
- proto_tree_add_none_format(tree, hfindex, tvb, offset , 4, "%s:%d-%s",
- hfinfo->name, uVal, pVal);
+ if (pVal)
+ {
+ proto_tree_add_int_format(tree, hfindex, tvb, offset , 4, uVal,
+ "%s[%*d]: %8d-%s", hfinfo->name, iDigit, iCnt, uVal, pVal);
+ }
+ else
+ {
+ proto_tree_add_int_format(tree, hfindex, tvb, offset , 4, uVal,
+ "%s[%*d]: %8x-%d", hfinfo->name, iDigit, iCnt, uVal, uVal);
+ }
}
else
{
- proto_tree_add_none_format(tree, hfindex, tvb, offset , 4, "%s:%8x-%d",
- hfinfo->name, uVal, uVal);
+ if (pVal)
+ {
+ proto_tree_add_int_format_value(tree, hfindex, tvb, offset , 4, uVal,
+ "%8d-%s", uVal, pVal);
+ }
+ else
+ {
+ proto_tree_add_int_format_value(tree, hfindex, tvb, offset , 4, uVal,
+ "%8x-%d", uVal, uVal);
+ }
}
}
@@ -137,6 +162,7 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
guint32 uSLn;
guint32 uVal;
guint64 uVal64;
+ guint32 uDig;
const char sMaxLst[] = " Max # of List reached. DECODE interrupted (actual %u of %u)";
const char sPrmLn0[] = " MQPrm[%3u] has a zero length. DECODE Failed (MQPrm Count: %u)";
@@ -145,11 +171,13 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
proto_item *ti=NULL;
proto_tree *tree=NULL;
- for (u=0;u<uCount && u<mq_pcf_maxprm;u++)
+ uDig=dissect_mqpcf_getDigits(uCount);
+
+ for (u = 0; u < uCount && u < mq_pcf_maxprm; u++)
{
- tOfs=offset;
- uTyp=tvb_get_guint32_endian(tvb, offset, bLittleEndian);
- uLen=tvb_get_guint32_endian(tvb, offset + 4, bLittleEndian);
+ tOfs = offset;
+ uTyp = tvb_get_guint32_endian(tvb, offset , bLittleEndian);
+ uLen = tvb_get_guint32_endian(tvb, offset + 4, bLittleEndian);
if (uLen==0)
{
ti = proto_tree_add_text(mq_tree, tvb, offset, 12, sPrmLn0, u+1, uCount);
@@ -160,8 +188,8 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
uPrm=tvb_get_guint32_endian(tvb, offset + 8, bLittleEndian);
uLenF=12;
- g_snprintf(strPrm,(gulong)sizeof(strPrm)-1," %-s[%3u] {%1d-%-15.15s} %8x/%5d-%-30.30s",
- "MQPrm",u+1,
+ g_snprintf(strPrm,(gulong)sizeof(strPrm)-1," %-s[%*u] {%2d-%-15.15s} %8x/%5d-%-30.30s",
+ "MQPrm", uDig, u+1,
uTyp,val_to_str_const(uTyp,GET_VALSV(PrmTyp)," Unknown")+6,
uPrm,uPrm,val_to_str_const(uPrm,GET_VALSV(PrmId),"Unknown"));
@@ -176,8 +204,8 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
case MQ_MQCFT_INTEGER:
{
guint8 *pVal;
- uVal=tvb_get_guint32_endian(tvb, offset+uLenF, bLittleEndian);
- pVal=dissect_mqpcf_parm_getintval(uPrm,uVal);
+ uVal = tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
+ pVal = dissect_mqpcf_parm_getintval(uPrm,uVal);
if (pVal)
{
ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %d-%s",
@@ -189,59 +217,62 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
strPrm,uVal,uVal);
}
tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
- proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset , 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmid, tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
- dissect_mqpcf_parm_int(tvb, tree, offset+uLenF, uPrm, uVal, hf_mq_pcf_int);
-
- /*offset+=uLenF+4;*/
+ dissect_mqpcf_parm_int(tvb, tree, offset+uLenF, uPrm, uVal, hf_mq_pcf_int, 0, 0, 0);
}
break;
case MQ_MQCFT_STRING:
{
guint8 *sStr;
- uCCS=tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
- uSLn=tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
- sStr=tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 8,uSLn,(uCCS!=500)?ENC_ASCII:ENC_EBCDIC);
- strip_trailing_blanks(sStr,uSLn);
+ uCCS = tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
+ uSLn = tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
+ sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 8,
+ uSLn, (uCCS!=500)?ENC_ASCII:ENC_EBCDIC);
+ if (*sStr)
+ strip_trailing_blanks(sStr,uSLn);
+ if (*sStr)
+ format_text_chr(sStr, strlen(sStr), '.');
ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s", strPrm, sStr);
tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
- proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmid, tvb, offset + 8, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmccsid, tvb, offset + 12, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
+ 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);
-
- /*offset+=uLenF+8+uSLn;*/
}
break;
case MQ_MQCFT_INTEGER_LIST:
{
guint32 u2;
+ guint32 uDigit = 0;
+
+ uCnt = tvb_get_guint32_endian(tvb, offset+uLenF, bLittleEndian);
+ uDigit=dissect_mqpcf_getDigits(uCnt);
- uCnt=tvb_get_guint32_endian(tvb, offset+uLenF, bLittleEndian);
ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s Cnt(%d)",strPrm,uCnt);
tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
- proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmid, tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmcount, tvb, offset + 12, 4, bLittleEndian);
- offset+=uLenF+4;
- for (u2=0;u2<uCnt && u2<mq_pcf_maxlst;u2++)
+ offset += uLenF+4;
+ for (u2 = 0; u2 < uCnt && u2 < mq_pcf_maxlst; u2++)
{
- uVal=tvb_get_guint32_endian(tvb, offset, bLittleEndian);
- dissect_mqpcf_parm_int(tvb, tree, offset, uPrm, uVal, hf_mq_pcf_intlist);
- offset+=4;
+ uVal = tvb_get_guint32_endian(tvb, offset, bLittleEndian);
+ dissect_mqpcf_parm_int(tvb, tree, offset, uPrm, uVal, hf_mq_pcf_intlist, u2+1, uCnt, uDigit);
+ offset += 4;
}
- if (u2!=uCnt)
+ if (u2 != uCnt)
{
ti = proto_tree_add_text(tree, tvb, offset, uLen, sMaxLst, u2, uCnt);
expert_add_info(pinfo, ti, &ei_mq_pcf_MaxInt);
@@ -251,28 +282,43 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
case MQ_MQCFT_STRING_LIST:
{
guint32 u2;
+ guint32 uDigit;
+ guint8 *sStr;
+ header_field_info *hfinfo;
- uCCS=tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
- uCnt=tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
- uSLn=tvb_get_guint32_endian(tvb, offset + uLenF + 8, bLittleEndian);
+ hfinfo = proto_registrar_get_nth(hf_mq_pcf_stringlist);
+
+ uCCS = tvb_get_guint32_endian(tvb, offset + uLenF , bLittleEndian);
+ uCnt = tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
+ uSLn = tvb_get_guint32_endian(tvb, offset + uLenF + 8, bLittleEndian);
ti = proto_tree_add_text(mq_tree, tvb, offset, uLen,"%s Cnt(%d)",strPrm,uCnt);
tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
- proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmid, tvb, offset + 8, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmccsid, tvb, offset + 12, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmcount, tvb, offset + 16, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmccsid , tvb, offset + 12, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmcount , tvb, offset + 16, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmstrlen, tvb, offset + 20, 4, bLittleEndian);
- offset+=uLenF+12;
- for (u2=0;u2<uCnt && u2<mq_pcf_maxlst;u2++)
+ uDigit=dissect_mqpcf_getDigits(uCnt);
+
+ offset += uLenF+12;
+ for (u2 = 0; u2 < uCnt && u2 < mq_pcf_maxlst; u2++)
{
- proto_tree_add_item(tree, hf_mq_pcf_stringlist, tvb, offset , uSLn, (uCCS!=500)?ENC_ASCII:ENC_EBCDIC);
- offset+=uSLn;
+ sStr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset,
+ uSLn, (uCCS!=500)?ENC_ASCII:ENC_EBCDIC);
+ if (*sStr)
+ strip_trailing_blanks(sStr,uSLn);
+ if (*sStr)
+ format_text_chr(sStr, strlen(sStr), '.');
+
+ proto_tree_add_string_format(tree, hf_mq_pcf_stringlist, tvb, offset, uSLn, sStr,
+ "%s[%*d]: %s",hfinfo->name, uDigit, u2+1, sStr);
+ offset += uSLn;
}
- if (u2!=uCnt)
+ if (u2 != uCnt)
{
ti = proto_tree_add_text(tree, tvb, offset, uLen, sMaxLst, u2, uCnt);
expert_add_info(pinfo, ti, &ei_mq_pcf_MaxStr);
@@ -285,12 +331,19 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
break;
case MQ_MQCFT_BYTE_STRING:
{
- uSLn=tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
+ uSLn = tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
if (uSLn)
{
- guint8 *sStrA=tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 4,uSLn,ENC_ASCII);
- guint8 *sStrE=tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 4,uSLn,ENC_EBCDIC);
- ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s A(%s) E(%s)", strPrm, sStrA,sStrE);
+ guint8 *sStrA = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 4, uSLn, ENC_ASCII) , uSLn, '.');
+ guint8 *sStrE = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 4, uSLn, ENC_EBCDIC), uSLn, '.');
+ if (uSLn > 35)
+ {
+ ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s [Truncated] A(%-.35s) E(%-.35s)", strPrm, sStrA, sStrE);
+ }
+ else
+ {
+ ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s A(%s) E(%s)", strPrm, sStrA, sStrE);
+ }
}
else
{
@@ -298,14 +351,12 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
}
tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
- proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmid, tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmstrlen, tvb, offset + 12, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_bytestring, tvb, offset + uLenF + 4 , uSLn,bLittleEndian);
-
- /*offset+=uLenF+4+uSLn;*/
+ proto_tree_add_item(tree, hf_mq_pcf_bytestring, tvb, offset + uLenF + 4 , uSLn, bLittleEndian);
}
break;
case MQ_MQCFT_TRACE_ROUTE:
@@ -313,10 +364,76 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
case MQ_MQCFT_REPORT:
break;
case MQ_MQCFT_INTEGER_FILTER:
+ {
+ guint32 uOpe;
+
+ uOpe = tvb_get_guint32_endian(tvb, offset + uLenF , bLittleEndian);
+ uVal = tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
+
+ ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s %d",
+ strPrm, val_to_str(uOpe, GET_VALSV(FilterOP)," Unknown (0x%02x)")+7, uVal);
+ tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_filterop , tvb, offset + 12, 4, bLittleEndian);
+
+ proto_tree_add_item(tree, hf_mq_pcf_int, tvb, offset + uLenF + 4, 4, bLittleEndian);
+ }
break;
case MQ_MQCFT_STRING_FILTER:
+ {
+ guint8 *sStr;
+ guint32 uOpe;
+
+ uOpe = tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
+ uCCS = tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
+ uSLn = tvb_get_guint32_endian(tvb, offset + uLenF + 8, bLittleEndian);
+ sStr = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 12, uSLn, (uCCS!=500)?ENC_ASCII:ENC_EBCDIC), uSLn, '.');
+ strip_trailing_blanks(sStr,uSLn);
+
+ ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s %s",
+ strPrm, val_to_str(uOpe, GET_VALSV(FilterOP)," Unknown (0x%02x)")+7, sStr);
+ tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_filterop , tvb, offset + 12, 4, bLittleEndian);
+ 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);
+ }
break;
case MQ_MQCFT_BYTE_STRING_FILTER:
+ {
+ guint32 uOpe;
+ uOpe = tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
+ uSLn = tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
+ if (uSLn)
+ {
+ guint8 *sStrA = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 8,uSLn,ENC_ASCII) , uSLn, '.');
+ guint8 *sStrE = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 8,uSLn,ENC_EBCDIC), uSLn, '.');
+ ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s A(%s) E(%s)",
+ strPrm, val_to_str(uOpe, GET_VALSV(FilterOP)," Unknown (0x%02x)")+7, sStrA, sStrE);
+ }
+ else
+ {
+ ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s <MISSING>",
+ strPrm, val_to_str(uOpe, GET_VALSV(FilterOP)," Unknown (0x%02x)")+7);
+ }
+ tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_filterop , 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_bytestring, tvb, offset + uLenF + 8 , uSLn,bLittleEndian);
+ }
break;
case MQ_MQCFT_COMMAND_XR:
break;
@@ -334,40 +451,46 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
break;
case MQ_MQCFT_INTEGER64:
{
- uVal64=tvb_get_guint64_endian(tvb, offset+4, bLittleEndian);
+ uVal64 = tvb_get_guint64_endian(tvb, offset + uLenF + 4, bLittleEndian);
ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %" G_GINT64_MODIFIER "x (%" G_GINT64_MODIFIER "d)",
strPrm, uVal64, uVal64);
tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
- proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmid, tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmunused, tvb, offset + 12, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_int64, tvb, offset + uLenF + 4, 8, bLittleEndian);
-
- /*offset+=uLenF+4+8;*/
}
break;
case MQ_MQCFT_INTEGER64_LIST:
{
guint32 u2;
- uCnt=tvb_get_guint32_endian(tvb, offset, bLittleEndian);
- ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s Cnt(%d)",strPrm,uCnt);
+ guint32 uDigit;
+ header_field_info *hfinfo;
+
+ hfinfo = proto_registrar_get_nth(hf_mq_pcf_int64list);
+
+ uCnt = tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
+ ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s Cnt(%d)", strPrm, uCnt);
tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+ uDigit=dissect_mqpcf_getDigits(uCnt);
- proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(tree, hf_mq_pcf_prmid, tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmtyp , tvb, offset , 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmlen , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(tree, hf_mq_pcf_prmid , tvb, offset + 8, 4, bLittleEndian);
proto_tree_add_item(tree, hf_mq_pcf_prmcount, tvb, offset + 12, 4, bLittleEndian);
- offset+=uLenF+4;
- for (u2=0;u2<uCnt && u2<mq_pcf_maxlst;u2++)
+ offset += uLenF + 4;
+ for (u2 = 0; u2 < uCnt && u2 < mq_pcf_maxlst; u2++)
{
- proto_tree_add_item(tree, hf_mq_pcf_int64list, tvb, offset, 8, bLittleEndian);
- offset+=8;
+ uVal64 = tvb_get_guint64_endian(tvb, offset, bLittleEndian);
+ proto_tree_add_int64_format(tree, hf_mq_pcf_int64list, tvb, offset, 8, uVal64,
+ "%s[%*d]: %" G_GINT64_MODIFIER "d",hfinfo->name, uDigit, u2+1, uVal64);
+ offset += 8;
}
- if (u2!=uCnt)
+ if (u2 != uCnt)
{
ti = proto_tree_add_text(tree, tvb, offset, uLen, sMaxLst, u2, uCnt);
expert_add_info(pinfo, ti, &ei_mq_pcf_MaxI64);
@@ -375,18 +498,18 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
}
break;
}
- offset=tOfs+uLen;
+ offset = tOfs+uLen;
}
- if (u!=uCount)
+ if (u != uCount)
{
ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, sMaxPrm, u, uCount);
expert_add_info(pinfo, ti, &ei_mq_pcf_MaxPrm);
}
}
-static void dissect_mqpcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+
+static void dissect_mqpcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, struct mqinfo* mqinfo)
{
gint offset = 0;
- struct mqinfo* mqinfo = (struct mqinfo *)pinfo->private_data;
gboolean bLittleEndian;
bLittleEndian = ((mqinfo->encoding & MQ_MQENC_INTEGER_MASK)==MQ_MQENC_INTEGER_REVERSED)?ENC_LITTLE_ENDIAN:ENC_BIG_ENDIAN;
@@ -398,45 +521,74 @@ static void dissect_mqpcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tree)
{
- proto_item *ti = NULL;
- proto_tree *mq_tree = NULL;
- proto_tree *mqroot_tree = NULL;
- guint32 uCount;
+ proto_item *ti;
+ proto_tree *mq_tree;
+ proto_tree *mqroot_tree;
+ char sTmp[256];
+ guint32 uCnt;
+ guint32 uTyp;
+ guint32 uCmd;
+ guint32 uCC;
+ guint32 uRC;
+
+ uTyp=tvb_get_guint32_endian(tvb, offset , bLittleEndian);
+ uCmd=tvb_get_guint32_endian(tvb, offset + 12, bLittleEndian);
+ uCC =tvb_get_guint32_endian(tvb, offset + 24, bLittleEndian);
+ uRC =tvb_get_guint32_endian(tvb, offset + 28, bLittleEndian);
+ uCnt=tvb_get_guint32_endian(tvb, offset + 32, bLittleEndian);
+
+ if (uCC || uRC)
+ {
+ 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_const(uCmd,GET_VALSV(mqcmd),"Unknown"),
+ uCnt,
+ uCC,val_to_str_const(uCC,GET_VALSV(mqcc),"Unknown"),
+ uRC,val_to_str_const(uRC,GET_VALSV(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_const(uCmd,GET_VALSV(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(iCommand, mq_mqcmd_vals, "Unknown (0x%02x)"));
+
+ proto_item_append_text(ti, " (%s)", val_to_str(iCommand, GET_VALSV(mqcmd), "Unknown (0x%02x)"));
mqroot_tree = proto_item_add_subtree(ti, ett_mqpcf);
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeMQCFH, MQ_TEXT_CFH);
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeMQCFH, "%s",sTmp);
mq_tree = proto_item_add_subtree(ti, ett_mqpcf_cfh);
- uCount=tvb_get_guint32_endian(tvb, offset+32, bLittleEndian); /* Count of parameter structures */
-
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_type, tvb, offset + 0, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_length, tvb, offset + 4, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_version, tvb, offset + 8, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_command, tvb, offset + 12, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_msgseqnumber, tvb, offset + 16, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_control, tvb, offset + 20, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_compcode, tvb, offset + 24, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_reason, tvb, offset + 28, 4, bLittleEndian);
- proto_tree_add_item(mq_tree, hf_mqpcf_cfh_paramcount, tvb, offset + 32, 4, bLittleEndian);
- dissect_mqpcf_parm(tvb, pinfo, mqroot_tree, offset + iSizeMQCFH, uCount, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_type , tvb, offset + 0, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_length , tvb, offset + 4, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_version , tvb, offset + 8, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_command , tvb, offset + 12, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_MsgSeqNbr, tvb, offset + 16, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_control , tvb, offset + 20, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_compcode , tvb, offset + 24, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_reason , tvb, offset + 28, 4, bLittleEndian);
+ proto_tree_add_item(mq_tree, hf_mqpcf_cfh_ParmCount, tvb, offset + 32, 4, bLittleEndian);
+ dissect_mqpcf_parm(tvb, pinfo, mqroot_tree, offset + iSizeMQCFH, uCnt, bLittleEndian);
}
}
}
-static gboolean dissect_mqpcf_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+static gboolean dissect_mqpcf_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
if (tvb_length(tvb) >= 36)
{
- struct mqinfo* mqinfo = (struct mqinfo *)pinfo->private_data;
+ struct mqinfo* mqinfo = (struct mqinfo *)data;
if (strncmp((const char*)mqinfo->format, MQ_MQFMT_ADMIN, 8) == 0
|| strncmp((const char*)mqinfo->format, MQ_MQFMT_EVENT, 8) == 0
|| strncmp((const char*)mqinfo->format, MQ_MQFMT_PCF, 8) == 0)
{
/* Dissect the packet */
- dissect_mqpcf(tvb, pinfo, tree);
+ dissect_mqpcf(tvb, pinfo, tree, mqinfo);
return TRUE;
}
}
@@ -447,44 +599,48 @@ void proto_register_mqpcf(void)
{
expert_module_t* expert_mqpcf;
- static hf_register_info hf[] = {
- { &hf_mqpcf_cfh_type , { "Type....", "mqpcf.cfh.type", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(mqcft)), 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, VALS(&GET_VALSV(mqcmd)), 0x0, "CFH command", HFILL }},
- { &hf_mqpcf_cfh_msgseqnumber, { "MsgSeqNr", "mqpcf.cfh.msgseqnumber", FT_UINT32, BASE_DEC, NULL, 0x0, "CFH message sequence number", HFILL }},
- { &hf_mqpcf_cfh_control , { "Control.", "mqpcf.cfh.control", FT_UINT32, BASE_DEC, NULL, 0x0, "CFH control", HFILL }},
- { &hf_mqpcf_cfh_compcode, { "CompCode", "mqpcf.cfh.compcode", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(mqcc)), 0x0, "CFH completion code", HFILL }},
- { &hf_mqpcf_cfh_reason , { "ReasCode", "mqpcf.cfh.reasoncode", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(mqrc)), 0x0, "CFH reason code", HFILL }},
- { &hf_mqpcf_cfh_paramcount, { "ParmCnt.", "mqpcf.cfh.paramcount", FT_UINT32, BASE_DEC, NULL, 0x0, "CFH parameter count", HFILL }},
- { &hf_mq_pcf_prmtyp , { "PrmTyp..", "mqpcf.parm.type", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(PrmTyp)), 0x0, "MQPCF parameter type", HFILL }},
- { &hf_mq_pcf_prmlen , { "PrmLen..", "mqpcf.parm.len", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter length", HFILL }},
- { &hf_mq_pcf_prmid , { "PrmID...", "mqpcf.parm.id", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(PrmId)), 0x0, "MQPCF parameter id", HFILL }},
- { &hf_mq_pcf_prmccsid , { "PrmCCSID", "mqpcf.parm.ccsid", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter ccsid", HFILL }},
- { &hf_mq_pcf_prmstrlen , { "PrmStrLn", "mqpcf.parm.strlen", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter strlen", HFILL }},
- { &hf_mq_pcf_prmcount , { "PrmCount", "mqpcf.parm.count", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter count", HFILL }},
- { &hf_mq_pcf_prmunused , { "PrmUnuse", "mqpcf.parm.unused", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter unused", HFILL }},
- { &hf_mq_pcf_string , { "String..", "mqpcf.parm.string", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MQPCF parameter string", HFILL }},
- { &hf_mq_pcf_stringlist , { "StrList..", "mqpcf.parm.stringlist", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MQPCF parameter string list", HFILL }},
- { &hf_mq_pcf_int , { "Integer.", "mqpcf.parm.int", FT_NONE, BASE_NONE, NULL, 0x0, "MQPCF parameter int", HFILL }},
- { &hf_mq_pcf_intlist , { "IntList.", "mqpcf.parm.intlist", FT_NONE, BASE_NONE, NULL, 0x0, "MQPCF parameter int list", HFILL }},
- { &hf_mq_pcf_bytestring , { "ByteStr..", "mqpcf.parm.bytestring", FT_BYTES, BASE_NONE, NULL, 0x0, "MQPCF parameter byte string", HFILL }},
- { &hf_mq_pcf_int64 , { "Int64...", "mqpcf.parm.int64", FT_UINT64, BASE_HEX | BASE_DEC, NULL, 0x0, "MQPCF parameter int64", HFILL }},
- { &hf_mq_pcf_int64list , { "Int64Lst", "mqpcf.parm.int64list", FT_UINT64, BASE_HEX | BASE_DEC, NULL, 0x0, "MQPCF parameter int64 list", HFILL }},
+ static hf_register_info hf[] =
+ {
+ { &hf_mqpcf_cfh_type , { "Type.....", "mqpcf.cfh.type", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(mqcft)), 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, VALS(&GET_VALSV(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, NULL, 0x0, "CFH control", HFILL }},
+ { &hf_mqpcf_cfh_compcode , { "CompCode.", "mqpcf.cfh.compcode", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(mqcc)), 0x0, "CFH completion code", HFILL }},
+ { &hf_mqpcf_cfh_reason , { "ReasCode.", "mqpcf.cfh.reasoncode", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(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, VALS(&GET_VALSV(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, VALS(&GET_VALSV(PrmId)), 0x0, "MQPCF parameter id", HFILL }},
+ { &hf_mq_pcf_filterop , { "FilterOP.", "mqpcf.filter.op", FT_UINT32, BASE_DEC, VALS(&GET_VALSV(FilterOP)), 0x0, "MQPCF Filter operator", HFILL }},
+ { &hf_mq_pcf_prmccsid , { "ParmCCSID", "mqpcf.parm.ccsid", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter ccsid", HFILL }},
+ { &hf_mq_pcf_prmstrlen , { "ParmStrLn", "mqpcf.parm.strlen", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter strlen", HFILL }},
+ { &hf_mq_pcf_prmcount , { "ParmCount", "mqpcf.parm.count", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter count", HFILL }},
+ { &hf_mq_pcf_prmunused , { "ParmUnuse", "mqpcf.parm.unused", FT_UINT32, BASE_DEC, NULL, 0x0, "MQPCF parameter unused", HFILL }},
+ { &hf_mq_pcf_string , { "String...", "mqpcf.parm.string", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MQPCF parameter string", HFILL }},
+ { &hf_mq_pcf_stringlist , { "StrList..", "mqpcf.parm.stringlist", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MQPCF parameter string list", HFILL }},
+ { &hf_mq_pcf_int , { "Integer..", "mqpcf.parm.int", FT_INT32, BASE_DEC, NULL, 0x0, "MQPCF parameter int", HFILL }},
+ { &hf_mq_pcf_intlist , { "IntList..", "mqpcf.parm.intlist", FT_INT32, BASE_DEC, NULL, 0x0, "MQPCF parameter int list", HFILL }},
+ { &hf_mq_pcf_bytestring , { "ByteStr..", "mqpcf.parm.bytestring", FT_BYTES, BASE_NONE, NULL, 0x0, "MQPCF parameter byte string", HFILL }},
+ { &hf_mq_pcf_int64 , { "Int64....", "mqpcf.parm.int64", FT_INT64, BASE_DEC, NULL, 0x0, "MQPCF parameter int64", HFILL }},
+ { &hf_mq_pcf_int64list , { "Int64List", "mqpcf.parm.int64list", FT_INT64, BASE_DEC, NULL, 0x0, "MQPCF parameter int64 list", HFILL }},
};
- static gint *ett[] = {
+ static gint *ett[] =
+ {
&ett_mqpcf,
&ett_mqpcf_prm,
&ett_mqpcf_cfh,
};
- static ei_register_info ei[] =
+ static ei_register_info ei[] =
{
- { &ei_mq_pcf_prmln0, { "mqpcf.parm.len0", PI_MALFORMED, PI_ERROR, "MQPCF Parameter length is 0", EXPFILL }},
+ { &ei_mq_pcf_prmln0, { "mqpcf.parm.len0", PI_MALFORMED, PI_ERROR, "MQPCF Parameter length is 0", EXPFILL }},
{ &ei_mq_pcf_MaxInt, { "mqpcf.parm.IntList", PI_UNDECODED, PI_WARN, "MQPCF Parameter Integer list exhausted", EXPFILL }},
{ &ei_mq_pcf_MaxStr, { "mqpcf.parm.StrList", PI_UNDECODED, PI_WARN, "MQPCF Parameter String list exhausted", EXPFILL }},
{ &ei_mq_pcf_MaxI64, { "mqpcf.parm.Int64List", PI_UNDECODED, PI_WARN, "MQPCF Parameter Int64 list exhausted", EXPFILL }},
{ &ei_mq_pcf_MaxPrm, { "mqpcf.parm.MaxPrm", PI_UNDECODED, PI_WARN, "MQPCF Max number of parameter exhausted", EXPFILL }},
- };
+ };
module_t *mq_pcf_module;
@@ -493,7 +649,7 @@ void proto_register_mqpcf(void)
proto_register_subtree_array(ett, array_length(ett));
expert_mqpcf = expert_register_protocol(proto_mqpcf);
- expert_register_field_array(expert_mqpcf, ei, array_length(ei));
+ expert_register_field_array(expert_mqpcf, ei, array_length(ei));
mq_pcf_module = prefs_register_protocol(proto_mqpcf, NULL);
prefs_register_uint_preference(mq_pcf_module,"maxprm",
diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c
index f5c0441798..6b25906938 100644
--- a/epan/dissectors/packet-mq.c
+++ b/epan/dissectors/packet-mq.c
@@ -78,25 +78,31 @@
#include <epan/dissectors/packet-dcerpc.h>
#include <epan/expert.h>
#include <epan/dissector_filters.h>
+#include <epan/show_exception.h>
#include <epan/prefs.h>
#include <epan/wmem/wmem.h>
+#include <epan/strutil.h>
+
#include "packet-tcp.h"
#include "packet-mq.h"
static int proto_mq = -1;
-static int hf_mq_tsh_structid = -1;
+static int hf_mq_tsh_StructID = -1;
static int hf_mq_tsh_mqseglen = -1;
static int hf_mq_tsh_convid = -1;
static int hf_mq_tsh_requestid = -1;
static int hf_mq_tsh_byteorder = -1;
static int hf_mq_tsh_opcode = -1;
static int hf_mq_tsh_ctlflgs1 = -1;
+
static int hf_mq_tsh_ctlflgs2 = -1;
static int hf_mq_tsh_luwid = -1;
static int hf_mq_tsh_encoding = -1;
static int hf_mq_tsh_ccsid = -1;
-static int hf_mq_tsh_padding = -1;
+static int hf_mq_tsh_reserved = -1;
+
+/* Transmission Segment Control Flags 1 */
static int hf_mq_tsh_tcf_confirmreq = -1;
static int hf_mq_tsh_tcf_error = -1;
static int hf_mq_tsh_tcf_reqclose = -1;
@@ -105,71 +111,174 @@ static int hf_mq_tsh_tcf_first = -1;
static int hf_mq_tsh_tcf_last = -1;
static int hf_mq_tsh_tcf_reqacc = -1;
static int hf_mq_tsh_tcf_dlq = -1;
+static gint *pf_flds_tcf[] =
+{
+ &hf_mq_tsh_tcf_dlq ,
+ &hf_mq_tsh_tcf_reqacc ,
+ &hf_mq_tsh_tcf_last ,
+ &hf_mq_tsh_tcf_first ,
+ &hf_mq_tsh_tcf_closechann,
+ &hf_mq_tsh_tcf_reqclose ,
+ &hf_mq_tsh_tcf_error ,
+ &hf_mq_tsh_tcf_confirmreq,
+ NULL
+};
+
+/* 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_CmitIntv = -1;
+static gint *pf_flds_tcf2[] =
+{
+ &hf_mq_tsh_tcf2_CmitIntv,
+ &hf_mq_tsh_tcf2_CSH ,
+ &hf_mq_tsh_tcf2_MsgComp ,
+ &hf_mq_tsh_tcf2_HdrComp ,
+ NULL
+};
+
static int hf_mq_api_replylen = -1;
static int hf_mq_api_compcode = -1;
static int hf_mq_api_reascode = -1;
static int hf_mq_api_objecthdl = -1;
-static int hf_mq_socket_unknown1 = -1;
-static int hf_mq_socket_unknown2 = -1;
-static int hf_mq_socket_unknown3 = -1;
-static int hf_mq_socket_unknown4 = -1;
-static int hf_mq_socket_unknown5 = -1;
-static int hf_mq_msh_structid = -1;
+static int hf_mq_socket_conversid = -1;
+static int hf_mq_socket_requestid = -1;
+static int hf_mq_socket_type = -1;
+static int hf_mq_socket_parm1 = -1;
+static int hf_mq_socket_parm2 = -1;
+static int hf_mq_msh_StructID = -1;
static int hf_mq_msh_seqnum = -1;
static int hf_mq_msh_datalength = -1;
static int hf_mq_msh_unknown1 = -1;
static int hf_mq_msh_msglength = -1;
-static int hf_mq_xqh_structid = -1;
+static int hf_mq_xqh_StructID = -1;
static int hf_mq_xqh_version = -1;
static int hf_mq_xqh_remoteq = -1;
static int hf_mq_xqh_remoteqmgr = -1;
-static int hf_mq_id_structid = -1;
-static int hf_mq_id_level = -1;
-static int hf_mq_id_flags = -1;
-static int hf_mq_id_unknown02 = -1;
-static int hf_mq_id_ieflags = -1;
-static int hf_mq_id_unknown04 = -1;
+
+static int hf_mq_id_StructID = -1;
+static int hf_mq_id_FapLevel = -1;
+static int hf_mq_id_icf1 = -1;
+static int hf_mq_id_Eicf1 = -1;
+static int hf_mq_id_ief1 = -1;
+static int hf_mq_id_Reserved = -1;
static int hf_mq_id_MaxMsgBatch = -1;
static int hf_mq_id_MaxTrSize = -1;
-static int hf_mq_id_maxmsgsize = -1;
+static int hf_mq_id_MaxMsgSize = -1;
static int hf_mq_id_SeqWrapVal = -1;
static int hf_mq_id_channel = -1;
-static int hf_mq_id_capflags = -1;
+static int hf_mq_id_icf2 = -1;
+static int hf_mq_id_Eicf2 = -1;
static int hf_mq_id_ccsid = -1;
static int hf_mq_id_qmgrname = -1;
static int hf_mq_id_HBInterval = -1;
-static int hf_mq_id_unknown06 = -1;
-static int hf_mq_id_mqmvers = -1;
+static int hf_mq_id_EFLLength = -1;
+static int hf_mq_id_ief2 = -1;
+static int hf_mq_id_Reserved1 = -1;
+static int hf_mq_id_HdrCprsLst = -1;
+static int hf_mq_id_MsgCprsLst = -1;
+static int hf_mq_id_Reserved2 = -1;
+static int hf_mq_id_SSLKeyRst = -1;
+static int hf_mq_id_ConvBySkt = -1;
+static int hf_mq_id_icf3 = -1;
+static int hf_mq_id_Eicf3 = -1;
+static int hf_mq_id_Reserved3 = -1;
+static int hf_mq_id_ProcessId = -1;
+static int hf_mq_id_ThreadId = -1;
+static int hf_mq_id_TraceId = -1;
+static int hf_mq_id_ProdId = -1;
static int hf_mq_id_mqmid = -1;
-static int hf_mq_id_unknown07 = -1;
-static int hf_mq_id_unknown08 = -1;
-static int hf_mq_id_unknown09 = -1;
-static int hf_mq_id_unknown10 = -1;
-static int hf_mq_id_unknown11 = -1;
-static int hf_mq_id_unknown12 = -1;
-static int hf_mq_id_unknown13 = -1;
-static int hf_mq_id_unknown14 = -1;
-static int hf_mq_id_unknown15 = -1;
-static int hf_mq_id_unknown16 = -1;
-static int hf_mq_id_unknown17 = -1;
-static int hf_mq_id_unknown18 = -1;
-static int hf_mq_id_unknown19 = -1;
-
-static int hf_mq_id_icf_msgseq = -1;
-static int hf_mq_id_icf_convcap = -1;
-static int hf_mq_id_icf_splitmsg = -1;
-static int hf_mq_id_icf_mqreq = -1;
-static int hf_mq_id_icf_svrsec = -1;
-static int hf_mq_id_icf_runtime = -1;
-static int hf_mq_id_ief_ccsid = -1;
-static int hf_mq_id_ief_enc = -1;
-static int hf_mq_id_ief_mxtrsz = -1;
-static int hf_mq_id_ief_fap = -1;
-static int hf_mq_id_ief_mxmsgsz = -1;
-static int hf_mq_id_ief_mxmsgpb = -1;
-static int hf_mq_id_ief_seqwrap = -1;
-static int hf_mq_id_ief_hbint = -1;
-static int hf_mq_uid_structid = -1;
+
+/* Initial Data Capability Flag 1 */
+static int hf_mq_id_icf1_msgseq = -1;
+static int hf_mq_id_icf1_convcap = -1;
+static int hf_mq_id_icf1_splitmsg = -1;
+static int hf_mq_id_icf1_RqstInit = -1;
+static int hf_mq_id_icf1_RqstSecu = -1;
+static int hf_mq_id_icf1_mqreq = -1;
+static int hf_mq_id_icf1_svrsec = -1;
+static int hf_mq_id_icf1_runtime = -1;
+static gint *pf_flds_icf1[] =
+{
+ &hf_mq_id_icf1_runtime ,
+ &hf_mq_id_icf1_svrsec ,
+ &hf_mq_id_icf1_mqreq ,
+ &hf_mq_id_icf1_RqstSecu,
+ &hf_mq_id_icf1_RqstInit,
+ &hf_mq_id_icf1_splitmsg,
+ &hf_mq_id_icf1_convcap ,
+ &hf_mq_id_icf1_msgseq ,
+ NULL
+};
+
+/* Initial Data Error Flag 1 */
+static int hf_mq_id_ief1_ccsid = -1;
+static int hf_mq_id_ief1_enc = -1;
+static int hf_mq_id_ief1_mxtrsz = -1;
+static int hf_mq_id_ief1_fap = -1;
+static int hf_mq_id_ief1_mxmsgsz = -1;
+static int hf_mq_id_ief1_mxmsgpb = -1;
+static int hf_mq_id_ief1_seqwrap = -1;
+static int hf_mq_id_ief1_hbint = -1;
+static gint *pf_flds_ief1[] =
+{
+ &hf_mq_id_ief1_hbint ,
+ &hf_mq_id_ief1_seqwrap,
+ &hf_mq_id_ief1_mxmsgpb,
+ &hf_mq_id_ief1_mxmsgsz,
+ &hf_mq_id_ief1_fap ,
+ &hf_mq_id_ief1_mxtrsz ,
+ &hf_mq_id_ief1_enc ,
+ &hf_mq_id_ief1_ccsid ,
+ NULL
+};
+
+/* 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_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_CanTrcRte = -1;
+static gint *pf_flds_icf2[] =
+{
+ &hf_mq_id_icf2_CanTrcRte,
+ &hf_mq_id_icf2_SPIRqst ,
+ &hf_mq_id_icf2_XARunTApp,
+ &hf_mq_id_icf2_XARequest,
+ &hf_mq_id_icf2_DualUOW ,
+ &hf_mq_id_icf2_RespConv ,
+ &hf_mq_id_icf2_FstMsgReq,
+ &hf_mq_id_icf2_CanDstLst,
+ NULL
+};
+
+/* 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 gint *pf_flds_ief2[] =
+{
+ &hf_mq_id_ief2_HdrCmpLst,
+ &hf_mq_id_ief2_MsgCmpLst,
+ &hf_mq_id_ief2_SSLReset ,
+ NULL
+};
+
+/* Initial Data Capability Flag 3 */
+static int hf_mq_id_icf3_CanMsgPrp = -1;
+static int hf_mq_id_icf3_Unknown02 = -1;
+static gint *pf_flds_icf3[] =
+{
+ &hf_mq_id_icf3_Unknown02,
+ &hf_mq_id_icf3_CanMsgPrp,
+ NULL
+};
+
+static int hf_mq_uid_StructID = -1;
static int hf_mq_uid_userid = -1;
static int hf_mq_uid_password = -1;
static int hf_mq_uid_longuserid = -1;
@@ -183,7 +292,7 @@ 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_options = -1;
-static int hf_mq_fcno_structid = -1;
+static int hf_mq_fcno_StructID = -1;
static int hf_mq_fcno_msgid = -1;
static int hf_mq_fcno_mqmid = -1;
static int hf_mq_fcno_unknown00 = -1;
@@ -196,10 +305,11 @@ static int hf_mq_inq_charlen = -1;
static int hf_mq_inq_sel = -1;
static int hf_mq_inq_intvalue = -1;
static int hf_mq_inq_charvalues = -1;
+
static int hf_mq_spi_verb = -1;
static int hf_mq_spi_version = -1;
static int hf_mq_spi_length = -1;
-static int hf_mq_spi_base_structid = -1;
+static int hf_mq_spi_base_StructID = -1;
static int hf_mq_spi_base_version = -1;
static int hf_mq_spi_base_length = -1;
static int hf_mq_spi_spqo_nbverb = -1;
@@ -217,9 +327,18 @@ static int hf_mq_spi_spgi_batchint = -1;
static int hf_mq_spi_spgi_maxmsgsz = -1;
static int hf_mq_spi_spgo_options = -1;
static int hf_mq_spi_spgo_size = -1;
+
static int hf_mq_spi_opt_blank = -1;
static int hf_mq_spi_opt_syncp = -1;
static int hf_mq_spi_opt_deferred = -1;
+static gint *pf_flds_spiopt[] =
+{
+ &hf_mq_spi_opt_deferred,
+ &hf_mq_spi_opt_syncp,
+ &hf_mq_spi_opt_blank,
+ NULL
+};
+
static int hf_mq_put_length = -1;
static int hf_mq_close_options = -1;
@@ -228,22 +347,31 @@ 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 gint *pf_flds_clsopt[] =
+{
+ &hf_mq_close_options_QUIESCE ,
+ &hf_mq_close_options_REMOVE_SUB ,
+ &hf_mq_close_options_KEEP_SUB ,
+ &hf_mq_close_options_DELETE_PURGE,
+ &hf_mq_close_options_DELETE ,
+ NULL
+};
static int hf_mq_open_options = -1;
static int hf_mq_open_options_INPUT_SHARED = -1;
-static int hf_mq_open_options_INPUT_AS_Q_DEF = -1;
+static int hf_mq_open_options_INPUT_AS_Q_DEF = -1;
static int hf_mq_open_options_INPUT_EXCLUSIVE = -1;
static int hf_mq_open_options_BROWSE = -1;
static int hf_mq_open_options_OUTPUT = -1;
static int hf_mq_open_options_INQUIRE = -1;
static int hf_mq_open_options_SET = -1;
-static int hf_mq_open_options_SAVE_ALL_CTX = -1;
-static int hf_mq_open_options_PASS_IDENT_CTX = -1;
-static int hf_mq_open_options_PASS_ALL_CTX = -1;
-static int hf_mq_open_options_SET_IDENT_CTX = -1;
+static int hf_mq_open_options_SAVE_ALL_CTX = -1;
+static int hf_mq_open_options_PASS_IDENT_CTX = -1;
+static int hf_mq_open_options_PASS_ALL_CTX = -1;
+static int hf_mq_open_options_SET_IDENT_CTX = -1;
static int hf_mq_open_options_SET_ALL_CONTEXT = -1;
-static int hf_mq_open_options_ALT_USER_AUTH= -1;
-static int hf_mq_open_options_FAIL_IF_QUIESC = -1;
+static int hf_mq_open_options_ALT_USER_AUTH = -1;
+static int hf_mq_open_options_FAIL_IF_QUIESC = -1;
static int hf_mq_open_options_BIND_ON_OPEN = -1;
static int hf_mq_open_options_BIND_NOT_FIXED = -1;
static int hf_mq_open_options_RESOLVE_NAMES = -1;
@@ -253,8 +381,35 @@ static int hf_mq_open_options_NO_READ_AHEAD = -1;
static int hf_mq_open_options_READ_AHEAD = -1;
static int hf_mq_open_options_NO_MULTICAST = -1;
static int hf_mq_open_options_BIND_ON_GROUP = -1;
+static gint *pf_flds_opnopt[] =
+{
+ &hf_mq_open_options_BIND_ON_GROUP ,
+ &hf_mq_open_options_NO_MULTICAST ,
+ &hf_mq_open_options_READ_AHEAD ,
+ &hf_mq_open_options_NO_READ_AHEAD ,
+ &hf_mq_open_options_RESOLVE_LOCAL_Q,
+ &hf_mq_open_options_CO_OP ,
+ &hf_mq_open_options_RESOLVE_NAMES ,
+ &hf_mq_open_options_BIND_NOT_FIXED ,
+ &hf_mq_open_options_BIND_ON_OPEN ,
+ &hf_mq_open_options_FAIL_IF_QUIESC ,
+ &hf_mq_open_options_ALT_USER_AUTH ,
+ &hf_mq_open_options_SET_ALL_CONTEXT,
+ &hf_mq_open_options_SET_IDENT_CTX ,
+ &hf_mq_open_options_PASS_ALL_CTX ,
+ &hf_mq_open_options_PASS_IDENT_CTX ,
+ &hf_mq_open_options_SAVE_ALL_CTX ,
+ &hf_mq_open_options_SET ,
+ &hf_mq_open_options_INQUIRE ,
+ &hf_mq_open_options_OUTPUT ,
+ &hf_mq_open_options_BROWSE ,
+ &hf_mq_open_options_INPUT_EXCLUSIVE,
+ &hf_mq_open_options_INPUT_SHARED ,
+ &hf_mq_open_options_INPUT_AS_Q_DEF ,
+ NULL
+};
-static int hf_mq_fopa_structid = -1;
+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;
@@ -272,16 +427,16 @@ static int hf_mq_status_length = -1;
static int hf_mq_status_code = -1;
static int hf_mq_status_value = -1;
-static int hf_mq_caut_structid = -1;
-static int hf_mq_caut_unknown1 = -1;
-static int hf_mq_caut_userlen1 = -1;
-static int hf_mq_caut_pswdlen1 = -1;
-static int hf_mq_caut_userlen2 = -1;
-static int hf_mq_caut_pswdlen2 = -1;
+static int hf_mq_caut_StructID = -1;
+static int hf_mq_caut_AuthType = -1;
+static int hf_mq_caut_UsrMaxLen = -1;
+static int hf_mq_caut_PwdMaxLen = -1;
+static int hf_mq_caut_UsrLength = -1;
+static int hf_mq_caut_PwdLength = -1;
static int hf_mq_caut_usr = -1;
static int hf_mq_caut_psw = -1;
-static int hf_mq_od_structid = -1;
+static int hf_mq_od_StructID = -1;
static int hf_mq_od_version = -1;
static int hf_mq_od_objecttype = -1;
static int hf_mq_od_objectname = -1;
@@ -299,7 +454,6 @@ static int hf_mq_od_resprecptr = -1;
static int hf_mq_od_altsecurid = -1;
static int hf_mq_od_resolvqname = -1;
static int hf_mq_od_resolvqmgrnm = -1;
-
static int hf_mq_od_resolvobjtyp = -1;
static int hf_mq_or_objname= -1;
@@ -311,7 +465,7 @@ static int hf_mq_pmr_correlid = -1;
static int hf_mq_pmr_groupid = -1;
static int hf_mq_pmr_feedback = -1;
static int hf_mq_pmr_acttoken = -1;
-static int hf_mq_md_structid = -1;
+static int hf_mq_md_StructID = -1;
static int hf_mq_md_version = -1;
static int hf_mq_md_report = -1;
static int hf_mq_md_msgtype = -1;
@@ -340,8 +494,7 @@ static int hf_mq_md_msgseqnumber = -1;
static int hf_mq_md_offset = -1;
static int hf_mq_md_msgflags = -1;
static int hf_mq_md_origlen = -1;
-/* static int hf_mq_md_lastformat = -1; */
-static int hf_mq_dlh_structid = -1;
+static int hf_mq_dlh_StructID = -1;
static int hf_mq_dlh_version = -1;
static int hf_mq_dlh_reason = -1;
static int hf_mq_dlh_destq = -1;
@@ -357,9 +510,21 @@ static int hf_mq_dh_putmsgrecfld = -1;
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_gmo_structid = -1;
+static int hf_mq_gmo_StructID = -1;
static int hf_mq_gmo_version = -1;
static int hf_mq_gmo_options = -1;
+static int hf_mq_gmo_waitinterval = -1;
+static int hf_mq_gmo_signal1 = -1;
+static int hf_mq_gmo_signal2 = -1;
+static int hf_mq_gmo_resolvqname = -1;
+static int hf_mq_gmo_matchoptions = -1;
+static int hf_mq_gmo_groupstatus = -1;
+static int hf_mq_gmo_segmstatus = -1;
+static int hf_mq_gmo_segmentation = -1;
+static int hf_mq_gmo_reserved = -1;
+static int hf_mq_gmo_msgtoken = -1;
+static int hf_mq_gmo_returnedlen = -1;
+
static int hf_mq_gmo_options_PROPERTIES_COMPATIBILITY= -1;
static int hf_mq_gmo_options_PROPERTIES_IN_HANDLE = -1;
static int hf_mq_gmo_options_NO_PROPERTIES = -1;
@@ -388,25 +553,57 @@ static int hf_mq_gmo_options_SET_SIGNAL = -1;
static int hf_mq_gmo_options_NO_SYNCPOINT = -1;
static int hf_mq_gmo_options_SYNCPOINT = -1;
static int hf_mq_gmo_options_WAIT = -1;
-static int hf_mq_gmo_waitinterval = -1;
-static int hf_mq_gmo_signal1 = -1;
-static int hf_mq_gmo_signal2 = -1;
-static int hf_mq_gmo_resolvqname = -1;
-static int hf_mq_gmo_matchoptions = -1;
+static gint *pf_flds_gmoopt[] =
+{
+ &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY,
+ &hf_mq_gmo_options_PROPERTIES_IN_HANDLE ,
+ &hf_mq_gmo_options_NO_PROPERTIES ,
+ &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 ,
+ &hf_mq_gmo_options_UNMARKED_BROWSE_MSG ,
+ &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE ,
+ &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP ,
+ &hf_mq_gmo_options_MARK_BROWSE_CO_OP ,
+ &hf_mq_gmo_options_MARK_BROWSE_HANDLE ,
+ &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE ,
+ &hf_mq_gmo_options_ALL_MSGS_AVAILABLE ,
+ &hf_mq_gmo_options_COMPLETE_MSG ,
+ &hf_mq_gmo_options_LOGICAL_ORDER ,
+ &hf_mq_gmo_options_CONVERT ,
+ &hf_mq_gmo_options_FAIL_IF_QUIESCING ,
+ &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT ,
+ &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR ,
+ &hf_mq_gmo_options_UNLOCK ,
+ &hf_mq_gmo_options_LOCK ,
+ &hf_mq_gmo_options_MSG_UNDER_CURSOR ,
+ &hf_mq_gmo_options_MARK_SKIP_BACKOUT ,
+ &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG ,
+ &hf_mq_gmo_options_BROWSE_NEXT ,
+ &hf_mq_gmo_options_BROWSE_FIRST ,
+ &hf_mq_gmo_options_SET_SIGNAL ,
+ &hf_mq_gmo_options_NO_SYNCPOINT ,
+ &hf_mq_gmo_options_SYNCPOINT ,
+ &hf_mq_gmo_options_WAIT ,
+ NULL
+};
+
static int hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN = -1;
static int hf_mq_gmo_matchoptions_MATCH_OFFSET = -1;
static int hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER= -1;
static int hf_mq_gmo_matchoptions_MATCH_GROUP_ID = -1;
static int hf_mq_gmo_matchoptions_MATCH_CORREL_ID = -1;
static int hf_mq_gmo_matchoptions_MATCH_MSG_ID = -1;
-static int hf_mq_gmo_groupstatus = -1;
-static int hf_mq_gmo_segmstatus = -1;
-static int hf_mq_gmo_segmentation = -1;
-static int hf_mq_gmo_reserved = -1;
-static int hf_mq_gmo_msgtoken = -1;
-static int hf_mq_gmo_returnedlen = -1;
+static gint *pf_flds_mtchopt[] =
+{
+ &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN ,
+ &hf_mq_gmo_matchoptions_MATCH_OFFSET ,
+ &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER,
+ &hf_mq_gmo_matchoptions_MATCH_GROUP_ID ,
+ &hf_mq_gmo_matchoptions_MATCH_CORREL_ID ,
+ &hf_mq_gmo_matchoptions_MATCH_MSG_ID ,
+ NULL
+};
-static int hf_mq_lpoo_structid = -1;
+static int hf_mq_lpoo_StructID = -1;
static int hf_mq_lpoo_version = -1;
static int hf_mq_lpoo_unknown1 = -1;
static int hf_mq_lpoo_unknown2 = -1;
@@ -424,31 +621,9 @@ static int hf_mq_charv_vslength = -1;
static int hf_mq_charv_vsccsid = -1;
static int hf_mq_charv_vsvalue = -1;
-static int hf_mq_pmo_structid = -1;
+static int hf_mq_pmo_StructID = -1;
static int hf_mq_pmo_version = -1;
static int hf_mq_pmo_options = -1;
-static int hf_mq_pmo_options_NOT_OWN_SUBS = -1;
-static int hf_mq_pmo_options_SUPPRESS_REPLYTO = -1;
-static int hf_mq_pmo_options_SCOPE_QMGR = -1;
-static int hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY = -1;
-static int hf_mq_pmo_options_RETAIN = -1;
-static int hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED = -1;
-static int hf_mq_pmo_options_RESOLVE_LOCAL_Q = -1;
-static int hf_mq_pmo_options_SYNC_RESPONSE = -1;
-static int hf_mq_pmo_options_ASYNC_RESPONSE = -1;
-static int hf_mq_pmo_options_LOGICAL_ORDER = -1;
-static int hf_mq_pmo_options_NO_CONTEXT = -1;
-static int hf_mq_pmo_options_FAIL_IF_QUIESCING = -1;
-static int hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY= -1;
-static int hf_mq_pmo_options_SET_ALL_CONTEXT = -1;
-static int hf_mq_pmo_options_SET_IDENTITY_CONTEXT = -1;
-static int hf_mq_pmo_options_PASS_ALL_CONTEXT = -1;
-static int hf_mq_pmo_options_PASS_IDENTITY_CONTEXT = -1;
-static int hf_mq_pmo_options_NEW_CORREL_ID = -1;
-static int hf_mq_pmo_options_NEW_MSG_ID = -1;
-static int hf_mq_pmo_options_DEFAULT_CONTEXT = -1;
-static int hf_mq_pmo_options_NO_SYNCPOINT = -1;
-static int hf_mq_pmo_options_SYNCPOINT = -1;
static int hf_mq_pmo_timeout = -1;
static int hf_mq_pmo_context = -1;
static int hf_mq_pmo_knowndstcnt = -1;
@@ -462,7 +637,7 @@ 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_head_structid = -1;
+static int hf_mq_head_StructID = -1;
static int hf_mq_head_version = -1;
static int hf_mq_head_length = -1;
static int hf_mq_head_encoding = -1;
@@ -475,6 +650,63 @@ static int hf_mq_xa_returnvalue = -1;
static int hf_mq_xa_tmflags = -1;
static int hf_mq_xa_rmid = -1;
static int hf_mq_xa_count = -1;
+static int hf_mq_xa_xid_formatid = -1;
+static int hf_mq_xa_xid_glbxid_len = -1;
+static int hf_mq_xa_xid_brq_length = -1;
+static int hf_mq_xa_xid_globalxid = -1;
+static int hf_mq_xa_xid_brq = -1;
+static int hf_mq_xa_xainfo_length = -1;
+static int hf_mq_xa_xainfo_value = -1;
+
+static int hf_mq_pmo_options_NOT_OWN_SUBS = -1;
+static int hf_mq_pmo_options_SUPPRESS_REPLYTO = -1;
+static int hf_mq_pmo_options_SCOPE_QMGR = -1;
+static int hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY = -1;
+static int hf_mq_pmo_options_RETAIN = -1;
+static int hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED = -1;
+static int hf_mq_pmo_options_RESOLVE_LOCAL_Q = -1;
+static int hf_mq_pmo_options_SYNC_RESPONSE = -1;
+static int hf_mq_pmo_options_ASYNC_RESPONSE = -1;
+static int hf_mq_pmo_options_LOGICAL_ORDER = -1;
+static int hf_mq_pmo_options_NO_CONTEXT = -1;
+static int hf_mq_pmo_options_FAIL_IF_QUIESCING = -1;
+static int hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY= -1;
+static int hf_mq_pmo_options_SET_ALL_CONTEXT = -1;
+static int hf_mq_pmo_options_SET_IDENTITY_CONTEXT = -1;
+static int hf_mq_pmo_options_PASS_ALL_CONTEXT = -1;
+static int hf_mq_pmo_options_PASS_IDENTITY_CONTEXT = -1;
+static int hf_mq_pmo_options_NEW_CORREL_ID = -1;
+static int hf_mq_pmo_options_NEW_MSG_ID = -1;
+static int hf_mq_pmo_options_DEFAULT_CONTEXT = -1;
+static int hf_mq_pmo_options_NO_SYNCPOINT = -1;
+static int hf_mq_pmo_options_SYNCPOINT = -1;
+static gint *pf_flds_pmoopt[] =
+{
+ &hf_mq_pmo_options_NOT_OWN_SUBS ,
+ &hf_mq_pmo_options_SUPPRESS_REPLYTO ,
+ &hf_mq_pmo_options_SCOPE_QMGR ,
+ &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY ,
+ &hf_mq_pmo_options_RETAIN ,
+ &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED ,
+ &hf_mq_pmo_options_RESOLVE_LOCAL_Q ,
+ &hf_mq_pmo_options_SYNC_RESPONSE ,
+ &hf_mq_pmo_options_ASYNC_RESPONSE ,
+ &hf_mq_pmo_options_LOGICAL_ORDER ,
+ &hf_mq_pmo_options_NO_CONTEXT ,
+ &hf_mq_pmo_options_FAIL_IF_QUIESCING ,
+ &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY,
+ &hf_mq_pmo_options_SET_ALL_CONTEXT ,
+ &hf_mq_pmo_options_SET_IDENTITY_CONTEXT ,
+ &hf_mq_pmo_options_PASS_ALL_CONTEXT ,
+ &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT ,
+ &hf_mq_pmo_options_NEW_CORREL_ID ,
+ &hf_mq_pmo_options_NEW_MSG_ID ,
+ &hf_mq_pmo_options_DEFAULT_CONTEXT ,
+ &hf_mq_pmo_options_NO_SYNCPOINT ,
+ &hf_mq_pmo_options_SYNCPOINT ,
+ NULL
+};
+
static int hf_mq_xa_tmflags_join = -1;
static int hf_mq_xa_tmflags_endrscan = -1;
static int hf_mq_xa_tmflags_startrscan = -1;
@@ -483,69 +715,75 @@ static int hf_mq_xa_tmflags_success = -1;
static int hf_mq_xa_tmflags_resume = -1;
static int hf_mq_xa_tmflags_fail = -1;
static int hf_mq_xa_tmflags_onephase = -1;
-static int hf_mq_xa_xid_formatid = -1;
-static int hf_mq_xa_xid_glbxid_len = -1;
-static int hf_mq_xa_xid_brq_length = -1;
-static int hf_mq_xa_xid_globalxid = -1;
-static int hf_mq_xa_xid_brq = -1;
-static int hf_mq_xa_xainfo_length = -1;
-static int hf_mq_xa_xainfo_value = -1;
+static gint *pf_flds_tmflags[] =
+{
+ &hf_mq_xa_tmflags_onephase ,
+ &hf_mq_xa_tmflags_fail ,
+ &hf_mq_xa_tmflags_resume ,
+ &hf_mq_xa_tmflags_success ,
+ &hf_mq_xa_tmflags_suspend ,
+ &hf_mq_xa_tmflags_startrscan,
+ &hf_mq_xa_tmflags_endrscan ,
+ &hf_mq_xa_tmflags_join ,
+ NULL
+};
static int hf_mq_msgreq_version = -1;
static int hf_mq_msgreq_handle = -1;
-static int hf_mq_msgreq_unknown1 = -1;
-static int hf_mq_msgreq_unknown2 = -1;
-static int hf_mq_msgreq_maxlen = -1;
-static int hf_mq_msgreq_unknown4 = -1;
-static int hf_mq_msgreq_timeout = -1;
-static int hf_mq_msgreq_unknown5 = -1;
-static int hf_mq_msgreq_flags = -1;
-static int hf_mq_msgreq_lstseqnr = -1;
-static int hf_mq_msgreq_msegver = -1;
-static int hf_mq_msgreq_msegseq = -1;
+static int hf_mq_msgreq_RecvBytes = -1;
+static int hf_mq_msgreq_RqstBytes = -1;
+static int hf_mq_msgreq_MaxMsgLen = -1;
+static int hf_mq_msgreq_WaitIntrv = -1;
+static int hf_mq_msgreq_QueStatus = -1;
+static int hf_mq_msgreq_RqstFlags = -1;
+static int hf_mq_msgreq_GlbMsgIdx = -1;
+static int hf_mq_msgreq_SelectIdx = -1;
+static int hf_mq_msgreq_MQMDVers = -1;
static int hf_mq_msgreq_ccsid = -1;
static int hf_mq_msgreq_encoding = -1;
-static int hf_mq_msgreq_unknown6 = -1;
-static int hf_mq_msgreq_unknown7 = -1;
-static int hf_mq_msgreq_xfldflag = -1;
-static int hf_mq_msgreq_msgid = -1;
-static int hf_mq_msgreq_mqmid = -1;
+static int hf_mq_msgreq_MsgSeqNum = -1;
+static int hf_mq_msgreq_offset = -1;
+static int hf_mq_msgreq_mtchMsgId = -1;
+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_msgasy_version = -1;
static int hf_mq_msgasy_handle = -1;
-static int hf_mq_msgasy_unknown1 = -1;
-static int hf_mq_msgasy_curseqnr = -1;
-static int hf_mq_msgasy_payload = -1;
-static int hf_mq_msgasy_msegseq = -1;
-static int hf_mq_msgasy_msegver = -1;
-static int hf_mq_msgasy_flags = -1;
-static int hf_mq_msgasy_totlen1 = -1;
-static int hf_mq_msgasy_totlen2 = -1;
-static int hf_mq_msgasy_unknown2 = -1;
-static int hf_mq_msgasy_unknown3 = -1;
-static int hf_mq_msgasy_unknown4 = -1;
-static int hf_mq_msgasy_unknown5 = -1;
-static int hf_mq_msgasy_strFlg = -1;
-static int hf_mq_msgasy_strLen = -1;
-static int hf_mq_msgasy_strVal = -1;
-static int hf_mq_msgasy_strPad = -1;
-
-static int hf_mq_notif_vers = -1;
+static int hf_mq_msgasy_MsgIndex = -1;
+static int hf_mq_msgasy_GlbMsgIdx = -1;
+static int hf_mq_msgasy_SegLength = -1;
+static int hf_mq_msgasy_SeleIndex = -1;
+static int hf_mq_msgasy_SegmIndex = -1;
+static int hf_mq_msgasy_ReasonCod = -1;
+static int hf_mq_msgasy_ActMsgLen = -1;
+static int hf_mq_msgasy_TotMsgLen = -1;
+static int hf_mq_msgasy_MsgToken = -1;
+static int hf_mq_msgasy_Status = -1;
+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_handle = -1;
-static int hf_mq_notif_code = -1;
-static int hf_mq_notif_mqrc = -1;
+static int hf_mq_notif_code = -1;
+static int hf_mq_notif_value = -1;
static gint ett_mq = -1;
static gint ett_mq_tsh = -1;
static gint ett_mq_tsh_tcf = -1;
+static gint ett_mq_tsh_tcf2 = -1;
static gint ett_mq_api = -1;
static gint ett_mq_socket = -1;
static gint ett_mq_caut = -1;
static gint ett_mq_msh = -1;
static gint ett_mq_xqh = -1;
static gint ett_mq_id = -1;
-static gint ett_mq_id_icf = -1;
-static gint ett_mq_id_ief = -1;
+static gint ett_mq_id_icf1 = -1;
+static gint ett_mq_id_icf2 = -1;
+static gint ett_mq_id_icf3 = -1;
+static gint ett_mq_id_ief1 = -1;
+static gint ett_mq_id_ief2 = -1;
static gint ett_mq_uid = -1;
static gint ett_mq_conn = -1;
static gint ett_mq_fcno = -1;
@@ -663,8 +901,8 @@ static reassembly_table mq_reassembly_table;
#define MQ_STRUCTID_CAUT_EBCDIC 0xC3C1E4E3
#define MQ_STRUCTID_TSH_EBCDIC 0xE3E2C840
-#define MQ_STRUCTID_TSHC_EBCDIC 0xE3E2C84D
-#define MQ_STRUCTID_TSHM_EBCDIC 0xE3E2C8C3
+#define MQ_STRUCTID_TSHC_EBCDIC 0xE3E2C8C3
+#define MQ_STRUCTID_TSHM_EBCDIC 0xE3E2C8D4
#define MQ_STRUCTID_TSHx_EBCDIC 0xE3E2C800
#define MQ_STRUCTID_UID_EBCDIC 0xE4C9C440
@@ -809,21 +1047,44 @@ static reassembly_table mq_reassembly_table;
#define MQ_TCF_REQUEST_ACCEPTED 0x40
#define MQ_TCF_DLQ_USED 0x80
-#define MQ_ICF_MSG_SEQ 0x01
-#define MQ_ICF_CONVERSION_CAPABLE 0x02
-#define MQ_ICF_SPLIT_MESSAGE 0x04
-#define MQ_ICF_MQREQUEST 0x20
-#define MQ_ICF_SVRCONN_SECURITY 0x40
-#define MQ_ICF_RUNTIME 0x80
-
-#define MQ_IEF_CCSID 0x01
-#define MQ_IEF_ENCODING 0x02
-#define MQ_IEF_MAX_TRANSMISSION_SIZE 0x04
-#define MQ_IEF_FAP_LEVEL 0x08
-#define MQ_IEF_MAX_MSG_SIZE 0x10
-#define MQ_IEF_MAX_MSG_PER_BATCH 0x20
-#define MQ_IEF_SEQ_WRAP_VALUE 0x40
-#define MQ_IEF_HEARTBEAT_INTERVAL 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_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
@@ -864,6 +1125,11 @@ static reassembly_table mq_reassembly_table;
#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
@@ -985,14 +1251,40 @@ static reassembly_table mq_reassembly_table;
#define MQ_NOTIF_FAILED 14 /* 0x0e */
#define MQ_NOTIF_NODATA 11 /* 0x0b */
-/* Msg Request Extended Field present */
-#define MQ_MSGREQ_MSGID_PRESENT 0x00000001
-#define MQ_MSGREQ_MQMID_PRESENT 0x00000002
+#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(NOTIF_COMPLETED, "Completed"),
- DEF_VALS2(NOTIF_FAILED, "Failed"),
- DEF_VALS2(NOTIF_NODATA, "No Data"),
+ DEF_VALS2(NC_GET_INHIBITED, "GET_INHIBITED"),
+ DEF_VALS2(NC_GET_ALLOWED, "GET_ALLOWED"),
+ DEF_VALS2(NC_CONN_STATE, "CONN_STATE"),
+ DEF_VALS2(NC_CONN_STATE_REPLY, "CONN_STATE_REPLY"),
+ DEF_VALS2(NC_Q_STATE, "Q_STATE"),
+ DEF_VALS2(NC_Q_STATE_REPLY, "Q_STATE_REPLY"),
+ DEF_VALS2(NC_QM_QUIESCING, "QM_QUIESCING"),
+ DEF_VALS2(NC_TXN_ALLOWED, "TXN_ALLOWED"),
+ DEF_VALS2(NC_TXN_REVOKE, "TXN_REVOKE"),
+ DEF_VALS2(NC_TXN_REVOKE_REPLY, "TXN_REVOKE_REPLY"),
+ DEF_VALS2(NC_CHECK_MSG, "CHECK_MSG"),
+ DEF_VALS2(NC_BROWSE_FIRST, "BROWSE_FIRST"),
+ DEF_VALS2(NC_MESSAGE_TOO_LARGE, "MESSAGE_TOO_LARGE"),
+ DEF_VALS2(NC_STREAMING_FAILURE, "STREAMING_FAILURE"),
+ DEF_VALS2(NC_CLIENT_ASYNC_EMPTY, "CLIENT_ASYNC_EMPTY"),
DEF_VALSE;
DEF_VALSB(opcode)
@@ -1107,6 +1399,11 @@ DEF_VALSB(status)
DEF_VALS2(STATUS_ERR_CONV_ID_ERROR, "CONV_ID_ERROR"),
DEF_VALS2(STATUS_ERR_SOCKET_ACTION_TYPE, "SOCKET_ACTION_TYPE"),
DEF_VALS2(STATUS_ERR_STANDBY_Q_MGR, "STANDBY_Q_MGR"),
+
+ DEF_VALS2(STATUS_ERR_CCSID_NOT_SUPPORTED, "CCSID_NOT_SUPPORTED"),
+ DEF_VALS2(STATUS_ERR_ENCODING_INVALID, "ENCODING_INVALID"),
+ DEF_VALS2(STATUS_ERR_FAP_LEVEL, "FAP_LEVEL"),
+ DEF_VALS2(STATUS_ERR_NEGOTIATION_FAILED, "NEGOTIATION_FAILED"),
DEF_VALSE;
DEF_VALSB(xaer)
@@ -1136,7 +1433,7 @@ DEF_VALSB(xaer)
DEF_VALS2(XAER_OUTSIDE, "XAER_OUTSIDE"),
DEF_VALSE;
-DEF_VALSB(structid)
+DEF_VALSB(StructID)
DEF_VALS2(STRUCTID_CIH, MQ_TEXT_CIH),
DEF_VALS2(STRUCTID_DH, MQ_TEXT_DH),
DEF_VALS2(STRUCTID_DLH, MQ_TEXT_DLH),
@@ -1232,7 +1529,8 @@ DEF_VALSB(sidtype)
DEF_VALS1(MQSIDT_WAS_SECURITY_ID),
DEF_VALSE;
-struct mq_msg_properties {
+struct mq_msg_properties
+{
gint iOffsetEncoding; /* Message encoding */
gint iOffsetCcsid; /* Message character set */
gint iOffsetFormat; /* Message format */
@@ -1240,186 +1538,104 @@ struct mq_msg_properties {
static gint dissect_mq_MQMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset,gint ett_subtree, mq_parm_t *p_mq_parm)
{
-
- proto_item *ti = NULL;
- proto_tree *mq_tree_sub = NULL;
guint uMoOpt;
- ti = proto_tree_add_item(mq_tree, hf_mq_gmo_matchoptions, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
uMoOpt= tvb_get_guint32_endian(tvb, offset,p_mq_parm->mq_int_enc);
if (uMoOpt==0)
{
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_gmo_matchoptions, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQMO_NONE);
}
else
{
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN , tvb, offset, 4, uMoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_OFFSET , tvb, offset, 4, uMoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER, tvb, offset, 4, uMoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_GROUP_ID , tvb, offset, 4, uMoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_CORREL_ID , tvb, offset, 4, uMoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_matchoptions_MATCH_MSG_ID , tvb, offset, 4, uMoOpt);
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_gmo_matchoptions, ett_subtree, pf_flds_mtchopt, p_mq_parm->mq_int_enc);
}
return 4;
}
static gint dissect_mq_MQGMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset,gint ett_subtree, mq_parm_t *p_mq_parm)
{
-
- proto_item *ti = NULL;
- proto_tree *mq_tree_sub = NULL;
guint uGmoOpt;
- ti = proto_tree_add_item(mq_tree, hf_mq_gmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
uGmoOpt= tvb_get_guint32_endian(tvb, offset,p_mq_parm->mq_int_enc);
if (uGmoOpt==0)
{
- proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQGMO_NONE);
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ proto_tree_add_text(mq_tree, tvb, offset, 4, MQ_TEXT_MQGMO_NONE);
+ ti = proto_tree_add_item(mq_tree, hf_mq_gmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
}
else
{
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_PROPERTIES_COMPATIBILITY, tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_PROPERTIES_IN_HANDLE , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_NO_PROPERTIES , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNMARKED_BROWSE_MSG , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNMARK_BROWSE_HANDLE , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNMARK_BROWSE_CO_OP , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MARK_BROWSE_CO_OP , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MARK_BROWSE_HANDLE , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_ALL_MSGS_AVAILABLE , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_COMPLETE_MSG , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_LOGICAL_ORDER , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_CONVERT , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_FAIL_IF_QUIESCING , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_UNLOCK , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_LOCK , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MSG_UNDER_CURSOR , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_MARK_SKIP_BACKOUT , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_BROWSE_NEXT , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_BROWSE_FIRST , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_SET_SIGNAL , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_NO_SYNCPOINT , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_SYNCPOINT , tvb, offset, 4, uGmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_gmo_options_WAIT , tvb, offset, 4, uGmoOpt);
- }
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_gmo_options, ett_subtree, pf_flds_gmoopt, p_mq_parm->mq_int_enc);
+ }
return 4;
}
static gint dissect_mq_MQPMO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset,gint ett_subtree, mq_parm_t *p_mq_parm)
{
-
- proto_item *ti = NULL;
- proto_tree *mq_tree_sub = NULL;
guint uPmoOpt;
- ti = proto_tree_add_item(mq_tree, hf_mq_pmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
uPmoOpt= tvb_get_guint32_endian(tvb, offset,p_mq_parm->mq_int_enc);
if (uPmoOpt==0)
{
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_pmo_options, tvb, offset, 4, p_mq_parm->mq_int_enc); /* ENC_BIG_ENDIAN); */
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_MQPMO_NONE);
}
else
{
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NOT_OWN_SUBS , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SUPPRESS_REPLYTO , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SCOPE_QMGR , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_RETAIN , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_RESOLVE_LOCAL_Q , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SYNC_RESPONSE , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_ASYNC_RESPONSE , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_LOGICAL_ORDER , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NO_CONTEXT , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_FAIL_IF_QUIESCING , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SET_ALL_CONTEXT , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SET_IDENTITY_CONTEXT , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_PASS_ALL_CONTEXT , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_PASS_IDENTITY_CONTEXT , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NEW_CORREL_ID , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NEW_MSG_ID , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_DEFAULT_CONTEXT , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_NO_SYNCPOINT , tvb, offset, 4, uPmoOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_pmo_options_SYNCPOINT , tvb, offset, 4, uPmoOpt);
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_pmo_options, ett_subtree, pf_flds_pmoopt, p_mq_parm->mq_int_enc);
}
return 4;
}
static gint dissect_mq_MQOO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset,gint ett_subtree, mq_parm_t *p_mq_parm)
{
- proto_item *ti = NULL;
- proto_tree *mq_tree_sub = NULL;
guint uOpenOpt;
- ti = proto_tree_add_item(mq_tree, hf_mq_open_options, tvb, offset, 4, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
uOpenOpt= tvb_get_guint32_endian(tvb, offset,p_mq_parm->mq_int_enc);
if (uOpenOpt==0)
{
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_open_options, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ mq_tree_sub = proto_item_add_subtree(ti, ett_subtree);
proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_BIND_READAHEAD_AS_Q_DEF);
}
else
{
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_BIND_ON_GROUP , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_NO_MULTICAST , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_READ_AHEAD , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_NO_READ_AHEAD , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_RESOLVE_LOCAL_Q , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_CO_OP , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_RESOLVE_NAMES , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_BIND_NOT_FIXED , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_BIND_ON_OPEN , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_FAIL_IF_QUIESC , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_ALT_USER_AUTH, tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SET_ALL_CONTEXT , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SET_IDENT_CTX , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_PASS_ALL_CTX , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_PASS_IDENT_CTX , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SAVE_ALL_CTX , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_SET , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INQUIRE , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_OUTPUT , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_BROWSE , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INPUT_EXCLUSIVE , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INPUT_SHARED , tvb, offset, 4, uOpenOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_open_options_INPUT_AS_Q_DEF , tvb, offset, 4, uOpenOpt);
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_open_options, ett_subtree, pf_flds_opnopt, p_mq_parm->mq_int_enc);
}
return 4;
}
static gint dissect_mq_MQCO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, mq_parm_t *p_mq_parm)
{
- proto_item *ti = NULL;
- proto_tree *mq_tree_sub = NULL;
guint iCloseOpt;
- ti = proto_tree_add_item(mq_tree, hf_mq_close_options, tvb, offset, 4, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_close_option);
iCloseOpt= tvb_get_guint32_endian(tvb, offset,p_mq_parm->mq_int_enc);
if (iCloseOpt==0)
{
+ proto_item *ti;
+ proto_tree *mq_tree_sub;
+ ti = proto_tree_add_item(mq_tree, hf_mq_close_options, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ mq_tree_sub = proto_item_add_subtree(ti, ett_mq_close_option);
proto_tree_add_text(mq_tree_sub, tvb, offset, 4, MQ_TEXT_IMMEDIATE_NONE);
}
else
{
- proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_QUIESCE , tvb, offset, 4, iCloseOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_REMOVE_SUB , tvb, offset, 4, iCloseOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_KEEP_SUB , tvb, offset, 4, iCloseOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_DELETE_PURGE , tvb, offset, 4, iCloseOpt);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_close_options_DELETE , tvb, offset, 4, iCloseOpt);
+ proto_tree_add_bitmask(mq_tree, tvb, offset, hf_mq_close_options, ett_mq_close_option, pf_flds_clsopt, ENC_BIG_ENDIAN);
}
return 4;
}
@@ -1596,7 +1812,7 @@ static gint dissect_mq_gmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_GMO);
mq_tree = proto_item_add_subtree(ti, ett_mq_gmo);
- proto_tree_add_item(mq_tree, hf_mq_gmo_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_gmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_gmo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
dissect_mq_MQGMO(tvb, mq_tree, offset + 8, ett_mq_gmo_option, p_mq_parm);
@@ -1661,7 +1877,7 @@ static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_PMO);
mq_tree = proto_item_add_subtree(ti, ett_mq_pmo);
- proto_tree_add_item(mq_tree, hf_mq_pmo_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_pmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_pmo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
dissect_mq_MQPMO(tvb, mq_tree, offset + 8, ett_mq_pmo_option, p_mq_parm);
@@ -1750,7 +1966,7 @@ static gint dissect_mq_od(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_OD);
mq_tree = proto_item_add_subtree(ti, ett_mq_od);
- proto_tree_add_item(mq_tree, hf_mq_od_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_od_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_od_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_od_objecttype, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_od_objectname, tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
@@ -1880,7 +2096,7 @@ static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_
{
guint8 *sChannel;
sChannel = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 24, 20, p_mq_parm->mq_str_enc);
- col_append_fstr(pinfo->cinfo,COL_INFO, ": FAPLvl=%d",iFAPLvl);
+ col_append_fstr(pinfo->cinfo,COL_INFO, " FAPLvl=%d",iFAPLvl);
if (strip_trailing_blanks(sChannel, 20) != 0)
{
col_append_fstr(pinfo->cinfo, COL_INFO, ", CHL=%s", sChannel);
@@ -1900,76 +2116,55 @@ static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_
proto_item *ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_ID);
proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_id);
- proto_tree_add_item(mq_tree, hf_mq_id_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_level, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
-
- /* ID flags */
- {
- guint8 iIDFlags;
-
- ti = proto_tree_add_item(mq_tree, hf_mq_id_flags, tvb, offset + 5, 1, ENC_BIG_ENDIAN);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_id_icf);
- iIDFlags = tvb_get_guint8(tvb, offset + 5);
-
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_runtime, tvb, offset + 5, 1, iIDFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_svrsec, tvb, offset + 5, 1, iIDFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_mqreq, tvb, offset + 5, 1, iIDFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_splitmsg, tvb, offset + 5, 1, iIDFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_convcap, tvb, offset + 5, 1, iIDFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_icf_msgseq, tvb, offset + 5, 1, iIDFlags);
- }
+ proto_tree_add_item(mq_tree, hf_mq_id_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_FapLevel, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown02, tvb, offset + 6, 1, p_mq_parm->mq_int_enc);
+ /* ID Capability flags 1 */
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 44, hf_mq_id_icf1, ett_mq_id_icf1, pf_flds_icf1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_id_Eicf1, tvb, offset + 6, 1, ENC_BIG_ENDIAN);
- /* Error flags */
- {
- guint8 iErrorFlags;
-
- ti = proto_tree_add_item(mq_tree, hf_mq_id_ieflags, tvb, offset + 7, 1, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_id_ief);
- iErrorFlags = tvb_get_guint8(tvb, offset + 7);
-
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_hbint, tvb, offset + 7, 1, iErrorFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_seqwrap, tvb, offset + 7, 1, iErrorFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_mxmsgpb, tvb, offset + 7, 1, iErrorFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_mxmsgsz, tvb, offset + 7, 1, iErrorFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_fap, tvb, offset + 7, 1, iErrorFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_mxtrsz, tvb, offset + 7, 1, iErrorFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_enc, tvb, offset + 7, 1, iErrorFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_id_ief_ccsid, tvb, offset + 7, 1, iErrorFlags);
- }
+ /* Error flags 1*/
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 7, hf_mq_id_ief1, ett_mq_id_ief1, pf_flds_ief1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown04, tvb, offset + 8, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_Reserved, tvb, offset + 8, 2, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_id_MaxMsgBatch, tvb, offset + 10, 2, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_id_MaxTrSize, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_maxmsgsize, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_MaxMsgSize, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_id_SeqWrapVal, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_id_channel, tvb, offset + 24, 20, p_mq_parm->mq_str_enc);
if (iFAPLvl >= 4)
{
- proto_tree_add_item(mq_tree, hf_mq_id_capflags, tvb, offset + 44, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_id_ccsid, tvb, offset + 46, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_qmgrname, tvb, offset + 48, 48, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_HBInterval, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown06, tvb, offset + 100, 2, p_mq_parm->mq_int_enc);
+ /* ID Capability flags 2 */
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 44, hf_mq_id_icf2, ett_mq_id_icf2, pf_flds_icf2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_id_Eicf2, tvb, offset + 45, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_id_ccsid , tvb, offset + 46, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_qmgrname , tvb, offset + 48, 48, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_HBInterval, tvb, offset + 96, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_EFLLength , tvb, offset + 100, 2, p_mq_parm->mq_int_enc);
if (iFAPLvl>=10)
{
- proto_tree_add_item(mq_tree, hf_mq_id_unknown07, tvb, offset + 102, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown08, tvb, offset + 104, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown09, tvb, offset + 106, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown10, tvb, offset + 108, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown11, tvb, offset + 112, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown12, tvb, offset + 116, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown13, tvb, offset + 120, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown14, tvb, offset + 124, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown15, tvb, offset + 128, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown16, tvb, offset + 132, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown17, tvb, offset + 136, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown18, tvb, offset + 140, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_unknown19, tvb, offset + 144, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_mqmvers, tvb, offset + 148, 12, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_id_mqmid, tvb, offset + 160, 48, p_mq_parm->mq_str_enc);
+ /* Error flags 2*/
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 102, hf_mq_id_ief2, ett_mq_id_ief2, pf_flds_ief2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_id_Reserved1 , tvb, offset + 103, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(mq_tree, hf_mq_id_HdrCprsLst, tvb, offset + 104, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_MsgCprsLst, tvb, offset + 106, 16, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_Reserved2 , tvb, offset + 122, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_SSLKeyRst , tvb, offset + 124, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_ConvBySkt , tvb, offset + 128, 4, p_mq_parm->mq_int_enc);
+
+ /* 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_item(mq_tree, hf_mq_id_Eicf3, tvb, offset + 133, 1, 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);
+ proto_tree_add_item(mq_tree, hf_mq_id_ThreadId , tvb, offset + 140, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_TraceId , tvb, offset + 144, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_ProdId , tvb, offset + 148, 12, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_id_mqmid , tvb, offset + 160, 48, p_mq_parm->mq_str_enc);
}
}
}
@@ -2002,7 +2197,7 @@ static gint dissect_mq_md(tvbuff_t *tvb, proto_tree *tree, gint offset, struct m
proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_MD);
proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_md);
- proto_tree_add_item(mq_tree, hf_mq_md_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_md_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_md_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_md_report, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_md_msgtype, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
@@ -2055,7 +2250,7 @@ static gint dissect_mq_fopa(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_par
proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_FOPA);
proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_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);
@@ -2083,14 +2278,6 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint iDistributionListSize = 0;
struct mq_msg_properties tMsgProps;
mq_parm_t *p_mq_parm;
- /*
- guint32 p_mq_parm->mq_int_enc = ENC_BIG_ENDIAN;
- guint32 p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA;
- guint32 mq_encode = 0;
- guint16 mq_ccsid = 0;
- guint8 p_mq_parm->mq_ctlf = 0;
- guint8 p_mq_parm->mq_opcode = 0;
- */
p_mq_parm = wmem_new0(wmem_packet_scope(), mq_parm_t);
@@ -2099,7 +2286,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_mq_parm->mq_str_enc = ENC_UTF_8|ENC_NA;
p_mq_parm->mq_encode = 0;
p_mq_parm->mq_ccsid = 0;
- p_mq_parm->mq_ctlf = 0;
+ p_mq_parm->mq_ctlf1 = 0;
+ p_mq_parm->mq_ctlf2 = 0;
p_mq_parm->mq_opcode = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ");
@@ -2120,7 +2308,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* An MQ packet always starts with this structure*/
gint iSizeTSH = 28;
- gint iSizeMultiplexFields = 0;
+ gint iSizeMPF = 0; /* Size Of Multiplexed Field */
if ((p_mq_parm->mq_strucID & MQ_MASK_TSHx)==MQ_STRUCTID_TSHx_EBCDIC)
{
@@ -2133,22 +2321,23 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (p_mq_parm->mq_strucID == MQ_STRUCTID_TSHM || p_mq_parm->mq_strucID == MQ_STRUCTID_TSHM_EBCDIC)
{
if (tvb_length_remaining(tvb, offset) < 36) return;
- iSizeMultiplexFields += 8;
+ iSizeMPF += 8;
iSizeTSH = 36;
}
- p_mq_parm->mq_opcode = tvb_get_guint8(tvb, offset + iSizeMultiplexFields + 9);
+ p_mq_parm->mq_opcode = tvb_get_guint8(tvb, offset + iSizeMPF + 9);
if (p_mq_parm->mq_opcode == MQ_TST_REQUEST_MSGS || p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE)
{
- tMsgProps.iOffsetEncoding = offset + iSizeMultiplexFields + 20;
- tMsgProps.iOffsetCcsid = offset + iSizeMultiplexFields + 24;
+ tMsgProps.iOffsetEncoding = offset + iSizeMPF + 20;
+ tMsgProps.iOffsetCcsid = offset + iSizeMPF + 24;
tMsgProps.iOffsetFormat = offset ;
}
- p_mq_parm->mq_int_enc = (tvb_get_guint8(tvb, offset + iSizeMultiplexFields + 8) == MQ_LITTLE_ENDIAN ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
- p_mq_parm->mq_ctlf = tvb_get_guint8(tvb, offset + iSizeMultiplexFields + 10);
+ 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);
+ p_mq_parm->mq_ctlf2 = tvb_get_guint8(tvb, offset + iSizeMPF + 11);
- p_mq_parm->mq_encode=tvb_get_guint32_endian(tvb, offset + iSizeMultiplexFields + 20, p_mq_parm->mq_int_enc);
- p_mq_parm->mq_ccsid =tvb_get_guint16_endian(tvb, offset + iSizeMultiplexFields + 24, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_encode=tvb_get_guint32_endian(tvb, offset + iSizeMPF + 20, p_mq_parm->mq_int_enc);
+ p_mq_parm->mq_ccsid =tvb_get_guint16_endian(tvb, offset + iSizeMPF + 24, p_mq_parm->mq_int_enc);
if (p_mq_parm->mq_ccsid==500 && !bEBCDIC)
{
@@ -2159,7 +2348,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (!mq_in_reassembly)
{
col_clear(pinfo->cinfo, COL_INFO);
- col_append_sep_str(pinfo->cinfo, COL_INFO, " | ", val_to_str_ext(p_mq_parm->mq_opcode, &mq_opcode_vals_ext, "Unknown (0x%02x)"));
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, " | ", "%-17s", val_to_str_ext(p_mq_parm->mq_opcode, &mq_opcode_vals_ext, "Unknown (0x%02x)"));
col_set_fence(pinfo->cinfo, COL_INFO);
}
@@ -2180,7 +2369,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeTSH, MQ_TEXT_TSH);
mq_tree = proto_item_add_subtree(ti, ett_mq_tsh);
- proto_tree_add_item(mq_tree, hf_mq_tsh_structid, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_tsh_mqseglen, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
if (iSizeTSH == 36)
@@ -2189,31 +2378,16 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(mq_tree, hf_mq_tsh_requestid, tvb, offset + 12, 4, ENC_BIG_ENDIAN);
}
- proto_tree_add_item(mq_tree, hf_mq_tsh_byteorder, tvb, offset + iSizeMultiplexFields + 8, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_tsh_opcode, tvb, offset + iSizeMultiplexFields + 9, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_byteorder, tvb, offset + iSizeMPF + 8, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_opcode, tvb, offset + iSizeMPF + 9, 1, ENC_BIG_ENDIAN);
- /* Control flags */
- {
- proto_tree *mq_tree_sub = NULL;
-
- ti = proto_tree_add_item(mq_tree, hf_mq_tsh_ctlflgs1, tvb, offset + iSizeMultiplexFields + 10, 1, ENC_BIG_ENDIAN);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_tsh_tcf);
-
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_dlq, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_reqacc, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_last, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_first, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_closechann, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_reqclose, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_error, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_tsh_tcf_confirmreq, tvb, offset + iSizeMultiplexFields + 10, 1, p_mq_parm->mq_ctlf);
- }
+ proto_tree_add_bitmask(mq_tree, tvb, offset + iSizeMPF + 10, hf_mq_tsh_ctlflgs1, ett_mq_tsh_tcf, pf_flds_tcf, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask(mq_tree, tvb, offset + iSizeMPF + 11, hf_mq_tsh_ctlflgs2, ett_mq_tsh_tcf2, pf_flds_tcf2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_tsh_ctlflgs2, tvb, offset + iSizeMultiplexFields + 11, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mq_tree, hf_mq_tsh_luwid, tvb, offset + iSizeMultiplexFields + 12, 8, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_tsh_encoding, tvb, offset + iSizeMultiplexFields + 20, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_tsh_ccsid, tvb, offset + iSizeMultiplexFields + 24, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_tsh_padding, tvb, offset + iSizeMultiplexFields + 26, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_luwid, tvb, offset + iSizeMPF + 12, 8, ENC_NA);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_encoding, tvb, offset + iSizeMPF + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_ccsid, tvb, offset + iSizeMPF + 24, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_tsh_reserved, tvb, offset + iSizeMPF + 26, 2, ENC_BIG_ENDIAN);
}
offset += iSizeTSH;
@@ -2221,7 +2395,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tvb_length_remaining(tvb, offset) >= 4)
{
p_mq_parm->mq_strucID = tvb_get_ntohl(tvb, offset);
- if (((p_mq_parm->mq_ctlf & MQ_TCF_FIRST) != 0) || p_mq_parm->mq_opcode < 0x80)
+ if (((p_mq_parm->mq_ctlf1 & MQ_TCF_FIRST) != 0) || p_mq_parm->mq_opcode < 0x80)
{
/* First MQ segment (opcodes below 0x80 never span several TSH) */
gint iSizeAPI = 16;
@@ -2259,7 +2433,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_MSH);
mq_tree = proto_item_add_subtree(ti, ett_mq_msh);
- proto_tree_add_item(mq_tree, hf_mq_msh_structid, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msh_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_msh_seqnum, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msh_datalength, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msh_unknown1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
@@ -2273,20 +2447,20 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint iUsr = 0;
gint iPsw = 0;
- iUsr=tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
- iPsw=tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
+ iUsr=tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ iPsw=tvb_get_guint32_endian(tvb, offset + 20, p_mq_parm->mq_int_enc);
if (tree)
{
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_CAUT);
mq_tree = proto_item_add_subtree(ti, ett_mq_caut);
- proto_tree_add_item(mq_tree, hf_mq_caut_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_unknown1, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_userlen1, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_pswdlen1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_userlen2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_caut_pswdlen2, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_AuthType, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_UsrMaxLen, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_PwdMaxLen, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_UsrLength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_caut_PwdLength, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
if (iUsr)
proto_tree_add_item(mq_tree, hf_mq_caut_usr, tvb, offset + 24, iUsr, p_mq_parm->mq_str_enc);
@@ -2304,11 +2478,11 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeAPI, MQ_TEXT_SOCKET);
mq_tree = proto_item_add_subtree(ti, ett_mq_socket);
- proto_tree_add_item(mq_tree, hf_mq_socket_unknown1, tvb, offset, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_unknown2, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_unknown3, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_unknown4, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_socket_unknown5, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_conversid, tvb, offset, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_requestid, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_type, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_parm1, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_socket_parm2, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
}
offset += iSize;
p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
@@ -2325,7 +2499,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tvb_length_remaining(tvb, offset) >= iStatusLength)
{
if (iStatus != 0)
- col_append_fstr(pinfo->cinfo, COL_INFO, ": Code=%s", val_to_str(iStatus, mq_status_vals, "Unknown (0x%08x)"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Code=%s", val_to_str(iStatus, GET_VALSV(status), "Unknown (0x%08x)"));
if (tree)
{
@@ -2404,12 +2578,12 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint8 *sApplicationName;
guint8 *sQMgr;
- sApplicationName = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 28, p_mq_parm->mq_str_enc);
+ sApplicationName = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 48, 28, p_mq_parm->mq_str_enc), 28, '.');
if (strip_trailing_blanks(sApplicationName, 28) != 0)
{
- col_append_fstr(pinfo->cinfo, COL_INFO, ": App=%s", sApplicationName);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " App=%s", sApplicationName);
}
- sQMgr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 48, p_mq_parm->mq_str_enc);
+ sQMgr = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 48, p_mq_parm->mq_str_enc), 28, '.');
if (strip_trailing_blanks(sQMgr, 48) != 0)
{
col_append_fstr(pinfo->cinfo, COL_INFO, " QM=%s", sQMgr);
@@ -2422,10 +2596,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeCONN, MQ_TEXT_CONN);
mq_tree = proto_item_add_subtree(ti, ett_mq_conn);
- do_proto_add_item(48,proto_tree_add_item(mq_tree, hf_mq_conn_QMgr, tvb, nofs, 48, p_mq_parm->mq_str_enc));
- do_proto_add_item(28,proto_tree_add_item(mq_tree, hf_mq_conn_appname , tvb, nofs, 28, p_mq_parm->mq_str_enc));
- do_proto_add_item( 4,proto_tree_add_item(mq_tree, hf_mq_conn_apptype , tvb, nofs, 4, p_mq_parm->mq_int_enc));
- do_proto_add_item(32,proto_tree_add_item(mq_tree, hf_mq_conn_acttoken , tvb, nofs, 32, ENC_NA));
+ do_proto_add_item(48,proto_tree_add_item(mq_tree, hf_mq_conn_QMgr , tvb, nofs, 48, p_mq_parm->mq_str_enc));
+ do_proto_add_item(28,proto_tree_add_item(mq_tree, hf_mq_conn_appname , tvb, nofs, 28, p_mq_parm->mq_str_enc));
+ do_proto_add_item( 4,proto_tree_add_item(mq_tree, hf_mq_conn_apptype , tvb, nofs, 4, p_mq_parm->mq_int_enc));
+ do_proto_add_item(32,proto_tree_add_item(mq_tree, hf_mq_conn_acttoken, tvb, nofs, 32, ENC_NA));
if (iSizeCONN >= 120)
{
@@ -2439,7 +2613,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mq_tree, tvb, nofs,iSizeCONN - nofs, MQ_TEXT_FCNO);
mq_tree_sub = proto_item_add_subtree(ti, ett_mq_fcno);
- do_proto_add_item( 4,proto_tree_add_item(mq_tree_sub, hf_mq_fcno_structid , tvb, nofs, 4, p_mq_parm->mq_str_enc));
+ do_proto_add_item( 4,proto_tree_add_item(mq_tree_sub, hf_mq_fcno_StructID , tvb, nofs, 4, p_mq_parm->mq_str_enc));
do_proto_add_item( 4,proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown00, tvb, nofs, 4, p_mq_parm->mq_int_enc));
do_proto_add_item( 4,proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown01, tvb, nofs, 4, p_mq_parm->mq_int_enc));
@@ -2525,7 +2699,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
iHdl = tvb_get_guint32_endian(tvb, offset+4, p_mq_parm->mq_int_enc);
- col_append_fstr(pinfo->cinfo, COL_INFO, ": Hdl=0x%08x", iHdl);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x", iHdl);
if (tree)
{
@@ -2535,7 +2709,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(mq_tree, hf_mq_notif_vers, tvb, offset, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_notif_handle, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
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_mqrc, tvb, offset + 12, 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;
p_mq_parm->mq_strucID = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
@@ -2544,57 +2718,68 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
gint iHdl;
gint iFlags;
- gint iLstSeq;
- gint iMaxLen;
+ gint iGlbMsgIdx;
+ gint iMaxMsgLen;
gint xOfs;
- gint iExt;
+ gint iOpt;
xOfs=0;
- iHdl = tvb_get_guint32_endian(tvb, offset+ 4, p_mq_parm->mq_int_enc);
- iMaxLen = tvb_get_guint32_endian(tvb, offset+ 16, p_mq_parm->mq_int_enc);
- iFlags = tvb_get_guint32_endian(tvb, offset+ 32, p_mq_parm->mq_int_enc);
- iLstSeq = tvb_get_guint32_endian(tvb, offset+ 36, p_mq_parm->mq_int_enc);
+ iHdl = tvb_get_guint32_endian(tvb, offset+ 4, p_mq_parm->mq_int_enc);
+ iMaxMsgLen = tvb_get_guint32_endian(tvb, offset+ 16, p_mq_parm->mq_int_enc);
+ iFlags = tvb_get_guint32_endian(tvb, offset+ 32, p_mq_parm->mq_int_enc);
+ iGlbMsgIdx = tvb_get_guint32_endian(tvb, offset+ 36, p_mq_parm->mq_int_enc);
- col_append_fstr(pinfo->cinfo, COL_INFO, ": Hdl=0x%08x, LstSeq=%d, MaxLen=%d",
- iHdl, iLstSeq,iMaxLen);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x, GlbMsgIdx=%d, MaxLen=%d",
+ iHdl, iGlbMsgIdx, iMaxMsgLen);
if (tree)
{
ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_REQMSG);
mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_version , tvb, offset , 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_handle , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown1, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown2, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_maxlen , tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown4, tvb, offset + 20, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_timeout , tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown5, tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_flags , tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_lstseqnr, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_version , tvb, offset , 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_handle , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_RecvBytes, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_RqstBytes, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_MaxMsgLen, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_MQGMO(tvb, mq_tree, offset + 20, ett_mq_gmo_option, p_mq_parm);
+
+ 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_item(mq_tree, hf_mq_msgreq_GlbMsgIdx, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
if (iFlags & 0x00000010)
{
- proto_tree_add_item(mq_tree, hf_mq_msgreq_msegver , tvb, offset + 40, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_msegseq , tvb, offset + 42, 2, p_mq_parm->mq_int_enc);
+ 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);
proto_tree_add_item(mq_tree, hf_mq_msgreq_ccsid , tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_msgreq_encoding, tvb, offset + 48, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown6, tvb, offset + 52, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_unknown7, tvb, offset + 56, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgreq_xfldflag, tvb, offset + 60, 4, p_mq_parm->mq_int_enc);
- iExt=tvb_get_guint32_endian(tvb, offset + 60, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_MsgSeqNum, tvb, offset + 52, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_offset, tvb, offset + 56, 4, p_mq_parm->mq_int_enc);
+ dissect_mq_MQMO(tvb, mq_tree, offset + 60, ett_mq_gmo_matchoption, p_mq_parm);
+ iOpt=tvb_get_guint32_endian(tvb, offset + 60, p_mq_parm->mq_int_enc);
- if (iExt & MQ_MSGREQ_MSGID_PRESENT)
+ 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;
+ }
+ if (iOpt & MQ_MQMO_MATCH_CORREL_ID)
{
- proto_tree_add_item(mq_tree, hf_mq_msgreq_msgid , tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchCorId, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
xOfs+=24;
}
- if (iExt & MQ_MSGREQ_MQMID_PRESENT)
+ if (iOpt & MQ_MQMO_MATCH_GROUP_ID)
{
- proto_tree_add_item(mq_tree, hf_mq_msgreq_mqmid , tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgreq_mtchGrpid, tvb, offset + 64 + xOfs, 24, p_mq_parm->mq_str_enc);
xOfs+=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;
+ }
}
}
offset+=(iFlags & 0x00000010)?(64+xOfs):40;
@@ -2602,19 +2787,20 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
else if (p_mq_parm->mq_opcode == MQ_TST_ASYNC_MESSAGE)
{
- gint imsegseq;
- gint iCurSeq;
+ gint iSegmIndex;
+ gint iGlbMsgIdx;
gint iPadLen;
- gint iPayLod;
+ gint iSegLength;
gint8 iStrLen;
gint iHdl;
gint iHdrL;
- iHdl = tvb_get_guint32_endian(tvb, offset+4, p_mq_parm->mq_int_enc);
- iCurSeq = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
- imsegseq = tvb_get_guint16_endian(tvb, offset + 20, p_mq_parm->mq_int_enc);
+ iHdl = tvb_get_guint32_endian(tvb, offset + 4 , p_mq_parm->mq_int_enc);
+ iGlbMsgIdx = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
+ iSegLength = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
+ iSegmIndex = tvb_get_guint16_endian(tvb, offset + 20, p_mq_parm->mq_int_enc);
- if (p_mq_parm->mq_ctlf & MQ_TCF_FIRST)
+ if (iSegmIndex==0)
{
iStrLen = tvb_get_guint8(tvb,offset+54);
iPadLen = (2+1+iStrLen) % 4;
@@ -2626,13 +2812,12 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
iStrLen=0;
}
- iHdrL=(p_mq_parm->mq_ctlf & MQ_TCF_FIRST)?(54+1+iStrLen+iPadLen):24;
- iPayLod=tvb_length_remaining(tvb, offset+iHdrL);
+ iHdrL=(iSegmIndex==0)?(54+1+iStrLen+iPadLen):24;
if (!mq_in_reassembly)
{
- col_append_fstr(pinfo->cinfo, COL_INFO, ": Hdl=0x%08x, CurSeq=%d, SSeq=%d, PayLoad=%d",
- iHdl, iCurSeq, imsegseq, iPayLod);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hdl=0x%08x, GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
}
if (tree)
@@ -2640,27 +2825,24 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iHdrL, MQ_TEXT_ASYMSG);
mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_version , tvb, offset , 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_handle , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown1, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_curseqnr, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_payload , tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_msegseq , tvb, offset + 20, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_msegver , tvb, offset + 22, 2, p_mq_parm->mq_int_enc);
- if (p_mq_parm->mq_ctlf & MQ_TCF_FIRST)
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_version , tvb, offset , 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_handle , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_MsgIndex , tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_GlbMsgIdx, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_SegLength, tvb, offset + 16, 4, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_SegmIndex, tvb, offset + 20, 2, p_mq_parm->mq_int_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_SeleIndex, tvb, offset + 22, 2, p_mq_parm->mq_int_enc);
+ if (p_mq_parm->mq_ctlf1 & MQ_TCF_FIRST)
{
- proto_tree_add_item(mq_tree, hf_mq_msgasy_flags , tvb, offset + 24, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_totlen1 , tvb, offset + 28, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_totlen2 , tvb, offset + 32, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown2, tvb, offset + 36, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown3, tvb, offset + 40, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown4, tvb, offset + 44, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_unknown5, tvb, offset + 48, 4, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_strFlg , tvb, offset + 52, 2, p_mq_parm->mq_int_enc);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_strLen , tvb, offset + 54, 1, ENC_NA);
- proto_tree_add_item(mq_tree, hf_mq_msgasy_strVal , tvb, offset + 55, iStrLen, p_mq_parm->mq_str_enc);
+ 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_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);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_resolQNme , tvb, offset + 55, iStrLen, p_mq_parm->mq_str_enc);
if (iPadLen)
- proto_tree_add_item(mq_tree, hf_mq_msgasy_strPad , tvb, offset + 55 + iStrLen, iPadLen, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_msgasy_padding , tvb, offset + 55 + iStrLen, iPadLen, p_mq_parm->mq_str_enc);
}
}
offset+=iHdrL;
@@ -2705,7 +2887,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, 12, "%s", sStructId);
mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
- proto_tree_add_item(mq_tree, hf_mq_spi_base_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_spi_base_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_spi_base_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
}
@@ -2736,7 +2918,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", sStructId);
mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
- proto_tree_add_item(mq_tree, hf_mq_spi_base_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_spi_base_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_spi_base_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
}
@@ -2796,19 +2978,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (tree)
{
- /* Options flags */
- {
- proto_tree *mq_tree_sub = NULL;
- gint iOptionsFlags;
-
- ti = proto_tree_add_item(mq_tree, hf_mq_spi_spgo_options, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_spi_options);
- iOptionsFlags = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
-
- proto_tree_add_boolean(mq_tree_sub, hf_mq_spi_opt_deferred, tvb, offset + 12, 4, iOptionsFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_spi_opt_syncp, tvb, offset + 12, 4, iOptionsFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_spi_opt_blank, tvb, offset + 12, 4, iOptionsFlags);
- }
+ 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);
}
iSizePayload = tvb_get_guint32_endian(tvb, offset + 16, p_mq_parm->mq_int_enc);
@@ -2835,24 +3005,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
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);
- /* Transaction Manager flags */
- {
- proto_tree *mq_tree_sub = NULL;
- guint32 iTMFlags;
-
- ti = proto_tree_add_item(mq_tree, hf_mq_xa_tmflags, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
- mq_tree_sub = proto_item_add_subtree(ti, ett_mq_xa_tmflags);
- iTMFlags = tvb_get_guint32_endian(tvb, offset + 8, p_mq_parm->mq_int_enc);
-
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_onephase, tvb, offset + 8, 4, iTMFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_fail, tvb, offset + 8, 4, iTMFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_resume, tvb, offset + 8, 4, iTMFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_success, tvb, offset + 8, 4, iTMFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_suspend, tvb, offset + 8, 4, iTMFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_startrscan, tvb, offset + 8, 4, iTMFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_endrscan, tvb, offset + 8, 4, iTMFlags);
- proto_tree_add_boolean(mq_tree_sub, hf_mq_xa_tmflags_join, tvb, offset + 8, 4, iTMFlags);
- }
+ proto_tree_add_bitmask(mq_tree, tvb, offset + 8, hf_mq_xa_tmflags, ett_mq_xa_tmflags, pf_flds_tmflags, ENC_BIG_ENDIAN);
proto_tree_add_item(mq_tree, hf_mq_xa_rmid, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
}
@@ -2921,7 +3074,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeID, MQ_TEXT_LPOO);
mq_tree = proto_item_add_subtree(ti, ett_mq_lpoo);
- 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_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_option, p_mq_parm);
@@ -2962,7 +3115,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
sUserId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 4, 12, p_mq_parm->mq_str_enc);
if (strip_trailing_blanks(sUserId, 12) != 0)
{
- col_append_fstr(pinfo->cinfo, COL_INFO, ": User=%s", sUserId);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " User=%s", sUserId);
}
if (tree)
@@ -2970,7 +3123,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeUID, MQ_TEXT_UID);
mq_tree = proto_item_add_subtree(ti, ett_mq_uid);
- proto_tree_add_item(mq_tree, hf_mq_uid_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_uid_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_uid_userid, tvb, offset + 4, 12, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_uid_password, tvb, offset + 16, 12, p_mq_parm->mq_str_enc);
}
@@ -3047,7 +3200,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeXQH, MQ_TEXT_XQH);
mq_tree = proto_item_add_subtree(ti, ett_mq_xqh);
- proto_tree_add_item(mq_tree, hf_mq_xqh_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_xqh_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_xqh_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_xqh_remoteq, tvb, offset + 8, 48, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_xqh_remoteqmgr, tvb, offset + 56, 48, p_mq_parm->mq_str_enc);
@@ -3081,7 +3234,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeDH, MQ_TEXT_DH);
mq_tree = proto_item_add_subtree(ti, ett_mq_dh);
- 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_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);
proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
@@ -3130,7 +3283,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeDLH, MQ_TEXT_DLH);
mq_tree = proto_item_add_subtree(ti, ett_mq_dlh);
- proto_tree_add_item(mq_tree, hf_mq_dlh_structid, tvb, offset, 4, p_mq_parm->mq_str_enc);
+ proto_tree_add_item(mq_tree, hf_mq_dlh_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
proto_tree_add_item(mq_tree, hf_mq_dlh_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_dlh_reason, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_dlh_destq, tvb, offset + 12, 48, p_mq_parm->mq_str_enc);
@@ -3159,7 +3312,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeMDE, MQ_TEXT_MDE);
mq_tree = proto_item_add_subtree(ti, ett_mq_mde);
- 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_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);
proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
@@ -3199,10 +3352,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tMsgProps.iOffsetFormat = offset + 20;
if (tree)
{
- ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeHeader, "%s", val_to_str(p_mq_parm->mq_strucID, mq_structid_vals, "Unknown (0x%08x)"));
+ ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeHeader, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
mq_tree = proto_item_add_subtree(ti, ett_mq_head);
- 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_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);
proto_tree_add_item(mq_tree, hf_mq_head_length, tvb, offset + 8, 4, p_mq_parm->mq_int_enc);
proto_tree_add_item(mq_tree, hf_mq_head_encoding, tvb, offset + 12, 4, p_mq_parm->mq_int_enc);
@@ -3219,32 +3372,12 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
- /*
- Removed as steted in macro PROTO_ITEM_SET_HIDDEN
- *HIDING PROTOCOL FIELDS IS DEPRECATED, IT'S CONSIDERED TO BE BAD GUI DESIGN!
- if (tMsgProps.iOffsetFormat != 0)
- {
- guint8* sFormat = NULL;
- sFormat = tvb_get_string_enc(wmem_packet_scope(), tvb, tMsgProps.iOffsetFormat, 8, p_mq_parm->mq_str_enc);
- if (strip_trailing_blanks(sFormat, 8) == 0)
- sFormat = (guint8 *)wmem_strdup(wmem_packet_scope(),"MQNONE");
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " Fmt=%s", sFormat);
- if (tree)
- {
- proto_item *hidden_item;
- hidden_item = proto_tree_add_string(tree, hf_mq_md_lastformat, tvb, tMsgProps.iOffsetFormat, 8, (const char*)sFormat);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- }
- */
col_append_fstr(pinfo->cinfo, COL_INFO, " (%d bytes)", iSizePayload - iHeadersLength);
if (!mq_in_reassembly)
{
/* Call subdissector for the payload */
tvbuff_t* next_tvb = NULL;
- void* pd_save;
struct mqinfo *mqinfo;
mqinfo = wmem_new0(wmem_packet_scope(), struct mqinfo);
/* Format, encoding and character set are "data type" information, not subprotocol information */
@@ -3253,12 +3386,10 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
memcpy(mqinfo->format,
tvb_get_string_enc(wmem_packet_scope(), tvb, tMsgProps.iOffsetFormat, sizeof(mqinfo->format), p_mq_parm->mq_str_enc),
sizeof(mqinfo->format));
- pd_save = pinfo->private_data;
- pinfo->private_data = mqinfo;
+
next_tvb = tvb_new_subset_remaining(tvb, offset);
- if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, mqroot_tree, NULL))
+ if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, mqroot_tree, mqinfo))
call_dissector(data_handle, next_tvb, pinfo, mqroot_tree);
- pinfo->private_data = pd_save;
}
else
{
@@ -3275,7 +3406,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 (tree)
{
- proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", val_to_str(p_mq_parm->mq_strucID, mq_structid_vals, "Unknown (0x%08x)"));
+ proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
}
}
}
@@ -3310,15 +3441,14 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
mq_parm.mq_strucID = tvb_get_ntohl(tvb, 0);
mq_parm.mq_ccsid = 0;
- mq_parm.mq_ctlf = 0;
+ mq_parm.mq_ctlf1 = 0;
+ mq_parm.mq_ctlf2 = 0;
mq_parm.mq_encode = 0;
mq_parm.mq_opcode = 0;
mq_parm.mq_int_enc = 0;
mq_parm.mq_str_enc = 0;
- if (mq_parm.mq_strucID == MQ_STRUCTID_TSH || mq_parm.mq_strucID == MQ_STRUCTID_TSH_EBCDIC
- || mq_parm.mq_strucID == MQ_STRUCTID_TSHC || mq_parm.mq_strucID == MQ_STRUCTID_TSHC_EBCDIC
- || mq_parm.mq_strucID == MQ_STRUCTID_TSHM || mq_parm.mq_strucID == MQ_STRUCTID_TSHM_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;
@@ -3332,10 +3462,11 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gboolean bSegLst = FALSE;
gboolean bMore = FALSE;
- guint32 uHdl = 0;
- guint32 uCurS = 0;
- guint32 uPayL = 0;
- guint16 uMsgS = 0;
+ gint32 iHdl = 0;
+ gint32 iGlbMsgIdx = 0;
+ gint32 iSegLength = 0;
+ gint16 iSegmIndex = 0;
+
guint32 uStrL = 0;
guint32 uPadL = 0;
@@ -3344,7 +3475,7 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
iMulS=8;
/* 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);
/* Get the Operation Code */
iOpcd = tvb_get_guint8(tvb, 9+iMulS);
/* Get the Control Flag */
@@ -3366,23 +3497,24 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*
It seems that after a PUT on a Queue, when doing a GET, MQ first get
a small part of the response (4096 bytes)
- The response contain the number of bytes returned for this request (uTot1)
- and the total number of bytes of this reply (uTot2)
+ The response contain the number of bytes returned for this request (ActMsgLen)
+ and the total number of bytes of this reply (TotMsgLen)
- this mean the flow is the followin:
+ this mean the flow seems to be :
PUT
REQUEST_MSG (MaxLen=4096)
- ASYNC_MSG (1st/Lst Segment, uTot1=4096, uTot2=279420)
- as uTot1!=uTot2, this mean the MSG is not complete, we only receive 4420 of 279420 bytes
+ ASYNC_MSG (1st/Lst Segment, ActMsgLen=4096, TotMsgLen=279420)
+ as ActMsgLen!=TotMsgLen, this mean the MSG is not complete, we only receive some of 279420 bytes
REQUEST_MSG (MaxLen=279420)
- ASYNC_MSG (1st Segment, Seg#0 uTot1=279420, uTot2=279420)
- ASYNC_MSG (0x segment, Seg#1)
- ASYNC_MSG (0x segment, Seg#2)
+ ASYNC_MSG (1st Segment, SegIndex=0 ActMsgLen=279420, TotMsgLen=279420)
+ ASYNC_MSG (Mid Segment, SegIndex=1)
+ ASYNC_MSG (Mid Segment, SegIndex=2)
.
- ASYNC_MSG (Last Segment, Seg#7)
+ ASYNC_MSG (Lst Segment, SegIndex=n)
End of reassembling (we have 279420 bytes to decode)
*/
+
if (mq_reassembly)
{
fragment_head* fd_head;
@@ -3390,17 +3522,19 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
iHdrL=28+iMulS;
/* Get the MQ Handle of the Object */
- uHdl = tvb_get_guint32_endian(tvb, iHdrL + 4, iEnco);
- /* Get the Current Seq Number */
- uCurS= tvb_get_guint32_endian(tvb, iHdrL +12, iEnco);
- /* Get the MsgSegment Number */
- uMsgS= tvb_get_guint16_endian(tvb, iHdrL +20, iEnco);
+ iHdl = tvb_get_guint32_endian(tvb, iHdrL + 4, iEnco);
+ /* Get the Global Message Index */
+ iGlbMsgIdx = tvb_get_guint32_endian(tvb, iHdrL + 12, iEnco);
+ /* Get the Segment Length */
+ iSegLength = tvb_get_guint32_endian(tvb, iHdrL + 16, iEnco);
+ /* Get the Segment Index */
+ iSegmIndex = tvb_get_guint16_endian(tvb, iHdrL +20, iEnco);
/*
- if it is the 1st Segment, it has 55 bytes + the length and padding
+ if SegmIndex==0, it has 54 bytes + the length and padding
of a variable string at the end of the Header
*/
- if (bSeg1st)
+ if (iSegmIndex==0)
{
uStrL = tvb_get_guint8(tvb,iHdrL+54);
uPadL = ((((2+1+uStrL)/4)+1)*4)-(2+1+uStrL);
@@ -3411,7 +3545,6 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
iNxtP = iHdrL + ((bSeg1st)?(54 + 1 + uStrL + uPadL):(24));
iNxtP += dissect_mq_md(tvb, NULL, iNxtP, NULL, &mq_parm, FALSE);
- uPayL = tvb_length_remaining(tvb, iNxtP);
/*
if it is the 1st Segment, it means we are
@@ -3428,11 +3561,13 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item* ti = proto_tree_add_item(tree, proto_mq, tvb, 0, -1, ENC_NA);
if (bMore)
- proto_item_append_text(ti, " [%s of a Reassembled MQ Segment] Hdl=0x%08x, CurS=%d, MsgS=%d, PayL=%d",
- val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),uHdl,uCurS,uMsgS,uPayL);
+ proto_item_append_text(ti, " [%s of a Reassembled MQ Segment] Hdl=0x%08x, GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
else
- proto_item_append_text(ti, " %s Hdl=0x%08x, CurS=%d, MsgS=%d, PayL=%d",
- val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),uHdl,uCurS,uMsgS,uPayL);
+ proto_item_append_text(ti, " %s Hdl=0x%08x, GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
mq_tree = proto_item_add_subtree(ti, ett_mq_reaasemb);
}
else
@@ -3464,8 +3599,9 @@ static void reassemble_mq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
mq_in_reassembly=TRUE;
/* Reassembly in progress */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MQ");
- col_add_fstr(pinfo->cinfo, COL_INFO, "[%s of a Reassembled MQ Segment] Hdl=0x%08x, CurS=%d, MsgS=%d, PayL=%d",
- val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),uHdl,uCurS,uMsgS,uPayL);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "[%s of a Reassembled MQ Segment] Hdl=0x%08x, GlbMsgIdx=%d, SegIdx=%d, SegLen=%d",
+ val_to_str(iOpcd, mq_opcode_vals, "Unknown (0x%02x)"),
+ iHdl, iGlbMsgIdx, iSegmIndex, iSegLength);
dissect_mq_pdu(tvb, pinfo, mq_tree);
return;
}
@@ -3556,8 +3692,9 @@ static void mq_init(void)
void proto_register_mq(void)
{
- static hf_register_info hf[] = {
- { &hf_mq_tsh_structid ,{"structid..", "mq.tsh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ static hf_register_info hf[] =
+ {
+ { &hf_mq_tsh_StructID ,{"StructID..", "mq.tsh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_tsh_mqseglen ,{"MQSegmLen.", "mq.tsh.seglength", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH MQ Segment length", HFILL }},
{ &hf_mq_tsh_convid ,{"Convers ID", "mq.tsh.convid", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH Conversation ID", HFILL }},
{ &hf_mq_tsh_requestid,{"Request ID", "mq.tsh.requestid", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH Request ID", HFILL }},
@@ -3568,97 +3705,121 @@ void proto_register_mq(void)
{ &hf_mq_tsh_luwid ,{"LUW Ident.", "mq.tsh.luwid", FT_BYTES, BASE_NONE, NULL, 0x0, "TSH logical unit of work identifier", HFILL }},
{ &hf_mq_tsh_encoding ,{"Encoding..", "mq.tsh.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "TSH Encoding", HFILL }},
{ &hf_mq_tsh_ccsid ,{"CCSID.....", "mq.tsh.ccsid", FT_UINT16, BASE_DEC, NULL, 0x0, "TSH CCSID", HFILL }},
- { &hf_mq_tsh_padding ,{"Padding...", "mq.tsh.padding", FT_UINT16, BASE_HEX, NULL, 0x0, "TSH Padding", HFILL }},
+ { &hf_mq_tsh_reserved ,{"Reserved..", "mq.tsh.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, "TSH Reserved", HFILL }},
{ &hf_mq_tsh_tcf_confirmreq,{"Confirm Req", "mq.tsh.tcf.confirmreq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_CONFIRM_REQUEST, "TSH TCF Confirm request", HFILL }},
- { &hf_mq_tsh_tcf_error ,{"Error......", "mq.tsh.tcf.error", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_ERROR, "TSH TCF Error", HFILL }},
- { &hf_mq_tsh_tcf_reqclose ,{"Req close..", "mq.tsh.tcf.reqclose", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_CLOSE, "TSH TCF Request close", HFILL }},
- { &hf_mq_tsh_tcf_closechann,{"Close Chnl.", "mq.tsh.tcf.closechann", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_CLOSE_CHANNEL, "TSH TCF Close channel", HFILL }},
- { &hf_mq_tsh_tcf_first ,{"First Seg..", "mq.tsh.tcf.first", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_FIRST, "TSH TCF First", HFILL }},
- { &hf_mq_tsh_tcf_last ,{"Last Seg...", "mq.tsh.tcf.last", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_LAST, "TSH TCF Last", HFILL }},
- { &hf_mq_tsh_tcf_reqacc ,{"Req accept.", "mq.tsh.tcf.reqacc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_ACCEPTED, "TSH TCF Request accepted", HFILL }},
- { &hf_mq_tsh_tcf_dlq ,{"DLQ used...", "mq.tsh.tcf.dlq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_DLQ_USED, "TSH TCF DLQ used", HFILL }},
+ { &hf_mq_tsh_tcf_error ,{"Error", "mq.tsh.tcf.error", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_ERROR, "TSH TCF Error", HFILL }},
+ { &hf_mq_tsh_tcf_reqclose ,{"Req close", "mq.tsh.tcf.reqclose", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_CLOSE, "TSH TCF Request close", HFILL }},
+ { &hf_mq_tsh_tcf_closechann,{"Close Chnl", "mq.tsh.tcf.closechann", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_CLOSE_CHANNEL, "TSH TCF Close channel", HFILL }},
+ { &hf_mq_tsh_tcf_first ,{"First Seg", "mq.tsh.tcf.first", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_FIRST, "TSH TCF First", HFILL }},
+ { &hf_mq_tsh_tcf_last ,{"Last Seg", "mq.tsh.tcf.last", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_LAST, "TSH TCF Last", HFILL }},
+ { &hf_mq_tsh_tcf_reqacc ,{"Req accept", "mq.tsh.tcf.reqacc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_REQUEST_ACCEPTED, "TSH TCF Request accepted", HFILL }},
+ { &hf_mq_tsh_tcf_dlq ,{"DLQ used", "mq.tsh.tcf.dlq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF_DLQ_USED, "TSH TCF DLQ used", HFILL }},
+
+ { &hf_mq_tsh_tcf2_HdrComp ,{"HDR Comp", "mq.tsh.tcf2.hdrcomp", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_HDRCOMP , "TSH TCF2 Header Compressed", HFILL }},
+ { &hf_mq_tsh_tcf2_MsgComp ,{"MSG Comp", "mq.tsh.tcf2.msgcomp", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_MSGCOMP , "TSH TCF2 Message Compressed", HFILL }},
+ { &hf_mq_tsh_tcf2_CSH ,{"CSH", "mq.tsh.tcf2.csh" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_CSH , "TSH TCF2 CSH", HFILL }},
+ { &hf_mq_tsh_tcf2_CmitIntv ,{"ComitIntvl", "mq.tsh.tcf.cmitintv", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_TCF2_CMIT_INTERVAL, "TSH TCF2 Commit Interval", HFILL }},
{ &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, VALS(GET_VALSV(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_unknown1,{"unknown1", "mq.socket.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown1", HFILL }},
- { &hf_mq_socket_unknown2,{"unknown2", "mq.socket.unknown2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown2", HFILL }},
- { &hf_mq_socket_unknown3,{"unknown3", "mq.socket.unknown3", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown3", HFILL }},
- { &hf_mq_socket_unknown4,{"unknown4", "mq.socket.unknown4", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown4", HFILL }},
- { &hf_mq_socket_unknown5,{"unknown5", "mq.socket.unknown5", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket unknown5", HFILL }},
-
- { &hf_mq_caut_structid ,{"structid", "mq.caut.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_caut_unknown1 ,{"unknown1", "mq.caut.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT unknown1", HFILL }},
- { &hf_mq_caut_userlen1 ,{"userlen1", "mq.caut.userlen1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT userid length 1", HFILL }},
- { &hf_mq_caut_pswdlen1 ,{"pswdlen1", "mq.caut.pswdlen1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT password length 1", HFILL }},
- { &hf_mq_caut_userlen2 ,{"userlen2", "mq.caut.userlen2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT userid length 2", HFILL }},
- { &hf_mq_caut_pswdlen2 ,{"pswdlen2", "mq.caut.pswdlen2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "CAUT password length 5", HFILL }},
- { &hf_mq_caut_usr ,{"userid..", "mq.msh.userid" , FT_STRINGZ, BASE_NONE, NULL, 0x0, "CAUT UserId", HFILL }},
- { &hf_mq_caut_psw ,{"password", "mq.msh.password" , FT_STRINGZ, BASE_NONE, NULL, 0x0, "CAUT PAssword", HFILL }},
-
- { &hf_mq_id_icf_msgseq ,{"Message sequence..", "mq.id.icf.msgseq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_MSG_SEQ, "ID ICF Message sequence", HFILL }},
- { &hf_mq_id_icf_convcap ,{"Conversion capable", "mq.id.icf.convcap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_CONVERSION_CAPABLE, "ID ICF Conversion capable", HFILL }},
- { &hf_mq_id_icf_splitmsg,{"Split messages....", "mq.id.icf.splitmsg", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_SPLIT_MESSAGE, "ID ICF Split message", HFILL }},
- { &hf_mq_id_icf_mqreq ,{"MQ request........", "mq.id.icf.mqreq", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_MQREQUEST, "ID ICF MQ request", HFILL }},
- { &hf_mq_id_icf_svrsec ,{"Srvr Con security.", "mq.id.icf.svrsec", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_SVRCONN_SECURITY, "ID ICF Server connection security", HFILL }},
- { &hf_mq_id_icf_runtime ,{"Runtime applic....", "mq.id.icf.runtime", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF_RUNTIME, "ID ICF Runtime application", HFILL }},
-
- { &hf_mq_msh_structid ,{"structid", "mq.msh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_socket_conversid,{"ConversId", "mq.socket.conversid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Conversation Id", HFILL }},
+ { &hf_mq_socket_requestid,{"RequestId", "mq.socket.requestid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Request Id", HFILL }},
+ { &hf_mq_socket_type ,{"Type.....", "mq.socket.type", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Type", HFILL }},
+ { &hf_mq_socket_parm1 ,{"Parm1....", "mq.socket.parm1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Parameter 1", HFILL }},
+ { &hf_mq_socket_parm2 ,{"Parm2....", "mq.socket.parm2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Socket Parameter 2", HFILL }},
+
+ { &hf_mq_caut_StructID ,{"StructID." , "mq.caut.structid" , FT_STRINGZ, BASE_NONE , NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_caut_AuthType ,{"AuthType." , "mq.caut.authtype" , FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT Authority Type", HFILL }},
+ { &hf_mq_caut_UsrMaxLen,{"UsrMaxLen", "mq.caut.usrmaxlen", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT userid Maximum length", HFILL }},
+ { &hf_mq_caut_PwdMaxLen,{"PwdMaxLen", "mq.caut.pwdmaxlen", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT password Maximum length", HFILL }},
+ { &hf_mq_caut_UsrLength,{"UsrLength", "mq.caut.usrlength", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT userid length", HFILL }},
+ { &hf_mq_caut_PwdLength,{"PwdLength", "mq.caut.pswlength", FT_UINT32 , BASE_HEX_DEC, NULL, 0x0, "CAUT password length", HFILL }},
+ { &hf_mq_caut_usr ,{"userid...", "mq.msh.userid" , FT_STRINGZ, BASE_NONE , NULL, 0x0, "CAUT UserId", HFILL }},
+ { &hf_mq_caut_psw ,{"password.", "mq.msh.password" , FT_STRINGZ, BASE_NONE , NULL, 0x0, "CAUT Password", HFILL }},
+
+ { &hf_mq_msh_StructID ,{"StructID", "mq.msh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_msh_seqnum ,{"Seq Numb", "mq.msh.seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, "MSH sequence number", HFILL }},
{ &hf_mq_msh_datalength,{"Buf len.", "mq.msh.buflength", FT_UINT32, BASE_DEC, NULL, 0x0, "MSH buffer length", HFILL }},
{ &hf_mq_msh_unknown1 ,{"Unknown1", "mq.msh.unknown1", FT_UINT32, BASE_HEX, NULL, 0x0, "MSH unknown1", HFILL }},
{ &hf_mq_msh_msglength ,{"Msg len.", "mq.msh.msglength", FT_UINT32, BASE_DEC, NULL, 0x0, "MSH message length", HFILL }},
- { &hf_mq_xqh_structid ,{"structid", "mq.xqh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_xqh_StructID ,{"StructID", "mq.xqh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_xqh_version ,{"Version.", "mq.xqh.version", FT_UINT32, BASE_DEC, NULL, 0x0, "XQH version", HFILL }},
{ &hf_mq_xqh_remoteq ,{"Remote Q", "mq.xqh.remoteq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "XQH remote queue", HFILL }},
{ &hf_mq_xqh_remoteqmgr,{"Rmt QMgr", "mq.xqh.remoteqmgr", FT_STRINGZ, BASE_NONE, NULL, 0x0, "XQH remote queue manager", HFILL }},
- { &hf_mq_id_structid ,{"Structid..", "mq.id.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_mq_id_level ,{"FAP level.", "mq.id.level", FT_UINT8, BASE_DEC, NULL, 0x0, "ID Formats And Protocols level", HFILL }},
- { &hf_mq_id_flags ,{"Flags.....", "mq.id.flags", FT_UINT8, BASE_HEX, NULL, 0x0, "ID flags", HFILL }},
- { &hf_mq_id_unknown02 ,{"Unknown02.", "mq.id.unknown02", FT_UINT8, BASE_HEX, NULL, 0x0, "ID unknown02", HFILL }},
- { &hf_mq_id_ieflags ,{"InitErrFlg", "mq.id.ief", FT_UINT8, BASE_HEX, NULL, 0x0, "ID initial error flags", HFILL }},
- { &hf_mq_id_unknown04 ,{"Unknown04.", "mq.id.unknown04", FT_UINT16, BASE_HEX, NULL, 0x0, "ID unknown04", HFILL }},
+ { &hf_mq_id_StructID ,{"Structid..", "mq.id.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_id_FapLevel ,{"FAP level.", "mq.id.level", FT_UINT8, BASE_DEC, NULL, 0x0, "ID Formats And Protocols level", HFILL }},
+ { &hf_mq_id_icf1 ,{"CapFlag1..", "mq.id.idflags", FT_UINT8, BASE_HEX, NULL, 0x0, "ID Capability Flags 1", HFILL }},
+ { &hf_mq_id_Eicf1 ,{"ECapFlag1.", "mq.id.ideflags", FT_UINT8, BASE_HEX, NULL, 0x0, "ID E Capability Flags 1", HFILL }},
+ { &hf_mq_id_ief1 ,{"IniErrFlg1", "mq.id.ief", FT_UINT8, BASE_HEX, NULL, 0x0, "ID Initial Error Flags 1", HFILL }},
+ { &hf_mq_id_Reserved ,{"Reserved..", "mq.id.unknown04", FT_UINT16, BASE_HEX, NULL, 0x0, "ID Reserved", HFILL }},
{ &hf_mq_id_MaxMsgBatch,{"MaxMsgBtch", "mq.id.MaxMsgBatch", FT_UINT16, BASE_DEC, NULL, 0x0, "ID max msg per batch", HFILL }},
{ &hf_mq_id_MaxTrSize ,{"MaxTrSize.", "mq.id.MaxTrSize", FT_UINT32, BASE_DEC, NULL, 0x0, "ID max trans size", HFILL }},
- { &hf_mq_id_maxmsgsize ,{"MaxMsgSize", "mq.id.maxmsgsize", FT_UINT32, BASE_DEC, NULL, 0x0, "ID max msg size", HFILL }},
+ { &hf_mq_id_MaxMsgSize ,{"MaxMsgSize", "mq.id.maxmsgsize", FT_UINT32, BASE_DEC, NULL, 0x0, "ID max msg size", HFILL }},
{ &hf_mq_id_SeqWrapVal ,{"SeqWrapVal", "mq.id.seqwrap", FT_UINT32, BASE_DEC, NULL, 0x0, "ID seq wrap value", HFILL }},
{ &hf_mq_id_channel ,{"ChannelNme", "mq.id.channelname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID channel name", HFILL }},
- { &hf_mq_id_capflags ,{"CapabilFlg", "mq.id.capflags", FT_UINT16, BASE_HEX, NULL, 0x0, "ID Capability flags", HFILL }},
- { &hf_mq_id_ccsid ,{"ccsid.....", "mq.id.ccsid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID character set", HFILL }},
- { &hf_mq_id_qmgrname ,{"QMgrName..", "mq.id.qm", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID Queue manager", HFILL }},
+ { &hf_mq_id_icf2 ,{"CapFlag2..", "mq.id.idflags2", FT_UINT8, BASE_HEX, NULL, 0x0, "ID Capability flags 2", HFILL }},
+ { &hf_mq_id_Eicf2 ,{"ECapFlag2.", "mq.id.ideflags2", FT_UINT8, BASE_HEX, NULL, 0x0, "ID E Capabitlity flags 2", HFILL }},
+ { &hf_mq_id_ccsid ,{"ccsid.....", "mq.id.ccsid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Coded Character Set ID", HFILL }},
+ { &hf_mq_id_qmgrname ,{"QMgrName..", "mq.id.qm", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID Queue Manager Name", HFILL }},
{ &hf_mq_id_HBInterval ,{"HBInterval", "mq.id.hbint", FT_UINT32, BASE_DEC, NULL, 0x0, "ID Heartbeat interval", HFILL }},
- { &hf_mq_id_unknown06 ,{"Unknown06.", "mq.id.unknown06", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown06", HFILL }},
- { &hf_mq_id_unknown07 ,{"Unknown07.", "mq.id.unknown07", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown07", HFILL }},
- { &hf_mq_id_unknown08 ,{"Unknown08.", "mq.id.unknown08", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown08", HFILL }},
- { &hf_mq_id_unknown09 ,{"Unknown09.", "mq.id.unknown09", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Unknown09", HFILL }},
- { &hf_mq_id_unknown10 ,{"Unknown10.", "mq.id.unknown10", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown10", HFILL }},
- { &hf_mq_id_unknown11 ,{"Unknown11.", "mq.id.unknown11", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown11", HFILL }},
- { &hf_mq_id_unknown12 ,{"Unknown12.", "mq.id.unknown12", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown12", HFILL }},
- { &hf_mq_id_unknown13 ,{"Unknown13.", "mq.id.unknown13", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown13", HFILL }},
- { &hf_mq_id_unknown14 ,{"Unknown14.", "mq.id.unknown14", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown14", HFILL }},
- { &hf_mq_id_unknown15 ,{"Unknown15.", "mq.id.unknown15", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown15", HFILL }},
- { &hf_mq_id_unknown16 ,{"Unknown16.", "mq.id.unknown16", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown16", HFILL }},
- { &hf_mq_id_unknown17 ,{"Unknown17.", "mq.id.unknown17", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown17", HFILL }},
- { &hf_mq_id_unknown18 ,{"Unknown18.", "mq.id.unknown18", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown18", HFILL }},
- { &hf_mq_id_unknown19 ,{"Unknown19.", "mq.id.unknown19", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Unknown19", HFILL }},
- { &hf_mq_id_mqmvers ,{"MQ Version", "mq.id.mqmvers", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID MQM Version", HFILL }},
+ { &hf_mq_id_EFLLength ,{"EFLLength.", "mq.id.efllength", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID EFL Length", HFILL }},
+ { &hf_mq_id_ief2 ,{"IniErrFlg2", "mq.id.inierrflg2", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID Initial Error Flags 2", HFILL }},
+ { &hf_mq_id_Reserved1 ,{"Reserved1.", "mq.id.reserved1", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID Reserved 1", HFILL }},
+ { &hf_mq_id_HdrCprsLst ,{"HdrCprsLst", "mq.id.hdrcprslst", FT_BYTES, BASE_NONE, NULL, 0x0, "ID Hdr Cprs Lst", HFILL }},
+ { &hf_mq_id_MsgCprsLst ,{"MsgCprsLst", "mq.id.msgcprslst", FT_BYTES, BASE_NONE, NULL, 0x0, "ID Msg Cprs Lst", HFILL }},
+ { &hf_mq_id_Reserved2 ,{"Reserved2.", "mq.id.reserved2", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Reserved 2", HFILL }},
+ { &hf_mq_id_SSLKeyRst ,{"SSLKeyRst.", "mq.id.sslkeyrst", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID SSL Key Reset", HFILL }},
+ { &hf_mq_id_ConvBySkt ,{"ConvBySkt.", "mq.id.convbyskt", FT_INT32, BASE_DEC, NULL, 0x0, "ID Conv Per Socket", HFILL }},
+ { &hf_mq_id_icf3 ,{"CapFlag3..", "mq.id.idflags3", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID Capability flags 3", HFILL }},
+ { &hf_mq_id_Eicf3 ,{"ECapFlag3.", "mq.id.ideflags3", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, "ID E Capability flags 3", HFILL }},
+ { &hf_mq_id_Reserved3 ,{"Reserved3.", "mq.id.reserved3", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "ID Reserved 3", HFILL }},
+ { &hf_mq_id_ProcessId ,{"ProcessId.", "mq.id.processid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Process Identifier", HFILL }},
+ { &hf_mq_id_ThreadId ,{"ThreadId..", "mq.id.threadid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Thread Identifier", HFILL }},
+ { &hf_mq_id_TraceId ,{"TraceId...", "mq.id.traceid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "ID Trace Identifier", HFILL }},
+ { &hf_mq_id_ProdId ,{"ProdId....", "mq.id.prodid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID Product Identifier", HFILL }},
{ &hf_mq_id_mqmid ,{"MQM ID....", "mq.id.mqmid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID MQM ID", HFILL }},
- { &hf_mq_id_ief_ccsid ,{"Invalid CCSID.........", "mq.id.ief.ccsid", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_CCSID, "ID invalid CCSID", HFILL }},
- { &hf_mq_id_ief_enc ,{"Invalid encoding......", "mq.id.ief.enc", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_ENCODING, "ID invalid encoding", HFILL }},
- { &hf_mq_id_ief_mxtrsz ,{"Invalid Max Trans Size", "mq.id.ief.mxtrsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_MAX_TRANSMISSION_SIZE, "ID invalid maximum transmission size", HFILL }},
- { &hf_mq_id_ief_fap ,{"Invalid FAP level.....", "mq.id.ief.fap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_FAP_LEVEL, "ID invalid FAP level", HFILL }},
- { &hf_mq_id_ief_mxmsgsz,{"Invalid message size..", "mq.id.ief.mxmsgsz", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_MAX_MSG_SIZE, "ID invalid message size", HFILL }},
- { &hf_mq_id_ief_mxmsgpb,{"Invalid Max Msg batch.", "mq.id.ief.mxmsgpb", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_MAX_MSG_PER_BATCH, "ID maximum message per batch", HFILL }},
- { &hf_mq_id_ief_seqwrap,{"Invalid Seq Wrap Value", "mq.id.ief.seqwrap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_SEQ_WRAP_VALUE, "ID invalid sequence wrap value", HFILL }},
- { &hf_mq_id_ief_hbint ,{"Invalid HB interval...", "mq.id.ief.hbint", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF_HEARTBEAT_INTERVAL, "ID invalid heartbeat interval", HFILL }},
-
- { &hf_mq_uid_structid ,{"Structid", "mq.uid.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_id_icf1_msgseq ,{"Message sequence", "mq.id.icf.msgseq" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_MSG_SEQ, "ID ICF Message sequence", HFILL }},
+ { &hf_mq_id_icf1_convcap ,{"Conversion capable", "mq.id.icf.convcap" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_CONVERSION_CAPABLE, "ID ICF Conversion capable", HFILL }},
+ { &hf_mq_id_icf1_splitmsg,{"Split messages", "mq.id.icf.splitmsg", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_SPLIT_MESSAGE, "ID ICF Split message", HFILL }},
+ { &hf_mq_id_icf1_RqstInit,{"Request Initiation", "mq.id.icf.rqstinit", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_REQUEST_INITIATION, "ID ICF Request Initiation", HFILL }},
+ { &hf_mq_id_icf1_RqstSecu,{"Request Security", "mq.id.icf.rqstsecu", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_REQUEST_SECURITY, "ID ICF Request Security", HFILL }},
+ { &hf_mq_id_icf1_mqreq ,{"MQ request", "mq.id.icf.mqreq" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_MQREQUEST, "ID ICF MQ request", HFILL }},
+ { &hf_mq_id_icf1_svrsec ,{"Srvr Con security", "mq.id.icf.svrsec" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_SVRCONN_SECURITY, "ID ICF Server connection security", HFILL }},
+ { &hf_mq_id_icf1_runtime ,{"Runtime applic", "mq.id.icf.runtime" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF1_RUNTIME, "ID ICF Runtime application", HFILL }},
+
+ { &hf_mq_id_icf2_CanDstLst,{"DistListCapable", "mq.id.icf2.distlistcap" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_DIST_LIST_CAPABLE, "ID ICF2 Distribution List Capable", HFILL }},
+ { &hf_mq_id_icf2_FstMsgReq,{"Fast Msg Reqrd", "mq.id.icf2.fastmsgrqrd" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_FAST_MESSAGES_REQUIRED, "ID ICF2 Fast Message Required", HFILL }},
+ { &hf_mq_id_icf2_RespConv ,{"RspndrConversion", "mq.id.icf2.respndrconvers", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_RESPONDER_CONVERSION, "ID ICF2 Responder Conversion", HFILL }},
+ { &hf_mq_id_icf2_XARequest,{"XARequest", "mq.id.icf2.xarequest" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_XAREQUEST, "ID ICF2 XA Request", HFILL }},
+ { &hf_mq_id_icf2_XARunTApp,{"XARunTypApp", "mq.id.icf2.xaruntypapp" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_XARUNTIME_APP, "ID ICF2 XA Runtime App", HFILL }},
+ { &hf_mq_id_icf2_SPIRqst ,{"SPIRequest", "mq.id.icf2.spirequest" , FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_ICF2_SPIREQUEST, "ID ICF2 SPI Request", HFILL }},
+ { &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 Falg x02", 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_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 }},
+ { &hf_mq_id_ief1_mxmsgpb,{"Invalid Max Msg batch", "mq.id.ief1.mxmsgpb", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_MAX_MSG_PER_BATCH, "ID maximum message per batch", HFILL }},
+ { &hf_mq_id_ief1_seqwrap,{"Invalid Seq Wrap Value", "mq.id.ief1.seqwrap", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_SEQ_WRAP_VALUE, "ID invalid sequence wrap value", HFILL }},
+ { &hf_mq_id_ief1_hbint ,{"Invalid HB interval", "mq.id.ief1.hbint", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF1_HEARTBEAT_INTERVAL, "ID invalid heartbeat interval", HFILL }},
+
+ { &hf_mq_id_ief2_HdrCmpLst,{"Invalid HDR CompLst", "mq.id.ief2.hdrcomplst", FT_BOOLEAN, 8, TFS(&tfs_set_notset), MQ_IEF2_HDRCOMPLIST, "ID invalid Header Compression List", HFILL }},
+ { &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_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 }},
{ &hf_mq_uid_longuserid,{"Long UID", "mq.uid.longuserid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "UID long user id", HFILL }},
@@ -3674,7 +3835,7 @@ void proto_register_mq(void)
{ &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_fcno_structid ,{"StructId.", "mq.fcno.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_fcno_StructID ,{"StructId.", "mq.fcno.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_fcno_unknown00,{"unknown00", "mq.fcno.unknown00", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "FCNO unknown00", HFILL }},
{ &hf_mq_fcno_unknown01,{"unknown01", "mq.fcno.unknown01", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "FCNO unknown01", HFILL }},
{ &hf_mq_fcno_unknown02,{"unknown02", "mq.fcno.unknown02", FT_BYTES, BASE_NONE, NULL, 0x0, "FCNO unknown02", HFILL }},
@@ -3692,7 +3853,7 @@ void proto_register_mq(void)
{ &hf_mq_spi_version ,{"Version", "mq.spi.version", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Version", HFILL }},
{ &hf_mq_spi_length ,{"Max reply size", "mq.spi.replength", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Max reply size", HFILL }},
- { &hf_mq_spi_base_structid,{"SPI Structid", "mq.spib.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_spi_base_StructID,{"SPI Structid", "mq.spib.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_spi_base_version ,{"Version", "mq.spib.version", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Base Version", HFILL }},
{ &hf_mq_spi_base_length ,{"Length", "mq.spib.length", FT_UINT32, BASE_DEC, NULL, 0x0, "SPI Base Length", HFILL }},
@@ -3720,13 +3881,38 @@ void proto_register_mq(void)
{ &hf_mq_put_length ,{"Data length", "mq.put.length", FT_UINT32, BASE_DEC, NULL, 0x0, "PUT Data length", HFILL }},
{ &hf_mq_close_options ,{"Options", "mq.close.options", FT_UINT32, BASE_HEX, NULL, 0x0, "CLOSE options", HFILL }},
- { &hf_mq_close_options_DELETE ,{"DELETE......", "mq.close.options.Delete", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_DELETE, "CLOSE options DELETE", HFILL }},
+ { &hf_mq_close_options_DELETE ,{"DELETE", "mq.close.options.Delete", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_DELETE, "CLOSE options DELETE", HFILL }},
{ &hf_mq_close_options_DELETE_PURGE,{"DELETE_PURGE", "mq.close.options.DeletePurge", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_DELETE_PURGE, "CLOSE options DELETE_PURGE", HFILL }},
- { &hf_mq_close_options_KEEP_SUB ,{"KEEPSUB.....", "mq.close.options.KeepSub", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_KEEP_SUB, "CLOSE options KEEP_SUB", HFILL }},
- { &hf_mq_close_options_REMOVE_SUB ,{"REMOVE_SUB..", "mq.close.options.RemoveSub", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_REMOVE_SUB, "CLOSE options REMOVE_SUB", HFILL }},
- { &hf_mq_close_options_QUIESCE ,{"QUIESCE.....", "mq.close.options.Quiesce", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_QUIESCE, "CLOSE options QUIESCE", HFILL }},
+ { &hf_mq_close_options_KEEP_SUB ,{"KEEPSUB", "mq.close.options.KeepSub", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_KEEP_SUB, "CLOSE options KEEP_SUB", HFILL }},
+ { &hf_mq_close_options_REMOVE_SUB ,{"REMOVE_SUB", "mq.close.options.RemoveSub", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_REMOVE_SUB, "CLOSE options REMOVE_SUB", HFILL }},
+ { &hf_mq_close_options_QUIESCE ,{"QUIESCE", "mq.close.options.Quiesce", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQCO_QUIESCE, "CLOSE options QUIESCE", HFILL }},
{ &hf_mq_open_options ,{"Options", "mq.open.options", FT_UINT32, BASE_HEX, NULL, 0x0, "OPEN options", HFILL }},
+ { &hf_mq_open_options_INPUT_AS_Q_DEF ,{"INPUT_AS_Q_DEF", "mq.open.options.InputAsQDef", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_AS_Q_DEF, "OPEN options INPUT_AS_Q_DEF", HFILL }},
+ { &hf_mq_open_options_INPUT_SHARED ,{"INPUT_SHARED", "mq.open.options.InputShared", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_SHARED, "OPEN options INPUT_SHARED", HFILL }},
+ { &hf_mq_open_options_INPUT_EXCLUSIVE,{"INPUT_EXCLUSIVE", "mq.open.options.InputExclusive", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_EXCLUSIVE, "OPEN options INPUT_EXCLUSIVE", HFILL }},
+ { &hf_mq_open_options_BROWSE ,{"BROWSE", "mq.open.options.Browse", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BROWSE, "OPEN options BROWSE", HFILL }},
+ { &hf_mq_open_options_OUTPUT ,{"OUTPUT", "mq.open.options.Output", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_OUTPUT, "OPEN options OUTPUT", HFILL }},
+ { &hf_mq_open_options_INQUIRE ,{"INQUIRE", "mq.open.options.Inquire", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INQUIRE, "OPEN options INQUIRE", HFILL }},
+ { &hf_mq_open_options_SET ,{"SET", "mq.open.options.Set", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET, "OPEN options SET", HFILL }},
+ { &hf_mq_open_options_SAVE_ALL_CTX ,{"SAVE_ALL_CONTEXT", "mq.open.options.SaveAllContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SAVE_ALL_CONTEXT, "OPEN options SAVE_ALL_CONTEXT", HFILL }},
+ { &hf_mq_open_options_PASS_IDENT_CTX ,{"PASS_IDENTITY_CONTEXT", "mq.open.options.PassIdentityContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_PASS_IDENTITY_CONTEXT, "OPEN options PASS_IDENTITY_CONTEXT", HFILL }},
+ { &hf_mq_open_options_PASS_ALL_CTX ,{"PASS_ALL_CONTEXT", "mq.open.options.PassAllContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_PASS_ALL_CONTEXT, "OPEN options PASS_ALL_CONTEXT", HFILL }},
+ { &hf_mq_open_options_SET_IDENT_CTX ,{"SET_IDENTITY_CONTEXT", "mq.open.options.SetIdentityContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET_IDENTITY_CONTEXT, "OPEN options SET_IDENTITY_CONTEXT", HFILL }},
+ { &hf_mq_open_options_SET_ALL_CONTEXT,{"SET_ALL_CONTEXT", "mq.open.options.SetAllContext", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_SET_ALL_CONTEXT, "OPEN options SET_ALL_CONTEXT", HFILL }},
+ { &hf_mq_open_options_ALT_USER_AUTH ,{"ALTERNATE_USER_AUTHORITY", "mq.open.options.AlternateUserAuthority", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_ALTERNATE_USER_AUTHORITY, "OPEN options ALTERNATE_USER_AUTHORITY", HFILL }},
+ { &hf_mq_open_options_FAIL_IF_QUIESC ,{"FAIL_IF_QUIESCING", "mq.open.options.FailIfQuiescing", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_FAIL_IF_QUIESCING, "OPEN options FAIL_IF_QUIESCING", HFILL }},
+ { &hf_mq_open_options_BIND_ON_OPEN ,{"BIND_ON_OPEN", "mq.open.options.BindOnOpen", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_ON_OPEN, "OPEN options BIND_ON_OPEN", HFILL }},
+ { &hf_mq_open_options_BIND_NOT_FIXED ,{"BIND_NOT_FIXED", "mq.open.options.BindNotFixed", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_BIND_NOT_FIXED, "OPEN options BIND_NOT_FIXED", HFILL }},
+ { &hf_mq_open_options_RESOLVE_NAMES ,{"RESOLVE_NAMES", "mq.open.options.ResolveNames", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_RESOLVE_NAMES, "OPEN options RESOLVE_NAMES", HFILL }},
+ { &hf_mq_open_options_CO_OP ,{"CO_OP", "mq.open.options.CoOp", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_CO_OP, "OPEN options CO_OP", HFILL }},
+ { &hf_mq_open_options_RESOLVE_LOCAL_Q,{"RESOLVE_LOCAL_Q", "mq.open.options.ResolveLocalQueueOrTopic", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_RESOLVE_LOCAL_Q, "OPEN options RESOLVE_LOCAL_Q", HFILL }},
+ { &hf_mq_open_options_NO_READ_AHEAD ,{"NO_READ_AHEAD", "mq.open.options.NoReadAhead", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_NO_READ_AHEAD, "OPEN options NO_READ_AHEAD", HFILL }},
+ { &hf_mq_open_options_READ_AHEAD ,{"READ_AHEAD", "mq.open.options.ReadAhead", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_READ_AHEAD, "OPEN options READ_AHEAD", HFILL }},
+ { &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_open_options_INPUT_AS_Q_DEF ,{"INPUT_AS_Q_DEF..........", "mq.open.options.InputAsQDef", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_AS_Q_DEF, "OPEN options INPUT_AS_Q_DEF", HFILL }},
{ &hf_mq_open_options_INPUT_SHARED ,{"INPUT_SHARED............", "mq.open.options.InputShared", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_SHARED, "OPEN options INPUT_SHARED", HFILL }},
{ &hf_mq_open_options_INPUT_EXCLUSIVE,{"INPUT_EXCLUSIVE.........", "mq.open.options.InputExclusive", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_INPUT_EXCLUSIVE, "OPEN options INPUT_EXCLUSIVE", HFILL }},
@@ -3750,8 +3936,9 @@ void proto_register_mq(void)
{ &hf_mq_open_options_READ_AHEAD ,{"READ_AHEAD..............", "mq.open.options.ReadAhead", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQOO_READ_AHEAD, "OPEN options READ_AHEAD", HFILL }},
{ &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_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 }},
@@ -3761,49 +3948,46 @@ void proto_register_mq(void)
{ &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_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 }},
- { &hf_mq_msgreq_unknown1,{"unknown1", "mq.msgreq.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown1", HFILL }},
- { &hf_mq_msgreq_unknown2,{"unknown2", "mq.msgreq.unknown2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown2", HFILL }},
- { &hf_mq_msgreq_maxlen ,{"maxlen..", "mq.msgreq.maxlen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ End Position", HFILL }},
- { &hf_mq_msgreq_unknown4,{"unknown4", "mq.msgreq.unknown4", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown4", HFILL }},
- { &hf_mq_msgreq_timeout ,{"timeout.", "mq.msgreq.timeout", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ timeout", HFILL }},
- { &hf_mq_msgreq_unknown5,{"unknown5", "mq.msgreq.unknown5", FT_UINT32, BASE_HEX, NULL, 0x0, "MSGREQ unknown5", HFILL }},
- { &hf_mq_msgreq_flags ,{"flags...", "mq.msgreq.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ flags", HFILL }},
- { &hf_mq_msgreq_lstseqnr,{"lstseqnr", "mq.msgreq.lstseqnr", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Last Sequence Number", HFILL }},
- { &hf_mq_msgreq_msegver ,{"msegver.", "mq.msgreq.msegver", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ multi segment hdr version", HFILL }},
- { &hf_mq_msgreq_msegseq ,{"msegseq.", "mq.msgreq.msegseq", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGREQ multi segment sequence number", HFILL }},
- { &hf_mq_msgreq_ccsid ,{"ccsid...", "mq.msgreq.ccsid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ ccsid", HFILL }},
- { &hf_mq_msgreq_encoding,{"encoding", "mq.msgreq.encoding", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ encoding", HFILL }},
- { &hf_mq_msgreq_unknown6,{"unknown6", "mq.msgreq.unknown6", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown6", HFILL }},
- { &hf_mq_msgreq_unknown7,{"unknown7", "mq.msgreq.unknown7", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ unknown7", HFILL }},
- { &hf_mq_msgreq_xfldflag,{"xfldflag", "mq.msgreq.xfldflag", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Extended Field Flag", HFILL }},
- { &hf_mq_msgreq_msgid ,{"msgid...", "mq.msgreq.xfldmsgid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MSGREQ xfld msgid", HFILL }},
- { &hf_mq_msgreq_mqmid ,{"mqmid...", "mq.msgreq.xfldmqmid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MSGREQ xfld mqmid", HFILL }},
-
- { &hf_mq_msgasy_version ,{"version.", "mq.msgasy.version", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC version", HFILL }},
- { &hf_mq_msgasy_handle ,{"handle..", "mq.msgasy.handle", FT_UINT32, BASE_HEX, NULL, 0x0, "MSGASYNC handle", HFILL }},
- { &hf_mq_msgasy_unknown1,{"unknown1", "mq.msgasy.unknown1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown1", HFILL }},
- { &hf_mq_msgasy_curseqnr,{"curseqnr", "mq.msgasy.curseqnr", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC curseqnr", HFILL }},
- { &hf_mq_msgasy_payload ,{"payload.", "mq.msgasy.payload", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC payload", HFILL }},
- { &hf_mq_msgasy_msegver ,{"msegver.", "mq.msgasy.msegver", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC multi segment hdr version", HFILL }},
- { &hf_mq_msgasy_msegseq ,{"msegseq.", "mq.msgasy.msegseq", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC multi segment sequence number", HFILL }},
- { &hf_mq_msgasy_flags ,{"flags...", "mq.msgasy.flags", FT_UINT32, BASE_HEX, NULL, 0x0, "MSGASYNC flags", HFILL }},
- { &hf_mq_msgasy_totlen1 ,{"totlen1.", "mq.msgasy.totlen1", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC totlen1", HFILL }},
- { &hf_mq_msgasy_totlen2 ,{"totlen2.", "mq.msgasy.totlen2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC totlen2", HFILL }},
- { &hf_mq_msgasy_unknown2,{"unknown2", "mq.msgasy.unknown2", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown2", HFILL }},
- { &hf_mq_msgasy_unknown3,{"unknown3", "mq.msgasy.unknown3", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown3", HFILL }},
- { &hf_mq_msgasy_unknown4,{"unknown4", "mq.msgasy.unknown4", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown4", HFILL }},
- { &hf_mq_msgasy_unknown5,{"unknown5", "mq.msgasy.unknown5", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC unknown5", HFILL }},
- { &hf_mq_msgasy_strFlg ,{"strflg..", "mq.msgasy.strflg", FT_UINT16, BASE_HEX, NULL, 0x0, "MSGASYNC Str Flag", HFILL }},
- { &hf_mq_msgasy_strLen ,{"strlen..", "mq.msgasy.strlen", FT_UINT8, BASE_DEC, NULL, 0x0, "MSGASYNC Str Len", HFILL }},
- { &hf_mq_msgasy_strVal ,{"strval..", "mq.msgasy.strval", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MSGASYNC Str Val", HFILL }},
- { &hf_mq_msgasy_strPad ,{"strpad..", "mq.msgasy.strpad", FT_BYTES, BASE_NONE, NULL, 0x0, "MSGASYNC Str Pad", HFILL }},
-
- { &hf_mq_notif_vers ,{"version.", "mq.notif.vers", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "NOTIFICATION version", HFILL }},
- { &hf_mq_notif_handle ,{"handle..", "mq.notif.handle", FT_UINT32, BASE_HEX, NULL, 0x0, "NOTIFICATION handle", HFILL }},
- { &hf_mq_notif_code ,{"code....", "mq.notif.code", FT_UINT32, BASE_HEX_DEC, VALS(GET_VALSV(notifcode)), 0x0, "NOTIFICATION code", HFILL }},
- { &hf_mq_notif_mqrc ,{"mqrc....", "mq.notif.mqrc", FT_UINT32, BASE_HEX_DEC, VALS(GET_VALSV(mqrc)), 0x0, "NOTIFICATION MQRC", 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 }},
+ { &hf_mq_msgreq_RecvBytes,{"RecvBytes", "mq.msgreq.unknown1" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Received Bytes", HFILL }},
+ { &hf_mq_msgreq_RqstBytes,{"RqstBytes", "mq.msgreq.rqstbytes", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Requesed Bytes", HFILL }},
+ { &hf_mq_msgreq_MaxMsgLen,{"MaxMsgLen", "mq.msgreq.maxmsglen", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Maximum Msg Length", HFILL }},
+ { &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_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 }},
+ { &hf_mq_msgreq_ccsid ,{"CCSID....", "mq.msgreq.ccsid" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ ccsid", HFILL }},
+ { &hf_mq_msgreq_encoding ,{"Encoding.", "mq.msgreq.encoding" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ encoding", HFILL }},
+ { &hf_mq_msgreq_MsgSeqNum,{"MsgSeqNum", "mq.msgreq.msgseqnum", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Message Sequence Number", HFILL }},
+ { &hf_mq_msgreq_offset ,{"Offset...", "mq.msgreq.offset" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGREQ Offset", HFILL }},
+ { &hf_mq_msgreq_mtchMsgId,{"mtchMsgId", "mq.msgreq.mtchMsgId", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match MsgID", HFILL }},
+ { &hf_mq_msgreq_mtchCorId,{"mtchCorID", "mq.msgreq.mtchcorid", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match Correlation Id", HFILL }},
+ { &hf_mq_msgreq_mtchGrpid,{"mtchGrpID", "mq.msgreq.mtchgrpid", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match Group ID", HFILL }},
+ { &hf_mq_msgreq_mtchMsgTk,{"mtchMsgTk", "mq.msgreq.mtchmsgtk", FT_BYTES , BASE_NONE , NULL, 0x0, "MSGREQ match Message Token", HFILL }},
+
+ { &hf_mq_msgasy_version ,{"version..", "mq.msgasy.version" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC version", HFILL }},
+ { &hf_mq_msgasy_handle ,{"handle...", "mq.msgasy.handle" , FT_UINT32, BASE_HEX, NULL, 0x0, "MSGASYNC handle", HFILL }},
+ { &hf_mq_msgasy_MsgIndex ,{"MsgIndex.", "mq.msgasy.msgindex" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Message Index", HFILL }},
+ { &hf_mq_msgasy_GlbMsgIdx,{"GlbMsgIdx", "mq.msgasy.glbmsgidx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "MSGASYNC Global Message Index", HFILL }},
+ { &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_HEX , NULL, 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 }},
+ { &hf_mq_msgasy_Status ,{"status...", "mq.msgasy.status" , FT_UINT16, BASE_HEX , NULL, 0x0, "MSGASYNC Status", HFILL }},
+ { &hf_mq_msgasy_resolQNLn,{"resolQNLn", "mq.msgasy.resolqnln", FT_UINT8 , BASE_DEC , NULL, 0x0, "MSGASYNC Resolved Queue Name Length", HFILL }},
+ { &hf_mq_msgasy_resolQNme,{"resolQNme", "mq.msgasy.resolqnme", FT_STRINGZ, BASE_NONE , NULL, 0x0, "MSGASYNC Resolved Queue Name", HFILL }},
+ { &hf_mq_msgasy_padding ,{"Padding..", "mq.msgasy.padding" , FT_BYTES , BASE_NONE , NULL, 0x0, "MSGASYNC Padding", HFILL }},
+
+ { &hf_mq_notif_vers ,{"version.", "mq.notif.vers" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "NOTIFICATION version", HFILL }},
+ { &hf_mq_notif_handle ,{"handle..", "mq.notif.handle", FT_UINT32, BASE_HEX , NULL, 0x0, "NOTIFICATION handle", HFILL }},
+ { &hf_mq_notif_code ,{"code....", "mq.notif.code" , FT_UINT32, BASE_HEX_DEC, VALS(GET_VALSV(notifcode)), 0x0, "NOTIFICATION code", HFILL }},
+ { &hf_mq_notif_value ,{"value...", "mq.notif.value" , FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "NOTIFICATION MQRC", HFILL }},
{ &hf_mq_ping_length ,{"Length", "mq.ping.length", FT_UINT32, BASE_DEC, NULL, 0x0, "PING length", HFILL }},
{ &hf_mq_ping_buffer ,{"Buffer", "mq.ping.buffer", FT_BYTES, BASE_NONE, NULL, 0x0, "PING buffer", HFILL }},
@@ -3812,10 +3996,10 @@ void proto_register_mq(void)
{ &hf_mq_reset_seqnum ,{"SeqNum", "mq.reset.seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, "RESET sequence number", HFILL }},
{ &hf_mq_status_length ,{"Length", "mq.status.length", FT_UINT32, BASE_DEC, NULL, 0x0, "STATUS length", HFILL }},
- { &hf_mq_status_code ,{"Code..", "mq.status.code", FT_UINT32, BASE_DEC, VALS(mq_status_vals), 0x0, "STATUS code", HFILL }},
- { &hf_mq_status_value ,{"Value.", "mq.status.value", FT_UINT32, BASE_DEC, NULL, 0x0, "STATUS value", HFILL }},
+ { &hf_mq_status_code ,{"Code..", "mq.status.code" , FT_UINT32, BASE_DEC, VALS(GET_VALSV(status)), 0x0, "STATUS code", HFILL }},
+ { &hf_mq_status_value ,{"Value.", "mq.status.value" , FT_UINT32, BASE_DEC, NULL, 0x0, "STATUS value", HFILL }},
- { &hf_mq_od_structid ,{"structid.........", "mq.od.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_od_StructID ,{"StructID.........", "mq.od.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_od_version ,{"version..........", "mq.od.version", FT_UINT32, BASE_DEC, NULL, 0x0, "OD version", HFILL }},
{ &hf_mq_od_objecttype ,{"ObjType..........", "mq.od.objtype", FT_UINT32, BASE_DEC, VALS(GET_VALSV(objtype)), 0x0, "OD object type", HFILL }},
{ &hf_mq_od_objectname ,{"ObjName..........", "mq.od.objname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "OD object name", HFILL }},
@@ -3847,7 +4031,7 @@ void proto_register_mq(void)
{ &hf_mq_pmr_feedback ,{"Feedback", "mq.pmr.feedback", FT_UINT32, BASE_DEC, NULL, 0x0, "PMR Feedback", HFILL }},
{ &hf_mq_pmr_acttoken ,{"Accounting token", "mq.pmr.acttoken", FT_BYTES, BASE_NONE, NULL, 0x0, "PMR accounting token", HFILL }},
- { &hf_mq_md_structid ,{"structid.", "mq.md.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &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 }},
@@ -3878,7 +4062,7 @@ void proto_register_mq(void)
{ &hf_mq_md_origlen ,{"Orig len.", "mq.md.origlength", FT_INT32, BASE_DEC, NULL, 0x0, "MD Original length", HFILL }},
/*{ &hf_mq_md_lastformat ,{"Last format", "mq.md.lastformat", FT_STRINGZ, BASE_NONE, NULL, 0x0, "MD Last format", HFILL }},*/
- { &hf_mq_dlh_structid ,{"structid.", "mq.dlh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_dlh_StructID ,{"StructID.", "mq.dlh.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_dlh_version ,{"Version..", "mq.dlh.version", FT_UINT32, BASE_DEC, NULL, 0x0, "DLH version", HFILL }},
{ &hf_mq_dlh_reason ,{"Reason...", "mq.dlh.reason", FT_UINT32, BASE_DEC, NULL, 0x0, "DLH reason", HFILL }},
{ &hf_mq_dlh_destq ,{"Dest Q...", "mq.dlh.destq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "DLH destination queue", HFILL }},
@@ -3895,11 +4079,40 @@ void proto_register_mq(void)
{ &hf_mq_dh_objrecofs ,{"Ofs1stOR.", "mq.dh.offsetor", FT_UINT32, BASE_DEC, NULL, 0x0, "DH offset of first OR", HFILL }},
{ &hf_mq_dh_putmsgrecofs,{"Ofs1stPMR", "mq.dh.offsetpmr", FT_UINT32, BASE_DEC, NULL, 0x0, "DH offset of first PMR", HFILL }},
- { &hf_mq_gmo_structid ,{"structid.", "mq.gmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_gmo_StructID ,{"StructID.", "mq.gmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_gmo_version ,{"Version..", "mq.gmo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "GMO version", HFILL }},
- { &hf_mq_gmo_options ,{"Options..", "mq.gmo.options", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO options", HFILL }},
+ { &hf_mq_gmo_options ,{"GetMsgOpt", "mq.gmo.getmsgopt", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO Get Message Options", HFILL }},
{ &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY,{"PROPERTIES_COMPATIBILITY", "mq.gmo.options.PROPERTIES_COMPATIBILITY", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_COMPATIBILITY, "GMO options PROPERTIES_COMPATIBILITY", HFILL }},
+ { &hf_mq_gmo_options_PROPERTIES_IN_HANDLE ,{"PROPERTIES_IN_HANDLE", "mq.gmo.options.PROPERTIES_IN_HANDLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_IN_HANDLE , "GMO options PROPERTIES_IN_HANDLE", HFILL }},
+ { &hf_mq_gmo_options_NO_PROPERTIES ,{"NO_PROPERTIES", "mq.gmo.options.NO_PROPERTIES", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_PROPERTIES , "GMO options NO_PROPERTIES", HFILL }},
+ { &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 ,{"PROPERTIES_FORCE_MQRFH2", "mq.gmo.options.PROPERTIES_FORCE_MQRFH2", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_FORCE_MQRFH2 , "GMO options PROPERTIES_FORCE_MQRFH2", HFILL }},
+ { &hf_mq_gmo_options_UNMARKED_BROWSE_MSG ,{"UNMARKED_BROWSE_MSG", "mq.gmo.options.UNMARKED_BROWSE_MSG", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARKED_BROWSE_MSG , "GMO options UNMARKED_BROWSE_MSG", HFILL }},
+ { &hf_mq_gmo_options_UNMARK_BROWSE_HANDLE ,{"UNMARK_BROWSE_HANDLE", "mq.gmo.options.UNMARK_BROWSE_HANDLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARK_BROWSE_HANDLE , "GMO options UNMARK_BROWSE_HANDLE", HFILL }},
+ { &hf_mq_gmo_options_UNMARK_BROWSE_CO_OP ,{"UNMARK_BROWSE_CO_OP", "mq.gmo.options.UNMARK_BROWSE_CO_OP", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNMARK_BROWSE_CO_OP , "GMO options UNMARK_BROWSE_CO_OP", HFILL }},
+ { &hf_mq_gmo_options_MARK_BROWSE_CO_OP ,{"MARK_BROWSE_CO_OP", "mq.gmo.options.MARK_BROWSE_CO_OP", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_BROWSE_CO_OP , "GMO options MARK_BROWSE_CO_OP", HFILL }},
+ { &hf_mq_gmo_options_MARK_BROWSE_HANDLE ,{"MARK_BROWSE_HANDLE", "mq.gmo.options.MARK_BROWSE_HANDLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_BROWSE_HANDLE , "GMO options MARK_BROWSE_HANDLE", HFILL }},
+ { &hf_mq_gmo_options_ALL_SEGMENTS_AVAILABLE ,{"ALL_SEGMENTS_AVAILABLE", "mq.gmo.options.ALL_SEGMENTS_AVAILABLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ALL_SEGMENTS_AVAILABLE , "GMO options ALL_SEGMENTS_AVAILABLE", HFILL }},
+ { &hf_mq_gmo_options_ALL_MSGS_AVAILABLE ,{"ALL_MSGS_AVAILABLE", "mq.gmo.options.ALL_MSGS_AVAILABLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ALL_MSGS_AVAILABLE , "GMO options ALL_MSGS_AVAILABLE", HFILL }},
+ { &hf_mq_gmo_options_COMPLETE_MSG ,{"COMPLETE_MSG", "mq.gmo.options.COMPLETE_MSG", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_COMPLETE_MSG , "GMO options COMPLETE_MSG", HFILL }},
+ { &hf_mq_gmo_options_LOGICAL_ORDER ,{"LOGICAL_ORDER", "mq.gmo.options.LOGICAL_ORDER", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_LOGICAL_ORDER , "GMO options LOGICAL_ORDER", HFILL }},
+ { &hf_mq_gmo_options_CONVERT ,{"CONVERT", "mq.gmo.options.CONVERT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_CONVERT , "GMO options CONVERT", HFILL }},
+ { &hf_mq_gmo_options_FAIL_IF_QUIESCING ,{"FAIL_IF_QUIESCING", "mq.gmo.options.FAIL_IF_QUIESCING", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_FAIL_IF_QUIESCING , "GMO options FAIL_IF_QUIESCING", HFILL }},
+ { &hf_mq_gmo_options_SYNCPOINT_IF_PERSISTENT ,{"SYNCPOINT_IF_PERSISTENT", "mq.gmo.options.SYNCPOINT_IF_PERSISTENT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SYNCPOINT_IF_PERSISTENT , "GMO options SYNCPOINT_IF_PERSISTENT", HFILL }},
+ { &hf_mq_gmo_options_BROWSE_MSG_UNDER_CURSOR ,{"BROWSE_MSG_UNDER_CURSOR", "mq.gmo.options.BROWSE_MSG_UNDER_CURSOR", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_MSG_UNDER_CURSOR , "GMO options BROWSE_MSG_UNDER_CURSOR", HFILL }},
+ { &hf_mq_gmo_options_UNLOCK ,{"UNLOCK", "mq.gmo.options.UNLOCK", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_UNLOCK , "GMO options UNLOCK", HFILL }},
+ { &hf_mq_gmo_options_LOCK ,{"LOCK", "mq.gmo.options.LOCK", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_LOCK , "GMO options LOCK", HFILL }},
+ { &hf_mq_gmo_options_MSG_UNDER_CURSOR ,{"MSG_UNDER_CURSOR", "mq.gmo.options.MSG_UNDER_CURSOR", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MSG_UNDER_CURSOR , "GMO options MSG_UNDER_CURSOR", HFILL }},
+ { &hf_mq_gmo_options_MARK_SKIP_BACKOUT ,{"MARK_SKIP_BACKOUT", "mq.gmo.options.MARK_SKIP_BACKOUT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_MARK_SKIP_BACKOUT , "GMO options MARK_SKIP_BACKOUT", HFILL }},
+ { &hf_mq_gmo_options_ACCEPT_TRUNCATED_MSG ,{"ACCEPT_TRUNCATED_MSG", "mq.gmo.options.ACCEPT_TRUNCATED_MSG", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_ACCEPT_TRUNCATED_MSG , "GMO options ACCEPT_TRUNCATED_MSG", HFILL }},
+ { &hf_mq_gmo_options_BROWSE_NEXT ,{"BROWSE_NEXT", "mq.gmo.options.BROWSE_NEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_NEXT , "GMO options BROWSE_NEXT", HFILL }},
+ { &hf_mq_gmo_options_BROWSE_FIRST ,{"BROWSE_FIRST", "mq.gmo.options.BROWSE_FIRST", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_BROWSE_FIRST , "GMO options BROWSE_FIRST", HFILL }},
+ { &hf_mq_gmo_options_SET_SIGNAL ,{"SET_SIGNAL", "mq.gmo.options.SET_SIGNAL", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SET_SIGNAL , "GMO options SET_SIGNAL", HFILL }},
+ { &hf_mq_gmo_options_NO_SYNCPOINT ,{"NO_SYNCPOINT", "mq.gmo.options.NO_SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_SYNCPOINT , "GMO options NO_SYNCPOINT", HFILL }},
+ { &hf_mq_gmo_options_SYNCPOINT ,{"SYNCPOINT", "mq.gmo.options.SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SYNCPOINT , "GMO options SYNCPOINT", HFILL }},
+ { &hf_mq_gmo_options_WAIT ,{"WAIT", "mq.gmo.options.WAIT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_WAIT , "GMO options WAIT", HFILL }},
+ /*
+ { &hf_mq_gmo_options_PROPERTIES_COMPATIBILITY,{"PROPERTIES_COMPATIBILITY", "mq.gmo.options.PROPERTIES_COMPATIBILITY", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_COMPATIBILITY, "GMO options PROPERTIES_COMPATIBILITY", HFILL }},
{ &hf_mq_gmo_options_PROPERTIES_IN_HANDLE ,{"PROPERTIES_IN_HANDLE....", "mq.gmo.options.PROPERTIES_IN_HANDLE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_IN_HANDLE , "GMO options PROPERTIES_IN_HANDLE", HFILL }},
{ &hf_mq_gmo_options_NO_PROPERTIES ,{"NO_PROPERTIES...........", "mq.gmo.options.NO_PROPERTIES", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_PROPERTIES , "GMO options NO_PROPERTIES", HFILL }},
{ &hf_mq_gmo_options_PROPERTIES_FORCE_MQRFH2 ,{"PROPERTIES_FORCE_MQRFH2.", "mq.gmo.options.PROPERTIES_FORCE_MQRFH2", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_PROPERTIES_FORCE_MQRFH2 , "GMO options PROPERTIES_FORCE_MQRFH2", HFILL }},
@@ -3927,20 +4140,27 @@ void proto_register_mq(void)
{ &hf_mq_gmo_options_NO_SYNCPOINT ,{"NO_SYNCPOINT............", "mq.gmo.options.NO_SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_NO_SYNCPOINT , "GMO options NO_SYNCPOINT", HFILL }},
{ &hf_mq_gmo_options_SYNCPOINT ,{"SYNCPOINT...............", "mq.gmo.options.SYNCPOINT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_SYNCPOINT , "GMO options SYNCPOINT", HFILL }},
{ &hf_mq_gmo_options_WAIT ,{"WAIT....................", "mq.gmo.options.WAIT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQGMO_WAIT , "GMO options WAIT", HFILL }},
-
+ */
{ &hf_mq_gmo_waitinterval,{"WaitIntv.", "mq.gmo.waitint", FT_INT32, BASE_DEC, NULL, 0x0, "GMO wait interval", HFILL }},
{ &hf_mq_gmo_signal1 ,{"Signal 1.", "mq.gmo.signal1", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO signal 1", HFILL }},
{ &hf_mq_gmo_signal2 ,{"Signal 2.", "mq.gmo.signal2", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO signal 2", HFILL }},
{ &hf_mq_gmo_resolvqname ,{"ResQName.", "mq.gmo.resolvq", FT_STRINGZ, BASE_NONE, NULL, 0x0, "GMO resolved queue name", HFILL }},
{ &hf_mq_gmo_matchoptions,{"MatchOpt.", "mq.gmo.matchopt", FT_UINT32, BASE_HEX, NULL, 0x0, "GMO match options", HFILL }},
+ { &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN ,{"MATCH_MSG_TOKEN", "mq.gmo.matchoptions.MATCH_MSG_TOKEN", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_TOKEN , "GMO matchoptions MATCH_MSG_TOKEN", HFILL }},
+ { &hf_mq_gmo_matchoptions_MATCH_OFFSET ,{"MATCH_OFFSET", "mq.gmo.matchoptions.MATCH_OFFSET", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_OFFSET , "GMO matchoptions MATCH_OFFSET", HFILL }},
+ { &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER,{"MATCH_MSG_SEQ_NUMBER", "mq.gmo.matchoptions.MATCH_MSG_SEQ_NUMBER", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_SEQ_NUMBER, "GMO matchoptions MATCH_MSG_SEQ_NUMBER", HFILL }},
+ { &hf_mq_gmo_matchoptions_MATCH_GROUP_ID ,{"MATCH_GROUP_ID", "mq.gmo.matchoptions.MATCH_GROUP_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_GROUP_ID , "GMO matchoptions MATCH_GROUP_ID", HFILL }},
+ { &hf_mq_gmo_matchoptions_MATCH_CORREL_ID ,{"MATCH_CORREL_ID", "mq.gmo.matchoptions.MATCH_CORREL_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_CORREL_ID , "GMO matchoptions MATCH_CORREL_ID", HFILL }},
+ { &hf_mq_gmo_matchoptions_MATCH_MSG_ID ,{"MATCH_MSG_ID", "mq.gmo.matchoptions.MATCH_MSG_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_ID , "GMO matchoptions MATCH_MSG_ID", HFILL }},
+ /*
{ &hf_mq_gmo_matchoptions_MATCH_MSG_TOKEN ,{"MATCH_MSG_TOKEN.....", "mq.gmo.matchoptions.MATCH_MSG_TOKEN", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_TOKEN , "GMO matchoptions MATCH_MSG_TOKEN", HFILL }},
{ &hf_mq_gmo_matchoptions_MATCH_OFFSET ,{"MATCH_OFFSET........", "mq.gmo.matchoptions.MATCH_OFFSET", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_OFFSET , "GMO matchoptions MATCH_OFFSET", HFILL }},
{ &hf_mq_gmo_matchoptions_MATCH_MSG_SEQ_NUMBER,{"MATCH_MSG_SEQ_NUMBER", "mq.gmo.matchoptions.MATCH_MSG_SEQ_NUMBER", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_SEQ_NUMBER, "GMO matchoptions MATCH_MSG_SEQ_NUMBER", HFILL }},
{ &hf_mq_gmo_matchoptions_MATCH_GROUP_ID ,{"MATCH_GROUP_ID......", "mq.gmo.matchoptions.MATCH_GROUP_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_GROUP_ID , "GMO matchoptions MATCH_GROUP_ID", HFILL }},
{ &hf_mq_gmo_matchoptions_MATCH_CORREL_ID ,{"MATCH_CORREL_ID.....", "mq.gmo.matchoptions.MATCH_CORREL_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_CORREL_ID , "GMO matchoptions MATCH_CORREL_ID", HFILL }},
{ &hf_mq_gmo_matchoptions_MATCH_MSG_ID ,{"MATCH_MSG_ID........", "mq.gmo.matchoptions.MATCH_MSG_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQMO_MATCH_MSG_ID , "GMO matchoptions MATCH_MSG_ID", HFILL }},
-
+ */
{ &hf_mq_gmo_groupstatus ,{"GrpStatus", "mq.gmo.grpstat", FT_UINT8, BASE_HEX, NULL, 0x0, "GMO group status", HFILL }},
{ &hf_mq_gmo_segmstatus ,{"SegStatus", "mq.gmo.sgmtstat", FT_UINT8, BASE_HEX, NULL, 0x0, "GMO segment status", HFILL }},
{ &hf_mq_gmo_segmentation,{"Segmentat", "mq.gmo.segmentation", FT_UINT8, BASE_HEX, NULL, 0x0, "GMO segmentation", HFILL }},
@@ -3948,7 +4168,7 @@ void proto_register_mq(void)
{ &hf_mq_gmo_msgtoken ,{"MsgToken.", "mq.gmo.msgtoken", FT_BYTES, BASE_NONE, NULL, 0x0, "GMO message token", HFILL }},
{ &hf_mq_gmo_returnedlen ,{"RtnLength", "mq.gmo.retlen", FT_INT32, BASE_DEC, NULL, 0x0, "GMO returned length", HFILL }},
- { &hf_mq_lpoo_structid ,{"structid", "mq.lpoo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_mq_lpoo_StructID ,{"StructID", "mq.lpoo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_mq_lpoo_version ,{"Version.", "mq.lpoo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "LPOO version", HFILL }},
{ &hf_mq_lpoo_unknown1 ,{"Unknown1", "mq.lpoo.unknown1", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown1", HFILL }},
{ &hf_mq_lpoo_unknown2 ,{"Unknown2", "mq.lpoo.unknown2", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown2", HFILL }},
@@ -3959,9 +4179,32 @@ 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_unknown7 ,{"Unknown7", "mq.lpoo.unknown7", FT_UINT32, BASE_HEX, NULL, 0x0, "LPOO unknown7", HFILL }},
- { &hf_mq_pmo_structid ,{"structid.", "mq.pmo.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, 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 }},
+ { &hf_mq_pmo_options_MD_FOR_OUTPUT_ONLY ,{"MD_FOR_OUTPUT_ONLY", "mq.pmo.options.MD_FOR_OUTPUT_ONLY", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_MD_FOR_OUTPUT_ONLY , "PMO options MD_FOR_OUTPUT_ONLY", HFILL }},
+ { &hf_mq_pmo_options_RETAIN ,{"RETAIN", "mq.pmo.options.RETAIN", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_RETAIN , "PMO options RETAIN", HFILL }},
+ { &hf_mq_pmo_options_WARN_IF_NO_SUBS_MATCHED ,{"WARN_IF_NO_SUBS_MATCHED", "mq.pmo.options.WARN_IF_NO_SUBS_MATCHED", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_WARN_IF_NO_SUBS_MATCHED , "PMO options WARN_IF_NO_SUBS_MATCHED", HFILL }},
+ { &hf_mq_pmo_options_RESOLVE_LOCAL_Q ,{"RESOLVE_LOCAL_Q", "mq.pmo.options.RESOLVE_LOCAL_Q", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_RESOLVE_LOCAL_Q , "PMO options RESOLVE_LOCAL_Q", HFILL }},
+ { &hf_mq_pmo_options_SYNC_RESPONSE ,{"SYNC_RESPONSE", "mq.pmo.options.SYNC_RESPONSE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SYNC_RESPONSE , "PMO options SYNC_RESPONSE", HFILL }},
+ { &hf_mq_pmo_options_ASYNC_RESPONSE ,{"ASYNC_RESPONSE", "mq.pmo.options.ASYNC_RESPONSE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_ASYNC_RESPONSE , "PMO options ASYNC_RESPONSE", HFILL }},
+ { &hf_mq_pmo_options_LOGICAL_ORDER ,{"LOGICAL_ORDER", "mq.pmo.options.LOGICAL_ORDER", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_LOGICAL_ORDER , "PMO options LOGICAL_ORDER", HFILL }},
+ { &hf_mq_pmo_options_NO_CONTEXT ,{"NO_CONTEXT", "mq.pmo.options.NO_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NO_CONTEXT , "PMO options NO_CONTEXT", HFILL }},
+ { &hf_mq_pmo_options_FAIL_IF_QUIESCING ,{"FAIL_IF_QUIESCING", "mq.pmo.options.FAIL_IF_QUIESCING", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_FAIL_IF_QUIESCING , "PMO options FAIL_IF_QUIESCING", HFILL }},
+ { &hf_mq_pmo_options_ALTERNATE_USER_AUTHORITY,{"ALTERNATE_USER_AUTHORITY", "mq.pmo.options.ALTERNATE_USER_AUTHORITY", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_ALTERNATE_USER_AUTHORITY , "PMO options ALTERNATE_USER_AUTHORITY", HFILL }},
+ { &hf_mq_pmo_options_SET_ALL_CONTEXT ,{"SET_ALL_CONTEXT", "mq.pmo.options.SET_ALL_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SET_ALL_CONTEXT , "PMO options SET_ALL_CONTEXT", HFILL }},
+ { &hf_mq_pmo_options_SET_IDENTITY_CONTEXT ,{"SET_IDENTITY_CONTEXT", "mq.pmo.options.SET_IDENTITY_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_SET_IDENTITY_CONTEXT , "PMO options SET_IDENTITY_CONTEXT", HFILL }},
+ { &hf_mq_pmo_options_PASS_ALL_CONTEXT ,{"PASS_ALL_CONTEXT", "mq.pmo.options.PASS_ALL_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_PASS_ALL_CONTEXT , "PMO options PASS_ALL_CONTEXT", HFILL }},
+ { &hf_mq_pmo_options_PASS_IDENTITY_CONTEXT ,{"PASS_IDENTITY_CONTEXT", "mq.pmo.options.PASS_IDENTITY_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_PASS_IDENTITY_CONTEXT , "PMO options PASS_IDENTITY_CONTEXT", HFILL }},
+ { &hf_mq_pmo_options_NEW_CORREL_ID ,{"NEW_CORREL_ID", "mq.pmo.options.NEW_CORREL_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NEW_CORREL_ID , "PMO options NEW_CORREL_ID", HFILL }},
+ { &hf_mq_pmo_options_NEW_MSG_ID ,{"NEW_MSG_ID", "mq.pmo.options.NEW_MSG_ID", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_NEW_MSG_ID , "PMO options NEW_MSG_ID", HFILL }},
+ { &hf_mq_pmo_options_DEFAULT_CONTEXT ,{"DEFAULT_CONTEXT", "mq.pmo.options.DEFAULT_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_DEFAULT_CONTEXT , "PMO options DEFAULT_CONTEXT", HFILL }},
+ { &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_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 }},
@@ -3984,7 +4227,7 @@ void proto_register_mq(void)
{ &hf_mq_pmo_options_DEFAULT_CONTEXT ,{"DEFAULT_CONTEXT.........", "mq.pmo.options.DEFAULT_CONTEXT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_MQPMO_DEFAULT_CONTEXT , "PMO options DEFAULT_CONTEXT", HFILL }},
{ &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 }},
@@ -3999,7 +4242,7 @@ void proto_register_mq(void)
{ &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_head_structid ,{"Structid", "mq.head.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Header structid", HFILL }},
+ { &hf_mq_head_StructID ,{"Structid", "mq.head.structid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Header structid", HFILL }},
{ &hf_mq_head_version ,{"version.", "mq.head.version", FT_UINT32, BASE_DEC, NULL, 0x0, "Header version", HFILL }},
{ &hf_mq_head_length ,{"Length..", "mq.head.length", FT_UINT32, BASE_DEC, NULL, 0x0, "Header length", HFILL }},
{ &hf_mq_head_encoding ,{"Encoding", "mq.head.encoding", FT_UINT32, BASE_DEC, NULL, 0x0, "Header encoding", HFILL }},
@@ -4013,6 +4256,15 @@ void proto_register_mq(void)
{ &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 }},
+ { &hf_mq_xa_tmflags_suspend ,{"SUSPEND", "mq.xa.tmflags.suspend", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSUSPEND, "XA TM Flags SUSPEND", HFILL }},
+ { &hf_mq_xa_tmflags_success ,{"SUCCESS", "mq.xa.tmflags.success", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMSUCCESS, "XA TM Flags SUCCESS", HFILL }},
+ { &hf_mq_xa_tmflags_resume ,{"RESUME", "mq.xa.tmflags.resume", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMRESUME, "XA TM Flags RESUME", HFILL }},
+ { &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_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 }},
@@ -4021,6 +4273,7 @@ void proto_register_mq(void)
{ &hf_mq_xa_tmflags_resume ,{"RESUME....", "mq.xa.tmflags.resume", FT_BOOLEAN, 32, TFS(&tfs_set_notset), MQ_XA_TMRESUME, "XA TM Flags RESUME", HFILL }},
{ &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_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 }},
@@ -4037,18 +4290,23 @@ void proto_register_mq(void)
{ &hf_mq_charv_vsvalue ,{"VLStr Value", "mq.charv.vsvalue", FT_STRINGZ, BASE_NONE, NULL, 0x0, "VS value", HFILL }}
};
- static gint *ett[] = {
+ static gint *ett[] =
+ {
&ett_mq,
&ett_mq_tsh,
&ett_mq_tsh_tcf,
+ &ett_mq_tsh_tcf2,
&ett_mq_api,
&ett_mq_socket,
&ett_mq_msh,
&ett_mq_caut,
&ett_mq_xqh,
&ett_mq_id,
- &ett_mq_id_icf,
- &ett_mq_id_ief,
+ &ett_mq_id_icf1,
+ &ett_mq_id_icf2,
+ &ett_mq_id_icf3,
+ &ett_mq_id_ief1,
+ &ett_mq_id_ief2,
&ett_mq_uid,
&ett_mq_conn,
&ett_mq_msg,
diff --git a/epan/dissectors/packet-mq.h b/epan/dissectors/packet-mq.h
index 94eab327fa..f4601029ef 100644
--- a/epan/dissectors/packet-mq.h
+++ b/epan/dissectors/packet-mq.h
@@ -1,9 +1,11 @@
/* packet-mq.h
+ * Routines for IBM WebSphere MQ packet dissection header
*
- * $Id$
- *
+ * metatech <metatech@flashmail.com>
* robionekenobi <robionekenobi@bluewin.ch>
*
+ * $Id$
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -26,7 +28,6 @@
#ifndef __PACKET_MQ_H__
#define __PACKET_MQ_H__
-
#define DEF_VALSX(A) extern const value_string mq_##A##_vals[]
#define GET_VALSV(A) mq_##A##_vals
#define GET_VALSP(F) (gchar *)GET_VALSV(F)
@@ -47,7 +48,8 @@
/*
* Private data passed from the MQ dissector to subdissectors.
*/
-struct mqinfo {
+struct mqinfo
+{
guint32 encoding; /* Message encoding */
guint32 ccsid; /* Message character set */
guint8 format[8]; /* Message format */
@@ -60,7 +62,8 @@ typedef struct _mq_parm_t
guint32 mq_str_enc ;
guint32 mq_encode ;
guint16 mq_ccsid ;
- guint8 mq_ctlf ;
+ guint8 mq_ctlf1 ;
+ guint8 mq_ctlf2 ;
guint8 mq_opcode ;
} mq_parm_t;
@@ -307,12 +310,12 @@ typedef struct _mq_parm_t
#define MQ_MQGMO_PROPERTIES_COMPATIBILITY 0x10000000
#define MQ_MQGMO_PROPERTIES_AS_Q_DEF 0x00000000
#define MQ_MQGMO_NONE 0x00000000
-#define MQ_MQGMO_BROWSE_HANDLE ( MQGMO_BROWSE_FIRST \
- | MQGMO_UNMARKED_BROWSE_MSG \
- | MQGMO_MARK_BROWSE_HANDLE )
-#define MQ_MQGMO_BROWSE_CO_OP ( MQGMO_BROWSE_FIRST \
- | MQGMO_UNMARKED_BROWSE_MSG \
- | MQGMO_MARK_BROWSE_CO_OP )
+#define MQ_MQGMO_BROWSE_HANDLE ( MQ_MQGMO_BROWSE_FIRST \
+ | MQ_MQGMO_UNMARKED_BROWSE_MSG \
+ | MQ_MQGMO_MARK_BROWSE_HANDLE )
+#define MQ_MQGMO_BROWSE_CO_OP ( MQ_MQGMO_BROWSE_FIRST \
+ | MQ_MQGMO_UNMARKED_BROWSE_MSG \
+ | MQ:MQGMO_MARK_BROWSE_CO_OP )
/* Wait Interval */
#define MQ_MQWI_UNLIMITED (-1)
@@ -513,18 +516,18 @@ typedef struct _mq_parm_t
#define MQ_MQENC_FLOAT_TNS 0x00000400
/* Encodings for Multicast */
-#define MQ_MQENC_NORMAL ( MQENC_FLOAT_IEEE_NORMAL \
- | MQENC_DECIMAL_NORMAL \
- | MQENC_INTEGER_NORMAL )
-#define MQ_MQENC_REVERSED ( MQENC_FLOAT_IEEE_REVERSED \
- | MQENC_DECIMAL_REVERSED \
- | MQENC_INTEGER_REVERSED )
-#define MQ_MQENC_S390 ( MQENC_FLOAT_S390 \
- | MQENC_DECIMAL_NORMAL \
- | MQENC_INTEGER_NORMAL )
-#define MQ_MQENC_TNS ( MQENC_FLOAT_TNS \
- | MQENC_DECIMAL_NORMAL \
- | MQENC_INTEGER_NORMAL )
+#define MQ_MQENC_NORMAL ( MQ_MQENC_FLOAT_IEEE_NORMAL \
+ | MQ_MQENC_DECIMAL_NORMAL \
+ | MQ_MQENC_INTEGER_NORMAL )
+#define MQ_MQENC_REVERSED ( MQ_MQENC_FLOAT_IEEE_REVERSED \
+ | MQ_MQENC_DECIMAL_REVERSED \
+ | MQ_MQENC_INTEGER_REVERSED )
+#define MQ_MQENC_S390 ( MQ_MQENC_FLOAT_S390 \
+ | MQ_MQENC_DECIMAL_NORMAL \
+ | MQ_MQENC_INTEGER_NORMAL )
+#define MQ_MQENC_TNS ( MQ_MQENC_FLOAT_TNS \
+ | MQ_MQENC_DECIMAL_NORMAL \
+ | MQ_MQENC_INTEGER_NORMAL )
#define MQ_MQENC_AS_PUBLISHED (-1)
/* Coded Character Set Identifiers */
@@ -2438,14 +2441,14 @@ typedef struct _mq_parm_t
#define MQ_MQOO_ALTERNATE_USER_AUTHORITY 0x00001000
#define MQ_MQOO_FAIL_IF_QUIESCING 0x00002000
#define MQ_MQOO_BIND_ON_OPEN 0x00004000
-#define MQ_MQOO_BIND_ON_GROUP 0x00400000
#define MQ_MQOO_BIND_NOT_FIXED 0x00008000
#define MQ_MQOO_CO_OP 0x00020000
+#define MQ_MQOO_RESOLVE_LOCAL_Q 0x00040000
+#define MQ_MQOO_RESOLVE_LOCAL_TOPIC 0x00040000
#define MQ_MQOO_NO_READ_AHEAD 0x00080000
#define MQ_MQOO_READ_AHEAD 0x00100000
#define MQ_MQOO_NO_MULTICAST 0x00200000
-#define MQ_MQOO_RESOLVE_LOCAL_Q 0x00040000
-#define MQ_MQOO_RESOLVE_LOCAL_TOPIC 0x00040000
+#define MQ_MQOO_BIND_ON_GROUP 0x00400000
/* Following used in C++ only */
#define MQ_MQOO_RESOLVE_NAMES 0x00010000
@@ -4810,6 +4813,7 @@ DEF_VALSX(selector);
DEF_VALSX(objtype);
DEF_VALSX(PrmTyp);
DEF_VALSX(PrmId);
+DEF_VALSX(FilterOP);
DEF_VALSX(MQCFINT_Parse);