2022-12-04 17:53:05 +00:00
/* packet-saphdb.c
* Routines for SAP Diag ( SAP GUI Protocol ) dissection
* Copyright 2022 , Martin Gallo < martin . gallo [ AT ] gmail . com >
* Code contributed by SecureAuth Corp .
*
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
* Copyright 1998 Gerald Combs
*
* SPDX - License - Identifier : GPL - 2.0 - or - later
*/
# include <epan/packet.h>
# include <epan/prefs.h>
# include <epan/expert.h>
# include <wsutil/wmem/wmem.h>
# include "packet-sapsnc.h"
/* Define default ports. It right range shold be 32NN, but as prot numbers are
* proprietary and not IANA assigned , we leave only the one corresponding to the
* instance 00. In addition , 3298 it ' s generally used for the niping tool and 3299
* is associated to SAP Router .
*/
# define SAPDIAG_PORT_RANGE "3200"
/* SAP Diag Header Communication Flag values */
# define SAPDIAG_COM_FLAG_TERM_EOS 0x01
# define SAPDIAG_COM_FLAG_TERM_EOC 0x02
# define SAPDIAG_COM_FLAG_TERM_NOP 0x04
# define SAPDIAG_COM_FLAG_TERM_EOP 0x08
# define SAPDIAG_COM_FLAG_TERM_INI 0x10
# define SAPDIAG_COM_FLAG_TERM_CAS 0x20
# define SAPDIAG_COM_FLAG_TERM_NNM 0x40
# define SAPDIAG_COM_FLAG_TERM_GRA 0x80
/* SAP Diag Header Compression field values */
static const value_string sapdiag_compress_vals [ ] = {
{ 0x0 , " Compression switched off " } ,
{ 0x1 , " Compression switched on " } ,
{ 0x2 , " Data encrypted " } ,
{ 0x3 , " Data encrypted wrap " } ,
/* NULL */
{ 0x0 , NULL }
} ;
/* SAP Diag Header Algorithm field values */
static const value_string sapdiag_algorithm_vals [ ] = {
{ 0x10 , " LZC " } ,
{ 0x12 , " LZH " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag DP Header Request ID values */
static const value_string sapdiag_dp_request_id_vals [ ] = {
{ 0x00000000 , " NOWP " } ,
{ 0x00000001 , " DIA " } ,
{ 0x00000002 , " DUPD " } ,
{ 0x00000003 , " DENQ " } ,
{ 0x00000004 , " DBTC " } ,
{ 0x00000005 , " DSPO " } ,
{ 0x00000006 , " DUP2 " } ,
/* NULL */
{ 0x00000000 , NULL }
} ;
/* SAP Diag DP Header Sender ID values */
static const value_string sapdiag_dp_sender_id_vals [ ] = {
{ 0x01 , " DISPATCHER " } ,
{ 0x02 , " WORK_PROCESS " } ,
{ 0x04 , " REMOTE_TERMINAL " } ,
{ 0x20 , " APPC_TERMINAL " } ,
{ 0x40 , " APPC_GATEWAY " } ,
{ 0xC8 , " ICMAN " } ,
{ 0xC9 , " IC_MONITOR " } ,
{ 0xCB , " LCOM " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag DP Header Action Type values */
static const value_string sapdiag_dp_action_type_vals [ ] = {
{ 0x01 , " SEND_TO_DP " } ,
{ 0x02 , " SEND_TO_WP " } ,
{ 0x03 , " SEND_TO_TM " } ,
{ 0x04 , " SEND_TO_APPC " } ,
{ 0x05 , " SEND_TO_APPCTM " } ,
{ 0x06 , " SEND_MSG_TYPE " } ,
{ 0x07 , " SEND_MSG_REQUES " } ,
{ 0x08 , " SEND_MSG_REPLY " } ,
{ 0x09 , " SEND_MSG_ONEWAY " } ,
{ 0x0A , " SEND_MSG_ADMIN " } ,
{ 0x0B , " WAKE_UP_WPS " } ,
{ 0x0C , " SET_TIMEOUT " } ,
{ 0x0D , " DEL_SCHEDULE " } ,
{ 0x0E , " ADD_SOFT_SERV " } ,
{ 0x0F , " SUB_SOFT_SERV " } ,
{ 0x10 , " SHUTDOWN " } ,
{ 0x11 , " SEND_TO_MSGSERV " } ,
{ 0x12 , " SEND_TO_PLUGIN " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag DP Header Request Info Flag constants */
# define SAPDIAG_DP_REQ_INFO_UNDEFINED 0x00
# define SAPDIAG_DP_REQ_INFO_LOGIN 0x01
# define SAPDIAG_DP_REQ_INFO_LOGOFF 0x02
# define SAPDIAG_DP_REQ_INFO_SHUTDOWN 0x04
# define SAPDIAG_DP_REQ_INFO_GRAPHIC_TM 0x08
# define SAPDIAG_DP_REQ_INFO_ALPHA_TM 0x10
# define SAPDIAG_DP_REQ_INFO_ERROR_FROM_APPC 0x20
# define SAPDIAG_DP_REQ_INFO_CANCELMODE 0x40
# define SAPDIAG_DP_REQ_INFO_MSG_WITH_REQ_BUF 0x80
# define SAPDIAG_DP_REQ_INFO_MSG_WITH_OH 0x01
# define SAPDIAG_DP_REQ_INFO_BUFFER_REFRESH 0x02
# define SAPDIAG_DP_REQ_INFO_BTC_SCHEDULER 0x04
# define SAPDIAG_DP_REQ_INFO_APPC_SERVER_DOWN 0x08
# define SAPDIAG_DP_REQ_INFO_MS_ERROR 0x10
# define SAPDIAG_DP_REQ_INFO_SET_SYSTEM_USER 0x20
# define SAPDIAG_DP_REQ_INFO_DP_CANT_HANDLE_REQ 0x40
# define SAPDIAG_DP_REQ_INFO_DP_AUTO_ABAP 0x80
# define SAPDIAG_DP_REQ_INFO_DP_APPL_SERV_INFO 0x01
# define SAPDIAG_DP_REQ_INFO_DP_ADMIN 0x02
# define SAPDIAG_DP_REQ_INFO_DP_SPOOL_ALRM 0x04
# define SAPDIAG_DP_REQ_INFO_DP_HAND_SHAKE 0x08
# define SAPDIAG_DP_REQ_INFO_DP_CANCEL_PRIV 0x10
# define SAPDIAG_DP_REQ_INFO_DP_RAISE_TIMEOUT 0x20
# define SAPDIAG_DP_REQ_INFO_DP_NEW_MODE 0x40
# define SAPDIAG_DP_REQ_INFO_DP_SOFT_CANCEL 0x80
# define SAPDIAG_DP_REQ_INFO_DP_TM_INPUT 0x01
# define SAPDIAG_DP_REQ_INFO_DP_TM_OUTPUT 0x02
# define SAPDIAG_DP_REQ_INFO_DP_ASYNC_RFC 0x04
# define SAPDIAG_DP_REQ_INFO_DP_ICM_EVENT 0x08
# define SAPDIAG_DP_REQ_INFO_DP_AUTO_TH 0x10
# define SAPDIAG_DP_REQ_INFO_DP_RFC_CANCEL 0x20
# define SAPDIAG_DP_REQ_INFO_DP_MS_ADM 0x40
/* SAP Diag Support Bits */
# define SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR 0x01 /* 0 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS 0x02 /* 1 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION 0x04 /* 2 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT 0x08 /* 3 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT 0x10 /* 4 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC 0x20 /* 5 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED 0x40 /* 6 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE 0x80 /* 7 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE 0x01 /* 8 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE 0x02 /* 9 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1 0x04 /* 10 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1 0x08 /* 11 */
# define SAPDIAG_SUPPORT_BIT_UPPERCASE 0x10 /* 12 */
# define SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY 0x20 /* 13 */
# define SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE 0x40 /* 14 */
# define SAPDIAG_SUPPORT_BIT_RFC_DIALOG 0x80 /* 15 */
# define SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT 0x01 /* 16 */
# define SAPDIAG_SUPPORT_BIT_FKEY_TABLE 0x02 /* 17 */
# define SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT 0x04 /* 18 */
# define SAPDIAG_SUPPORT_BIT_STOP_TRANS 0x08 /* 19 */
# define SAPDIAG_SUPPORT_BIT_FULL_MENU 0x10 /* 20 */
# define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES 0x20 /* 21 */
# define SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE 0x40 /* 22 */
# define SAPDIAG_SUPPORT_BIT_DLGH_FLAGS 0x80 /* 23 */
# define SAPDIAG_SUPPORT_BIT_APPL_MNU 0x01 /* 24 */
# define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO 0x02 /* 25 */
# define SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1 0x04 /* 26 */
# define SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB 0x08 /* 27 */
# define SAPDIAG_SUPPORT_BIT_GUIAPI 0x10 /* 28 */
# define SAPDIAG_SUPPORT_BIT_NOGRAPH 0x20 /* 29 */
# define SAPDIAG_SUPPORT_BIT_NOMESSAGES 0x40 /* 30 */
# define SAPDIAG_SUPPORT_BIT_NORABAX 0x80 /* 31 */
# define SAPDIAG_SUPPORT_BIT_NOSYSMSG 0x01 /* 32 */
# define SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT 0x02 /* 33 */
# define SAPDIAG_SUPPORT_BIT_NORFC 0x04 /* 34 */
# define SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT 0x08 /* 35 */
# define SAPDIAG_SUPPORT_BIT_MESSAGE_VARS 0x10 /* 36 */
# define SAPDIAG_SUPPORT_BIT_OCX_SUPPORT 0x20 /* 37 */
# define SAPDIAG_SUPPORT_BIT_SCROLL_INFOS 0x40 /* 38 */
# define SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK 0x80 /* 39 */
# define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2 0x01 /* 40 */
# define SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE 0x02 /* 41 */
# define SAPDIAG_SUPPORT_BIT_CURR_TCODE 0x04 /* 42 */
# define SAPDIAG_SUPPORT_BIT_CONN_WSIZE 0x08 /* 43 */
# define SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2 0x10 /* 44 */
# define SAPDIAG_SUPPORT_BIT_TABSTRIP 0x20 /* 45 */
# define SAPDIAG_SUPPORT_BIT_UNKNOWN_1 0x40 /* 46 (Unknown support bit) */
# define SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS 0x80 /* 47 */
# define SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES 0x01 /* 48 */
# define SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST 0x02 /* 49 */
# define SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER 0x04 /* 50 */
# define SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER 0x08 /* 51 */
# define SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER 0x10 /* 52 */
# define SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED 0x20 /* 53 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED 0x40 /* 54 */
# define SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO 0x80 /* 55 */
# define SAPDIAG_SUPPORT_BIT_TYPE_SERVER 0x01 /* 56 */
# define SAPDIAG_SUPPORT_BIT_COMBOBOX 0x02 /* 57 */
# define SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED 0x04 /* 58 */
# define SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE 0x08 /* 59 */
# define SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE 0x10 /* 60 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS 0x20 /* 61 */
# define SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS 0x40 /* 62 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_USERID 0x80 /* 63 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT 0x01 /* 64 */
# define SAPDIAG_SUPPORT_BIT_USER_TURNTIME2 0x02 /* 65 */
# define SAPDIAG_SUPPORT_BIT_NUM_FIELD 0x04 /* 66 */
# define SAPDIAG_SUPPORT_BIT_WIN16 0x08 /* 67 */
# define SAPDIAG_SUPPORT_BIT_CONTEXT_MENU 0x10 /* 68 */
# define SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE 0x20 /* 69 */
# define SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION 0x40 /* 70 */
# define SAPDIAG_SUPPORT_BIT_LABEL_OWNER 0x80 /* 71 */
# define SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD 0x01 /* 72 */
# define SAPDIAG_SUPPORT_BIT_PROPERTY_BAG 0x02 /* 73 */
# define SAPDIAG_SUPPORT_BIT_UNUSED_1 0x04 /* 74 */
# define SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2 0x08 /* 75 */
# define SAPDIAG_SUPPORT_BIT_PROPFONT_VALID 0x10 /* 76 */
# define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER 0x20 /* 77 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID 0x40 /* 78 */
# define SAPDIAG_SUPPORT_BIT_NOTGUI 0x80 /* 79 */
# define SAPDIAG_SUPPORT_BIT_WAN 0x01 /* 80 */
# define SAPDIAG_SUPPORT_BIT_XML_BLOBS 0x02 /* 81 */
# define SAPDIAG_SUPPORT_BIT_RFC_QUEUE 0x04 /* 82 */
# define SAPDIAG_SUPPORT_BIT_RFC_COMPRESS 0x08 /* 83 */
# define SAPDIAG_SUPPORT_BIT_JAVA_BEANS 0x10 /* 84 */
# define SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND 0x20 /* 85 */
# define SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE 0x40 /* 86 */
# define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID 0x80 /* 87 */
# define SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB 0x01 /* 88 */
# define SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS 0x02 /* 89 */
# define SAPDIAG_SUPPORT_BIT_UNUSED_2 0x04 /* 90 */
# define SAPDIAG_SUPPORT_BIT_UNUSED_3 0x08 /* 91 */
# define SAPDIAG_SUPPORT_BIT_XML_PROPERTIES 0x10 /* 92 */
# define SAPDIAG_SUPPORT_BIT_UNUSED_4 0x20 /* 93 */
# define SAPDIAG_SUPPORT_BIT_HEX_FIELD 0x40 /* 94 */
# define SAPDIAG_SUPPORT_BIT_HAS_CACHE 0x80 /* 95 */
# define SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE 0x01 /* 96 */
# define SAPDIAG_SUPPORT_BIT_UNUSED_5 0x02 /* 97 */
# define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2 0x04 /* 98 */
# define SAPDIAG_SUPPORT_BIT_ITS 0x08 /* 99 */
# define SAPDIAG_SUPPORT_BIT_NO_EASYACCESS 0x10 /* 100 */
# define SAPDIAG_SUPPORT_BIT_PROPERTYPUMP 0x20 /* 101 */
# define SAPDIAG_SUPPORT_BIT_COOKIE 0x40 /* 102 */
# define SAPDIAG_SUPPORT_BIT_UNUSED_6 0x80 /* 103 */
# define SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE 0x01 /* 104 */
# define SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE 0x02 /* 105 */
# define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS 0x04 /* 106 */
# define SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY 0x08 /* 107 */
# define SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE 0x10 /* 108 */
# define SAPDIAG_SUPPORT_BIT_CACHED_VSETS 0x20 /* 109 */
# define SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR 0x40 /* 110 */
# define SAPDIAG_SUPPORT_BIT_AREA2FRONT 0x80 /* 111 */
# define SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH 0x01 /* 112 */
# define SAPDIAG_SUPPORT_BIT_AUTORESIZE 0x02 /* 113 */
# define SAPDIAG_SUPPORT_BIT_EDIT_VARLEN 0x04 /* 114 */
# define SAPDIAG_SUPPORT_BIT_WORKPLACE 0x08 /* 115 */
# define SAPDIAG_SUPPORT_BIT_PRINTDATA 0x10 /* 116 */
# define SAPDIAG_SUPPORT_BIT_UNKNOWN_2 0x20 /* 117 (Unknown support bit) */
# define SAPDIAG_SUPPORT_BIT_SINGLE_SESSION 0x40 /* 118 */
# define SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE 0x80 /* 119 */
# define SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT 0x01 /* 120 */
# define SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER 0x02 /* 121 */
# define SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO 0x04 /* 122 */
# define SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT 0x08 /* 123 */
# define SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT 0x10 /* 124 */
# define SAPDIAG_SUPPORT_BIT_WEBGUI 0x20 /* 125 */
# define SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE 0x40 /* 126 */
# define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST 0x80 /* 127 */
# define SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2 0x01 /* 128 */
# define SAPDIAG_SUPPORT_BIT_EOKDUMMY_1 0x02 /* 129 */
# define SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING 0x04 /* 130 */
# define SAPDIAG_SUPPORT_BIT_SLC 0x08 /* 131 */
# define SAPDIAG_SUPPORT_BIT_ACCESSIBILITY 0x10 /* 132 */
# define SAPDIAG_SUPPORT_BIT_ECATT 0x20 /* 133 */
# define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3 0x40 /* 134 */
# define SAPDIAG_SUPPORT_BIT_ENABLE_UTF8 0x80 /* 135 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME 0x01 /* 136 */
# define SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST 0x02 /* 137 */
# define SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE 0x04 /* 138 */
# define SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE 0x08 /* 139 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP 0x10 /* 140 */
# define SAPDIAG_SUPPORT_BIT_ENABLE_APPL4 0x20 /* 141 */
# define SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL 0x40 /* 142 */
# define SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE 0x80 /* 143 */
# define SAPDIAG_SUPPORT_BIT_BINARY_EVENTID 0x01 /* 144 */
# define SAPDIAG_SUPPORT_BIT_GUI_THEME 0x02 /* 145 */
# define SAPDIAG_SUPPORT_BIT_TOP_WINDOW 0x04 /* 146 */
# define SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1 0x08 /* 147 */
# define SAPDIAG_SUPPORT_BIT_SPLITTER 0x10 /* 148 */
# define SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY 0x20 /* 149 */
# define SAPDIAG_SUPPORT_BIT_ACC_LIST 0x40 /* 150 */
# define SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO 0x80 /* 151 */
# define SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM 0x01 /* 152 */
# define SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS 0x02 /* 153 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1 0x04 /* 154 */
# define SAPDIAG_SUPPORT_BIT_FRAME_1 0x08 /* 155 */
# define SAPDIAG_SUPPORT_BIT_TICKET4GUI 0x10 /* 156 */
# define SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS 0x20 /* 157 */
# define SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT 0x40 /* 158 */
# define SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP 0x80 /* 159 */
# define SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2 0x01 /* 160 */
# define SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3 0x02 /* 161 */
# define SAPDIAG_SUPPORT_BIT_CELLINFO 0x04 /* 162 */
# define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2 0x08 /* 163 */
# define SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT 0x10 /* 164 */
# define SAPDIAG_SUPPORT_BIT_ITS_PLUGIN 0x20 /* 165 */
# define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS 0x40 /* 166 */
# define SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI 0x80 /* 167 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2 0x01 /* 168 */
# define SAPDIAG_SUPPORT_BIT_RCUI 0x02 /* 169 */
# define SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE 0x04 /* 170 */
# define SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE 0x08 /* 171 */
# define SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION 0x10 /* 172 */
# define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP 0x20 /* 173 */
# define SAPDIAG_SUPPORT_BIT_EOKDUMMY_2 0x40 /* 174 */
# define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3 0x80 /* 175 */
# define SAPDIAG_SUPPORT_BIT_SBA2 0x01 /* 176 */
# define SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE 0x02 /* 177 */
# define SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2 0x04 /* 178 */
# define SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE 0x08 /* 179 */
# define SAPDIAG_SUPPORT_BIT_GUI_PACKET 0x10 /* 180 */
# define SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER 0x20 /* 181 */
# define SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION 0x40 /* 182 */
# define SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST 0x80 /* 183 */
# define SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME 0x01 /* 184 */
# define SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN 0x02 /* 185 */
# define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1 0x04 /* 186 */
# define SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS 0x08 /* 187 */
# define SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO 0x10 /* 188 */
# define SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT 0x20 /* 189 */
# define SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH 0x40 /* 190 */
# define SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT 0x80 /* 191 */
# define SAPDIAG_SUPPORT_BIT_UNKNOWN_3 0x01 /* 192 (Unknown support bit) */
# define SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR 0x02 /* 193 */
# define SAPDIAG_SUPPORT_BIT_MAX_WSIZE 0x04 /* 194 */
# define SAPDIAG_SUPPORT_BIT_SAP_PERSONAS 0x08 /* 195 */
# define SAPDIAG_SUPPORT_BIT_IDA_ALV 0x10 /* 196 */
# define SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS 0x20 /* 197 */
# define SAPDIAG_SUPPORT_BIT_AMC 0x40 /* 198 */
# define SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC 0x80 /* 199 */
# define SAPDIAG_SUPPORT_BIT_GROUPBOX 0x01 /* 200 */
# define SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON 0x02 /* 201 */
# define SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST 0x04 /* 202 */
# define SAPDIAG_SUPPORT_BIT_FIORI_MODE 0x08 /* 203 */
# define SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE 0x10 /* 204 */
# define SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE 0x20 /* 205 */
# define SAPDIAG_SUPPORT_BIT_AGI_ID 0x40 /* 206 */
# define SAPDIAG_SUPPORT_BIT_AGI_ID_TC 0x80 /* 207 */
# define SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS 0x01 /* 208 */
# define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE 0x02 /* 209 */
# define SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3 0x04 /* 210 */
# define SAPDIAG_SUPPORT_BIT_NWBC 0x08 /* 211 */
# define SAPDIAG_SUPPORT_BIT_CONTAINER_LIST 0x10 /* 212 */
# define SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR 0x20 /* 213 */
# define SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE 0x40 /* 214 */
/* SAP Diag DP Header New Status values */
static const value_string sapdiag_dp_new_stat_vals [ ] = {
{ 0x00 , " NO_CHANGE " } ,
{ 0x01 , " WP_SLOT_FREE " } ,
{ 0x02 , " WP_WAIT " } ,
{ 0x04 , " WP_RUN " } ,
{ 0x08 , " WP_HOLD " } ,
{ 0x10 , " WP_KILLED " } ,
{ 0x20 , " WP_SHUTDOWN " } ,
{ 0x40 , " WP_RESTRICTED " } ,
{ 0x80 , " WP_NEW " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item Type values */
static const value_string sapdiag_item_type_vals [ ] = {
{ 0x01 , " SES " } ,
{ 0x02 , " ICO " } ,
{ 0x03 , " TIT " } ,
{ 0x07 , " DiagMessage (old format) " } ,
{ 0x08 , " OKC " } ,
{ 0x09 , " CHL " } ,
{ 0x0a , " SFE " } ,
{ 0x0b , " SBA " } ,
{ 0x0c , " EOM " } ,
{ 0x10 , " APPL " } ,
{ 0x11 , " DIAG_XMLBLOB " } ,
{ 0x12 , " APPL4 " } ,
{ 0x13 , " SLC " } ,
{ 0x15 , " SBA2 " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 ID values */
static const value_string sapdiag_item_id_vals [ ] = {
{ 0x01 , " SCRIPT " } ,
{ 0x02 , " GRAPH " } ,
{ 0x03 , " IXOS " } ,
{ 0x04 , " ST_USER " } ,
{ 0x05 , " DYNN " } ,
{ 0x06 , " ST_R3INFO " } ,
{ 0x07 , " POPU " } ,
{ 0x08 , " RFC_TR " } ,
{ 0x09 , " DYNT " } ,
{ 0x0a , " CONTAINER " } ,
{ 0x0b , " MNUENTRY " } ,
{ 0x0c , " VARINFO " } ,
{ 0x0e , " CONTROL " } ,
{ 0x0f , " UI_EVENT " } ,
{ 0x12 , " ACC_LIST " } ,
{ 0x13 , " RCUI " } ,
{ 0x14 , " GUI_PACKET " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 SCRIPT SID values */
static const value_string sapdiag_item_appl_script_vals [ ] = {
/* SCRIPT */
{ 0x01 , " SCRIPT_OTF " } ,
{ 0x02 , " SCRIPT_SCREEN " } ,
{ 0x03 , " SCRIPT_POSTSCRIPT " } ,
{ 0x04 , " SCRIPT_ITF " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 GRAPH SID values */
static const value_string sapdiag_item_appl_graph_vals [ ] = {
/* GRAPH */
{ 0x03 , " GRAPH RELEASE 3 " } ,
{ 0x05 , " GRAPH RELEASE 5 " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 IXOS SID values */
static const value_string sapdiag_item_appl_ixos_vals [ ] = {
/* IXOS */
{ 0x01 , " ABLAGE " } ,
{ 0x02 , " ANZEIGE " } ,
{ 0x03 , " IXOS_COMMAND " } ,
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 ST_USER SID values */
static const value_string sapdiag_item_appl_st_user_vals [ ] = {
/* ST_USER */
{ 0x01 , " V1 " } ,
{ 0x02 , " CONNECT " } ,
{ 0x03 , " SELECTEDRECT " } ,
{ 0x04 , " FONTMETRIC " } ,
{ 0x05 , " TABLEMETRIC " } ,
{ 0x06 , " GUITIME " } ,
{ 0x07 , " GUITIMEZONE " } ,
{ 0x08 , " TURNTIME " } ,
{ 0x09 , " GUIVERSION " } ,
2023-12-30 21:15:12 +00:00
/* No entry for 0xa... */
2022-12-04 17:53:05 +00:00
{ 0x0b , " SUPPORTDATA " } ,
{ 0x0c , " RFC_CONNECT " } ,
{ 0x0d , " WSIZE " } ,
{ 0x0e , " V2 " } ,
{ 0x0f , " TURNTIME2 " } ,
{ 0x10 , " RFC_PARENT_UUID " } ,
{ 0x11 , " RFC_NEW_UUID " } ,
{ 0x12 , " RFC_UUIDS " } ,
{ 0x13 , " RFC_UUIDS2 " } ,
{ 0x14 , " XML_LOGIN " } ,
{ 0x15 , " XML_TRANSACTION " } ,
{ 0x16 , " SCROLLBAR_WIDTH " } ,
{ 0x17 , " TOOLBAR_HEIGHT " } ,
{ 0x18 , " PASSPORT_DATA " } ,
{ 0x19 , " GUI_STATE " } ,
{ 0x1a , " DECIMALPOINT " } ,
{ 0x1b , " LANGUAGE " } ,
{ 0x1c , " USERNAME " } ,
{ 0x1d , " GUIPATCHLEVEL " } ,
{ 0x1e , " WSIZE_PIXEL " } ,
{ 0x1f , " GUI_OS_VERSION " } ,
{ 0x20 , " BROWSER_VERSION " } ,
{ 0x21 , " OFFICE_VERSION " } ,
{ 0x22 , " JDK_VERSION " } ,
{ 0x23 , " GUIXT_VERSION " } ,
{ 0x24 , " DISPLAY_SIZE " } ,
{ 0x25 , " GUI_TYPE " } ,
{ 0x26 , " DIALOG_STEP_NUMBER " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 DYNN SID values */
static const value_string sapdiag_item_appl_dynn_vals [ ] = {
/* DYNN */
{ 0x01 , " CHL " } ,
{ 0x03 , " XMLPROP DYNPRO " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 ST_R3INFO SID values */
static const value_string sapdiag_item_appl_st_r3info_vals [ ] = {
/* ST_R3INFO */
{ 0x01 , " MODENUMBER " } ,
{ 0x02 , " DBNAME " } ,
{ 0x03 , " CPUNAME " } ,
{ 0x04 , " RFC_TRIGGER " } ,
{ 0x05 , " GUI_LABEL " } ,
{ 0x06 , " DIAGVERSION " } ,
{ 0x07 , " TCODE " } ,
{ 0x08 , " RFC_WAITING " } ,
{ 0x09 , " RFC_REFRESH " } ,
{ 0x0a , " IMODENUMBER " } ,
{ 0x0b , " MESSAGE " } ,
{ 0x0c , " CLIENT " } ,
{ 0x0d , " DYNPRONAME " } ,
{ 0x0e , " DYNPRONUMBER " } ,
{ 0x0f , " CUANAME " } ,
{ 0x10 , " CUASTATUS " } ,
{ 0x11 , " SUPPORTDATA " } ,
{ 0x12 , " RFC_CONNECT_OK " } ,
{ 0x13 , " GUI_FKEY " } ,
{ 0x14 , " GUI_FKEYT " } ,
{ 0x15 , " STOP_TRANS " } ,
{ 0x16 , " RFC_DIAG_BLOCK_SIZE " } ,
{ 0x17 , " USER_CHECKED " } ,
{ 0x18 , " FLAGS " } ,
{ 0x19 , " USERID " } ,
{ 0x1a , " ROLLCOUNT " } ,
{ 0x1b , " GUI_XT_VAR " } ,
{ 0x1c , " IMODEUUID " } ,
{ 0x1d , " IMODEUUID_INVALIDATE " } ,
{ 0x1e , " IMODEUUIDS " } ,
{ 0x1f , " IMODEUUIDS2 " } ,
{ 0x20 , " CODEPAGE " } ,
{ 0x21 , " CONTEXTID " } ,
{ 0x22 , " AUTOLOGOUT_TIME " } ,
{ 0x23 , " CODEPAGE_DIAG_GUI " } ,
{ 0x24 , " CODEPAGE_APP_SERVER " } ,
{ 0x25 , " GUI_THEME " } ,
{ 0x26 , " GUI_USER_SCRIPTING " } ,
{ 0x27 , " CODEPAGE_APP_SERVER_1 " } ,
{ 0x28 , " TICKET4GUI " } ,
{ 0x29 , " KERNEL_VERSION " } ,
{ 0x2a , " STD_TOOLBAR_ITEMS " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 POPU SID values */
static const value_string sapdiag_item_appl_popu_vals [ ] = {
/* POPU */
{ 0x02 , " DEST " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 RFC_TR SID values */
static const value_string sapdiag_item_appl_rfc_tr_vals [ ] = {
/* RFC_TR */
{ 0x00 , " RFC_TR_REQ " } ,
{ 0x01 , " RFC_TR_RET " } ,
{ 0x02 , " RFC_TR_ERR " } ,
{ 0x03 , " RFC_TR_RQT " } ,
{ 0x04 , " RFC_TR_MOR " } ,
{ 0x05 , " RFC_TR_MOB " } ,
{ 0x06 , " RFC_TR_RNB " } ,
{ 0x07 , " RFC_TR_RNT " } ,
{ 0x08 , " RFC_TR_DIS " } ,
{ 0x09 , " RFC_TR_CALL " } ,
{ 0x0a , " RFC_TR_CALL_END " } ,
{ 0x0b , " RFC_TR_RES " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 DYNT SID values */
static const value_string sapdiag_item_appl_dynt_vals [ ] = {
/* DYNT */
{ 0x01 , " DYNT_FOCUS " } ,
{ 0x02 , " DYNT_ATOM " } ,
{ 0x03 , " DYNT_EVENT_UNUSED " } ,
{ 0x04 , " TABLE_ROW_REFERENCE " } ,
{ 0x05 , " TABLE_ROW_DAT_INPUT_DUMMY " } ,
{ 0x06 , " TABLE_INPUT_HEADER " } ,
{ 0x07 , " TABLE_OUTPUT_HEADER " } ,
{ 0x08 , " TABLE_ROW_DATA_INPUT " } ,
{ 0x09 , " TABLE_ROW_DATA_OUTPUT " } ,
{ 0x0a , " DYNT_NOFOCUS " } ,
{ 0x0b , " DYNT_FOCUS_1 " } ,
{ 0x0c , " TABLE_ROW_REFERENCE_1 " } ,
{ 0x0d , " TABLE_FIELD_NAMES " } ,
{ 0x0e , " TABLE_HEADER " } ,
{ 0x0f , " DYNT_TABSTRIP_HEADER " } ,
{ 0x10 , " DYNT_TABSTRIP_BUTTONS " } ,
{ 0x11 , " TABLE_ROW_REFERENCE_2 " } ,
{ 0x12 , " DYNT_CONTROL_FOCUS " } ,
{ 0x13 , " TABLE_FIELD_XMLPROP " } ,
{ 0x14 , " DYNT_SPLITTER_HEADER " } ,
{ 0x15 , " DYNT_TC_COLUMN_TITLE_XMLP " } ,
{ 0x16 , " DYNT_TC_ROW_SELECTOR_NAME " } ,
{ 0x17 , " DYNT_FOCUS_FRAME " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 CONTAINER SID values */
static const value_string sapdiag_item_appl_container_vals [ ] = {
/* CONTAINTER */
{ 0x01 , " RESET " } ,
{ 0x02 , " DEFAULT " } ,
{ 0x03 , " SUBSCREEN " } ,
{ 0x04 , " LOOP " } ,
{ 0x05 , " TABLE " } ,
{ 0x06 , " NAME " } ,
{ 0x08 , " TABSTRIP " } ,
{ 0x09 , " TABSTRIP_PAGE " } ,
{ 0x0a , " CONTROL " } ,
{ 0x0c , " XMLPROP " } ,
{ 0x0d , " SPLITTER " } ,
{ 0x0e , " SPLITTER_CELL " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 MNUENTRY SID values */
static const value_string sapdiag_item_appl_mnuentry_vals [ ] = {
/* MNUENTRY */
{ 0x01 , " MENU_ACT " } ,
{ 0x02 , " MENU_MNU " } ,
{ 0x03 , " MENU_PFK " } ,
{ 0x04 , " MENU_KYB " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 VARINFO SID values */
static const value_string sapdiag_item_appl_varinfo_vals [ ] = {
/* VARINFO */
{ 0x01 , " MESTYPE " } ,
{ 0x02 , " SCROLL_INFOS " } ,
{ 0x03 , " MESTYPE2 " } ,
{ 0x04 , " OKCODE " } ,
{ 0x05 , " CONTAINER " } ,
{ 0x06 , " SCROLL_INFOS2 " } ,
{ 0x07 , " AREASIZE " } ,
{ 0x08 , " AREA_PIXELSIZE " } ,
{ 0x09 , " SESSION_TITLE " } ,
{ 0x0a , " SESSION_ICON " } ,
{ 0x0b , " LIST_CELL_TEXT " } ,
{ 0x0c , " CONTAINER_LOOP " } ,
{ 0x0d , " LIST_FOCUS " } ,
{ 0x0e , " MAINAREA_PIXELSIZE " } ,
{ 0x0f , " SERVICE_REQUEST " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 CONTROl SID values */
static const value_string sapdiag_item_appl_control_vals [ ] = {
/* CONTROL */
{ 0x01 , " CONTROL_PROPERTIES " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 UI_EVENT SID values */
static const value_string sapdiag_item_appl_ui_event_vals [ ] = {
/* UI_EVENT */
{ 0x01 , " UI_EVENT_SOURCE " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 ACC_LIST SID values */
static const value_string sapdiag_item_appl_acc_list_vals [ ] = {
/* ACC_LIST */
{ 0x01 , " ACC_LIST_INFO4FIELD " } ,
{ 0x02 , " ACC_LIST_CONTAINER " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 RCUI SID values */
static const value_string sapdiag_item_appl_rcui_vals [ ] = {
/* RCUI */
{ 0x01 , " RCUI_STREAM " } ,
{ 0x02 , " RCUI_SYSTEM_ERROR " } ,
{ 0x03 , " RCUI_SPAGPA " } ,
{ 0x04 , " RCUI_MEMORYID " } ,
{ 0x05 , " RCUI_TXOPTION " } ,
{ 0x06 , " RCUI_VALUE " } ,
{ 0x07 , " RCUI_COMMAND " } ,
{ 0x08 , " RCUI_BDCMSG " } ,
{ 0x09 , " RCUI_CONNECT_DATA " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Item APPL/APPL4 GUI_PACKET SID values */
static const value_string sapdiag_item_appl_gui_packet_vals [ ] = {
/* GUI_PACKET */
{ 0x01 , " GUI_PACKET_STATE " } ,
{ 0x02 , " GUI_PACKET_DATA " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Dynt Atom Etype values */
static const value_string sapdiag_item_dynt_atom_item_etype_vals [ ] = {
{ 101 , " DIAG_DGOTYP_EFIELD " } ,
{ 102 , " DIAG_DGOTYP_OFIELD " } ,
{ 103 , " DIAG_DGOTYP_KEYWORD " } ,
{ 104 , " DIAG_DGOTYP_CHECKBUTTON_4 " } ,
{ 105 , " DIAG_DGOTYP_RADIOBUTTON_0 " } ,
{ 106 , " DIAG_DGOTYP_PUSHBUTTON_3 " } ,
{ 107 , " DIAG_DGOTYP_FRAME_3 " } ,
{ 108 , " DIAG_DGOTYP_LOOP_6 " } ,
{ 109 , " DIAG_DGOTYP_SUBSCREEN " } ,
{ 111 , " DIAG_DGOTYP_PROPERTY " } ,
{ 112 , " DIAG_DGOTYP_ICON_0 " } ,
{ 113 , " DIAG_DGOTYP_PUSHBUTTON_1 " } ,
{ 114 , " DIAG_DGOTYP_FNAME " } ,
{ 115 , " DIAG_DGOTYP_PUSHBUTTON_2 " } ,
{ 116 , " DIAG_DGOTYP_TABSTRIP_BUTTON " } ,
{ 117 , " DIAG_DGOTYP_COMBOBOX " } ,
{ 118 , " DIAG_DGOTYP_CHECKBUTTON_1 " } ,
{ 119 , " DIAG_DGOTYP_RADIOBUTTON_1 " } ,
{ 120 , " DIAG_DGOTYP_XMLPROP " } ,
{ 121 , " DIAG_DGOTYP_EFIELD_1 " } ,
{ 122 , " DIAG_DGOTYP_OFIELD_1 " } ,
{ 123 , " DIAG_DGOTYP_KEYWORD_1_1 " } ,
{ 124 , " DIAG_DGOTYP_CHECKBUTTON_2 " } ,
{ 125 , " DIAG_DGOTYP_RADIOBUTTON__0 " } ,
{ 126 , " DIAG_DGOTYP_COMBOBOX_1 " } ,
{ 127 , " DIAG_DGOTYP_FRAME_1 " } ,
{ 128 , " DIAG_DGOTYP_CHECKBUTTON_3 " } ,
{ 129 , " DIAG_DGOTYP_RADIOBUTTON_3 " } ,
{ 130 , " DIAG_DGOTYP_EFIELD_2 " } ,
{ 131 , " DIAG_DGOTYP_OFIELD_2 " } ,
{ 132 , " DIAG_DGOTYP_KEYWORD_2 " } ,
/* NULL */
{ 000 , NULL }
} ;
/* SAP Diag UI Event Source Event Type Values */
static const value_string sapdiag_item_ui_event_event_type_vals [ ] = {
{ 0x01 , " SELECT " } ,
{ 0x02 , " HE " } ,
{ 0x03 , " VALUEHELP " } ,
{ 0x06 , " RESIZE " } ,
{ 0x07 , " FUNCTIONKEY " } ,
{ 0x08 , " SCROLL " } ,
{ 0x09 , " BUTTONPRESSED " } ,
{ 0x0a , " VALUECHANGED " } ,
{ 0x0b , " STATECHANGED " } ,
{ 0x0c , " NAVIGATION " } ,
/* NULL */
{ 0x00 , NULL }
} ;
static const value_string sapdiag_item_ui_event_control_type_vals [ ] = {
{ 0x00 , " NONE " } ,
{ 0x01 , " FIELD " } ,
{ 0x02 , " RADIOBUTTON " } ,
{ 0x03 , " CHECKBUTTON " } ,
{ 0x04 , " MENUBUTTON " } ,
{ 0x05 , " TOOLBARBUTTON " } ,
{ 0x06 , " STANDARDTOOLBARBUTTON " } ,
{ 0x07 , " PUSHBUTTON " } ,
{ 0x08 , " TABLEVIEW " } ,
{ 0x09 , " TABSTRIP " } ,
{ 0x0a , " DYNPRO " } ,
{ 0x0b , " CUSTOM_CONTROL " } ,
{ 0x0d , " FRAME " } ,
{ 0x0e , " TABLEVIEW_COLSEL_BUTTON " } ,
{ 0x0f , " TABLEVIEW_ROWSEL_BUTTON " } ,
{ 0x10 , " TABLEVIEW_CELL " } ,
{ 0x11 , " CONTEXTMENU " } ,
{ 0x12 , " SPLITTER " } ,
{ 0x13 , " MESSAGE " } ,
{ 0x14 , " OKCODE " } ,
{ 0x15 , " ACC_CONTAINER " } ,
/* NULL */
{ 0x00 , NULL }
} ;
static const value_string sapdiag_item_ui_event_navigation_data_vals [ ] = {
{ 0x01 , " TAB " } ,
{ 0x02 , " TAB_BACK " } ,
{ 0x03 , " JUMP_OVER " } ,
{ 0x04 , " JUMP_OVER_BACK " } ,
{ 0x05 , " JUMP_OUT " } ,
{ 0x06 , " JUMP_OUT_BACK " } ,
{ 0x07 , " JUMP_SECTION " } ,
{ 0x08 , " JUMP_SECTION_BACK " } ,
{ 0x09 , " FIRST_FIELD " } ,
{ 0x0a , " LAST_FIELD " } ,
/* NULL */
{ 0x00 , NULL }
} ;
static const value_string sapdiag_item_control_properties_id_vals [ ] = {
{ 0x01 , " CONTROL_AREA " } ,
{ 0x02 , " CONTROL_ID " } ,
{ 0x03 , " CONTROL_VISIBLE " } ,
{ 0x04 , " CONTROL_ROW " } ,
{ 0x05 , " CONTROL_COLUMN " } ,
{ 0x06 , " CONTROL_ROWS " } ,
{ 0x07 , " CONTROL_COLUMNS " } ,
/* NULL */
{ 0x00 , NULL }
} ;
/* SAP Diag Dynt Atom Attr flags */
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_PROTECTED 0x01
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE 0x02
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_INTENSIFY 0x04
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_JUSTRIGHT 0x08
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_MATCHCODE 0x10
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_PROPFONT 0x20
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_YES3D 0x40
# define SAPDIAG_ATOM_ATTR_DIAG_BSD_COMBOSTYLE 0x80
/* SAP Diag UI Event Source flags */
# define SAPDIAG_UI_EVENT_VALID_FLAG_MENU_POS 0x01
# define SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS 0x02
# define SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA 0x04
# define SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA 0x08
2023-11-20 07:16:40 +00:00
static int proto_sapdiag ;
2022-12-04 17:53:05 +00:00
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_dp ;
static int hf_sapdiag_header ;
static int hf_sapdiag_payload ;
2022-12-04 17:53:05 +00:00
/* Diag Header */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_mode ;
static int hf_sapdiag_com_flag ;
static int hf_sapdiag_com_flag_TERM_EOS ;
static int hf_sapdiag_com_flag_TERM_EOC ;
static int hf_sapdiag_com_flag_TERM_NOP ;
static int hf_sapdiag_com_flag_TERM_EOP ;
static int hf_sapdiag_com_flag_TERM_INI ;
static int hf_sapdiag_com_flag_TERM_CAS ;
static int hf_sapdiag_com_flag_TERM_NNM ;
static int hf_sapdiag_com_flag_TERM_GRA ;
static int hf_sapdiag_mode_stat ;
static int hf_sapdiag_err_no ;
static int hf_sapdiag_msg_type ;
static int hf_sapdiag_msg_info ;
static int hf_sapdiag_msg_rc ;
static int hf_sapdiag_compress ;
2022-12-04 17:53:05 +00:00
/* Error messages */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_error_message ;
2022-12-04 17:53:05 +00:00
/* Compression header */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_compress_header ;
static int hf_sapdiag_uncomplength ;
static int hf_sapdiag_algorithm ;
static int hf_sapdiag_magic ;
static int hf_sapdiag_special ;
2022-12-04 17:53:05 +00:00
/* Message Data */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_item ;
static int hf_sapdiag_item_type ;
static int hf_sapdiag_item_id ;
static int hf_sapdiag_item_sid ;
static int hf_sapdiag_item_length_short ;
static int hf_sapdiag_item_length_long ;
static int hf_sapdiag_item_value ;
2022-12-04 17:53:05 +00:00
/* Message DP Header */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_dp_request_id ;
static int hf_sapdiag_dp_retcode ;
static int hf_sapdiag_dp_sender_id ;
static int hf_sapdiag_dp_action_type ;
static int hf_sapdiag_dp_req_info ;
static int hf_sapdiag_dp_req_info_LOGIN ;
static int hf_sapdiag_dp_req_info_LOGOFF ;
static int hf_sapdiag_dp_req_info_SHUTDOWN ;
static int hf_sapdiag_dp_req_info_GRAPHIC_TM ;
static int hf_sapdiag_dp_req_info_ALPHA_TM ;
static int hf_sapdiag_dp_req_info_ERROR_FROM_APPC ;
static int hf_sapdiag_dp_req_info_CANCELMODE ;
static int hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF ;
static int hf_sapdiag_dp_req_info_MSG_WITH_OH ;
static int hf_sapdiag_dp_req_info_BUFFER_REFRESH ;
static int hf_sapdiag_dp_req_info_BTC_SCHEDULER ;
static int hf_sapdiag_dp_req_info_APPC_SERVER_DOWN ;
static int hf_sapdiag_dp_req_info_MS_ERROR ;
static int hf_sapdiag_dp_req_info_SET_SYSTEM_USER ;
static int hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ ;
static int hf_sapdiag_dp_req_info_DP_AUTO_ABAP ;
static int hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO ;
static int hf_sapdiag_dp_req_info_DP_ADMIN ;
static int hf_sapdiag_dp_req_info_DP_SPOOL_ALRM ;
static int hf_sapdiag_dp_req_info_DP_HAND_SHAKE ;
static int hf_sapdiag_dp_req_info_DP_CANCEL_PRIV ;
static int hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT ;
static int hf_sapdiag_dp_req_info_DP_NEW_MODE ;
static int hf_sapdiag_dp_req_info_DP_SOFT_CANCEL ;
static int hf_sapdiag_dp_req_info_DP_TM_INPUT ;
static int hf_sapdiag_dp_req_info_DP_TM_OUTPUT ;
static int hf_sapdiag_dp_req_info_DP_ASYNC_RFC ;
static int hf_sapdiag_dp_req_info_DP_ICM_EVENT ;
static int hf_sapdiag_dp_req_info_DP_AUTO_TH ;
static int hf_sapdiag_dp_req_info_DP_RFC_CANCEL ;
static int hf_sapdiag_dp_req_info_DP_MS_ADM ;
static int hf_sapdiag_dp_tid ;
static int hf_sapdiag_dp_uid ;
static int hf_sapdiag_dp_mode ;
static int hf_sapdiag_dp_wp_id ;
static int hf_sapdiag_dp_wp_ca_blk ;
static int hf_sapdiag_dp_appc_ca_blk ;
static int hf_sapdiag_dp_len ; /* Length of the SAP Diag Items in the login */
static int hf_sapdiag_dp_new_stat ;
static int hf_sapdiag_dp_rq_id ;
static int hf_sapdiag_dp_terminal ;
2022-12-04 17:53:05 +00:00
/* Dynt Atom */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_item_dynt_atom ;
static int hf_sapdiag_item_dynt_atom_item ;
static int hf_sapdiag_item_dynt_atom_item_etype ;
static int hf_sapdiag_item_dynt_atom_item_attr ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE ;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED ;
2022-12-04 17:53:05 +00:00
/* Control properties */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_item_control_properties_id ;
static int hf_sapdiag_item_control_properties_value ;
2022-12-04 17:53:05 +00:00
/* UI Event Source */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_item_ui_event_event_type ;
static int hf_sapdiag_item_ui_event_control_type ;
static int hf_sapdiag_item_ui_event_valid ;
static int hf_sapdiag_item_ui_event_valid_MENU_POS ;
static int hf_sapdiag_item_ui_event_valid_CONTROL_POS ;
static int hf_sapdiag_item_ui_event_valid_NAVIGATION_DATA ;
static int hf_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA ;
static int hf_sapdiag_item_ui_event_control_row ;
static int hf_sapdiag_item_ui_event_control_col ;
static int hf_sapdiag_item_ui_event_data ;
static int hf_sapdiag_item_ui_event_navigation_data ;
static int hf_sapdiag_item_ui_event_container_nrs ;
static int hf_sapdiag_item_ui_event_container ;
2022-12-04 17:53:05 +00:00
/* Menu Entries */
2023-11-20 07:16:40 +00:00
static int hf_sapdiag_item_menu_entry ;
2022-12-04 17:53:05 +00:00
/* Diag Support Bits */
2023-11-20 07:16:40 +00:00
static int hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_UPPERCASE ;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY ;
static int hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE ;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG ;
static int hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT ;
static int hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE ;
static int hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT ;
static int hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS ;
static int hf_SAPDIAG_SUPPORT_BIT_FULL_MENU ;
static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES ;
static int hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE ;
static int hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS ;
static int hf_SAPDIAG_SUPPORT_BIT_APPL_MNU ;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO ;
static int hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1 ;
static int hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB ;
static int hf_SAPDIAG_SUPPORT_BIT_GUIAPI ;
static int hf_SAPDIAG_SUPPORT_BIT_NOGRAPH ;
static int hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES ;
static int hf_SAPDIAG_SUPPORT_BIT_NORABAX ;
static int hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG ;
static int hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT ;
static int hf_SAPDIAG_SUPPORT_BIT_NORFC ;
static int hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT ;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS ;
static int hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT ;
static int hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS ;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK ;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2 ;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE ;
static int hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE ;
static int hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE ;
static int hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_TABSTRIP ;
static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS ;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES ;
static int hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST ;
static int hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER ;
static int hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER ;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER ;
static int hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED ;
static int hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO ;
static int hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER ;
static int hf_SAPDIAG_SUPPORT_BIT_COMBOBOX ;
static int hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED ;
static int hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE ;
static int hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS ;
static int hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT ;
static int hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2 ;
static int hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD ;
static int hf_SAPDIAG_SUPPORT_BIT_WIN16 ;
static int hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU ;
static int hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE ;
static int hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION ;
static int hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER ;
static int hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD ;
static int hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG ;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID ;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID ;
static int hf_SAPDIAG_SUPPORT_BIT_NOTGUI ;
static int hf_SAPDIAG_SUPPORT_BIT_WAN ;
static int hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS ;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE ;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS ;
static int hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS ;
static int hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND ;
static int hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE ;
static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID ;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB ;
static int hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS ;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_3 ;
static int hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES ;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_4 ;
static int hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD ;
static int hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE ;
static int hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE ;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_5 ;
static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2 ;
static int hf_SAPDIAG_SUPPORT_BIT_ITS ;
static int hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS ;
static int hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP ;
static int hf_SAPDIAG_SUPPORT_BIT_COOKIE ;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_6 ;
static int hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE ;
static int hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE ;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS ;
static int hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY ;
static int hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE ;
static int hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS ;
static int hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR ;
static int hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT ;
static int hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH ;
static int hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE ;
static int hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN ;
static int hf_SAPDIAG_SUPPORT_BIT_WORKPLACE ;
static int hf_SAPDIAG_SUPPORT_BIT_PRINTDATA ;
static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION ;
static int hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE ;
static int hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT ;
static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER ;
static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO ;
static int hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT ;
static int hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT ;
static int hf_SAPDIAG_SUPPORT_BIT_WEBGUI ;
static int hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE ;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST ;
static int hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING ;
static int hf_SAPDIAG_SUPPORT_BIT_SLC ;
static int hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY ;
static int hf_SAPDIAG_SUPPORT_BIT_ECATT ;
static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3 ;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8 ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME ;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST ;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE ;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP ;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4 ;
static int hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL ;
static int hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE ;
static int hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID ;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_THEME ;
static int hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW ;
static int hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_SPLITTER ;
static int hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY ;
static int hf_SAPDIAG_SUPPORT_BIT_ACC_LIST ;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO ;
static int hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM ;
static int hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_FRAME_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI ;
static int hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS ;
static int hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT ;
static int hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP ;
static int hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3 ;
static int hf_SAPDIAG_SUPPORT_BIT_CELLINFO ;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT ;
static int hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN ;
static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS ;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_RCUI ;
static int hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE ;
static int hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE ;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION ;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP ;
static int hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3 ;
static int hf_SAPDIAG_SUPPORT_BIT_SBA2 ;
static int hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE ;
static int hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2 ;
static int hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE ;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET ;
static int hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER ;
static int hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION ;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST ;
static int hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME ;
static int hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN ;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1 ;
static int hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS ;
static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO ;
static int hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT ;
static int hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH ;
static int hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT ;
static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3 ;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR ;
static int hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE ;
static int hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS ;
static int hf_SAPDIAG_SUPPORT_BIT_IDA_ALV ;
static int hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS ;
static int hf_SAPDIAG_SUPPORT_BIT_AMC ;
static int hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC ;
static int hf_SAPDIAG_SUPPORT_BIT_GROUPBOX ;
static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON ;
static int hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST ;
static int hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE ;
static int hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE ;
static int hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE ;
static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID ;
static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC ;
static int hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS ;
static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE ;
static int hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3 ;
static int hf_SAPDIAG_SUPPORT_BIT_NWBC ;
static int hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST ;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR ;
static int hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE ;
static gint ett_sapdiag ;
2022-12-04 17:53:05 +00:00
/* Expert info */
2023-11-20 07:16:40 +00:00
static expert_field ei_sapdiag_item_unknown ;
static expert_field ei_sapdiag_item_partial ;
static expert_field ei_sapdiag_item_unknown_length ;
static expert_field ei_sapdiag_item_offset_invalid ;
static expert_field ei_sapdiag_item_length_invalid ;
static expert_field ei_sapdiag_atom_item_unknown ;
static expert_field ei_sapdiag_atom_item_partial ;
static expert_field ei_sapdiag_atom_item_malformed ;
static expert_field ei_sapdiag_dynt_focus_more_cont_ids ;
static expert_field ei_sapdiag_password_field ;
2022-12-04 17:53:05 +00:00
/* Global RFC dissection preference */
static gboolean global_sapdiag_rfc_dissection = TRUE ;
/* Global SNC dissection preference */
static gboolean global_sapdiag_snc_dissection = TRUE ;
/* Global port preference */
static range_t * global_sapdiag_port_range ;
/* Global highlight preference */
static gboolean global_sapdiag_highlight_items = TRUE ;
/* Protocol handle */
static dissector_handle_t sapdiag_handle ;
void proto_register_sapdiag ( void ) ;
void proto_reg_handoff_sapdiag ( void ) ;
static void
dissect_sapdiag_dp_req_info ( tvbuff_t * tvb , proto_tree * tree , guint32 offset ) {
proto_item * ri = NULL ;
proto_tree * req_info_tree ;
ri = proto_tree_add_item ( tree , hf_sapdiag_dp_req_info , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
req_info_tree = proto_item_add_subtree ( ri , ett_sapdiag ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_LOGIN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x08 */
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_LOGOFF , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_SHUTDOWN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_GRAPHIC_TM , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_ALPHA_TM , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_ERROR_FROM_APPC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_CANCELMODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_MSG_WITH_OH , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x09 */
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_BUFFER_REFRESH , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_BTC_SCHEDULER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_APPC_SERVER_DOWN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_MS_ERROR , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_SET_SYSTEM_USER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_AUTO_ABAP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x0a */
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_ADMIN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_SPOOL_ALRM , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_HAND_SHAKE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_CANCEL_PRIV , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_NEW_MODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_SOFT_CANCEL , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_TM_INPUT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x0b */
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_TM_OUTPUT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_ASYNC_RFC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_ICM_EVENT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_AUTO_TH , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_RFC_CANCEL , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( req_info_tree , hf_sapdiag_dp_req_info_DP_MS_ADM , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
}
static void
dissect_sapdiag_dp ( tvbuff_t * tvb , proto_tree * tree , guint32 offset ) {
proto_item * dp = NULL ;
proto_tree * dp_tree ;
dp = proto_tree_add_item ( tree , hf_sapdiag_dp , tvb , offset , 200 , ENC_NA ) ;
dp_tree = proto_item_add_subtree ( dp , ett_sapdiag ) ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_request_id , tvb , offset , 4 , ENC_BIG_ENDIAN ) ; /* 0x00 */
offset + = 4 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_retcode , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x04 */
offset + + ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_sender_id , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x05 */
offset + + ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_action_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x06 */
offset + + ;
dissect_sapdiag_dp_req_info ( tvb , dp_tree , offset ) ; /* Request info flags */ /* 0x07 */
offset + = 4 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_tid , tvb , offset , 4 , ENC_BIG_ENDIAN ) ; /* 0x0b */
offset + = 4 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_uid , tvb , offset , 2 , ENC_BIG_ENDIAN ) ; /* 0x0f */
offset + = 2 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_mode , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x11 */
offset + + ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_wp_id , tvb , offset , 4 , ENC_BIG_ENDIAN ) ; /* 0x12 */
offset + = 4 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_wp_ca_blk , tvb , offset , 4 , ENC_BIG_ENDIAN ) ; /* 0x16 */
offset + = 4 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_appc_ca_blk , tvb , offset , 4 , ENC_BIG_ENDIAN ) ; /* 0x1a */
offset + = 4 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_len , tvb , offset , 4 , ENC_LITTLE_ENDIAN ) ; /* 0x1e */
offset + = 4 ;
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_new_stat , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0x22 */
offset + + ;
offset + = 4 ; /* Unknown 4 bytes */ /* 0x23 */
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_rq_id , tvb , offset , 2 , ENC_BIG_ENDIAN ) ; /* 0x27 */
offset + = 2 ;
offset + = 40 ; /* Unknown 40 bytes (0x20 * 40) */ /* 0x29 */
proto_tree_add_item ( dp_tree , hf_sapdiag_dp_terminal , tvb , offset , 15 , ENC_ASCII | ENC_NA ) ; /* 0x51 */
}
static void
dissect_sapdiag_support_bits ( tvbuff_t * tvb , proto_tree * tree , guint32 offset ) {
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 0 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 1 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 2 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 3 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 4 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 5 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 6 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 7 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 8 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 9 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 10 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 11 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UPPERCASE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 12 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 13 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 14 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 15 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 16 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 17 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 18 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 19 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_FULL_MENU , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 20 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 21 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 22 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 23 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_APPL_MNU , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 24 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 25 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 26 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 27 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUIAPI , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 28 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NOGRAPH , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 29 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 30 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NORABAX , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 31 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 32 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 33 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NORFC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 34 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 35 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 36 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 37 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 38 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 39 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 40 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 41 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 42 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 43 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 44 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABSTRIP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 45 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 46 (Unknown support bit) */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 47 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 48 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 49 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 50 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 51 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 52 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 53 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 54 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 55 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 56 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_COMBOBOX , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 57 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 58 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 59 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 60 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 61 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 62 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 63 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 64 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 65 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 66 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_WIN16 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 67 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 68 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 69 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 70 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 71 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 72 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 73 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNUSED_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 74 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 75 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 76 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 77 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 78 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NOTGUI , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 79 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_WAN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 80 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 81 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 82 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 83 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 84 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 85 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 86 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 87 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 88 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 89 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNUSED_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 90 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNUSED_3 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 91 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 92 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNUSED_4 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 93 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 94 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 95 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 96 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNUSED_5 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 97 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 98 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ITS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 99 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 100 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 101 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_COOKIE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 102 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNUSED_6 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 103 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 104 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 105 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 106 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 107 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 108 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 109 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 110 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 111 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 112 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 113 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 114 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_WORKPLACE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 115 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_PRINTDATA , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 116 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 117 (Unknown support bit) */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 118 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 119 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 120 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 121 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 122 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 123 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 124 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_WEBGUI , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 125 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 126 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 127 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 128 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 129 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 130 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SLC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 131 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 132 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ECATT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 133 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 134 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 135 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 136 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 137 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 138 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 139 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 140 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 141 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 142 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 143 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 144 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUI_THEME , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 145 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 146 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 147 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SPLITTER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 148 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 149 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ACC_LIST , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 150 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 151 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 152 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 153 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 154 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_FRAME_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 155 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 156 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 157 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 158 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 159 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 160 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 161 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CELLINFO , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 162 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 163 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 164 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 165 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 166 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 167 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 168 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_RCUI , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 169 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 170 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 171 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 172 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 173 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 174 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 175 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SBA2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 176 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 177 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 178 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 179 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 180 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 181 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 182 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 183 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 184 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 185 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 186 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 187 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 188 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 189 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 190 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 191 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 192 (Unknown support bit) */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 193 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 194 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 195 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_IDA_ALV , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 196 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 197 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_AMC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 198 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 199 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GROUPBOX , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 200 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 201 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 202 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 203 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 204 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 205 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_AGI_ID , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 206 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 207 */
offset + = 1 ;
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 208 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 209 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 210 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_NWBC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 211 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 212 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 213 */
proto_tree_add_item ( tree , hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; /* 214 */
}
static void
dissect_sapdiag_rfc_call ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , guint32 offset , guint32 item_length ) {
tvbuff_t * next_tvb = NULL ;
dissector_handle_t rfc_handle ;
/* Call the RFC internal dissector.
* TODO : This should be enabled when the RFC dissector is merged as they depend on each other .
*/
if ( global_sapdiag_rfc_dissection = = TRUE & & FALSE ) {
rfc_handle = find_dissector ( " saprfcinternal " ) ;
if ( rfc_handle ) {
/* Set the column to not writable so the RFC dissector doesn't override the Diag info */
col_set_writable ( pinfo - > cinfo , - 1 , FALSE ) ;
/* Create a new tvb buffer and call the dissector */
next_tvb = tvb_new_subset_length ( tvb , offset , item_length ) ;
call_dissector ( rfc_handle , next_tvb , pinfo , tree ) ;
}
}
}
static gboolean
check_length ( packet_info * pinfo , proto_tree * tree , guint32 expected , guint32 real , const char * name_string ) {
if ( expected ! = real ) {
expert_add_info_format ( pinfo , tree , & ei_sapdiag_item_length_invalid , " Item %s length is invalid " , name_string ) ;
return ( FALSE ) ;
} else return ( TRUE ) ;
}
static guint8
add_item_value_uint8 ( tvbuff_t * tvb , proto_item * item , proto_tree * tree , int hf , guint32 offset , const char * text ) {
proto_tree_add_none_format ( tree , hf , tvb , offset , 1 , " %s: %d " , text , tvb_get_guint8 ( tvb , offset ) ) ;
proto_item_append_text ( item , " , %s=%d " , text , tvb_get_guint8 ( tvb , offset ) ) ;
return ( tvb_get_guint8 ( tvb , offset ) ) ;
}
static guint16
add_item_value_uint16 ( tvbuff_t * tvb , proto_item * item , proto_tree * tree , int hf , guint32 offset , const char * text ) {
proto_tree_add_none_format ( tree , hf , tvb , offset , 2 , " %s: %d " , text , tvb_get_ntohs ( tvb , offset ) ) ;
proto_item_append_text ( item , " , %s=%d " , text , tvb_get_ntohs ( tvb , offset ) ) ;
return ( tvb_get_ntohs ( tvb , offset ) ) ;
}
static guint32
add_item_value_uint32 ( tvbuff_t * tvb , proto_item * item , proto_tree * tree , int hf , guint32 offset , const char * text ) {
proto_tree_add_none_format ( tree , hf , tvb , offset , 4 , " %s: %d " , text , tvb_get_ntohl ( tvb , offset ) ) ;
proto_item_append_text ( item , " , %s=%d " , text , tvb_get_ntohl ( tvb , offset ) ) ;
return ( tvb_get_ntohl ( tvb , offset ) ) ;
}
static void
add_item_value_string ( tvbuff_t * tvb , packet_info * pinfo , proto_item * item , proto_tree * tree , int hf , guint32 offset , guint32 length , const char * text , int show_in_tree ) {
guint8 * string = tvb_get_string_enc ( pinfo - > pool , tvb , offset , length , ENC_ASCII ) ;
proto_tree_add_none_format ( tree , hf , tvb , offset , length , " %s: %s " , text , string ) ;
if ( show_in_tree ) proto_item_append_text ( item , " , %s=%s " , text , string ) ;
}
static guint32
add_item_value_stringz ( tvbuff_t * tvb , packet_info * pinfo , proto_item * item , proto_tree * tree , int hf , guint32 offset , const char * text , int show_in_tree ) {
guint32 length = tvb_strsize ( tvb , offset ) ;
guint8 * string = tvb_get_string_enc ( pinfo - > pool , tvb , offset , length - 1 , ENC_ASCII ) ;
proto_tree_add_none_format ( tree , hf , tvb , offset , length , " %s: %s " , text , string ) ;
if ( show_in_tree ) proto_item_append_text ( item , " , %s=%s " , text , string ) ;
return ( length ) ;
}
static void
add_item_value_hexstring ( tvbuff_t * tvb , packet_info * pinfo , proto_item * item , proto_tree * tree , int hf , guint32 offset , guint32 length , const char * text ) {
proto_tree_add_none_format ( tree , hf , tvb , offset , length , " %s: %s " , text , tvb_bytes_to_str ( pinfo - > pool , tvb , offset , length ) ) ;
proto_item_append_text ( item , " , %s=%s " , text , tvb_bytes_to_str ( pinfo - > pool , tvb , offset , length ) ) ;
}
static void
dissect_sapdiag_dyntatom ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , guint32 offset , guint32 length ) {
guint32 final = offset + length ;
guint16 atom_length = 0 , atom_item_length = 0 ;
guint8 etype = 0 , attr = 0 ;
proto_item * atom = NULL , * atom_item = NULL , * atom_item_attr = NULL ;
proto_tree * atom_tree = NULL , * atom_item_tree = NULL , * atom_item_attr_tree = NULL ;
while ( offset < final ) {
etype = tvb_get_guint8 ( tvb , offset + 4 ) ;
if ( ( etype ! = 114 ) & & ( etype ! = 120 ) ) {
/* Add a new atom subtree */
atom_length = 0 ;
atom = proto_tree_add_item ( tree , hf_sapdiag_item_dynt_atom , tvb , offset , atom_length , ENC_NA ) ;
atom_tree = proto_item_add_subtree ( atom , ett_sapdiag ) ;
2023-04-25 09:51:19 +00:00
proto_item_append_text ( atom , " , Etype=%s " , val_to_str_const ( etype , sapdiag_item_dynt_atom_item_etype_vals , " Unknown " ) ) ; /* Add the Etype to the Atom tree also */
2022-12-04 17:53:05 +00:00
}
/* Check the atom_tree for NULL values. If the atom_tree wasn't created at this point, the atom
* starts with an item different to 114 or 120. */
if ( atom_tree = = NULL ) {
expert_add_info ( pinfo , tree , & ei_sapdiag_atom_item_malformed ) ;
break ;
}
/* Add the item atom subtree */
atom_item = proto_tree_add_item ( atom_tree , hf_sapdiag_item_dynt_atom_item , tvb , offset , tvb_get_ntohs ( tvb , offset ) , ENC_NA ) ;
atom_item_tree = proto_item_add_subtree ( atom_item , ett_sapdiag ) ;
/* Get the atom item length */
atom_item_length = add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Atom Length " ) ;
/* Adjust the length of the atom tree, adding the new item's length and the length field */
atom_length + = atom_item_length ;
proto_item_set_len ( atom_tree , atom_length ) ;
/* Continue with the dissection */
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Dlg Flag 1 " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Dlg Flag 2 " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
proto_tree_add_item ( atom_item_tree , hf_sapdiag_item_dynt_atom_item_etype , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_item_append_text ( atom_item , " , EType=%d " , tvb_get_guint8 ( tvb , offset ) ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Area " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Block " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Group " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Row " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Col " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
atom_item_attr = proto_tree_add_item ( atom_item_tree , hf_sapdiag_item_dynt_atom_item_attr , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
atom_item_attr_tree = proto_item_add_subtree ( atom_item_attr , ett_sapdiag ) ;
attr = tvb_get_guint8 ( tvb , offset ) ;
proto_item_append_text ( atom_item , " , Attr=%d " , attr ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( atom_item_attr_tree , hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + = 1 ;
atom_item_length - = 1 ;
/* If the attribute is set to invisible we're dealing probably with a password field */
if ( attr & SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE ) {
expert_add_info ( pinfo , atom_item , & ei_sapdiag_password_field ) ;
}
switch ( etype ) {
case 114 : { /* DIAG_DGOTYP_FNAME */
add_item_value_string ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , atom_item_length , " Text " , 1 ) ;
proto_item_append_text ( atom , " , Text=%s " , tvb_get_string_enc ( pinfo - > pool , tvb , offset , atom_item_length , ENC_ASCII ) ) ;
break ;
} case 115 : { /* DIAG_DGOTYP_PUSHBUTTON_2 */
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " V Length " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " V Height " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Function Code Offset " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Text Offset " ) ;
offset + = 2 ;
offset + = add_item_value_stringz ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Text " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Function Code " , 1 ) ;
break ;
} case 116 : { /* DIAG_DGOTYP_TABSTRIP_BUTTON */
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " V Length " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " V Height " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Page Id " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Function Code Offset " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Text Offset " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Id Offset " ) ;
offset + = 2 ;
offset + = add_item_value_stringz ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Text " , 1 ) ;
offset + = add_item_value_stringz ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Function Code " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " ID " , 1 ) ;
break ;
} case 118 : /* DIAG_DGOTYP_CHECKBUTTON_1" */
case 119 : { /* DIAG_DGOTYP_RADIOBUTTON_1 */
/* If the preference is set, report the item as partially dissected in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , atom_item , & ei_sapdiag_atom_item_partial , " The Diag Atom is dissected partially (0x%.2x) " , etype ) ;
}
break ;
} case 120 : { /* DIAG_DGOTYP_XMLPROP */
add_item_value_string ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , atom_item_length , " XMLProp " , 1 ) ;
proto_item_append_text ( atom , " , XMLProp=%s " , tvb_get_string_enc ( pinfo - > pool , tvb , offset , atom_item_length , ENC_ASCII ) ) ;
break ;
} case 121 : /* DIAG_DGOTYP_EFIELD_1 */
case 122 : /* DIAG_DGOTYP_OFIELD_1 */
case 123 : { /* DIAG_DGOTYP_KEYWORD_1_1 */
/* Found in NW 7.00 and 7.01 versions */
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Flag1 " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " DLen " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " MLen " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " MaxNrChars " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_string ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , atom_item_length , " Text " , 0 ) ;
break ;
} case 127 : { /* DIAG_DGOTYP_FRAME_1 */
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " DRows " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " DCols " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_string ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , atom_item_length , " Text " , 1 ) ; offset + = atom_item_length ;
break ;
} case 129 : { /* DIAG_DGOTYP_RADIOBUTTON_3 */
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Button " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Visible Label Length " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " EventID Off " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " EventID Len " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Text Off " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Text Length " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_string ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , atom_item_length , " Text " , 1 ) ;
break ;
} case 130 : /* DIAG_DGOTYP_EFIELD_2 */
case 131 : /* DIAG_DGOTYP_OFIELD_2 */
case 132 : { /* DIAG_DGOTYP_KEYWORD_2 */
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " Flag1 " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " DLen " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint8 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " MLen " ) ;
offset + = 1 ;
atom_item_length - = 1 ;
add_item_value_uint16 ( tvb , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , " MaxNrChars " ) ;
offset + = 2 ;
atom_item_length - = 2 ;
add_item_value_string ( tvb , pinfo , atom_item , atom_item_tree , hf_sapdiag_item_value , offset , atom_item_length , " Text " , 0 ) ;
break ;
} default :
/* If the preference is set, report the item as unknown in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , atom_item , & ei_sapdiag_atom_item_unknown , " The Diag Atom has a unknown type that is not dissected (%d) " , etype ) ;
}
break ;
}
}
}
static void
dissect_sapdiag_menu ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , guint32 offset , guint32 length ) {
guint32 final = offset + length ;
proto_item * menu = NULL ;
proto_tree * menu_tree = NULL ;
while ( offset < final ) {
/* Add the menu entry subtree */
menu = proto_tree_add_item ( tree , hf_sapdiag_item_menu_entry , tvb , offset , tvb_get_ntohs ( tvb , offset ) , ENC_NA ) ;
menu_tree = proto_item_add_subtree ( menu , ett_sapdiag ) ;
add_item_value_uint16 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Length " ) ;
offset + = 2 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Position 1 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Position 2 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Position 3 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Position 4 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Flag " ) ; /* XXX: Add flag values */
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Virtual Key " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Return Code 1 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Return Code 2 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Return Code 3 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Return Code 4 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Return Code 5 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Return Code 6 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Function Code 1 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Function Code 2 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Function Code 3 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Function Code 4 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Function Code 5 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , menu , menu_tree , hf_sapdiag_item_value , offset , " Function Code 6 " ) ;
offset + = 1 ;
offset + = add_item_value_stringz ( tvb , pinfo , menu , menu_tree , hf_sapdiag_item_value , offset , " Text " , 1 ) ;
offset + = add_item_value_stringz ( tvb , pinfo , menu , menu_tree , hf_sapdiag_item_value , offset , " Accelerator " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , menu , menu_tree , hf_sapdiag_item_value , offset , " Info " , 1 ) ;
}
}
static void
dissect_sapdiag_uievent ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , guint32 offset , guint32 length ) {
proto_item * event_valid_item = NULL ;
proto_tree * event_valid_tree = NULL ;
guint8 event_valid = 0 ;
guint16 container_nrs = 0 , i = 0 ;
event_valid = tvb_get_guint8 ( tvb , offset ) ;
2023-11-17 07:46:02 +00:00
event_valid_item = proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_valid , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
event_valid_tree = proto_item_add_subtree ( event_valid_item , ett_sapdiag ) ;
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( event_valid_tree , hf_sapdiag_item_ui_event_valid_MENU_POS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( event_valid_tree , hf_sapdiag_item_ui_event_valid_CONTROL_POS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( event_valid_tree , hf_sapdiag_item_ui_event_valid_NAVIGATION_DATA , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( event_valid_tree , hf_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA , tvb , offset , 1 , ENC_BIG_ENDIAN ) ; offset + = 1 ; length - = 1 ;
2022-12-04 17:53:05 +00:00
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_event_type , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2023-04-25 09:51:19 +00:00
proto_item_append_text ( tree , " , Event Type=%s " , val_to_str_const ( tvb_get_ntohs ( tvb , offset ) , sapdiag_item_ui_event_event_type_vals , " Unknown " ) ) ; offset + = 2 ; length - = 2 ;
2022-12-04 17:53:05 +00:00
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_control_type , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2023-04-25 09:51:19 +00:00
proto_item_append_text ( tree , " , Control Type=%s " , val_to_str_const ( tvb_get_ntohs ( tvb , offset ) , sapdiag_item_ui_event_control_type_vals , " Unknown " ) ) ; offset + = 2 ; length - = 2 ;
2022-12-04 17:53:05 +00:00
/* The semantic of the event data changes depending of the event valid flag and are ignored if the
SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA flag or the SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA
flags are not set . We dissect them always . */
if ( event_valid & SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA ) {
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_navigation_data , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 1 ;
length - = 1 ;
} else { /* SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA */
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_data , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 1 ;
length - = 1 ;
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_data , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 1 ;
length - = 1 ;
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_data , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 1 ;
length - = 1 ;
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_data , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 1 ;
length - = 1 ;
}
/* These items are ignored if the flag SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS is not set. We dissect them always. */
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_control_row , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 2 ;
length - = 2 ;
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_control_col , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 2 ;
length - = 2 ;
i = container_nrs = tvb_get_ntohs ( tvb , offset ) ;
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_container_nrs , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 2 ;
length - = 2 ;
while ( i > 0 & & length > 0 ) {
2023-11-17 07:46:02 +00:00
proto_tree_add_item ( tree , hf_sapdiag_item_ui_event_container , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2022-12-04 17:53:05 +00:00
offset + = 1 ;
length - = 1 ;
i - - ;
}
if ( i > 0 ) {
expert_add_info_format ( pinfo , tree , & ei_sapdiag_dynt_focus_more_cont_ids , " Number of Container IDs (%d) is invalid " , container_nrs ) ;
}
}
static void
dissect_sapdiag_item ( tvbuff_t * tvb , packet_info * pinfo , proto_item * item , proto_tree * item_value_tree , proto_tree * parent_tree , guint32 offset , guint8 item_type , guint8 item_id , guint8 item_sid , guint32 item_length ) {
/* SES item */
if ( item_type = = 0x01 ) {
guint8 event_array = 0 ;
check_length ( pinfo , item_value_tree , 16 , item_length , " SES " ) ;
event_array = tvb_get_guint8 ( tvb , offset ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Event Array " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Event ID 1 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Event ID 2 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Event ID 3 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Event ID 4 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Event ID 5 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Screen Flag " ) ; /* XXX: Add flag values */
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Modal No " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " X Pos " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Y Pos " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " IMode " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Flag 1 " ) ; /* XXX: Add flag values */
offset + = 3 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Dim Row " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Dim Col " ) ;
/* TODO: Incomplete dissection of this item */
/* If the preference is set, report the item as partially dissected in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_item_partial , " The SES item is dissected partially (event array = 0x%.2x) " , event_array ) ;
}
} else if ( item_type = = 0x0a ) { /* SFE */
check_length ( pinfo , item_value_tree , 3 , item_length , " SFE " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Control format " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Control color " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Control extended " ) ;
} else if ( item_type = = 0x0b ) { /* SBA */
check_length ( pinfo , item_value_tree , 2 , item_length , " SBA " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Control y-position " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Control x-position " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x26 ) { /* Dialog Step Number */
check_length ( pinfo , item_value_tree , 4 , item_length , " Dialog Step Number " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Dialog Step Number " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x02 ) { /* Connect */
check_length ( pinfo , item_value_tree , 12 , item_length , " Connect " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Protocol Version " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Code Page " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " WS Type " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x04 ) { /* Font Metric */
check_length ( pinfo , item_value_tree , 8 , item_length , " Font Metric " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Variable font size (y) " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Variable font size (x) " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Fixed font size (y) " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Fixed font size (x) " ) ;
} else if ( ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x0b ) | | /* Support Data */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x11 ) ) {
check_length ( pinfo , item_value_tree , 32 , item_length , " Support Data " ) ;
dissect_sapdiag_support_bits ( tvb , item_value_tree , offset ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x0d ) { /* Window Size */
check_length ( pinfo , item_value_tree , 16 , item_length , " Window Size " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Width " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Area Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Area Width " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x0f ) { /* Turn Time 2 (Response time) */
check_length ( pinfo , item_value_tree , 4 , item_length , " Response time " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Response time " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x16 ) { /* Scrollbar Width */
check_length ( pinfo , item_value_tree , 2 , item_length , " Scrollbar Width " ) ;
2023-01-31 17:12:16 +00:00
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Scrolllbar Width " ) ;
2022-12-04 17:53:05 +00:00
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x17 ) { /* Scrollbar Height */
check_length ( pinfo , item_value_tree , 2 , item_length , " Scrollbar Height " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Scrollbar Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x19 ) { /* Gui State */
check_length ( pinfo , item_value_tree , 2 , item_length , " Gui State " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Flag 1 " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Flag 2 " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x1d ) { /* GUI patch level */
/* GUI Patch level could be a string in old versions, or a single byte integer in newer ones */
if ( item_length = = 2 ) {
add_item_value_string ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , 2 , " GUI patch level " , 1 ) ;
} else {
check_length ( pinfo , item_value_tree , 1 , item_length , " GUI patch level " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " GUI patch level " ) ;
}
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x24 ) { /* Display Size */
check_length ( pinfo , item_value_tree , 8 , item_length , " Display Size " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x25 ) { /* GUI Type */
check_length ( pinfo , item_value_tree , 2 , item_length , " GUI Type " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " GUI Type " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x01 ) { /* Mode Number */
check_length ( pinfo , item_value_tree , 2 , item_length , " Mode Number " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Mode Number " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x06 ) { /* Diag version */
check_length ( pinfo , item_value_tree , 2 , item_length , " Diag version " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Diag version " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x0a ) { /* Internal Mode Number */
check_length ( pinfo , item_value_tree , 2 , item_length , " Internal Mode Number " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Internal Mode Number " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x13 ) { /* GUI_FKEY */
guint32 length = offset + item_length ;
offset + + ; /* TODO: Skip one byte here */
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Virtual key number " , 1 ) ;
while ( ( offset < length ) & & tvb_offset_exists ( tvb , offset ) ) {
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " String number " , 1 ) ;
}
/* If the preference is set, report the item as partially dissected in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_item_partial , " The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x) " , item_type , item_id , item_sid ) ;
}
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x14 ) { /* GUI_FKEYT */
offset + + ; /* TODO: Skip one byte here */
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Virtual key number " ) ;
offset + = 2 ; /* TODO: Skip one byte here */
add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Virtual key text " , 1 ) ;
/* If the preference is set, report the item as partially dissected in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_item_partial , " The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x) " , item_type , item_id , item_sid ) ;
}
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x16 ) { /* RFC Diag Block Size */
check_length ( pinfo , item_value_tree , 4 , item_length , " RFC Diag Block Size " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " RFC Diag Block Size " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x18 ) { /* Info flags */
check_length ( pinfo , item_value_tree , 2 , item_length , " Info flags " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Info flags " ) ;
/* If the preference is set, report the item as partially dissected in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_item_partial , " The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x) " , item_type , item_id , item_sid ) ;
}
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x19 ) { /* User ID */
check_length ( pinfo , item_value_tree , 2 , item_length , " User ID " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " User ID " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x1f ) { /* IMode uuids 2 */
guint8 uuids = tvb_get_guint8 ( tvb , offset ) ;
if ( ! check_length ( pinfo , item_value_tree , 1 + 17 * uuids , item_length , " IMode uuids " ) ) return ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Number of uuids " ) ;
offset + = 1 ;
while ( ( uuids > 0 ) & & ( tvb_offset_exists ( tvb , offset + 16 + 1 ) ) ) {
add_item_value_hexstring ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , 16 , " UUID " ) ;
offset + = 16 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Active context " ) ;
offset + = 1 ;
uuids - - ;
}
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x22 ) { /* Auto logout time */
check_length ( pinfo , item_value_tree , 4 , item_length , " Auto logout time " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Auto logout time " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x23 ) { /* Codepage Diag GUI */
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Codepage number (numeric representation) " ) ;
offset + = 4 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Minimum number of bytes per character " ) ;
offset + = 1 ;
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Codepage number (string representation) " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Codepage description " , 1 ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x27 ) { /* Codepage App Server */
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Codepage number (numeric representation) " ) ;
offset + = 4 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Minimum number of bytes per character " ) ;
offset + = 1 ;
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Codepage number (string representation) " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Codepage description " , 1 ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x29 ) { /* Kernel Version */
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Database version " , 1 ) ;
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Kernel version " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Kernel patch level " , 1 ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x09 & & item_sid = = 0x0b ) { /* Dynt Focus */
guint32 length = offset + item_length ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Focus Num of Area ID " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Focus Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Focus Col " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Focus Row Offset " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Focus Col Offset " ) ;
offset + = 2 ;
/* Container IDs up to 30 */
if ( length - offset > 30 ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_dynt_focus_more_cont_ids , " The Dynt Focus contains more than 30 Container IDs (%d) " , offset ) ;
}
/* Dissect all the remaining container IDs */
while ( ( offset < length ) & & tvb_offset_exists ( tvb , offset ) ) {
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Focus Container ID " ) ;
offset + = 1 ;
}
} else if ( item_type = = 0x10 & & item_id = = 0x0a & & item_sid = = 0x01 ) { /* Container Reset */
check_length ( pinfo , item_value_tree , 9 , item_length , " Container Reset " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Id " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Col " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Width " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0a & & item_sid = = 0x04 ) { /* Container Loop */
check_length ( pinfo , item_value_tree , 9 , item_length , " Container Loop " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Id " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Col " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Width " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0a & & item_sid = = 0x05 ) { /* Container Table */
check_length ( pinfo , item_value_tree , 9 , item_length , " Container Table " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Id " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Col " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Width " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0a & & item_sid = = 0x06 ) { /* Container Name */
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Subscreen name " , 1 ) ;
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Container name " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " Subdynpro name " , 1 ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0a & & item_sid = = 0x08 ) { /* Container TabStrip */
check_length ( pinfo , item_value_tree , 9 , item_length , " Container TabStrip " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Id " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Col " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Width " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0a & & item_sid = = 0x09 ) { /* Container TabStrip Page */
check_length ( pinfo , item_value_tree , 9 , item_length , " Container TabStrip Page " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Id " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Col " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Width " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0a & & item_sid = = 0x0a ) { /* Container Control */
check_length ( pinfo , item_value_tree , 9 , item_length , " Container Control " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Id " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Col " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Width " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Container Height " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x03 ) { /* Message type */
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " T " , 1 ) ;
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " T " , 1 ) ;
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " T " , 1 ) ;
add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , " T " , 1 ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x02 ) { /* Scroll Infos */
check_length ( pinfo , item_value_tree , 24 , item_length , " Scroll Infos " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Total Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Total Width " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Data Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Data Width " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Height Offset " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Width Offset " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x06 ) { /* Scroll Infos 2 */
check_length ( pinfo , item_value_tree , 33 , item_length , " Scroll Infos 2 " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Total Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Total Width " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Data Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Data Width " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Height Offset " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Width Offset " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Visible Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Visible Width " ) ;
offset + = 4 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Scroll Flag " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x07 ) { /* Area Size */
check_length ( pinfo , item_value_tree , 16 , item_length , " Area Size " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Width " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Area Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Area Width " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x08 ) { /* Pixel Size */
check_length ( pinfo , item_value_tree , 16 , item_length , " Pixel Size " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Width " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Area Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Area Width " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x0c ) { /* Container Loop */
check_length ( pinfo , item_value_tree , 2 , item_length , " Container Loop " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Lines Per Loop Row " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x0d ) { /* List focus */
check_length ( pinfo , item_value_tree , 5 , item_length , " List focus " ) ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " List focus version " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " List focus Row " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " List focus Column " ) ;
} else if ( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x0e ) { /* Main Area Pixel Size */
check_length ( pinfo , item_value_tree , 16 , item_length , " Main Area Pixel Size " ) ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Height " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Window Width " ) ;
/* Dynn items */
} else if ( ( item_type = = 0x09 ) | | /* CHL */
( item_type = = 0x10 & & item_id = = 0x05 & & item_sid = = 0x01 ) ) { /* Dynn Chln */
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " scrflg " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " chlflag " ) ;
offset + = 2 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " current row " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " current column " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " V Slider Size " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " dimlistrow " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " dimlistcol " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " H Slider Size " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " dimrow " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " dimcol " ) ;
offset + = 1 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " maxlistrow " ) ;
offset + = 2 ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " listrowoffset " ) ;
offset + = 2 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " maxlistcol " ) ;
offset + = 1 ;
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " listcoloffset " ) ;
/* If the preference is set, report the item as partially dissected in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_item_partial , " The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x) " , item_type , item_id , item_sid ) ;
}
/* Control Properties */
} else if ( item_type = = 0x10 & & item_id = = 0x0e & & item_sid = = 0x01 ) { /* Control Properties */
guint32 length = offset + item_length ;
while ( ( offset < length ) & & ( tvb_offset_exists ( tvb , offset + 3 ) ) ) { /* Check against at least three bytes (2 for ID, 1 for null-terminated value) */
proto_tree_add_item ( item_value_tree , hf_sapdiag_item_control_properties_id , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
proto_item_append_text ( item , " , Control Property ID=%d " , tvb_get_ntohs ( tvb , offset ) ) ;
offset + = 2 ;
offset + = add_item_value_stringz ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_control_properties_value , offset , " Control Property Value " , 1 ) ;
}
/* UI event source */
} else if ( item_type = = 0x10 & & item_id = = 0x0f & & item_sid = = 0x01 ) { /* UI Event Source */
dissect_sapdiag_uievent ( tvb , pinfo , item_value_tree , offset , item_length ) ;
/* GUI Packet state */
} else if ( item_type = = 0x10 & & item_id = = 0x14 & & item_sid = = 0x01 ) { /* GUI Packet state */
add_item_value_uint8 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Flags " ) ; /* TODO: Add flag values */
offset + = 1 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Bytes Total " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Bytes Send " ) ;
offset + = 4 ;
add_item_value_uint32 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Bytes Received " ) ;
/* Dynt items */
} else if ( ( item_type = = 0x12 & & item_id = = 0x09 & & item_sid = = 0x02 ) | | /* Dynt Atom */
( item_type = = 0x10 & & item_id = = 0x09 & & item_sid = = 0x02 ) ) {
dissect_sapdiag_dyntatom ( tvb , pinfo , item_value_tree , offset , item_length ) ;
/* String items */
} else if ( ( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x09 ) | | /* Gui Version */
( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x1a ) | | /* Decimal character */
( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x1b ) | | /* Language */
( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x1c ) | | /* Username */
( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x1f ) | | /* Gui OS Version */
( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x20 ) | | /* Browser Version */
( item_type = = 0x10 & & item_id = = 0x04 & & item_sid = = 0x21 ) | | /* Office Version */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x02 ) | | /* Database name */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x03 ) | | /* CPU name */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x07 ) | | /* Transaction code */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x0b ) | | /* Message */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x0c ) | | /* Client */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x0d ) | | /* Dynpro name */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x0e ) | | /* Dynpro number */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x0f ) | | /* Cuaname */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x10 ) | | /* Cuastatus */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x21 ) | | /* Context ID */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x24 ) | | /* Codepage application server */
( item_type = = 0x10 & & item_id = = 0x06 & & item_sid = = 0x25 ) | | /* GUI Theme */
( item_type = = 0x10 & & item_id = = 0x09 & & item_sid = = 0x12 ) | | /* Control Focus */
( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x04 ) | | /* OK Code */
( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x09 ) | | /* Session title */
( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x0a ) | | /* Session icon */
( item_type = = 0x10 & & item_id = = 0x0c & & item_sid = = 0x0b ) ) /* List Cell text */
{
add_item_value_string ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , item_length , " Value " , 1 ) ;
/* RFC Embedded calls */
} else if ( item_type = = 0x10 & & item_id = = 0x08 ) { /* RFC_TR */
dissect_sapdiag_rfc_call ( tvb , pinfo , parent_tree , offset , item_length ) ;
/* String items (long text) */
} else if ( item_type = = 0x11 ) { /* Data Stream */
add_item_value_string ( tvb , pinfo , item , item_value_tree , hf_sapdiag_item_value , offset , item_length , " Value " , 0 ) ;
/* Tab Strip Controls */
} else if ( ( item_type = = 0x12 & & item_id = = 0x09 & & item_sid = = 0x10 ) ) {
dissect_sapdiag_dyntatom ( tvb , pinfo , item_value_tree , offset , item_length ) ;
/* Menu Entries items */
} else if ( ( item_type = = 0x12 & & item_id = = 0x0b ) ) {
dissect_sapdiag_menu ( tvb , pinfo , item_value_tree , offset , item_length ) ;
} else if ( item_type = = 0x13 ) { /* SLC */
check_length ( pinfo , item_value_tree , 2 , item_length , " SLC " ) ;
add_item_value_uint16 ( tvb , item , item_value_tree , hf_sapdiag_item_value , offset , " Field length in characters " ) ;
/* Another unknown item */
} else {
/* If the preference is set, report the item as unknown in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_item_unknown , " The Diag Item has a unknown type that is not dissected (0x%.2x, 0x%.2x, 0x%.2x) " , item_type , item_id , item_sid ) ;
}
}
}
2023-02-01 11:00:24 +00:00
static const char *
2022-12-04 17:53:05 +00:00
get_appl_string ( guint8 item_id , guint8 item_sid ) {
const char * item_name_string = NULL ;
switch ( item_id ) {
case 0x01 : { /* SCRIPT */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_script_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x02 : { /* GRAPH */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_graph_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x03 : { /* IXOS */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_ixos_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x04 : { /* ST_USER */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_st_user_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x05 : { /* DYNN */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_dynn_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x06 : { /* ST_R3INFO */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_st_r3info_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x07 : { /* POPU */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_popu_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x08 : { /* RFC_TR */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_rfc_tr_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x09 : { /* DYNT */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_dynt_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x0a : { /* CONTAINER */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_container_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x0b : { /* MNUENTRY */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_mnuentry_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x0c : { /* VARINFO */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_varinfo_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x0e : { /* CONTROL */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_control_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x0f : { /* UI_EVENT */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_ui_event_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x12 : { /* ACC_LIST */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_acc_list_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x13 : { /* RCUI */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_rcui_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
} case 0x14 : { /* GUI_PACKET */
2023-04-25 09:51:19 +00:00
item_name_string = val_to_str_const ( item_sid , sapdiag_item_appl_gui_packet_vals , " Unknown " ) ;
2022-12-04 17:53:05 +00:00
break ;
}
}
return ( item_name_string ) ;
}
static void
dissect_sapdiag_payload ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , proto_tree * parent_tree , guint32 offset ) {
gint item_value_remaining_length ;
guint8 item_type , item_long , item_id , item_sid ;
guint32 item_length , item_value_length ;
const char * item_name_string = NULL ;
proto_item * item = NULL , * il = NULL , * item_value = NULL ;
proto_tree * item_tree , * item_value_tree ;
while ( tvb_offset_exists ( tvb , offset ) ) {
item_id = item_sid = item_length = item_value_length = item_long = 0 ;
/* Add the item subtree. We start with a item's length of 1, as we don't have yet the real size of the item */
item = proto_tree_add_item ( tree , hf_sapdiag_item , tvb , offset , 1 , ENC_NA ) ;
item_tree = proto_item_add_subtree ( item , ett_sapdiag ) ;
/* Get the item type */
item_type = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_item ( item_tree , hf_sapdiag_item_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
item_length + + ;
2023-04-25 09:51:19 +00:00
proto_item_append_text ( item , " : %s " , val_to_str_const ( item_type , sapdiag_item_type_vals , " Unknown " ) ) ;
2022-12-04 17:53:05 +00:00
switch ( item_type ) {
case 0x01 : { /* SES */
item_value_length = 16 ;
break ;
}
case 0x02 : { /* ICO */
item_value_length = 20 ;
break ;
}
case 0x03 : { /* TIT */
item_value_length = 3 ;
break ;
}
case 0x07 : { /* DiagMessage (old format) */
item_value_length = 76 ;
break ;
}
case 0x08 : { /* OCK */
/* If the preference is set, report the item as partially dissected in the expert info */
if ( global_sapdiag_highlight_items ) {
expert_add_info_format ( pinfo , item , & ei_sapdiag_item_unknown_length , " Diag Type of unknown length (0x%.2x) " , item_type ) ;
}
break ;
}
case 0x09 : { /* CHL */
item_value_length = 22 ;
break ;
}
case 0x0a : { /* SFE */
item_value_length = 3 ;
break ;
}
case 0x0b : { /* SBA */
item_value_length = 2 ;
break ;
}
case 0x0C : { /* EOM End of message */
break ;
}
case 0x11 : { /* Data Stream */
item_long = 4 ;
break ;
}
case 0x13 : { /* SLC */
item_value_length = 2 ;
break ;
}
case 0x15 : { /* SBA2 XXX: Find the actual length */
item_value_length = 36 ;
break ;
}
case 0x10 : /* APPL */
case 0x12 : { /* APPL4 */
/* Get the APPL(4) ID */
item_id = tvb_get_guint8 ( tvb , offset ) ;
2023-04-25 09:51:19 +00:00
proto_item_append_text ( item , " , %s " , val_to_str_const ( item_id , sapdiag_item_id_vals , " Unknown " ) ) ;
2022-12-04 17:53:05 +00:00
proto_tree_add_item ( item_tree , hf_sapdiag_item_id , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
item_length + + ;
/* Get the APPL item sid value and set the respective name string according to them XXX: Change this for a multi array */
item_sid = tvb_get_guint8 ( tvb , offset ) ;
item_name_string = get_appl_string ( item_id , item_sid ) ;
proto_item_append_text ( item , " , %s " , item_name_string ) ;
proto_tree_add_uint_format_value ( item_tree , hf_sapdiag_item_sid , tvb , offset , 1 , item_sid , " %s (0x%.2x) " , item_name_string , item_sid ) ;
offset + + ;
item_length + + ;
if ( item_type = = 0x10 ) {
item_long = 2 ;
} else if ( item_type = = 0x12 ) {
item_long = 4 ;
}
break ;
}
}
/* Get the item length (word o dword) */
if ( item_long = = 2 ) {
item_value_length = tvb_get_ntohs ( tvb , offset ) ;
il = proto_tree_add_item ( item_tree , hf_sapdiag_item_length_short , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
item_length + = 2 ;
} else if ( item_long = = 4 ) {
item_value_length = tvb_get_ntohl ( tvb , offset ) ;
il = proto_tree_add_item ( item_tree , hf_sapdiag_item_length_long , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
item_length + = 4 ;
}
/* Add the item length */
proto_item_append_text ( item , " , Len=%d " , item_value_length ) ;
/* Now we have the real length of the item, set the proper size */
item_length + = item_value_length ;
proto_item_set_len ( item , item_length ) ;
/* Add the item value */
if ( item_value_length > 0 ) {
/* Check if the item length is valid */
item_value_remaining_length = tvb_reported_length_remaining ( tvb , offset ) ;
if ( item_value_remaining_length < 0 ) {
expert_add_info ( pinfo , il , & ei_sapdiag_item_offset_invalid ) ;
return ;
}
if ( ( guint32 ) item_value_remaining_length < item_value_length ) {
expert_add_info ( pinfo , il , & ei_sapdiag_item_length_invalid ) ;
item_value_length = ( guint32 ) item_value_remaining_length ;
}
item_value = proto_tree_add_item ( item_tree , hf_sapdiag_item_value , tvb , offset , item_value_length , ENC_NA ) ;
item_value_tree = proto_item_add_subtree ( item_value , ett_sapdiag ) ;
dissect_sapdiag_item ( tvb , pinfo , item , item_value_tree , parent_tree , offset , item_type , item_id , item_sid , item_value_length ) ;
offset + = item_value_length ;
}
}
}
static int
check_sapdiag_dp ( tvbuff_t * tvb , guint32 offset )
{
/* Since there's no SAP Diag mode 0xff, if the first byte is a 0xFF the
* packet probably holds an initialization DP Header */
if ( ( tvb_reported_length_remaining ( tvb , offset ) > = 200 + 8 ) & & tvb_get_guint8 ( tvb , offset ) = = 0xFF ) {
return ( TRUE ) ;
}
return ( FALSE ) ;
}
static int
check_sapdiag_compression ( tvbuff_t * tvb , guint32 offset )
{
/* We check for the length, the algorithm value and the presence of magic bytes */
if ( ( tvb_reported_length_remaining ( tvb , offset ) > = 8 ) & &
( ( tvb_get_guint8 ( tvb , offset + 4 ) = = 0x11 ) | | ( tvb_get_guint8 ( tvb , offset + 4 ) = = 0x12 ) ) & &
( tvb_get_guint16 ( tvb , offset + 5 , ENC_LITTLE_ENDIAN ) = = 0x9d1f ) ) {
return ( TRUE ) ;
}
return ( FALSE ) ;
}
static void
dissect_sapdiag_compressed_payload ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , proto_item * sapdiag , guint32 offset )
{
guint32 reported_length = 0 ;
proto_item * compression_header = NULL ;
proto_tree * compression_header_tree = NULL ;
/* Add the compression header subtree */
compression_header = proto_tree_add_item ( tree , hf_sapdiag_compress_header , tvb , offset , 8 , ENC_NA ) ;
compression_header_tree = proto_item_add_subtree ( compression_header , ett_sapdiag ) ;
/* Add the uncompressed length */
reported_length = tvb_get_letohl ( tvb , offset ) ;
proto_tree_add_uint ( compression_header_tree , hf_sapdiag_uncomplength , tvb , offset , 4 , reported_length ) ;
offset + = 4 ;
proto_item_append_text ( sapdiag , " , Uncompressed Len: %u " , reported_length ) ;
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Uncompressed Length=%u " , reported_length ) ;
/* Add the algorithm */
proto_tree_add_item ( compression_header_tree , hf_sapdiag_algorithm , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
/* Add the magic bytes */
proto_tree_add_item ( compression_header_tree , hf_sapdiag_magic , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
/* Add the max bits */
proto_tree_add_item ( compression_header_tree , hf_sapdiag_special , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
/* TODO: Decompression is not yet enabled until the LZC/LZH library is added
* Here we just add the payload subtree
*/
proto_tree_add_item ( tree , hf_sapdiag_payload , tvb , offset , - 1 , ENC_NA ) ;
}
static void
dissect_sapdiag_snc_frame ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * sapdiag_tree , proto_tree * tree , guint32 offset ) {
tvbuff_t * next_tvb = NULL ;
proto_item * payload = NULL ;
proto_tree * payload_tree = NULL ;
/* Call the SNC dissector */
if ( global_sapdiag_snc_dissection = = TRUE ) {
next_tvb = dissect_sapsnc_frame ( tvb , pinfo , tree , offset ) ;
/* If the SNC dissection returned a new tvb, we've a payload to dissect */
if ( next_tvb ! = NULL ) {
/* Add a new data source for the unwrapped data. From now on, the offset is relative
to the new tvb so its zero . */
add_new_data_source ( pinfo , next_tvb , " SNC unwrapped Data " ) ;
/* Add the payload subtree using the new tvb*/
payload = proto_tree_add_item ( sapdiag_tree , hf_sapdiag_payload , next_tvb , 0 , - 1 , ENC_NA ) ;
payload_tree = proto_item_add_subtree ( payload , ett_sapdiag ) ;
if ( check_sapdiag_compression ( next_tvb , 0 ) ) {
dissect_sapdiag_compressed_payload ( next_tvb , pinfo , payload_tree , payload , 0 ) ;
} else {
dissect_sapdiag_payload ( next_tvb , pinfo , payload_tree , payload , 0 ) ;
}
}
}
}
static int
dissect_sapdiag ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , void * data _U_ )
{
guint8 compress = 0 , error_no = 0 ;
guint32 offset = 0 ;
proto_item * sapdiag = NULL , * header = NULL , * com_flag = NULL , * payload = NULL ;
proto_tree * sapdiag_tree = NULL , * header_tree = NULL , * com_flag_tree = NULL , * payload_tree = NULL ;
/* Add the protocol to the column */
col_add_str ( pinfo - > cinfo , COL_PROTOCOL , " SAPDIAG " ) ;
/* Clear out stuff in the info column */
col_clear ( pinfo - > cinfo , COL_INFO ) ;
/* Add the main SAPDiag subtree */
sapdiag = proto_tree_add_item ( tree , proto_sapdiag , tvb , 0 , - 1 , ENC_NA ) ;
sapdiag_tree = proto_item_add_subtree ( sapdiag , ett_sapdiag ) ;
/* Check if the packet holds a DP Header */
if ( check_sapdiag_dp ( tvb , offset ) ) {
dissect_sapdiag_dp ( tvb , sapdiag_tree , offset ) ; offset + = 200 ;
}
/* Check for fixed error messages */
if ( tvb_strneql ( tvb , 0 , " **DPTMMSG** \x00 " , 12 ) = = 0 ) {
proto_tree_add_item ( sapdiag_tree , hf_sapdiag_payload , tvb , offset , - 1 , ENC_NA ) ;
return offset ;
} else if ( tvb_strneql ( tvb , 0 , " **DPTMOPC** \x00 " , 12 ) = = 0 ) {
proto_tree_add_item ( sapdiag_tree , hf_sapdiag_payload , tvb , offset , - 1 , ENC_NA ) ;
return offset ;
}
/* Add the header subtree */
header = proto_tree_add_item ( sapdiag_tree , hf_sapdiag_header , tvb , offset , 8 , ENC_NA ) ;
header_tree = proto_item_add_subtree ( header , ett_sapdiag ) ;
/* Add the fields */
proto_tree_add_item ( header_tree , hf_sapdiag_mode , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
com_flag = proto_tree_add_item ( header_tree , hf_sapdiag_com_flag , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
com_flag_tree = proto_item_add_subtree ( com_flag , ett_sapdiag ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_EOS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_EOC , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_NOP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_EOP , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_INI , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_CAS , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_NNM , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( com_flag_tree , hf_sapdiag_com_flag_TERM_GRA , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
proto_tree_add_item ( header_tree , hf_sapdiag_mode_stat , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
error_no = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_item ( header_tree , hf_sapdiag_err_no , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
proto_tree_add_item ( header_tree , hf_sapdiag_msg_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
proto_tree_add_item ( header_tree , hf_sapdiag_msg_info , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
proto_tree_add_item ( header_tree , hf_sapdiag_msg_rc , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
compress = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_item ( header_tree , hf_sapdiag_compress , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
offset + + ;
/* Check for error messages */
if ( ( error_no ! = 0x00 ) & & ( tvb_reported_length_remaining ( tvb , offset ) > 0 ) ) {
gchar * error_message = NULL ;
guint32 error_message_length = 0 ;
error_message_length = ( guint32 ) tvb_reported_length_remaining ( tvb , offset ) - 1 ;
error_message = ( gchar * ) tvb_get_string_enc ( pinfo - > pool , tvb , offset , error_message_length , ENC_LITTLE_ENDIAN | ENC_UTF_16 ) ;
proto_tree_add_string ( sapdiag_tree , hf_sapdiag_error_message , tvb , offset , error_message_length , error_message ) ;
/* If the message is compressed */
} else if ( ( compress = = 0x01 ) & & ( tvb_reported_length_remaining ( tvb , offset ) > = 8 ) ) {
/* Dissect the compressed payload */
dissect_sapdiag_compressed_payload ( tvb , pinfo , sapdiag_tree , sapdiag , offset ) ;
/* Message wrapped with SNC */
} else if ( ( ( compress = = 0x02 ) | | ( compress = = 0x03 ) ) & & ( tvb_reported_length_remaining ( tvb , offset ) > 0 ) ) {
/* Call the SNC dissector */
dissect_sapdiag_snc_frame ( tvb , pinfo , sapdiag_tree , tree , offset ) ;
/* Uncompressed payload */
} else {
/* Check the payload length */
if ( tvb_reported_length_remaining ( tvb , offset ) > 0 ) {
/* Add the payload subtree */
payload = proto_tree_add_item ( sapdiag_tree , hf_sapdiag_payload , tvb , offset , - 1 , ENC_NA ) ;
payload_tree = proto_item_add_subtree ( payload , ett_sapdiag ) ;
/* Dissect the payload */
dissect_sapdiag_payload ( tvb , pinfo , payload_tree , tree , offset ) ;
}
}
return offset ;
}
void
proto_register_sapdiag ( void )
{
static hf_register_info hf [ ] = {
{ & hf_sapdiag_dp ,
{ " DP Header " , " sapdiag.dp " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_header ,
{ " Header " , " sapdiag.header " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_payload ,
{ " Message " , " sapdiag.message " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_mode ,
{ " Mode " , " sapdiag.header.mode " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag ,
{ " Com Flag " , " sapdiag.header.comflag " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_EOS ,
{ " Com Flag TERM_EOS " , " sapdiag.header.comflag.TERM_EOS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_EOS , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_EOC ,
{ " Com Flag TERM_EOC " , " sapdiag.header.comflag.TERM_EOC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_EOC , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_NOP ,
{ " Com Flag TERM_NOP " , " sapdiag.header.comflag.TERM_NOP " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_NOP , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_EOP ,
{ " Com Flag TERM_EOP " , " sapdiag.header.comflag.TERM_EOP " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_EOP , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_INI ,
{ " Com Flag TERM_INI " , " sapdiag.header.comflag.TERM_INI " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_INI , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_CAS ,
{ " Com Flag TERM_CAS " , " sapdiag.header.comflag.TERM_CAS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_CAS , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_NNM ,
{ " Com Flag TERM_NNM " , " sapdiag.header.comflag.TERM_NNM " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_NNM , NULL , HFILL } } ,
{ & hf_sapdiag_com_flag_TERM_GRA ,
{ " Com Flag TERM_GRA " , " sapdiag.header.comflag.TERM_GRA " , FT_BOOLEAN , 8 , NULL , SAPDIAG_COM_FLAG_TERM_GRA , NULL , HFILL } } ,
{ & hf_sapdiag_mode_stat ,
{ " Mode Stat " , " sapdiag.header.modestat " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_err_no ,
{ " Error Number " , " sapdiag.header.errorno " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_msg_type ,
{ " Message Type " , " sapdiag.header.msgtype " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_msg_info ,
{ " Message Info " , " sapdiag.header.msginfo " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_msg_rc ,
{ " Message Rc " , " sapdiag.header.msgrc " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_compress ,
{ " Compress " , " sapdiag.header.compress " , FT_UINT8 , BASE_HEX , VALS ( sapdiag_compress_vals ) , 0x0 , NULL , HFILL } } ,
/* Error Messages */
{ & hf_sapdiag_error_message ,
{ " Error Message " , " sapdiag.error_message " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
/* Compression header */
{ & hf_sapdiag_compress_header ,
{ " Compression Header " , " sapdiag.header.compression " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_uncomplength ,
{ " Uncompressed Length " , " sapdiag.header.compression.uncomplength " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_algorithm ,
{ " Compression Algorithm " , " sapdiag.header.compression.algorithm " , FT_UINT8 , BASE_HEX , VALS ( sapdiag_algorithm_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_magic ,
{ " Magic Bytes " , " sapdiag.header.compression.magic " , FT_UINT16 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_special ,
{ " Special " , " sapdiag.header.compression.special " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
/* SAPDiag Messages */
{ & hf_sapdiag_item ,
{ " Item " , " sapdiag.item " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_type ,
{ " Type " , " sapdiag.item.type " , FT_UINT8 , BASE_HEX , VALS ( sapdiag_item_type_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_id ,
{ " ID " , " sapdiag.item.id " , FT_UINT8 , BASE_HEX , VALS ( sapdiag_item_id_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_sid ,
{ " SID " , " sapdiag.item.sid " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_length_short ,
{ " Length " , " sapdiag.item.length_short " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_length_long ,
{ " Length " , " sapdiag.item.length_long " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_value ,
{ " Value " , " sapdiag.item.value " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
/* SAPDiag DP Header */
{ & hf_sapdiag_dp_request_id ,
{ " Request ID " , " sapdiag.dp.reqid " , FT_INT32 , BASE_DEC , VALS ( sapdiag_dp_request_id_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_retcode ,
{ " Retcode " , " sapdiag.dp.retcode " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_sender_id ,
{ " Sender ID " , " sapdiag.dp.senderid " , FT_UINT8 , BASE_HEX , VALS ( sapdiag_dp_sender_id_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_action_type ,
{ " Action type " , " sapdiag.dp.actiontype " , FT_UINT8 , BASE_HEX , VALS ( sapdiag_dp_action_type_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info ,
{ " Request Info " , " sapdiag.dp.reqinfo " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
/* Request Info Flag */
{ & hf_sapdiag_dp_req_info_LOGIN ,
{ " Login Flag " , " sapdiag.dp.reqinfo.login " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_LOGIN , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_LOGOFF ,
{ " Logoff Flag " , " sapdiag.dp.reqinfo.logoff " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_LOGOFF , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_SHUTDOWN ,
{ " Shutdown Flag " , " sapdiag.dp.reqinfo.shutdown " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_SHUTDOWN , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_GRAPHIC_TM ,
{ " Graphic TM Flag " , " sapdiag.dp.reqinfo.graphictm " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_GRAPHIC_TM , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_ALPHA_TM ,
{ " Alpha TM Flag " , " sapdiag.dp.reqinfo.alphatm " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_ALPHA_TM , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_ERROR_FROM_APPC ,
{ " Error from APPC Flag " , " sapdiag.dp.reqinfo.errorfromappc " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_ERROR_FROM_APPC , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_CANCELMODE ,
{ " Cancel Mode Flag " , " sapdiag.dp.reqinfo.cancelmode " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_CANCELMODE , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF ,
{ " Msg with Req Buf Flag " , " sapdiag.dp.reqinfo.msg_with_req_buf " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_MSG_WITH_REQ_BUF , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_MSG_WITH_OH ,
{ " Msg with OH Flag " , " sapdiag.dp.reqinfo.msg_with_oh " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_MSG_WITH_OH , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_BUFFER_REFRESH ,
{ " Buffer Refresh Flag " , " sapdiag.dp.reqinfo.buffer_refresh " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_BUFFER_REFRESH , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_BTC_SCHEDULER ,
{ " BTC Scheduler Flag " , " sapdiag.dp.reqinfo.btc_scheduler " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_BTC_SCHEDULER , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_APPC_SERVER_DOWN ,
{ " APPC Server Down Flag " , " sapdiag.dp.reqinfo.appc_server_down " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_APPC_SERVER_DOWN , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_MS_ERROR ,
{ " MS Error Flag " , " sapdiag.dp.reqinfo.ms_error " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_MS_ERROR , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_SET_SYSTEM_USER ,
{ " Set System User Flag " , " sapdiag.dp.reqinfo.set_system_user " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_SET_SYSTEM_USER , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ ,
2023-01-31 17:12:16 +00:00
{ " DP Can't handle req Flag " , " sapdiag.dp.reqinfo.dp_cant_handle_req " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_CANT_HANDLE_REQ , NULL , HFILL } } ,
2022-12-04 17:53:05 +00:00
{ & hf_sapdiag_dp_req_info_DP_AUTO_ABAP ,
{ " DP Auto ABAP Flag " , " sapdiag.dp.reqinfo.dp_auto_abap " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_AUTO_ABAP , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO ,
{ " DP Appl Serv Info Flag " , " sapdiag.dp.reqinfo.dp_appl_serv_info " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_APPL_SERV_INFO , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_ADMIN ,
{ " DP Admin Flag " , " sapdiag.dp.reqinfo.dp_admin " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_ADMIN , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_SPOOL_ALRM ,
{ " DP Spool Alrm Flag " , " sapdiag.dp.reqinfo.dp_spool_alrm " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_SPOOL_ALRM , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_HAND_SHAKE ,
{ " DP Hand Shake Flag " , " sapdiag.dp.reqinfo.dp_hand_shake " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_HAND_SHAKE , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_CANCEL_PRIV ,
{ " DP Cancel Privileges Flag " , " sapdiag.dp.reqinfo.dp_cancel_priv " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_CANCEL_PRIV , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT ,
{ " DP Raise Timeout Flag " , " sapdiag.dp.reqinfo.dp_raise_timeout " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_RAISE_TIMEOUT , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_NEW_MODE ,
{ " DP New Mode Flag " , " sapdiag.dp.reqinfo.dp_new_mode " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_NEW_MODE , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_SOFT_CANCEL ,
{ " DP Soft Cancel Flag " , " sapdiag.dp.reqinfo.dp_soft_cancel " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_SOFT_CANCEL , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_TM_INPUT ,
{ " DP TM Input Flag " , " sapdiag.dp.reqinfo.dp_tm_input " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_TM_INPUT , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_TM_OUTPUT ,
{ " DP TM Output Flag " , " sapdiag.dp.reqinfo.dp_tm_output " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_TM_OUTPUT , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_ASYNC_RFC ,
{ " DP Async RFC Flag " , " sapdiag.dp.reqinfo.dp_async_rfc " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_ASYNC_RFC , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_ICM_EVENT ,
{ " DP ICM Event Flag " , " sapdiag.dp.reqinfo.dp_icm_event " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_ICM_EVENT , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_AUTO_TH ,
{ " DP Auto TH Flag " , " sapdiag.dp.reqinfo.dp_auto_th " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_AUTO_TH , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_RFC_CANCEL ,
{ " DP RFC Cancel Flag " , " sapdiag.dp.reqinfo.dp_rfc_cancel " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_RFC_CANCEL , NULL , HFILL } } ,
{ & hf_sapdiag_dp_req_info_DP_MS_ADM ,
{ " DP MS Adm Flag " , " sapdiag.dp.reqinfo.dp_ms_adm " , FT_BOOLEAN , 8 , NULL , SAPDIAG_DP_REQ_INFO_DP_MS_ADM , NULL , HFILL } } ,
{ & hf_sapdiag_dp_tid ,
{ " TID " , " sapdiag.dp.tid " , FT_INT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_uid ,
{ " UID " , " sapdiag.dp.uid " , FT_INT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_mode ,
{ " Mode " , " sapdiag.dp.mode " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_wp_id ,
{ " WP Id " , " sapdiag.dp.wpid " , FT_INT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_wp_ca_blk ,
{ " WP Ca Blk " , " sapdiag.dp.wpcablk " , FT_INT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_appc_ca_blk ,
{ " APPC Ca Blk " , " sapdiag.dp.appccablk " , FT_INT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_len ,
{ " Len " , " sapdiag.dp.len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_new_stat ,
{ " New Stat " , " sapdiag.dp.newstat " , FT_UINT8 , BASE_HEX , VALS ( sapdiag_dp_new_stat_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_rq_id ,
{ " Request ID " , " sapdiag.dp.rqid " , FT_INT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_dp_terminal ,
{ " Terminal " , " sapdiag.dp.terminal " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
/* SAP Diag Support Bits */
{ & hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR ,
{ " Support Bit PROGRESS_INDICATOR " , " sapdiag.diag.supportbits.PROGRESS_INDICATOR " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS ,
{ " Support Bit SAPGUI_LABELS " , " sapdiag.diag.supportbits.SAPGUI_LABELS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION ,
{ " Support Bit SAPGUI_DIAGVERSION " , " sapdiag.diag.supportbits.SAPGUI_DIAGVERSION " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT ,
{ " Support Bit SAPGUI_SELECT_RECT " , " sapdiag.diag.supportbits.SAPGUI_SELECT_RECT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT ,
{ " Support Bit SAPGUI_SYMBOL_RIGHT " , " sapdiag.diag.supportbits.SAPGUI_SYMBOL_RIGHT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC ,
{ " Support Bit SAPGUI_FONT_METRIC " , " sapdiag.diag.supportbits.SAPGUI_FONT_METRIC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED ,
{ " Support Bit SAPGUI_COMPR_ENHANCED " , " sapdiag.diag.supportbits.SAPGUI_COMPR_ENHANCED " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE ,
{ " Support Bit SAPGUI_IMODE " , " sapdiag.diag.supportbits.SAPGUI_IMODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE ,
{ " Support Bit SAPGUI_LONG_MESSAGE " , " sapdiag.diag.supportbits.SAPGUI_LONG_MESSAGE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE ,
{ " Support Bit SAPGUI_TABLE " , " sapdiag.diag.supportbits.SAPGUI_TABLE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1 ,
{ " Support Bit SAPGUI_FOCUS_1 " , " sapdiag.diag.supportbits.SAPGUI_FOCUS_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1 ,
{ " Support Bit SAPGUI_PUSHBUTTON_1 " , " sapdiag.diag.supportbits.SAPGUI_PUSHBUTTON_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UPPERCASE ,
{ " Support Bit UPPERCASE " , " sapdiag.diag.supportbits.UPPERCASE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UPPERCASE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY ,
{ " Support Bit SAPGUI_TABPROPERTY " , " sapdiag.diag.supportbits.SAPGUI_TABPROPERTY " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE ,
{ " Support Bit INPUT_UPPERCASE " , " sapdiag.diag.supportbits.INPUT_UPPERCASE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG ,
{ " Support Bit RFC_DIALOG " , " sapdiag.diag.supportbits.RFC_DIALOG " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_RFC_DIALOG , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT ,
{ " Support Bit LIST_HOTSPOT " , " sapdiag.diag.supportbits.LIST_HOTSPOT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE ,
{ " Support Bit FKEY_TABLE " , " sapdiag.diag.supportbits.FKEY_TABLE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_FKEY_TABLE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT ,
{ " Support Bit MENU_SHORTCUT " , " sapdiag.diag.supportbits.MENU_SHORTCUT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS ,
{ " Support Bit STOP_TRANS " , " sapdiag.diag.supportbits.STOP_TRANS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_STOP_TRANS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_FULL_MENU ,
{ " Support Bit FULL_MENU " , " sapdiag.diag.supportbits.FULL_MENU " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_FULL_MENU , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES ,
{ " Support Bit OBJECT_NAMES " , " sapdiag.diag.supportbits.OBJECT_NAMES " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_OBJECT_NAMES , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE ,
{ " Support Bit CONTAINER_TYPE " , " sapdiag.diag.supportbits.CONTAINER_TYPE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS ,
{ " Support Bit DLGH_FLAGS " , " sapdiag.diag.supportbits.DLGH_FLAGS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DLGH_FLAGS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_APPL_MNU ,
{ " Support Bit APPL_MNU " , " sapdiag.diag.supportbits.APPL_MNU " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_APPL_MNU , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO ,
{ " Support Bit MESSAGE_INFO " , " sapdiag.diag.supportbits.MESSAGE_INFO " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MESSAGE_INFO , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1 ,
{ " Support Bit MESDUM_FLAG1 " , " sapdiag.diag.supportbits.MESDUM_FLAG1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB ,
{ " Support Bit TABSEL_ATTRIB " , " sapdiag.diag.supportbits.TABSEL_ATTRIB " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUIAPI ,
{ " Support Bit GUIAPI " , " sapdiag.diag.supportbits.GUIAPI " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUIAPI , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NOGRAPH ,
{ " Support Bit NOGRAPH " , " sapdiag.diag.supportbits.NOGRAPH " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NOGRAPH , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES ,
{ " Support Bit NOMESSAGES " , " sapdiag.diag.supportbits.NOMESSAGES " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NOMESSAGES , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NORABAX ,
{ " Support Bit NORABAX " , " sapdiag.diag.supportbits.NORABAX " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NORABAX , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG ,
{ " Support Bit NOSYSMSG " , " sapdiag.diag.supportbits.NOSYSMSG " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NOSYSMSG , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT ,
{ " Support Bit NOSAPSCRIPT " , " sapdiag.diag.supportbits.NOSAPSCRIPT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NORFC ,
{ " Support Bit NORFC " , " sapdiag.diag.supportbits.NORFC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NORFC , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT ,
{ " Support Bit NEW_BSD_JUSTRIGHT " , " sapdiag.diag.supportbits.NEW_BSD_JUSTRIGHT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS ,
{ " Support Bit MESSAGE_VARS " , " sapdiag.diag.supportbits.MESSAGE_VARS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MESSAGE_VARS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT ,
{ " Support Bit OCX_SUPPORT " , " sapdiag.diag.supportbits.OCX_SUPPORT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_OCX_SUPPORT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS ,
{ " Support Bit SCROLL_INFOS " , " sapdiag.diag.supportbits.SCROLL_INFOS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SCROLL_INFOS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK ,
{ " Support Bit TABLE_SIZE_OK " , " sapdiag.diag.supportbits.TABLE_SIZE_OK " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2 ,
{ " Support Bit MESSAGE_INFO2 " , " sapdiag.diag.supportbits.MESSAGE_INFO2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE ,
{ " Support Bit VARINFO_OKCODE " , " sapdiag.diag.supportbits.VARINFO_OKCODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE ,
{ " Support Bit CURR_TCODE " , " sapdiag.diag.supportbits.CURR_TCODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CURR_TCODE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE ,
{ " Support Bit CONN_WSIZE " , " sapdiag.diag.supportbits.CONN_WSIZE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONN_WSIZE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2 ,
{ " Support Bit PUSHBUTTON_2 " , " sapdiag.diag.supportbits.PUSHBUTTON_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABSTRIP ,
{ " Support Bit TABSTRIP " , " sapdiag.diag.supportbits.TABSTRIP " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABSTRIP , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1 ,
{ " Support Bit UNKNOWN_1 " , " sapdiag.diag.supportbits.UNKNOWN_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNKNOWN_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS ,
{ " Support Bit TABSCROLL_INFOS " , " sapdiag.diag.supportbits.TABSCROLL_INFOS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES ,
{ " Support Bit TABLE_FIELD_NAMES " , " sapdiag.diag.supportbits.TABLE_FIELD_NAMES " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST ,
{ " Support Bit NEW_MODE_REQUEST " , " sapdiag.diag.supportbits.NEW_MODE_REQUEST " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER ,
{ " Support Bit RFCBLOB_DIAG_PARSER " , " sapdiag.diag.supportbits.RFCBLOB_DIAG_PARSER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER ,
{ " Support Bit MULTI_LOGIN_USER " , " sapdiag.diag.supportbits.MULTI_LOGIN_USER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER ,
{ " Support Bit CONTROL_CONTAINER " , " sapdiag.diag.supportbits.CONTROL_CONTAINER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED ,
{ " Support Bit APPTOOLBAR_FIXED " , " sapdiag.diag.supportbits.APPTOOLBAR_FIXED " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED ,
{ " Support Bit R3INFO_USER_CHECKED " , " sapdiag.diag.supportbits.R3INFO_USER_CHECKED " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO ,
{ " Support Bit NEED_STDDYNPRO " , " sapdiag.diag.supportbits.NEED_STDDYNPRO " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER ,
{ " Support Bit TYPE_SERVER " , " sapdiag.diag.supportbits.TYPE_SERVER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TYPE_SERVER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_COMBOBOX ,
{ " Support Bit COMBOBOX " , " sapdiag.diag.supportbits.COMBOBOX " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_COMBOBOX , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED ,
{ " Support Bit INPUT_REQUIRED " , " sapdiag.diag.supportbits.INPUT_REQUIRED " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE ,
{ " Support Bit ISO_LANGUAGE " , " sapdiag.diag.supportbits.ISO_LANGUAGE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE ,
{ " Support Bit COMBOBOX_TABLE " , " sapdiag.diag.supportbits.COMBOBOX_TABLE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS ,
{ " Support Bit R3INFO_FLAGS " , " sapdiag.diag.supportbits.R3INFO_FLAGS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS ,
{ " Support Bit CHECKRADIO_EVENTS " , " sapdiag.diag.supportbits.CHECKRADIO_EVENTS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID ,
{ " Support Bit R3INFO_USERID " , " sapdiag.diag.supportbits.R3INFO_USERID " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_USERID , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT ,
{ " Support Bit R3INFO_ROLLCOUNT " , " sapdiag.diag.supportbits.R3INFO_ROLLCOUNT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2 ,
{ " Support Bit USER_TURNTIME2 " , " sapdiag.diag.supportbits.USER_TURNTIME2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_USER_TURNTIME2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD ,
{ " Support Bit NUM_FIELD " , " sapdiag.diag.supportbits.NUM_FIELD " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NUM_FIELD , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_WIN16 ,
{ " Support Bit WIN16 " , " sapdiag.diag.supportbits.WIN16 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_WIN16 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU ,
{ " Support Bit CONTEXT_MENU " , " sapdiag.diag.supportbits.CONTEXT_MENU " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONTEXT_MENU , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE ,
{ " Support Bit SCROLLABLE_TABSTRIP_PAGE " , " sapdiag.diag.supportbits.SCROLLABLE_TABSTRIP_PAGE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION ,
{ " Support Bit EVENT_DESCRIPTION " , " sapdiag.diag.supportbits.EVENT_DESCRIPTION " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER ,
{ " Support Bit LABEL_OWNER " , " sapdiag.diag.supportbits.LABEL_OWNER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_LABEL_OWNER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD ,
{ " Support Bit CLICKABLE_FIELD " , " sapdiag.diag.supportbits.CLICKABLE_FIELD " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG ,
{ " Support Bit PROPERTY_BAG " , " sapdiag.diag.supportbits.PROPERTY_BAG " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_PROPERTY_BAG , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNUSED_1 ,
{ " Support Bit UNUSED_1 " , " sapdiag.diag.supportbits.UNUSED_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNUSED_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2 ,
{ " Support Bit TABLE_ROW_REFERENCES_2 " , " sapdiag.diag.supportbits.TABLE_ROW_REFERENCES_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID ,
{ " Support Bit PROPFONT_VALID " , " sapdiag.diag.supportbits.PROPFONT_VALID " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_PROPFONT_VALID , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER ,
{ " Support Bit VARINFO_CONTAINER " , " sapdiag.diag.supportbits.VARINFO_CONTAINER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID ,
{ " Support Bit R3INFO_IMODEUUID " , " sapdiag.diag.supportbits.R3INFO_IMODEUUID " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NOTGUI ,
{ " Support Bit NOTGUI " , " sapdiag.diag.supportbits.NOTGUI " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NOTGUI , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_WAN ,
{ " Support Bit WAN " , " sapdiag.diag.supportbits.WAN " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_WAN , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS ,
{ " Support Bit XML_BLOBS " , " sapdiag.diag.supportbits.XML_BLOBS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_XML_BLOBS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE ,
{ " Support Bit RFC_QUEUE " , " sapdiag.diag.supportbits.RFC_QUEUE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_RFC_QUEUE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS ,
{ " Support Bit RFC_COMPRESS " , " sapdiag.diag.supportbits.RFC_COMPRESS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_RFC_COMPRESS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS ,
{ " Support Bit JAVA_BEANS " , " sapdiag.diag.supportbits.JAVA_BEANS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_JAVA_BEANS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND ,
{ " Support Bit DPLOADONDEMAND " , " sapdiag.diag.supportbits.DPLOADONDEMAND " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE ,
{ " Support Bit CTL_PROPCACHE " , " sapdiag.diag.supportbits.CTL_PROPCACHE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID ,
{ " Support Bit ENJOY_IMODEUUID " , " sapdiag.diag.supportbits.ENJOY_IMODEUUID " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB ,
{ " Support Bit RFC_ASYNC_BLOB " , " sapdiag.diag.supportbits.RFC_ASYNC_BLOB " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS ,
{ " Support Bit KEEP_SCROLLPOS " , " sapdiag.diag.supportbits.KEEP_SCROLLPOS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNUSED_2 ,
{ " Support Bit UNUSED_2 " , " sapdiag.diag.supportbits.UNUSED_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNUSED_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNUSED_3 ,
{ " Support Bit UNUSED_3 " , " sapdiag.diag.supportbits.UNUSED_3 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNUSED_3 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES ,
{ " Support Bit XML_PROPERTIES " , " sapdiag.diag.supportbits.XML_PROPERTIES " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_XML_PROPERTIES , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNUSED_4 ,
{ " Support Bit UNUSED_4 " , " sapdiag.diag.supportbits.UNUSED_4 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNUSED_4 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD ,
{ " Support Bit HEX_FIELD " , " sapdiag.diag.supportbits.HEX_FIELD " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_HEX_FIELD , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE ,
{ " Support Bit HAS_CACHE " , " sapdiag.diag.supportbits.HAS_CACHE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_HAS_CACHE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE ,
{ " Support Bit XML_PROP_TABLE " , " sapdiag.diag.supportbits.XML_PROP_TABLE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNUSED_5 ,
{ " Support Bit UNUSED_5 " , " sapdiag.diag.supportbits.UNUSED_5 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNUSED_5 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2 ,
{ " Support Bit ENJOY_IMODEUUID2 " , " sapdiag.diag.supportbits.ENJOY_IMODEUUID2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ITS ,
{ " Support Bit ITS " , " sapdiag.diag.supportbits.ITS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ITS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS ,
{ " Support Bit NO_EASYACCESS " , " sapdiag.diag.supportbits.NO_EASYACCESS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NO_EASYACCESS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP ,
{ " Support Bit PROPERTYPUMP " , " sapdiag.diag.supportbits.PROPERTYPUMP " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_PROPERTYPUMP , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_COOKIE ,
{ " Support Bit COOKIE " , " sapdiag.diag.supportbits.COOKIE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_COOKIE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNUSED_6 ,
{ " Support Bit UNUSED_6 " , " sapdiag.diag.supportbits.UNUSED_6 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNUSED_6 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE ,
{ " Support Bit SUPPBIT_AREA_SIZE " , " sapdiag.diag.supportbits.SUPPBIT_AREA_SIZE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE ,
{ " Support Bit DPLOADONDEMAND_WRITE " , " sapdiag.diag.supportbits.DPLOADONDEMAND_WRITE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS ,
{ " Support Bit CONTROL_FOCUS " , " sapdiag.diag.supportbits.CONTROL_FOCUS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY ,
{ " Support Bit ENTRY_HISTORY " , " sapdiag.diag.supportbits.ENTRY_HISTORY " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE ,
{ " Support Bit AUTO_CODEPAGE " , " sapdiag.diag.supportbits.AUTO_CODEPAGE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS ,
{ " Support Bit CACHED_VSETS " , " sapdiag.diag.supportbits.CACHED_VSETS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CACHED_VSETS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR ,
{ " Support Bit EMERGENCY_REPAIR " , " sapdiag.diag.supportbits.EMERGENCY_REPAIR " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT ,
{ " Support Bit AREA2FRONT " , " sapdiag.diag.supportbits.AREA2FRONT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_AREA2FRONT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH ,
{ " Support Bit SCROLLBAR_WIDTH " , " sapdiag.diag.supportbits.SCROLLBAR_WIDTH " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE ,
{ " Support Bit AUTORESIZE " , " sapdiag.diag.supportbits.AUTORESIZE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_AUTORESIZE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN ,
{ " Support Bit EDIT_VARLEN " , " sapdiag.diag.supportbits.EDIT_VARLEN " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_EDIT_VARLEN , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_WORKPLACE ,
{ " Support Bit WORKPLACE " , " sapdiag.diag.supportbits.WORKPLACE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_WORKPLACE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_PRINTDATA ,
{ " Support Bit PRINTDATA " , " sapdiag.diag.supportbits.PRINTDATA " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_PRINTDATA , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2 ,
{ " Support Bit UNKNOWN_2 " , " sapdiag.diag.supportbits.UNKNOWN_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNKNOWN_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION ,
{ " Support Bit SINGLE_SESSION " , " sapdiag.diag.supportbits.SINGLE_SESSION " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SINGLE_SESSION , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE ,
{ " Support Bit NOTIFY_NEWMODE " , " sapdiag.diag.supportbits.NOTIFY_NEWMODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT ,
{ " Support Bit TOOLBAR_HEIGHT " , " sapdiag.diag.supportbits.TOOLBAR_HEIGHT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER ,
{ " Support Bit XMLPROP_CONTAINER " , " sapdiag.diag.supportbits.XMLPROP_CONTAINER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO ,
{ " Support Bit XMLPROP_DYNPRO " , " sapdiag.diag.supportbits.XMLPROP_DYNPRO " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT ,
{ " Support Bit DP_HTTP_PUT " , " sapdiag.diag.supportbits.DP_HTTP_PUT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT ,
{ " Support Bit DYNAMIC_PASSPORT " , " sapdiag.diag.supportbits.DYNAMIC_PASSPORT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_WEBGUI ,
{ " Support Bit WEBGUI " , " sapdiag.diag.supportbits.WEBGUI " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_WEBGUI , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE ,
{ " Support Bit WEBGUI_HELPMODE " , " sapdiag.diag.supportbits.WEBGUI_HELPMODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST ,
{ " Support Bit CONTROL_FOCUS_ON_LIST " , " sapdiag.diag.supportbits.CONTROL_FOCUS_ON_LIST " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2 ,
{ " Support Bit CBU_RBUDUMMY_2 " , " sapdiag.diag.supportbits.CBU_RBUDUMMY_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1 ,
{ " Support Bit EOKDUMMY_1 " , " sapdiag.diag.supportbits.EOKDUMMY_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_EOKDUMMY_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING ,
{ " Support Bit GUI_USER_SCRIPTING " , " sapdiag.diag.supportbits.GUI_USER_SCRIPTING " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SLC ,
{ " Support Bit SLC " , " sapdiag.diag.supportbits.SLC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SLC , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY ,
{ " Support Bit ACCESSIBILITY " , " sapdiag.diag.supportbits.ACCESSIBILITY " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ACCESSIBILITY , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ECATT ,
{ " Support Bit ECATT " , " sapdiag.diag.supportbits.ECATT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ECATT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3 ,
{ " Support Bit ENJOY_IMODEUUID3 " , " sapdiag.diag.supportbits.ENJOY_IMODEUUID3 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8 ,
{ " Support Bit ENABLE_UTF8 " , " sapdiag.diag.supportbits.ENABLE_UTF8 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENABLE_UTF8 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME ,
{ " Support Bit R3INFO_AUTOLOGOUT_TIME " , " sapdiag.diag.supportbits.R3INFO_AUTOLOGOUT_TIME " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST ,
{ " Support Bit VARINFO_ICON_TITLE_LIST " , " sapdiag.diag.supportbits.VARINFO_ICON_TITLE_LIST " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE ,
{ " Support Bit ENABLE_UTF16BE " , " sapdiag.diag.supportbits.ENABLE_UTF16BE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE ,
{ " Support Bit ENABLE_UTF16LE " , " sapdiag.diag.supportbits.ENABLE_UTF16LE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP ,
{ " Support Bit R3INFO_CODEPAGE_APP " , " sapdiag.diag.supportbits.R3INFO_CODEPAGE_APP " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4 ,
{ " Support Bit ENABLE_APPL4 " , " sapdiag.diag.supportbits.ENABLE_APPL4 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ENABLE_APPL4 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL ,
{ " Support Bit GUIPATCHLEVEL " , " sapdiag.diag.supportbits.GUIPATCHLEVEL " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE ,
{ " Support Bit CBURBU_NEW_STATE " , " sapdiag.diag.supportbits.CBURBU_NEW_STATE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID ,
{ " Support Bit BINARY_EVENTID " , " sapdiag.diag.supportbits.BINARY_EVENTID " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_BINARY_EVENTID , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUI_THEME ,
{ " Support Bit GUI_THEME " , " sapdiag.diag.supportbits.GUI_THEME " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUI_THEME , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW ,
{ " Support Bit TOP_WINDOW " , " sapdiag.diag.supportbits.TOP_WINDOW " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TOP_WINDOW , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1 ,
{ " Support Bit EVENT_DESCRIPTION_1 " , " sapdiag.diag.supportbits.EVENT_DESCRIPTION_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SPLITTER ,
{ " Support Bit SPLITTER " , " sapdiag.diag.supportbits.SPLITTER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SPLITTER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY ,
{ " Support Bit VALUE_4_HISTORY " , " sapdiag.diag.supportbits.VALUE_4_HISTORY " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ACC_LIST ,
{ " Support Bit ACC_LIST " , " sapdiag.diag.supportbits.ACC_LIST " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ACC_LIST , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO ,
{ " Support Bit GUI_USER_SCRIPTING_INFO " , " sapdiag.diag.supportbits.GUI_USER_SCRIPTING_INFO " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM ,
{ " Support Bit TEXTEDIT_STREAM " , " sapdiag.diag.supportbits.TEXTEDIT_STREAM " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS ,
{ " Support Bit DYNT_NOFOCUS " , " sapdiag.diag.supportbits.DYNT_NOFOCUS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1 ,
{ " Support Bit R3INFO_CODEPAGE_APP_1 " , " sapdiag.diag.supportbits.R3INFO_CODEPAGE_APP_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_FRAME_1 ,
{ " Support Bit FRAME_1 " , " sapdiag.diag.supportbits.FRAME_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_FRAME_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI ,
{ " Support Bit TICKET4GUI " , " sapdiag.diag.supportbits.TICKET4GUI " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TICKET4GUI , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS ,
{ " Support Bit ACC_LIST_PROPS " , " sapdiag.diag.supportbits.ACC_LIST_PROPS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT ,
{ " Support Bit TABSEL_ATTRIB_INPUT " , " sapdiag.diag.supportbits.TABSEL_ATTRIB_INPUT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP ,
{ " Support Bit DEFAULT_TOOLTIP " , " sapdiag.diag.supportbits.DEFAULT_TOOLTIP " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2 ,
{ " Support Bit XML_PROP_TABLE_2 " , " sapdiag.diag.supportbits.XML_PROP_TABLE_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3 ,
{ " Support Bit CBU_RBUDUMMY_3 " , " sapdiag.diag.supportbits.CBU_RBUDUMMY_3 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CELLINFO ,
{ " Support Bit CELLINFO " , " sapdiag.diag.supportbits.CELLINFO " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CELLINFO , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2 ,
{ " Support Bit CONTROL_FOCUS_ON_LIST_2 " , " sapdiag.diag.supportbits.CONTROL_FOCUS_ON_LIST_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT ,
{ " Support Bit TABLE_COLUMNWIDTH_INPUT " , " sapdiag.diag.supportbits.TABLE_COLUMNWIDTH_INPUT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN ,
{ " Support Bit ITS_PLUGIN " , " sapdiag.diag.supportbits.ITS_PLUGIN " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ITS_PLUGIN , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS ,
{ " Support Bit OBJECT_NAMES_4_LOGIN_PROCESS " , " sapdiag.diag.supportbits.OBJECT_NAMES_4_LOGIN_PROCESS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI ,
{ " Support Bit RFC_SERVER_4_GUI " , " sapdiag.diag.supportbits.RFC_SERVER_4_GUI " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2 ,
{ " Support Bit R3INFO_FLAGS_2 " , " sapdiag.diag.supportbits.R3INFO_FLAGS_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_RCUI ,
{ " Support Bit RCUI " , " sapdiag.diag.supportbits.RCUI " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_RCUI , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE ,
{ " Support Bit MENUENTRY_WITH_FCODE " , " sapdiag.diag.supportbits.MENUENTRY_WITH_FCODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE ,
{ " Support Bit WEBSAPCONSOLE " , " sapdiag.diag.supportbits.WEBSAPCONSOLE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION ,
{ " Support Bit R3INFO_KERNEL_VERSION " , " sapdiag.diag.supportbits.R3INFO_KERNEL_VERSION " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP ,
{ " Support Bit VARINFO_CONTAINER_LOOP " , " sapdiag.diag.supportbits.VARINFO_CONTAINER_LOOP " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2 ,
{ " Support Bit EOKDUMMY_2 " , " sapdiag.diag.supportbits.EOKDUMMY_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_EOKDUMMY_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3 ,
{ " Support Bit MESSAGE_INFO3 " , " sapdiag.diag.supportbits.MESSAGE_INFO3 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SBA2 ,
{ " Support Bit SBA2 " , " sapdiag.diag.supportbits.SBA2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SBA2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE ,
{ " Support Bit MAINAREA_SIZE " , " sapdiag.diag.supportbits.MAINAREA_SIZE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2 ,
{ " Support Bit GUIPATCHLEVEL_2 " , " sapdiag.diag.supportbits.GUIPATCHLEVEL_2 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE ,
{ " Support Bit DISPLAY_SIZE " , " sapdiag.diag.supportbits.DISPLAY_SIZE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET ,
{ " Support Bit GUI_PACKET " , " sapdiag.diag.supportbits.GUI_PACKET " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUI_PACKET , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER ,
{ " Support Bit DIALOG_STEP_NUMBER " , " sapdiag.diag.supportbits.DIALOG_STEP_NUMBER " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION ,
{ " Support Bit TC_KEEP_SCROLL_POSITION " , " sapdiag.diag.supportbits.TC_KEEP_SCROLL_POSITION " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST ,
{ " Support Bit MESSAGE_SERVICE_REQUEST " , " sapdiag.diag.supportbits.MESSAGE_SERVICE_REQUEST " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME ,
{ " Support Bit DYNT_FOCUS_FRAME " , " sapdiag.diag.supportbits.DYNT_FOCUS_FRAME " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN ,
{ " Support Bit MAX_STRING_LEN " , " sapdiag.diag.supportbits.MAX_STRING_LEN " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1 ,
{ " Support Bit VARINFO_CONTAINER_1 " , " sapdiag.diag.supportbits.VARINFO_CONTAINER_1 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS ,
{ " Support Bit STD_TOOLBAR_ITEMS " , " sapdiag.diag.supportbits.STD_TOOLBAR_ITEMS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO ,
{ " Support Bit XMLPROP_LIST_DYNPRO " , " sapdiag.diag.supportbits.XMLPROP_LIST_DYNPRO " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT ,
{ " Support Bit TRACE_GUI_CONNECT " , " sapdiag.diag.supportbits.TRACE_GUI_CONNECT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH ,
{ " Support Bit LIST_FULLWIDTH " , " sapdiag.diag.supportbits.LIST_FULLWIDTH " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT ,
{ " Support Bit ALLWAYS_SEND_CLIENT " , " sapdiag.diag.supportbits.ALLWAYS_SEND_CLIENT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3 ,
{ " Support Bit UNKNOWN_3 " , " sapdiag.diag.supportbits.UNKNOWN_3 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_UNKNOWN_3 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR ,
{ " Support Bit GUI_SIGNATURE_COLOR " , " sapdiag.diag.supportbits.GUI_SIGNATURE_COLOR " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE ,
{ " Support Bit MAX_WSIZE " , " sapdiag.diag.supportbits.MAX_WSIZE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MAX_WSIZE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS ,
{ " Support Bit SAP_PERSONAS " , " sapdiag.diag.supportbits.SAP_PERSONAS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_SAP_PERSONAS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_IDA_ALV ,
{ " Support Bit IDA_ALV " , " sapdiag.diag.supportbits.IDA_ALV " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_IDA_ALV , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS ,
{ " Support Bit IDA_ALV_FRAGMENTS " , " sapdiag.diag.supportbits.IDA_ALV_FRAGMENTS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_AMC ,
{ " Support Bit AMC " , " sapdiag.diag.supportbits.AMC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_AMC , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC ,
{ " Support Bit EXTMODE_FONT_METRIC " , " sapdiag.diag.supportbits.EXTMODE_FONT_METRIC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GROUPBOX ,
{ " Support Bit GROUPBOX " , " sapdiag.diag.supportbits.GROUPBOX " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GROUPBOX , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON ,
{ " Support Bit AGI_ID_TS_BUTTON " , " sapdiag.diag.supportbits.AGI_ID_TS_BUTTON " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST ,
{ " Support Bit NO_FOCUS_ON_LIST " , " sapdiag.diag.supportbits.NO_FOCUS_ON_LIST " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE ,
{ " Support Bit FIORI_MODE " , " sapdiag.diag.supportbits.FIORI_MODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_FIORI_MODE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE ,
{ " Support Bit CONNECT_CHECK_DONE " , " sapdiag.diag.supportbits.CONNECT_CHECK_DONE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE ,
{ " Support Bit MSGINFO_WITH_CODEPAGE " , " sapdiag.diag.supportbits.MSGINFO_WITH_CODEPAGE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_AGI_ID ,
{ " Support Bit AGI_ID " , " sapdiag.diag.supportbits.AGI_ID " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_AGI_ID , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC ,
{ " Support Bit AGI_ID_TC " , " sapdiag.diag.supportbits.AGI_ID_TC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_AGI_ID_TC , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS ,
{ " Support Bit FIORI_TOOLBARS " , " sapdiag.diag.supportbits.FIORI_TOOLBARS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE ,
{ " Support Bit OBJECT_NAMES_ENFORCE " , " sapdiag.diag.supportbits.OBJECT_NAMES_ENFORCE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3 ,
{ " Support Bit MESDUMMY_FLAGS_2_3 " , " sapdiag.diag.supportbits.MESDUMMY_FLAGS_2_3 " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3 , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_NWBC ,
{ " Support Bit NWBC " , " sapdiag.diag.supportbits.NWBC " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_NWBC , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST ,
{ " Support Bit CONTAINER_LIST " , " sapdiag.diag.supportbits.CONTAINER_LIST " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_CONTAINER_LIST , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR ,
{ " Support Bit GUI_SYSTEM_COLOR " , " sapdiag.diag.supportbits.GUI_SYSTEM_COLOR " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR , NULL , HFILL } } ,
{ & hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE ,
{ " Support Bit GROUPBOX_WITHOUT_BOTTOMLINE " , " sapdiag.diag.supportbits.GROUPBOX_WITHOUT_BOTTOMLINE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE , NULL , HFILL } } ,
/* Dynt Atom */
{ & hf_sapdiag_item_dynt_atom ,
{ " Dynt Atom " , " sapdiag.item.value.dyntatom " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item ,
{ " Dynt Atom Item " , " sapdiag.item.value.dyntatom.item " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_etype ,
{ " Dynt Atom Item Type " , " sapdiag.item.value.dyntatom.item.type " , FT_UINT8 , BASE_DEC , VALS ( sapdiag_item_dynt_atom_item_etype_vals ) , 0x0 , NULL , HFILL } } ,
/* Dynt Atom Attribute Flags */
{ & hf_sapdiag_item_dynt_atom_item_attr ,
{ " Dynt Atom Item Attributes " , " sapdiag.item.value.dyntatom.item.attr " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE ,
{ " Dynt Atom Item Attribute Combo Style " , " sapdiag.item.value.dyntatom.item.attr.COMBOSTYLE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_COMBOSTYLE , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D ,
{ " Dynt Atom Item Attribute Yes3D " , " sapdiag.item.value.dyntatom.item.attr.YES3D " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_YES3D , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT ,
{ " Dynt Atom Item Attribute Prop Font " , " sapdiag.item.value.dyntatom.item.attr.PROPFONT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_PROPFONT , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE ,
{ " Dynt Atom Item Attribute Match Code " , " sapdiag.item.value.dyntatom.item.attr.MATCHCODE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_MATCHCODE , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT ,
{ " Dynt Atom Item Attribute Just Right " , " sapdiag.item.value.dyntatom.item.attr.JUSTRIGHT " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_JUSTRIGHT , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY ,
{ " Dynt Atom Item Attribute Intensify " , " sapdiag.item.value.dyntatom.item.attr.INTENSIFY " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_INTENSIFY , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE ,
{ " Dynt Atom Item Attribute Invisible " , " sapdiag.item.value.dyntatom.item.attr.INVISIBLE " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE , NULL , HFILL } } ,
{ & hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED ,
{ " Dynt Atom Item Attribute Protected " , " sapdiag.item.value.dyntatom.item.attr.PROTECTED " , FT_BOOLEAN , 8 , NULL , SAPDIAG_ATOM_ATTR_DIAG_BSD_PROTECTED , NULL , HFILL } } ,
/* Control Properties fields */
{ & hf_sapdiag_item_control_properties_id ,
{ " Control Properties ID " , " sapdiag.item.value.controlproperties.id " , FT_UINT16 , BASE_HEX , VALS ( sapdiag_item_control_properties_id_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_sapdiag_item_control_properties_value ,
{ " Control Properties Value " , " sapdiag.item.value.controlproperties.value " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
/* UI Event Source fields */
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_event_type ,
2022-12-04 17:53:05 +00:00
{ " UI Event Source Type " , " sapdiag.item.value.uievent.type " , FT_UINT16 , BASE_DEC , VALS ( sapdiag_item_ui_event_event_type_vals ) , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_control_type ,
2022-12-04 17:53:05 +00:00
{ " UI Event Control Type " , " sapdiag.item.value.uievent.control " , FT_UINT16 , BASE_DEC , VALS ( sapdiag_item_ui_event_control_type_vals ) , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_valid ,
2022-12-04 17:53:05 +00:00
{ " UI Event Valid " , " sapdiag.item.value.uievent.valid " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_valid_MENU_POS ,
2022-12-04 17:53:05 +00:00
{ " UI Event Valid Menu Pos " , " sapdiag.item.value.uievent.valid.MENU_POS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_UI_EVENT_VALID_FLAG_MENU_POS , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_valid_CONTROL_POS ,
2022-12-04 17:53:05 +00:00
{ " UI Event Valid Control Pos " , " sapdiag.item.value.uievent.valid.CONTROL_POS " , FT_BOOLEAN , 8 , NULL , SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_valid_NAVIGATION_DATA ,
2022-12-04 17:53:05 +00:00
{ " UI Event Valid Navigation Data " , " sapdiag.item.value.uievent.valid.NAVIGATION_DATA " , FT_BOOLEAN , 8 , NULL , SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA ,
2022-12-04 17:53:05 +00:00
{ " UI Event Valid Function Key Data " , " sapdiag.item.value.uievent.valid.FUNCTIONKEY_DATA " , FT_BOOLEAN , 8 , NULL , SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_control_row ,
2022-12-04 17:53:05 +00:00
{ " UI Event Source Control Row " , " sapdiag.item.value.uievent.controlrow " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_control_col ,
2022-12-04 17:53:05 +00:00
{ " UI Event Source Control Column " , " sapdiag.item.value.uievent.controlcol " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_navigation_data ,
2022-12-04 17:53:05 +00:00
{ " UI Event Source Navigation Data " , " sapdiag.item.value.uievent.navigationdata " , FT_UINT32 , BASE_DEC , VALS ( sapdiag_item_ui_event_navigation_data_vals ) , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_data ,
2022-12-04 17:53:05 +00:00
{ " UI Event Source Data " , " sapdiag.item.value.uievent.data " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_container_nrs ,
2022-12-04 17:53:05 +00:00
{ " UI Event Source Container IDs Numbers " , " sapdiag.item.value.uievent.containernrs " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2023-11-17 07:46:02 +00:00
{ & hf_sapdiag_item_ui_event_container ,
2022-12-04 17:53:05 +00:00
{ " UI Event Source Container ID " , " sapdiag.item.value.uievent.container " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
/* Menu Entries */
{ & hf_sapdiag_item_menu_entry ,
{ " Menu Entry " , " sapdiag.item.value.menu " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL ,
HFILL } } ,
} ;
/* Setup protocol subtree array */
static gint * ett [ ] = {
& ett_sapdiag
} ;
/* Register the expert info */
static ei_register_info ei [ ] = {
{ & ei_sapdiag_item_unknown , { " sapdiag.item.unknown " , PI_UNDECODED , PI_WARN , " The Diag Item has a unknown type that is not dissected " , EXPFILL } } ,
{ & ei_sapdiag_item_partial , { " sapdiag.item.unknown " , PI_UNDECODED , PI_WARN , " The Diag Item is dissected partially " , EXPFILL } } ,
{ & ei_sapdiag_item_unknown_length , { " sapdiag.item.length.unknown " , PI_UNDECODED , PI_WARN , " Diag Type of unknown length " , EXPFILL } } ,
{ & ei_sapdiag_item_offset_invalid , { " sapdiag.item.offset.invalid " , PI_MALFORMED , PI_ERROR , " Invalid offset " , EXPFILL } } ,
{ & ei_sapdiag_item_length_invalid , { " sapdiag.item.length.invalid " , PI_MALFORMED , PI_WARN , " Item length is invalid " , EXPFILL } } ,
{ & ei_sapdiag_atom_item_unknown , { " sapdiag.item.value.dyntatom.item.unknown " , PI_UNDECODED , PI_WARN , " The Diag Atom has a unknown type that is not dissected " , EXPFILL } } ,
{ & ei_sapdiag_atom_item_partial , { " sapdiag.item.value.dyntatom.item.unknown " , PI_UNDECODED , PI_WARN , " The Diag Atom is dissected partially " , EXPFILL } } ,
{ & ei_sapdiag_atom_item_malformed , { " sapdiag.item.value.dyntatom.invalid " , PI_MALFORMED , PI_WARN , " The Diag Atom is malformed " , EXPFILL } } ,
{ & ei_sapdiag_dynt_focus_more_cont_ids , { " sapdiag.item.value.uievent.containernrs.invalid " , PI_MALFORMED , PI_WARN , " Number of Container IDs is invalid " , EXPFILL } } ,
{ & ei_sapdiag_password_field , { " sapdiag.item.value.dyntatom.item.password " , PI_SECURITY , PI_WARN , " Password field? " , EXPFILL } } ,
} ;
module_t * sapdiag_module ;
expert_module_t * sapdiag_expert ;
/* Register the protocol */
proto_sapdiag = proto_register_protocol ( " SAP Diag Protocol " , " SAPDIAG " , " sapdiag " ) ;
proto_register_field_array ( proto_sapdiag , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
sapdiag_expert = expert_register_protocol ( proto_sapdiag ) ;
expert_register_field_array ( sapdiag_expert , ei , array_length ( ei ) ) ;
register_dissector ( " sapdiag " , dissect_sapdiag , proto_sapdiag ) ;
/* Register the preferences */
sapdiag_module = prefs_register_protocol ( proto_sapdiag , proto_reg_handoff_sapdiag ) ;
range_convert_str ( wmem_epan_scope ( ) , & global_sapdiag_port_range , SAPDIAG_PORT_RANGE , MAX_TCP_PORT ) ;
prefs_register_range_preference ( sapdiag_module , " tcp_ports " , " SAP Diag Protocol TCP port numbers " , " Port numbers used for SAP Diag Protocol (default " SAPDIAG_PORT_RANGE " ) " , & global_sapdiag_port_range , MAX_TCP_PORT ) ;
2023-01-31 17:12:16 +00:00
prefs_register_bool_preference ( sapdiag_module , " rfc_dissection " , " Dissect embedded SAP RFC calls " , " Whether the SAP Diag Protocol dissector should call the SAP RFC dissector for embedded RFC calls " , & global_sapdiag_rfc_dissection ) ;
2022-12-04 17:53:05 +00:00
prefs_register_bool_preference ( sapdiag_module , " snc_dissection " , " Dissect SAP SNC frames " , " Whether the SAP Diag Protocol dissector should call the SAP SNC dissector for SNC frames " , & global_sapdiag_snc_dissection ) ;
2023-01-31 17:12:16 +00:00
prefs_register_bool_preference ( sapdiag_module , " highlight_unknown_items " , " Highlight unknown SAP Diag Items " , " Whether the SAP Diag Protocol dissector should highlight unknown SAP Diag item (might be noise and generate a lot of expert warnings) " , & global_sapdiag_highlight_items ) ;
2022-12-04 17:53:05 +00:00
}
/**
* Helpers for dealing with the port range
*/
static void range_delete_callback ( guint32 port , gpointer ptr _U_ )
{
dissector_delete_uint ( " sapni.port " , port , sapdiag_handle ) ;
}
static void range_add_callback ( guint32 port , gpointer ptr _U_ )
{
dissector_add_uint ( " sapni.port " , port , sapdiag_handle ) ;
}
/**
* Register Hand off for the SAP Diag Protocol
*/
void
proto_reg_handoff_sapdiag ( void )
{
static range_t * sapdiag_port_range ;
static gboolean initialized = FALSE ;
if ( ! initialized ) {
sapdiag_handle = create_dissector_handle ( dissect_sapdiag , proto_sapdiag ) ;
initialized = TRUE ;
} else {
range_foreach ( sapdiag_port_range , range_delete_callback , NULL ) ;
wmem_free ( wmem_epan_scope ( ) , sapdiag_port_range ) ;
}
sapdiag_port_range = range_copy ( wmem_epan_scope ( ) , global_sapdiag_port_range ) ;
range_foreach ( sapdiag_port_range , range_add_callback , NULL ) ;
}
/*
* Editor modelines - https : //www.wireshark.org/tools/modelines.html
*
* Local variables :
* c - basic - offset : 8
* tab - width : 8
* indent - tabs - mode : t
* End :
*
* vi : set shiftwidth = 8 tabstop = 8 noexpandtab :
* : indentSize = 8 : tabSize = 8 : noTabs = false :
*/