diff options
author | Michael Mann <mmann78@netscape.net> | 2013-10-20 12:11:55 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-10-20 12:11:55 +0000 |
commit | 94c3d2155039015f833bd91c051e5d07c1fe1bfe (patch) | |
tree | 8be4eefff91b2e815c18b64effae4d4e044d70e1 /epan/dissectors | |
parent | bad81b517fc829ae90a65bc19f445bdee0c3d2bf (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
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-mq-base.c | 293 | ||||
-rw-r--r-- | epan/dissectors/packet-mq-pcf.c | 436 | ||||
-rw-r--r-- | epan/dissectors/packet-mq.c | 1678 | ||||
-rw-r--r-- | epan/dissectors/packet-mq.h | 56 |
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); |