Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-sapdiag.c
blob94b1b92d090d047349e548dda985fa27056fce63
1 /* packet-saphdb.c
2 * Routines for SAP Diag (SAP GUI Protocol) dissection
3 * Copyright 2022, Martin Gallo <martin.gallo [AT] gmail.com>
4 * Code contributed by SecureAuth Corp.
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
13 #include <epan/packet.h>
14 #include <epan/prefs.h>
15 #include <epan/expert.h>
16 #include <wsutil/wmem/wmem.h>
18 #include "packet-sapsnc.h"
20 /* Define default ports. It right range shold be 32NN, but as prot numbers are
21 * proprietary and not IANA assigned, we leave only the one corresponding to the
22 * instance 00. In addition, 3298 it's generally used for the niping tool and 3299
23 * is associated to SAP Router.
25 #define SAPDIAG_PORT_RANGE "3200"
27 /* SAP Diag Header Communication Flag values */
28 #define SAPDIAG_COM_FLAG_TERM_EOS 0x01
29 #define SAPDIAG_COM_FLAG_TERM_EOC 0x02
30 #define SAPDIAG_COM_FLAG_TERM_NOP 0x04
31 #define SAPDIAG_COM_FLAG_TERM_EOP 0x08
32 #define SAPDIAG_COM_FLAG_TERM_INI 0x10
33 #define SAPDIAG_COM_FLAG_TERM_CAS 0x20
34 #define SAPDIAG_COM_FLAG_TERM_NNM 0x40
35 #define SAPDIAG_COM_FLAG_TERM_GRA 0x80
38 /* SAP Diag Header Compression field values */
39 static const value_string sapdiag_compress_vals[] = {
40 { 0x0, "Compression switched off" },
41 { 0x1, "Compression switched on" },
42 { 0x2, "Data encrypted" },
43 { 0x3, "Data encrypted wrap" },
44 /* NULL */
45 { 0x0, NULL }
48 /* SAP Diag Header Algorithm field values */
49 static const value_string sapdiag_algorithm_vals[] = {
50 { 0x10, "LZC" },
51 { 0x12, "LZH" },
52 /* NULL */
53 { 0x00, NULL }
56 /* SAP Diag DP Header Request ID values */
57 static const value_string sapdiag_dp_request_id_vals[] = {
58 { 0x00000000, "NOWP" },
59 { 0x00000001, "DIA" },
60 { 0x00000002, "DUPD" },
61 { 0x00000003, "DENQ" },
62 { 0x00000004, "DBTC" },
63 { 0x00000005, "DSPO" },
64 { 0x00000006, "DUP2" },
65 /* NULL */
66 { 0x00000000, NULL}
69 /* SAP Diag DP Header Sender ID values */
70 static const value_string sapdiag_dp_sender_id_vals[] = {
71 { 0x01, "DISPATCHER" },
72 { 0x02, "WORK_PROCESS" },
73 { 0x04, "REMOTE_TERMINAL" },
74 { 0x20, "APPC_TERMINAL" },
75 { 0x40, "APPC_GATEWAY" },
76 { 0xC8, "ICMAN" },
77 { 0xC9, "IC_MONITOR" },
78 { 0xCB, "LCOM" },
79 /* NULL */
80 { 0x00, NULL}
83 /* SAP Diag DP Header Action Type values */
84 static const value_string sapdiag_dp_action_type_vals[] = {
85 { 0x01, "SEND_TO_DP" },
86 { 0x02, "SEND_TO_WP" },
87 { 0x03, "SEND_TO_TM" },
88 { 0x04, "SEND_TO_APPC" },
89 { 0x05, "SEND_TO_APPCTM" },
90 { 0x06, "SEND_MSG_TYPE" },
91 { 0x07, "SEND_MSG_REQUES" },
92 { 0x08, "SEND_MSG_REPLY" },
93 { 0x09, "SEND_MSG_ONEWAY" },
94 { 0x0A, "SEND_MSG_ADMIN" },
95 { 0x0B, "WAKE_UP_WPS" },
96 { 0x0C, "SET_TIMEOUT" },
97 { 0x0D, "DEL_SCHEDULE" },
98 { 0x0E, "ADD_SOFT_SERV" },
99 { 0x0F, "SUB_SOFT_SERV" },
100 { 0x10, "SHUTDOWN" },
101 { 0x11, "SEND_TO_MSGSERV" },
102 { 0x12, "SEND_TO_PLUGIN" },
103 /* NULL */
104 { 0x00, NULL}
107 /* SAP Diag DP Header Request Info Flag constants */
108 #define SAPDIAG_DP_REQ_INFO_UNDEFINED 0x00
109 #define SAPDIAG_DP_REQ_INFO_LOGIN 0x01
110 #define SAPDIAG_DP_REQ_INFO_LOGOFF 0x02
111 #define SAPDIAG_DP_REQ_INFO_SHUTDOWN 0x04
112 #define SAPDIAG_DP_REQ_INFO_GRAPHIC_TM 0x08
113 #define SAPDIAG_DP_REQ_INFO_ALPHA_TM 0x10
114 #define SAPDIAG_DP_REQ_INFO_ERROR_FROM_APPC 0x20
115 #define SAPDIAG_DP_REQ_INFO_CANCELMODE 0x40
116 #define SAPDIAG_DP_REQ_INFO_MSG_WITH_REQ_BUF 0x80
118 #define SAPDIAG_DP_REQ_INFO_MSG_WITH_OH 0x01
119 #define SAPDIAG_DP_REQ_INFO_BUFFER_REFRESH 0x02
120 #define SAPDIAG_DP_REQ_INFO_BTC_SCHEDULER 0x04
121 #define SAPDIAG_DP_REQ_INFO_APPC_SERVER_DOWN 0x08
122 #define SAPDIAG_DP_REQ_INFO_MS_ERROR 0x10
123 #define SAPDIAG_DP_REQ_INFO_SET_SYSTEM_USER 0x20
124 #define SAPDIAG_DP_REQ_INFO_DP_CANT_HANDLE_REQ 0x40
125 #define SAPDIAG_DP_REQ_INFO_DP_AUTO_ABAP 0x80
127 #define SAPDIAG_DP_REQ_INFO_DP_APPL_SERV_INFO 0x01
128 #define SAPDIAG_DP_REQ_INFO_DP_ADMIN 0x02
129 #define SAPDIAG_DP_REQ_INFO_DP_SPOOL_ALRM 0x04
130 #define SAPDIAG_DP_REQ_INFO_DP_HAND_SHAKE 0x08
131 #define SAPDIAG_DP_REQ_INFO_DP_CANCEL_PRIV 0x10
132 #define SAPDIAG_DP_REQ_INFO_DP_RAISE_TIMEOUT 0x20
133 #define SAPDIAG_DP_REQ_INFO_DP_NEW_MODE 0x40
134 #define SAPDIAG_DP_REQ_INFO_DP_SOFT_CANCEL 0x80
136 #define SAPDIAG_DP_REQ_INFO_DP_TM_INPUT 0x01
137 #define SAPDIAG_DP_REQ_INFO_DP_TM_OUTPUT 0x02
138 #define SAPDIAG_DP_REQ_INFO_DP_ASYNC_RFC 0x04
139 #define SAPDIAG_DP_REQ_INFO_DP_ICM_EVENT 0x08
140 #define SAPDIAG_DP_REQ_INFO_DP_AUTO_TH 0x10
141 #define SAPDIAG_DP_REQ_INFO_DP_RFC_CANCEL 0x20
142 #define SAPDIAG_DP_REQ_INFO_DP_MS_ADM 0x40
144 /* SAP Diag Support Bits */
145 #define SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR 0x01 /* 0 */
146 #define SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS 0x02 /* 1 */
147 #define SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION 0x04 /* 2 */
148 #define SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT 0x08 /* 3 */
149 #define SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT 0x10 /* 4 */
150 #define SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC 0x20 /* 5 */
151 #define SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED 0x40 /* 6 */
152 #define SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE 0x80 /* 7 */
154 #define SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE 0x01 /* 8 */
155 #define SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE 0x02 /* 9 */
156 #define SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1 0x04 /* 10 */
157 #define SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1 0x08 /* 11 */
158 #define SAPDIAG_SUPPORT_BIT_UPPERCASE 0x10 /* 12 */
159 #define SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY 0x20 /* 13 */
160 #define SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE 0x40 /* 14 */
161 #define SAPDIAG_SUPPORT_BIT_RFC_DIALOG 0x80 /* 15 */
163 #define SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT 0x01 /* 16 */
164 #define SAPDIAG_SUPPORT_BIT_FKEY_TABLE 0x02 /* 17 */
165 #define SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT 0x04 /* 18 */
166 #define SAPDIAG_SUPPORT_BIT_STOP_TRANS 0x08 /* 19 */
167 #define SAPDIAG_SUPPORT_BIT_FULL_MENU 0x10 /* 20 */
168 #define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES 0x20 /* 21 */
169 #define SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE 0x40 /* 22 */
170 #define SAPDIAG_SUPPORT_BIT_DLGH_FLAGS 0x80 /* 23 */
172 #define SAPDIAG_SUPPORT_BIT_APPL_MNU 0x01 /* 24 */
173 #define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO 0x02 /* 25 */
174 #define SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1 0x04 /* 26 */
175 #define SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB 0x08 /* 27 */
176 #define SAPDIAG_SUPPORT_BIT_GUIAPI 0x10 /* 28 */
177 #define SAPDIAG_SUPPORT_BIT_NOGRAPH 0x20 /* 29 */
178 #define SAPDIAG_SUPPORT_BIT_NOMESSAGES 0x40 /* 30 */
179 #define SAPDIAG_SUPPORT_BIT_NORABAX 0x80 /* 31 */
181 #define SAPDIAG_SUPPORT_BIT_NOSYSMSG 0x01 /* 32 */
182 #define SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT 0x02 /* 33 */
183 #define SAPDIAG_SUPPORT_BIT_NORFC 0x04 /* 34 */
184 #define SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT 0x08 /* 35 */
185 #define SAPDIAG_SUPPORT_BIT_MESSAGE_VARS 0x10 /* 36 */
186 #define SAPDIAG_SUPPORT_BIT_OCX_SUPPORT 0x20 /* 37 */
187 #define SAPDIAG_SUPPORT_BIT_SCROLL_INFOS 0x40 /* 38 */
188 #define SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK 0x80 /* 39 */
190 #define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2 0x01 /* 40 */
191 #define SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE 0x02 /* 41 */
192 #define SAPDIAG_SUPPORT_BIT_CURR_TCODE 0x04 /* 42 */
193 #define SAPDIAG_SUPPORT_BIT_CONN_WSIZE 0x08 /* 43 */
194 #define SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2 0x10 /* 44 */
195 #define SAPDIAG_SUPPORT_BIT_TABSTRIP 0x20 /* 45 */
196 #define SAPDIAG_SUPPORT_BIT_UNKNOWN_1 0x40 /* 46 (Unknown support bit) */
197 #define SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS 0x80 /* 47 */
199 #define SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES 0x01 /* 48 */
200 #define SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST 0x02 /* 49 */
201 #define SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER 0x04 /* 50 */
202 #define SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER 0x08 /* 51 */
203 #define SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER 0x10 /* 52 */
204 #define SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED 0x20 /* 53 */
205 #define SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED 0x40 /* 54 */
206 #define SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO 0x80 /* 55 */
208 #define SAPDIAG_SUPPORT_BIT_TYPE_SERVER 0x01 /* 56 */
209 #define SAPDIAG_SUPPORT_BIT_COMBOBOX 0x02 /* 57 */
210 #define SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED 0x04 /* 58 */
211 #define SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE 0x08 /* 59 */
212 #define SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE 0x10 /* 60 */
213 #define SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS 0x20 /* 61 */
214 #define SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS 0x40 /* 62 */
215 #define SAPDIAG_SUPPORT_BIT_R3INFO_USERID 0x80 /* 63 */
217 #define SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT 0x01 /* 64 */
218 #define SAPDIAG_SUPPORT_BIT_USER_TURNTIME2 0x02 /* 65 */
219 #define SAPDIAG_SUPPORT_BIT_NUM_FIELD 0x04 /* 66 */
220 #define SAPDIAG_SUPPORT_BIT_WIN16 0x08 /* 67 */
221 #define SAPDIAG_SUPPORT_BIT_CONTEXT_MENU 0x10 /* 68 */
222 #define SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE 0x20 /* 69 */
223 #define SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION 0x40 /* 70 */
224 #define SAPDIAG_SUPPORT_BIT_LABEL_OWNER 0x80 /* 71 */
226 #define SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD 0x01 /* 72 */
227 #define SAPDIAG_SUPPORT_BIT_PROPERTY_BAG 0x02 /* 73 */
228 #define SAPDIAG_SUPPORT_BIT_UNUSED_1 0x04 /* 74 */
229 #define SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2 0x08 /* 75 */
230 #define SAPDIAG_SUPPORT_BIT_PROPFONT_VALID 0x10 /* 76 */
231 #define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER 0x20 /* 77 */
232 #define SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID 0x40 /* 78 */
233 #define SAPDIAG_SUPPORT_BIT_NOTGUI 0x80 /* 79 */
235 #define SAPDIAG_SUPPORT_BIT_WAN 0x01 /* 80 */
236 #define SAPDIAG_SUPPORT_BIT_XML_BLOBS 0x02 /* 81 */
237 #define SAPDIAG_SUPPORT_BIT_RFC_QUEUE 0x04 /* 82 */
238 #define SAPDIAG_SUPPORT_BIT_RFC_COMPRESS 0x08 /* 83 */
239 #define SAPDIAG_SUPPORT_BIT_JAVA_BEANS 0x10 /* 84 */
240 #define SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND 0x20 /* 85 */
241 #define SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE 0x40 /* 86 */
242 #define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID 0x80 /* 87 */
244 #define SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB 0x01 /* 88 */
245 #define SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS 0x02 /* 89 */
246 #define SAPDIAG_SUPPORT_BIT_UNUSED_2 0x04 /* 90 */
247 #define SAPDIAG_SUPPORT_BIT_UNUSED_3 0x08 /* 91 */
248 #define SAPDIAG_SUPPORT_BIT_XML_PROPERTIES 0x10 /* 92 */
249 #define SAPDIAG_SUPPORT_BIT_UNUSED_4 0x20 /* 93 */
250 #define SAPDIAG_SUPPORT_BIT_HEX_FIELD 0x40 /* 94 */
251 #define SAPDIAG_SUPPORT_BIT_HAS_CACHE 0x80 /* 95 */
253 #define SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE 0x01 /* 96 */
254 #define SAPDIAG_SUPPORT_BIT_UNUSED_5 0x02 /* 97 */
255 #define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2 0x04 /* 98 */
256 #define SAPDIAG_SUPPORT_BIT_ITS 0x08 /* 99 */
257 #define SAPDIAG_SUPPORT_BIT_NO_EASYACCESS 0x10 /* 100 */
258 #define SAPDIAG_SUPPORT_BIT_PROPERTYPUMP 0x20 /* 101 */
259 #define SAPDIAG_SUPPORT_BIT_COOKIE 0x40 /* 102 */
260 #define SAPDIAG_SUPPORT_BIT_UNUSED_6 0x80 /* 103 */
262 #define SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE 0x01 /* 104 */
263 #define SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE 0x02 /* 105 */
264 #define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS 0x04 /* 106 */
265 #define SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY 0x08 /* 107 */
266 #define SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE 0x10 /* 108 */
267 #define SAPDIAG_SUPPORT_BIT_CACHED_VSETS 0x20 /* 109 */
268 #define SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR 0x40 /* 110 */
269 #define SAPDIAG_SUPPORT_BIT_AREA2FRONT 0x80 /* 111 */
271 #define SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH 0x01 /* 112 */
272 #define SAPDIAG_SUPPORT_BIT_AUTORESIZE 0x02 /* 113 */
273 #define SAPDIAG_SUPPORT_BIT_EDIT_VARLEN 0x04 /* 114 */
274 #define SAPDIAG_SUPPORT_BIT_WORKPLACE 0x08 /* 115 */
275 #define SAPDIAG_SUPPORT_BIT_PRINTDATA 0x10 /* 116 */
276 #define SAPDIAG_SUPPORT_BIT_UNKNOWN_2 0x20 /* 117 (Unknown support bit) */
277 #define SAPDIAG_SUPPORT_BIT_SINGLE_SESSION 0x40 /* 118 */
278 #define SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE 0x80 /* 119 */
280 #define SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT 0x01 /* 120 */
281 #define SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER 0x02 /* 121 */
282 #define SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO 0x04 /* 122 */
283 #define SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT 0x08 /* 123 */
284 #define SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT 0x10 /* 124 */
285 #define SAPDIAG_SUPPORT_BIT_WEBGUI 0x20 /* 125 */
286 #define SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE 0x40 /* 126 */
287 #define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST 0x80 /* 127 */
289 #define SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2 0x01 /* 128 */
290 #define SAPDIAG_SUPPORT_BIT_EOKDUMMY_1 0x02 /* 129 */
291 #define SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING 0x04 /* 130 */
292 #define SAPDIAG_SUPPORT_BIT_SLC 0x08 /* 131 */
293 #define SAPDIAG_SUPPORT_BIT_ACCESSIBILITY 0x10 /* 132 */
294 #define SAPDIAG_SUPPORT_BIT_ECATT 0x20 /* 133 */
295 #define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3 0x40 /* 134 */
296 #define SAPDIAG_SUPPORT_BIT_ENABLE_UTF8 0x80 /* 135 */
298 #define SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME 0x01 /* 136 */
299 #define SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST 0x02 /* 137 */
300 #define SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE 0x04 /* 138 */
301 #define SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE 0x08 /* 139 */
302 #define SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP 0x10 /* 140 */
303 #define SAPDIAG_SUPPORT_BIT_ENABLE_APPL4 0x20 /* 141 */
304 #define SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL 0x40 /* 142 */
305 #define SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE 0x80 /* 143 */
307 #define SAPDIAG_SUPPORT_BIT_BINARY_EVENTID 0x01 /* 144 */
308 #define SAPDIAG_SUPPORT_BIT_GUI_THEME 0x02 /* 145 */
309 #define SAPDIAG_SUPPORT_BIT_TOP_WINDOW 0x04 /* 146 */
310 #define SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1 0x08 /* 147 */
311 #define SAPDIAG_SUPPORT_BIT_SPLITTER 0x10 /* 148 */
312 #define SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY 0x20 /* 149 */
313 #define SAPDIAG_SUPPORT_BIT_ACC_LIST 0x40 /* 150 */
314 #define SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO 0x80 /* 151 */
316 #define SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM 0x01 /* 152 */
317 #define SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS 0x02 /* 153 */
318 #define SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1 0x04 /* 154 */
319 #define SAPDIAG_SUPPORT_BIT_FRAME_1 0x08 /* 155 */
320 #define SAPDIAG_SUPPORT_BIT_TICKET4GUI 0x10 /* 156 */
321 #define SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS 0x20 /* 157 */
322 #define SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT 0x40 /* 158 */
323 #define SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP 0x80 /* 159 */
325 #define SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2 0x01 /* 160 */
326 #define SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3 0x02 /* 161 */
327 #define SAPDIAG_SUPPORT_BIT_CELLINFO 0x04 /* 162 */
328 #define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2 0x08 /* 163 */
329 #define SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT 0x10 /* 164 */
330 #define SAPDIAG_SUPPORT_BIT_ITS_PLUGIN 0x20 /* 165 */
331 #define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS 0x40 /* 166 */
332 #define SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI 0x80 /* 167 */
334 #define SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2 0x01 /* 168 */
335 #define SAPDIAG_SUPPORT_BIT_RCUI 0x02 /* 169 */
336 #define SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE 0x04 /* 170 */
337 #define SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE 0x08 /* 171 */
338 #define SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION 0x10 /* 172 */
339 #define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP 0x20 /* 173 */
340 #define SAPDIAG_SUPPORT_BIT_EOKDUMMY_2 0x40 /* 174 */
341 #define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3 0x80 /* 175 */
343 #define SAPDIAG_SUPPORT_BIT_SBA2 0x01 /* 176 */
344 #define SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE 0x02 /* 177 */
345 #define SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2 0x04 /* 178 */
346 #define SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE 0x08 /* 179 */
347 #define SAPDIAG_SUPPORT_BIT_GUI_PACKET 0x10 /* 180 */
348 #define SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER 0x20 /* 181 */
349 #define SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION 0x40 /* 182 */
350 #define SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST 0x80 /* 183 */
352 #define SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME 0x01 /* 184 */
353 #define SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN 0x02 /* 185 */
354 #define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1 0x04 /* 186 */
355 #define SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS 0x08 /* 187 */
356 #define SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO 0x10 /* 188 */
357 #define SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT 0x20 /* 189 */
358 #define SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH 0x40 /* 190 */
359 #define SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT 0x80 /* 191 */
361 #define SAPDIAG_SUPPORT_BIT_UNKNOWN_3 0x01 /* 192 (Unknown support bit) */
362 #define SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR 0x02 /* 193 */
363 #define SAPDIAG_SUPPORT_BIT_MAX_WSIZE 0x04 /* 194 */
364 #define SAPDIAG_SUPPORT_BIT_SAP_PERSONAS 0x08 /* 195 */
365 #define SAPDIAG_SUPPORT_BIT_IDA_ALV 0x10 /* 196 */
366 #define SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS 0x20 /* 197 */
367 #define SAPDIAG_SUPPORT_BIT_AMC 0x40 /* 198 */
368 #define SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC 0x80 /* 199 */
370 #define SAPDIAG_SUPPORT_BIT_GROUPBOX 0x01 /* 200 */
371 #define SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON 0x02 /* 201 */
372 #define SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST 0x04 /* 202 */
373 #define SAPDIAG_SUPPORT_BIT_FIORI_MODE 0x08 /* 203 */
374 #define SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE 0x10 /* 204 */
375 #define SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE 0x20 /* 205 */
376 #define SAPDIAG_SUPPORT_BIT_AGI_ID 0x40 /* 206 */
377 #define SAPDIAG_SUPPORT_BIT_AGI_ID_TC 0x80 /* 207 */
379 #define SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS 0x01 /* 208 */
380 #define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE 0x02 /* 209 */
381 #define SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3 0x04 /* 210 */
382 #define SAPDIAG_SUPPORT_BIT_NWBC 0x08 /* 211 */
383 #define SAPDIAG_SUPPORT_BIT_CONTAINER_LIST 0x10 /* 212 */
384 #define SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR 0x20 /* 213 */
385 #define SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE 0x40 /* 214 */
388 /* SAP Diag DP Header New Status values */
389 static const value_string sapdiag_dp_new_stat_vals[] = {
390 { 0x00, "NO_CHANGE" },
391 { 0x01, "WP_SLOT_FREE" },
392 { 0x02, "WP_WAIT" },
393 { 0x04, "WP_RUN" },
394 { 0x08, "WP_HOLD" },
395 { 0x10, "WP_KILLED" },
396 { 0x20, "WP_SHUTDOWN" },
397 { 0x40, "WP_RESTRICTED" },
398 { 0x80, "WP_NEW" },
399 /* NULL */
400 { 0x00, NULL }
403 /* SAP Diag Item Type values */
404 static const value_string sapdiag_item_type_vals[] = {
405 { 0x01, "SES" },
406 { 0x02, "ICO" },
407 { 0x03, "TIT" },
408 { 0x07, "DiagMessage (old format)" },
409 { 0x08, "OKC" },
410 { 0x09, "CHL" },
411 { 0x0a, "SFE" },
412 { 0x0b, "SBA" },
413 { 0x0c, "EOM" },
414 { 0x10, "APPL" },
415 { 0x11, "DIAG_XMLBLOB" },
416 { 0x12, "APPL4" },
417 { 0x13, "SLC" },
418 { 0x15, "SBA2" },
419 /* NULL */
420 { 0x00, NULL }
423 /* SAP Diag Item APPL/APPL4 ID values */
424 static const value_string sapdiag_item_id_vals[] = {
425 { 0x01, "SCRIPT" },
426 { 0x02, "GRAPH" },
427 { 0x03, "IXOS" },
428 { 0x04, "ST_USER" },
429 { 0x05, "DYNN" },
430 { 0x06, "ST_R3INFO" },
431 { 0x07, "POPU" },
432 { 0x08, "RFC_TR" },
433 { 0x09, "DYNT" },
434 { 0x0a, "CONTAINER" },
435 { 0x0b, "MNUENTRY" },
436 { 0x0c, "VARINFO" },
437 { 0x0e, "CONTROL" },
438 { 0x0f, "UI_EVENT" },
439 { 0x12, "ACC_LIST" },
440 { 0x13, "RCUI" },
441 { 0x14, "GUI_PACKET" },
442 /* NULL */
443 { 0x00, NULL }
446 /* SAP Diag Item APPL/APPL4 SCRIPT SID values */
447 static const value_string sapdiag_item_appl_script_vals[] = {
448 /* SCRIPT */
449 { 0x01, "SCRIPT_OTF" },
450 { 0x02, "SCRIPT_SCREEN" },
451 { 0x03, "SCRIPT_POSTSCRIPT" },
452 { 0x04, "SCRIPT_ITF" },
453 /* NULL */
454 { 0x00, NULL }
457 /* SAP Diag Item APPL/APPL4 GRAPH SID values */
458 static const value_string sapdiag_item_appl_graph_vals[] = {
459 /* GRAPH */
460 { 0x03, "GRAPH RELEASE 3" },
461 { 0x05, "GRAPH RELEASE 5" },
462 /* NULL */
463 { 0x00, NULL }
466 /* SAP Diag Item APPL/APPL4 IXOS SID values */
467 static const value_string sapdiag_item_appl_ixos_vals[] = {
468 /* IXOS */
469 { 0x01, "ABLAGE" },
470 { 0x02, "ANZEIGE" },
471 { 0x03, "IXOS_COMMAND" },
472 { 0x00, NULL }
475 /* SAP Diag Item APPL/APPL4 ST_USER SID values */
476 static const value_string sapdiag_item_appl_st_user_vals[] = {
477 /* ST_USER */
478 { 0x01, "V1" },
479 { 0x02, "CONNECT" },
480 { 0x03, "SELECTEDRECT" },
481 { 0x04, "FONTMETRIC" },
482 { 0x05, "TABLEMETRIC" },
483 { 0x06, "GUITIME" },
484 { 0x07, "GUITIMEZONE" },
485 { 0x08, "TURNTIME" },
486 { 0x09, "GUIVERSION" },
487 /* No entry for 0xa... */
488 { 0x0b, "SUPPORTDATA" },
489 { 0x0c, "RFC_CONNECT" },
490 { 0x0d, "WSIZE" },
491 { 0x0e, "V2" },
492 { 0x0f, "TURNTIME2" },
493 { 0x10, "RFC_PARENT_UUID" },
494 { 0x11, "RFC_NEW_UUID" },
495 { 0x12, "RFC_UUIDS" },
496 { 0x13, "RFC_UUIDS2" },
497 { 0x14, "XML_LOGIN" },
498 { 0x15, "XML_TRANSACTION" },
499 { 0x16, "SCROLLBAR_WIDTH" },
500 { 0x17, "TOOLBAR_HEIGHT" },
501 { 0x18, "PASSPORT_DATA" },
502 { 0x19, "GUI_STATE" },
503 { 0x1a, "DECIMALPOINT" },
504 { 0x1b, "LANGUAGE" },
505 { 0x1c, "USERNAME" },
506 { 0x1d, "GUIPATCHLEVEL" },
507 { 0x1e, "WSIZE_PIXEL" },
508 { 0x1f, "GUI_OS_VERSION" },
509 { 0x20, "BROWSER_VERSION" },
510 { 0x21, "OFFICE_VERSION" },
511 { 0x22, "JDK_VERSION" },
512 { 0x23, "GUIXT_VERSION" },
513 { 0x24, "DISPLAY_SIZE" },
514 { 0x25, "GUI_TYPE" },
515 { 0x26, "DIALOG_STEP_NUMBER" },
516 /* NULL */
517 { 0x00, NULL }
520 /* SAP Diag Item APPL/APPL4 DYNN SID values */
521 static const value_string sapdiag_item_appl_dynn_vals[] = {
522 /* DYNN */
523 { 0x01, "CHL" },
524 { 0x03, "XMLPROP DYNPRO" },
525 /* NULL */
526 { 0x00, NULL }
529 /* SAP Diag Item APPL/APPL4 ST_R3INFO SID values */
530 static const value_string sapdiag_item_appl_st_r3info_vals[] = {
531 /* ST_R3INFO */
532 { 0x01, "MODENUMBER" },
533 { 0x02, "DBNAME" },
534 { 0x03, "CPUNAME" },
535 { 0x04, "RFC_TRIGGER" },
536 { 0x05, "GUI_LABEL" },
537 { 0x06, "DIAGVERSION" },
538 { 0x07, "TCODE" },
539 { 0x08, "RFC_WAITING" },
540 { 0x09, "RFC_REFRESH" },
541 { 0x0a, "IMODENUMBER" },
542 { 0x0b, "MESSAGE" },
543 { 0x0c, "CLIENT" },
544 { 0x0d, "DYNPRONAME" },
545 { 0x0e, "DYNPRONUMBER" },
546 { 0x0f, "CUANAME" },
547 { 0x10, "CUASTATUS" },
548 { 0x11, "SUPPORTDATA" },
549 { 0x12, "RFC_CONNECT_OK" },
550 { 0x13, "GUI_FKEY" },
551 { 0x14, "GUI_FKEYT" },
552 { 0x15, "STOP_TRANS" },
553 { 0x16, "RFC_DIAG_BLOCK_SIZE" },
554 { 0x17, "USER_CHECKED" },
555 { 0x18, "FLAGS" },
556 { 0x19, "USERID" },
557 { 0x1a, "ROLLCOUNT" },
558 { 0x1b, "GUI_XT_VAR" },
559 { 0x1c, "IMODEUUID" },
560 { 0x1d, "IMODEUUID_INVALIDATE" },
561 { 0x1e, "IMODEUUIDS" },
562 { 0x1f, "IMODEUUIDS2" },
563 { 0x20, "CODEPAGE" },
564 { 0x21, "CONTEXTID" },
565 { 0x22, "AUTOLOGOUT_TIME" },
566 { 0x23, "CODEPAGE_DIAG_GUI" },
567 { 0x24, "CODEPAGE_APP_SERVER" },
568 { 0x25, "GUI_THEME" },
569 { 0x26, "GUI_USER_SCRIPTING" },
570 { 0x27, "CODEPAGE_APP_SERVER_1" },
571 { 0x28, "TICKET4GUI" },
572 { 0x29, "KERNEL_VERSION" },
573 { 0x2a, "STD_TOOLBAR_ITEMS" },
574 /* NULL */
575 { 0x00, NULL }
578 /* SAP Diag Item APPL/APPL4 POPU SID values */
579 static const value_string sapdiag_item_appl_popu_vals[] = {
580 /* POPU */
581 { 0x02, "DEST" },
582 /* NULL */
583 { 0x00, NULL }
586 /* SAP Diag Item APPL/APPL4 RFC_TR SID values */
587 static const value_string sapdiag_item_appl_rfc_tr_vals[] = {
588 /* RFC_TR */
589 { 0x00, "RFC_TR_REQ" },
590 { 0x01, "RFC_TR_RET" },
591 { 0x02, "RFC_TR_ERR" },
592 { 0x03, "RFC_TR_RQT" },
593 { 0x04, "RFC_TR_MOR" },
594 { 0x05, "RFC_TR_MOB" },
595 { 0x06, "RFC_TR_RNB" },
596 { 0x07, "RFC_TR_RNT" },
597 { 0x08, "RFC_TR_DIS" },
598 { 0x09, "RFC_TR_CALL" },
599 { 0x0a, "RFC_TR_CALL_END" },
600 { 0x0b, "RFC_TR_RES" },
601 /* NULL */
602 { 0x00, NULL }
605 /* SAP Diag Item APPL/APPL4 DYNT SID values */
606 static const value_string sapdiag_item_appl_dynt_vals[] = {
607 /* DYNT */
608 { 0x01, "DYNT_FOCUS" },
609 { 0x02, "DYNT_ATOM" },
610 { 0x03, "DYNT_EVENT_UNUSED" },
611 { 0x04, "TABLE_ROW_REFERENCE" },
612 { 0x05, "TABLE_ROW_DAT_INPUT_DUMMY" },
613 { 0x06, "TABLE_INPUT_HEADER" },
614 { 0x07, "TABLE_OUTPUT_HEADER" },
615 { 0x08, "TABLE_ROW_DATA_INPUT" },
616 { 0x09, "TABLE_ROW_DATA_OUTPUT" },
617 { 0x0a, "DYNT_NOFOCUS" },
618 { 0x0b, "DYNT_FOCUS_1" },
619 { 0x0c, "TABLE_ROW_REFERENCE_1" },
620 { 0x0d, "TABLE_FIELD_NAMES" },
621 { 0x0e, "TABLE_HEADER" },
622 { 0x0f, "DYNT_TABSTRIP_HEADER" },
623 { 0x10, "DYNT_TABSTRIP_BUTTONS" },
624 { 0x11, "TABLE_ROW_REFERENCE_2" },
625 { 0x12, "DYNT_CONTROL_FOCUS" },
626 { 0x13, "TABLE_FIELD_XMLPROP" },
627 { 0x14, "DYNT_SPLITTER_HEADER" },
628 { 0x15, "DYNT_TC_COLUMN_TITLE_XMLP" },
629 { 0x16, "DYNT_TC_ROW_SELECTOR_NAME" },
630 { 0x17, "DYNT_FOCUS_FRAME" },
631 /* NULL */
632 { 0x00, NULL }
635 /* SAP Diag Item APPL/APPL4 CONTAINER SID values */
636 static const value_string sapdiag_item_appl_container_vals[] = {
637 /* CONTAINER */
638 { 0x01, "RESET" },
639 { 0x02, "DEFAULT" },
640 { 0x03, "SUBSCREEN" },
641 { 0x04, "LOOP" },
642 { 0x05, "TABLE" },
643 { 0x06, "NAME" },
644 { 0x08, "TABSTRIP" },
645 { 0x09, "TABSTRIP_PAGE" },
646 { 0x0a, "CONTROL" },
647 { 0x0c, "XMLPROP" },
648 { 0x0d, "SPLITTER" },
649 { 0x0e, "SPLITTER_CELL" },
650 /* NULL */
651 { 0x00, NULL }
654 /* SAP Diag Item APPL/APPL4 MNUENTRY SID values */
655 static const value_string sapdiag_item_appl_mnuentry_vals[] = {
656 /* MNUENTRY */
657 { 0x01, "MENU_ACT" },
658 { 0x02, "MENU_MNU" },
659 { 0x03, "MENU_PFK" },
660 { 0x04, "MENU_KYB" },
661 /* NULL */
662 { 0x00, NULL }
665 /* SAP Diag Item APPL/APPL4 VARINFO SID values */
666 static const value_string sapdiag_item_appl_varinfo_vals[] = {
667 /* VARINFO */
668 { 0x01, "MESTYPE" },
669 { 0x02, "SCROLL_INFOS" },
670 { 0x03, "MESTYPE2" },
671 { 0x04, "OKCODE" },
672 { 0x05, "CONTAINER" },
673 { 0x06, "SCROLL_INFOS2" },
674 { 0x07, "AREASIZE" },
675 { 0x08, "AREA_PIXELSIZE" },
676 { 0x09, "SESSION_TITLE" },
677 { 0x0a, "SESSION_ICON" },
678 { 0x0b, "LIST_CELL_TEXT" },
679 { 0x0c, "CONTAINER_LOOP" },
680 { 0x0d, "LIST_FOCUS" },
681 { 0x0e, "MAINAREA_PIXELSIZE" },
682 { 0x0f, "SERVICE_REQUEST" },
683 /* NULL */
684 { 0x00, NULL }
687 /* SAP Diag Item APPL/APPL4 CONTROl SID values */
688 static const value_string sapdiag_item_appl_control_vals[] = {
689 /* CONTROL */
690 { 0x01, "CONTROL_PROPERTIES" },
691 /* NULL */
692 { 0x00, NULL }
695 /* SAP Diag Item APPL/APPL4 UI_EVENT SID values */
696 static const value_string sapdiag_item_appl_ui_event_vals[] = {
697 /* UI_EVENT */
698 { 0x01, "UI_EVENT_SOURCE" },
699 /* NULL */
700 { 0x00, NULL }
703 /* SAP Diag Item APPL/APPL4 ACC_LIST SID values */
704 static const value_string sapdiag_item_appl_acc_list_vals[] = {
705 /* ACC_LIST */
706 { 0x01, "ACC_LIST_INFO4FIELD" },
707 { 0x02, "ACC_LIST_CONTAINER" },
708 /* NULL */
709 { 0x00, NULL }
712 /* SAP Diag Item APPL/APPL4 RCUI SID values */
713 static const value_string sapdiag_item_appl_rcui_vals[] = {
714 /* RCUI */
715 { 0x01, "RCUI_STREAM" },
716 { 0x02, "RCUI_SYSTEM_ERROR" },
717 { 0x03, "RCUI_SPAGPA" },
718 { 0x04, "RCUI_MEMORYID" },
719 { 0x05, "RCUI_TXOPTION" },
720 { 0x06, "RCUI_VALUE" },
721 { 0x07, "RCUI_COMMAND" },
722 { 0x08, "RCUI_BDCMSG" },
723 { 0x09, "RCUI_CONNECT_DATA" },
724 /* NULL */
725 { 0x00, NULL }
728 /* SAP Diag Item APPL/APPL4 GUI_PACKET SID values */
729 static const value_string sapdiag_item_appl_gui_packet_vals[] = {
730 /* GUI_PACKET */
731 { 0x01, "GUI_PACKET_STATE" },
732 { 0x02, "GUI_PACKET_DATA" },
733 /* NULL */
734 { 0x00, NULL }
737 /* SAP Diag Dynt Atom Etype values */
738 static const value_string sapdiag_item_dynt_atom_item_etype_vals[] = {
739 { 101, "DIAG_DGOTYP_EFIELD" },
740 { 102, "DIAG_DGOTYP_OFIELD" },
741 { 103, "DIAG_DGOTYP_KEYWORD" },
742 { 104, "DIAG_DGOTYP_CHECKBUTTON_4" },
743 { 105, "DIAG_DGOTYP_RADIOBUTTON_0" },
744 { 106, "DIAG_DGOTYP_PUSHBUTTON_3" },
745 { 107, "DIAG_DGOTYP_FRAME_3" },
746 { 108, "DIAG_DGOTYP_LOOP_6" },
747 { 109, "DIAG_DGOTYP_SUBSCREEN" },
748 /* No value for 110? */
749 { 111, "DIAG_DGOTYP_PROPERTY" },
750 { 112, "DIAG_DGOTYP_ICON_0" },
751 { 113, "DIAG_DGOTYP_PUSHBUTTON_1" },
752 { 114, "DIAG_DGOTYP_FNAME" },
753 { 115, "DIAG_DGOTYP_PUSHBUTTON_2" },
754 { 116, "DIAG_DGOTYP_TABSTRIP_BUTTON" },
755 { 117, "DIAG_DGOTYP_COMBOBOX" },
756 { 118, "DIAG_DGOTYP_CHECKBUTTON_1" },
757 { 119, "DIAG_DGOTYP_RADIOBUTTON_1" },
758 { 120, "DIAG_DGOTYP_XMLPROP" },
759 { 121, "DIAG_DGOTYP_EFIELD_1" },
760 { 122, "DIAG_DGOTYP_OFIELD_1" },
761 { 123, "DIAG_DGOTYP_KEYWORD_1_1" },
762 { 124, "DIAG_DGOTYP_CHECKBUTTON_2" },
763 { 125, "DIAG_DGOTYP_RADIOBUTTON__0" },
764 { 126, "DIAG_DGOTYP_COMBOBOX_1" },
765 { 127, "DIAG_DGOTYP_FRAME_1" },
766 { 128, "DIAG_DGOTYP_CHECKBUTTON_3" },
767 { 129, "DIAG_DGOTYP_RADIOBUTTON_3" },
768 { 130, "DIAG_DGOTYP_EFIELD_2" },
769 { 131, "DIAG_DGOTYP_OFIELD_2" },
770 { 132, "DIAG_DGOTYP_KEYWORD_2" },
771 /* NULL */
772 { 0, NULL }
775 /* SAP Diag UI Event Source Event Type Values */
776 static const value_string sapdiag_item_ui_event_event_type_vals[] = {
777 { 0x01, "SELECT" },
778 { 0x02, "HE" },
779 { 0x03, "VALUEHELP" },
780 { 0x06, "RESIZE" },
781 { 0x07, "FUNCTIONKEY" },
782 { 0x08, "SCROLL" },
783 { 0x09, "BUTTONPRESSED" },
784 { 0x0a, "VALUECHANGED" },
785 { 0x0b, "STATECHANGED" },
786 { 0x0c, "NAVIGATION" },
787 /* NULL */
788 { 0x00, NULL }
791 static const value_string sapdiag_item_ui_event_control_type_vals[] = {
792 { 0x00, "NONE" },
793 { 0x01, "FIELD" },
794 { 0x02, "RADIOBUTTON" },
795 { 0x03, "CHECKBUTTON" },
796 { 0x04, "MENUBUTTON" },
797 { 0x05, "TOOLBARBUTTON" },
798 { 0x06, "STANDARDTOOLBARBUTTON" },
799 { 0x07, "PUSHBUTTON" },
800 { 0x08, "TABLEVIEW" },
801 { 0x09, "TABSTRIP" },
802 { 0x0a, "DYNPRO" },
803 { 0x0b, "CUSTOM_CONTROL" },
804 { 0x0d, "FRAME" },
805 { 0x0e, "TABLEVIEW_COLSEL_BUTTON" },
806 { 0x0f, "TABLEVIEW_ROWSEL_BUTTON" },
807 { 0x10, "TABLEVIEW_CELL" },
808 { 0x11, "CONTEXTMENU" },
809 { 0x12, "SPLITTER" },
810 { 0x13, "MESSAGE" },
811 { 0x14, "OKCODE" },
812 { 0x15, "ACC_CONTAINER" },
813 /* NULL */
814 { 0x00, NULL }
817 static const value_string sapdiag_item_ui_event_navigation_data_vals[] = {
818 { 0x01, "TAB" },
819 { 0x02, "TAB_BACK" },
820 { 0x03, "JUMP_OVER" },
821 { 0x04, "JUMP_OVER_BACK" },
822 { 0x05, "JUMP_OUT" },
823 { 0x06, "JUMP_OUT_BACK" },
824 { 0x07, "JUMP_SECTION" },
825 { 0x08, "JUMP_SECTION_BACK" },
826 { 0x09, "FIRST_FIELD" },
827 { 0x0a, "LAST_FIELD" },
828 /* NULL */
829 { 0x00, NULL }
832 static const value_string sapdiag_item_control_properties_id_vals[] = {
833 { 0x01, "CONTROL_AREA" },
834 { 0x02, "CONTROL_ID" },
835 { 0x03, "CONTROL_VISIBLE" },
836 { 0x04, "CONTROL_ROW" },
837 { 0x05, "CONTROL_COLUMN" },
838 { 0x06, "CONTROL_ROWS" },
839 { 0x07, "CONTROL_COLUMNS" },
840 /* NULL */
841 { 0x00, NULL }
844 /* SAP Diag Dynt Atom Attr flags */
845 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_PROTECTED 0x01
846 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE 0x02
847 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_INTENSIFY 0x04
848 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_JUSTRIGHT 0x08
849 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_MATCHCODE 0x10
850 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_PROPFONT 0x20
851 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_YES3D 0x40
852 #define SAPDIAG_ATOM_ATTR_DIAG_BSD_COMBOSTYLE 0x80
854 /* SAP Diag UI Event Source flags */
855 #define SAPDIAG_UI_EVENT_VALID_FLAG_MENU_POS 0x01
856 #define SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS 0x02
857 #define SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA 0x04
858 #define SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA 0x08
860 static int proto_sapdiag;
862 static int hf_sapdiag_dp;
863 static int hf_sapdiag_header;
864 static int hf_sapdiag_payload;
866 /* Diag Header */
867 static int hf_sapdiag_mode;
868 static int hf_sapdiag_com_flag;
869 static int hf_sapdiag_com_flag_TERM_EOS;
870 static int hf_sapdiag_com_flag_TERM_EOC;
871 static int hf_sapdiag_com_flag_TERM_NOP;
872 static int hf_sapdiag_com_flag_TERM_EOP;
873 static int hf_sapdiag_com_flag_TERM_INI;
874 static int hf_sapdiag_com_flag_TERM_CAS;
875 static int hf_sapdiag_com_flag_TERM_NNM;
876 static int hf_sapdiag_com_flag_TERM_GRA;
878 static int hf_sapdiag_mode_stat;
879 static int hf_sapdiag_err_no;
880 static int hf_sapdiag_msg_type;
881 static int hf_sapdiag_msg_info;
882 static int hf_sapdiag_msg_rc;
883 static int hf_sapdiag_compress;
885 /* Error messages */
886 static int hf_sapdiag_error_message;
888 /* Compression header */
889 static int hf_sapdiag_compress_header;
890 static int hf_sapdiag_uncomplength;
891 static int hf_sapdiag_algorithm;
892 static int hf_sapdiag_magic;
893 static int hf_sapdiag_special;
895 /* Message Data */
896 static int hf_sapdiag_item;
897 static int hf_sapdiag_item_type;
898 static int hf_sapdiag_item_id;
899 static int hf_sapdiag_item_sid;
900 static int hf_sapdiag_item_length_short;
901 static int hf_sapdiag_item_length_long;
902 static int hf_sapdiag_item_value;
904 /* Message DP Header */
905 static int hf_sapdiag_dp_request_id;
906 static int hf_sapdiag_dp_retcode;
907 static int hf_sapdiag_dp_sender_id;
908 static int hf_sapdiag_dp_action_type;
909 static int hf_sapdiag_dp_req_info;
911 static int hf_sapdiag_dp_req_info_LOGIN;
912 static int hf_sapdiag_dp_req_info_LOGOFF;
913 static int hf_sapdiag_dp_req_info_SHUTDOWN;
914 static int hf_sapdiag_dp_req_info_GRAPHIC_TM;
915 static int hf_sapdiag_dp_req_info_ALPHA_TM;
916 static int hf_sapdiag_dp_req_info_ERROR_FROM_APPC;
917 static int hf_sapdiag_dp_req_info_CANCELMODE;
918 static int hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF;
919 static int hf_sapdiag_dp_req_info_MSG_WITH_OH;
920 static int hf_sapdiag_dp_req_info_BUFFER_REFRESH;
921 static int hf_sapdiag_dp_req_info_BTC_SCHEDULER;
922 static int hf_sapdiag_dp_req_info_APPC_SERVER_DOWN;
923 static int hf_sapdiag_dp_req_info_MS_ERROR;
924 static int hf_sapdiag_dp_req_info_SET_SYSTEM_USER;
925 static int hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ;
926 static int hf_sapdiag_dp_req_info_DP_AUTO_ABAP;
927 static int hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO;
928 static int hf_sapdiag_dp_req_info_DP_ADMIN;
929 static int hf_sapdiag_dp_req_info_DP_SPOOL_ALRM;
930 static int hf_sapdiag_dp_req_info_DP_HAND_SHAKE;
931 static int hf_sapdiag_dp_req_info_DP_CANCEL_PRIV;
932 static int hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT;
933 static int hf_sapdiag_dp_req_info_DP_NEW_MODE;
934 static int hf_sapdiag_dp_req_info_DP_SOFT_CANCEL;
935 static int hf_sapdiag_dp_req_info_DP_TM_INPUT;
936 static int hf_sapdiag_dp_req_info_DP_TM_OUTPUT;
937 static int hf_sapdiag_dp_req_info_DP_ASYNC_RFC;
938 static int hf_sapdiag_dp_req_info_DP_ICM_EVENT;
939 static int hf_sapdiag_dp_req_info_DP_AUTO_TH;
940 static int hf_sapdiag_dp_req_info_DP_RFC_CANCEL;
941 static int hf_sapdiag_dp_req_info_DP_MS_ADM;
943 static int hf_sapdiag_dp_tid;
944 static int hf_sapdiag_dp_uid;
945 static int hf_sapdiag_dp_mode;
946 static int hf_sapdiag_dp_wp_id;
947 static int hf_sapdiag_dp_wp_ca_blk;
948 static int hf_sapdiag_dp_appc_ca_blk;
949 static int hf_sapdiag_dp_len; /* Length of the SAP Diag Items in the login */
950 static int hf_sapdiag_dp_new_stat;
951 static int hf_sapdiag_dp_rq_id;
952 static int hf_sapdiag_dp_terminal;
954 /* Dynt Atom */
955 static int hf_sapdiag_item_dynt_atom;
956 static int hf_sapdiag_item_dynt_atom_item;
957 static int hf_sapdiag_item_dynt_atom_item_etype;
958 static int hf_sapdiag_item_dynt_atom_item_attr;
959 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE;
960 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D;
961 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT;
962 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE;
963 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT;
964 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY;
965 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE;
966 static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED;
968 /* Control properties */
969 static int hf_sapdiag_item_control_properties_id;
970 static int hf_sapdiag_item_control_properties_value;
972 /* UI Event Source */
973 static int hf_sapdiag_item_ui_event_event_type;
974 static int hf_sapdiag_item_ui_event_control_type;
975 static int hf_sapdiag_item_ui_event_valid;
976 static int hf_sapdiag_item_ui_event_valid_MENU_POS;
977 static int hf_sapdiag_item_ui_event_valid_CONTROL_POS;
978 static int hf_sapdiag_item_ui_event_valid_NAVIGATION_DATA;
979 static int hf_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA;
980 static int hf_sapdiag_item_ui_event_control_row;
981 static int hf_sapdiag_item_ui_event_control_col;
982 static int hf_sapdiag_item_ui_event_data;
983 static int hf_sapdiag_item_ui_event_navigation_data;
984 static int hf_sapdiag_item_ui_event_container_nrs;
985 static int hf_sapdiag_item_ui_event_container;
987 /* Menu Entries */
988 static int hf_sapdiag_item_menu_entry;
990 /* Diag Support Bits */
991 static int hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR;
992 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS;
993 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION;
994 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT;
995 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT;
996 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC;
997 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED;
998 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE;
999 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE;
1000 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE;
1001 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1;
1002 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1;
1003 static int hf_SAPDIAG_SUPPORT_BIT_UPPERCASE;
1004 static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY;
1005 static int hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE;
1006 static int hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG;
1007 static int hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT;
1008 static int hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE;
1009 static int hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT;
1010 static int hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS;
1011 static int hf_SAPDIAG_SUPPORT_BIT_FULL_MENU;
1012 static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES;
1013 static int hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE;
1014 static int hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS;
1015 static int hf_SAPDIAG_SUPPORT_BIT_APPL_MNU;
1016 static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO;
1017 static int hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1;
1018 static int hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB;
1019 static int hf_SAPDIAG_SUPPORT_BIT_GUIAPI;
1020 static int hf_SAPDIAG_SUPPORT_BIT_NOGRAPH;
1021 static int hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES;
1022 static int hf_SAPDIAG_SUPPORT_BIT_NORABAX;
1023 static int hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG;
1024 static int hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT;
1025 static int hf_SAPDIAG_SUPPORT_BIT_NORFC;
1026 static int hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT;
1027 static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS;
1028 static int hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT;
1029 static int hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS;
1030 static int hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK;
1031 static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2;
1032 static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE;
1033 static int hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE;
1034 static int hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE;
1035 static int hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2;
1036 static int hf_SAPDIAG_SUPPORT_BIT_TABSTRIP;
1037 static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1;
1038 static int hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS;
1039 static int hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES;
1040 static int hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST;
1041 static int hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER;
1042 static int hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER;
1043 static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER;
1044 static int hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED;
1045 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED;
1046 static int hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO;
1047 static int hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER;
1048 static int hf_SAPDIAG_SUPPORT_BIT_COMBOBOX;
1049 static int hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED;
1050 static int hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE;
1051 static int hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE;
1052 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS;
1053 static int hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS;
1054 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID;
1055 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT;
1056 static int hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2;
1057 static int hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD;
1058 static int hf_SAPDIAG_SUPPORT_BIT_WIN16;
1059 static int hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU;
1060 static int hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE;
1061 static int hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION;
1062 static int hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER;
1063 static int hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD;
1064 static int hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG;
1065 static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_1;
1066 static int hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2;
1067 static int hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID;
1068 static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER;
1069 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID;
1070 static int hf_SAPDIAG_SUPPORT_BIT_NOTGUI;
1071 static int hf_SAPDIAG_SUPPORT_BIT_WAN;
1072 static int hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS;
1073 static int hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE;
1074 static int hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS;
1075 static int hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS;
1076 static int hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND;
1077 static int hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE;
1078 static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID;
1079 static int hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB;
1080 static int hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS;
1081 static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_2;
1082 static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_3;
1083 static int hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES;
1084 static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_4;
1085 static int hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD;
1086 static int hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE;
1087 static int hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE;
1088 static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_5;
1089 static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2;
1090 static int hf_SAPDIAG_SUPPORT_BIT_ITS;
1091 static int hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS;
1092 static int hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP;
1093 static int hf_SAPDIAG_SUPPORT_BIT_COOKIE;
1094 static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_6;
1095 static int hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE;
1096 static int hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE;
1097 static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS;
1098 static int hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY;
1099 static int hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE;
1100 static int hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS;
1101 static int hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR;
1102 static int hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT;
1103 static int hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH;
1104 static int hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE;
1105 static int hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN;
1106 static int hf_SAPDIAG_SUPPORT_BIT_WORKPLACE;
1107 static int hf_SAPDIAG_SUPPORT_BIT_PRINTDATA;
1108 static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2;
1109 static int hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION;
1110 static int hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE;
1111 static int hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT;
1112 static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER;
1113 static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO;
1114 static int hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT;
1115 static int hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT;
1116 static int hf_SAPDIAG_SUPPORT_BIT_WEBGUI;
1117 static int hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE;
1118 static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST;
1119 static int hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2;
1120 static int hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1;
1121 static int hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING;
1122 static int hf_SAPDIAG_SUPPORT_BIT_SLC;
1123 static int hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY;
1124 static int hf_SAPDIAG_SUPPORT_BIT_ECATT;
1125 static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3;
1126 static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8;
1127 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME;
1128 static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST;
1129 static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE;
1130 static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE;
1131 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP;
1132 static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4;
1133 static int hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL;
1134 static int hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE;
1135 static int hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID;
1136 static int hf_SAPDIAG_SUPPORT_BIT_GUI_THEME;
1137 static int hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW;
1138 static int hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1;
1139 static int hf_SAPDIAG_SUPPORT_BIT_SPLITTER;
1140 static int hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY;
1141 static int hf_SAPDIAG_SUPPORT_BIT_ACC_LIST;
1142 static int hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO;
1143 static int hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM;
1144 static int hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS;
1145 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1;
1146 static int hf_SAPDIAG_SUPPORT_BIT_FRAME_1;
1147 static int hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI;
1148 static int hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS;
1149 static int hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT;
1150 static int hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP;
1151 static int hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2;
1152 static int hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3;
1153 static int hf_SAPDIAG_SUPPORT_BIT_CELLINFO;
1154 static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2;
1155 static int hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT;
1156 static int hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN;
1157 static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS;
1158 static int hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI;
1159 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2;
1160 static int hf_SAPDIAG_SUPPORT_BIT_RCUI;
1161 static int hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE;
1162 static int hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE;
1163 static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION;
1164 static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP;
1165 static int hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2;
1166 static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3;
1167 static int hf_SAPDIAG_SUPPORT_BIT_SBA2;
1168 static int hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE;
1169 static int hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2;
1170 static int hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE;
1171 static int hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET;
1172 static int hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER;
1173 static int hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION;
1174 static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST;
1175 static int hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME;
1176 static int hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN;
1177 static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1;
1178 static int hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS;
1179 static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO;
1180 static int hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT;
1181 static int hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH;
1182 static int hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT;
1183 static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3;
1184 static int hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR;
1185 static int hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE;
1186 static int hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS;
1187 static int hf_SAPDIAG_SUPPORT_BIT_IDA_ALV;
1188 static int hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS;
1189 static int hf_SAPDIAG_SUPPORT_BIT_AMC;
1190 static int hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC;
1191 static int hf_SAPDIAG_SUPPORT_BIT_GROUPBOX;
1192 static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON;
1193 static int hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST;
1194 static int hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE;
1195 static int hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE;
1196 static int hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE;
1197 static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID;
1198 static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC;
1199 static int hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS;
1200 static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE;
1201 static int hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3;
1202 static int hf_SAPDIAG_SUPPORT_BIT_NWBC;
1203 static int hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST;
1204 static int hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR;
1205 static int hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE;
1207 static int ett_sapdiag;
1209 /* Expert info */
1210 static expert_field ei_sapdiag_item_unknown;
1211 static expert_field ei_sapdiag_item_partial;
1212 static expert_field ei_sapdiag_item_unknown_length;
1213 static expert_field ei_sapdiag_item_offset_invalid;
1214 static expert_field ei_sapdiag_item_length_invalid;
1215 static expert_field ei_sapdiag_atom_item_unknown;
1216 static expert_field ei_sapdiag_atom_item_partial;
1217 static expert_field ei_sapdiag_atom_item_malformed;
1218 static expert_field ei_sapdiag_dynt_focus_more_cont_ids;
1219 static expert_field ei_sapdiag_password_field;
1221 /* Global RFC dissection preference */
1222 static bool global_sapdiag_rfc_dissection = true;
1224 /* Global SNC dissection preference */
1225 static bool global_sapdiag_snc_dissection = true;
1227 /* Global port preference */
1228 static range_t *global_sapdiag_port_range;
1230 /* Global highlight preference */
1231 static bool global_sapdiag_highlight_items = true;
1233 /* Protocol handle */
1234 static dissector_handle_t sapdiag_handle;
1236 void proto_register_sapdiag(void);
1237 void proto_reg_handoff_sapdiag(void);
1240 static void
1241 dissect_sapdiag_dp_req_info(tvbuff_t *tvb, proto_tree *tree, uint32_t offset){
1242 proto_item *ri = NULL;
1243 proto_tree *req_info_tree;
1245 ri = proto_tree_add_item(tree, hf_sapdiag_dp_req_info, tvb, offset, 4, ENC_BIG_ENDIAN);
1246 req_info_tree = proto_item_add_subtree(ri, ett_sapdiag);
1248 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_LOGIN, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x08 */
1249 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_LOGOFF, tvb, offset, 1, ENC_BIG_ENDIAN);
1250 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_SHUTDOWN, tvb, offset, 1, ENC_BIG_ENDIAN);
1251 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_GRAPHIC_TM, tvb, offset, 1, ENC_BIG_ENDIAN);
1252 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_ALPHA_TM, tvb, offset, 1, ENC_BIG_ENDIAN);
1253 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_ERROR_FROM_APPC, tvb, offset, 1, ENC_BIG_ENDIAN);
1254 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_CANCELMODE, tvb, offset, 1, ENC_BIG_ENDIAN);
1255 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF, tvb, offset, 1, ENC_BIG_ENDIAN);
1256 offset++;
1258 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_MSG_WITH_OH, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x09 */
1259 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_BUFFER_REFRESH, tvb, offset, 1, ENC_BIG_ENDIAN);
1260 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_BTC_SCHEDULER, tvb, offset, 1, ENC_BIG_ENDIAN);
1261 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_APPC_SERVER_DOWN, tvb, offset, 1, ENC_BIG_ENDIAN);
1262 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_MS_ERROR, tvb, offset, 1, ENC_BIG_ENDIAN);
1263 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_SET_SYSTEM_USER, tvb, offset, 1, ENC_BIG_ENDIAN);
1264 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ, tvb, offset, 1, ENC_BIG_ENDIAN);
1265 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_AUTO_ABAP, tvb, offset, 1, ENC_BIG_ENDIAN);
1266 offset++;
1268 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x0a */
1269 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_ADMIN, tvb, offset, 1, ENC_BIG_ENDIAN);
1270 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_SPOOL_ALRM, tvb, offset, 1, ENC_BIG_ENDIAN);
1271 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_HAND_SHAKE, tvb, offset, 1, ENC_BIG_ENDIAN);
1272 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_CANCEL_PRIV, tvb, offset, 1, ENC_BIG_ENDIAN);
1273 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT, tvb, offset, 1, ENC_BIG_ENDIAN);
1274 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_NEW_MODE, tvb, offset, 1, ENC_BIG_ENDIAN);
1275 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_SOFT_CANCEL, tvb, offset, 1, ENC_BIG_ENDIAN);
1276 offset++;
1278 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_TM_INPUT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x0b */
1279 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_TM_OUTPUT, tvb, offset, 1, ENC_BIG_ENDIAN);
1280 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_ASYNC_RFC, tvb, offset, 1, ENC_BIG_ENDIAN);
1281 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_ICM_EVENT, tvb, offset, 1, ENC_BIG_ENDIAN);
1282 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_AUTO_TH, tvb, offset, 1, ENC_BIG_ENDIAN);
1283 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_RFC_CANCEL, tvb, offset, 1, ENC_BIG_ENDIAN);
1284 proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_MS_ADM, tvb, offset, 1, ENC_BIG_ENDIAN);
1287 static void
1288 dissect_sapdiag_dp(tvbuff_t *tvb, proto_tree *tree, uint32_t offset){
1289 proto_item *dp = NULL;
1290 proto_tree *dp_tree;
1292 dp = proto_tree_add_item(tree, hf_sapdiag_dp, tvb, offset, 200, ENC_NA);
1293 dp_tree = proto_item_add_subtree(dp, ett_sapdiag);
1295 proto_tree_add_item(dp_tree, hf_sapdiag_dp_request_id, tvb, offset, 4, ENC_BIG_ENDIAN); /* 0x00 */
1296 offset+=4;
1297 proto_tree_add_item(dp_tree, hf_sapdiag_dp_retcode, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x04 */
1298 offset++;
1299 proto_tree_add_item(dp_tree, hf_sapdiag_dp_sender_id, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x05 */
1300 offset++;
1301 proto_tree_add_item(dp_tree, hf_sapdiag_dp_action_type, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x06 */
1302 offset++;
1303 dissect_sapdiag_dp_req_info(tvb, dp_tree, offset); /* Request info flags */ /* 0x07 */
1304 offset+=4;
1305 proto_tree_add_item(dp_tree, hf_sapdiag_dp_tid, tvb, offset, 4, ENC_BIG_ENDIAN); /* 0x0b */
1306 offset+=4;
1307 proto_tree_add_item(dp_tree, hf_sapdiag_dp_uid, tvb, offset, 2, ENC_BIG_ENDIAN); /* 0x0f */
1308 offset+=2;
1309 proto_tree_add_item(dp_tree, hf_sapdiag_dp_mode, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x11 */
1310 offset++;
1311 proto_tree_add_item(dp_tree, hf_sapdiag_dp_wp_id, tvb, offset, 4, ENC_BIG_ENDIAN); /* 0x12 */
1312 offset+=4;
1313 proto_tree_add_item(dp_tree, hf_sapdiag_dp_wp_ca_blk, tvb, offset, 4, ENC_BIG_ENDIAN); /* 0x16 */
1314 offset+=4;
1315 proto_tree_add_item(dp_tree, hf_sapdiag_dp_appc_ca_blk, tvb, offset, 4, ENC_BIG_ENDIAN); /* 0x1a */
1316 offset+=4;
1317 proto_tree_add_item(dp_tree, hf_sapdiag_dp_len, tvb, offset, 4, ENC_LITTLE_ENDIAN); /* 0x1e */
1318 offset+=4;
1319 proto_tree_add_item(dp_tree, hf_sapdiag_dp_new_stat, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0x22 */
1320 offset++;
1321 offset+=4; /* Unknown 4 bytes */ /* 0x23 */
1322 proto_tree_add_item(dp_tree, hf_sapdiag_dp_rq_id, tvb, offset, 2, ENC_BIG_ENDIAN); /* 0x27 */
1323 offset+=2;
1324 offset+=40; /* Unknown 40 bytes (0x20 * 40) */ /* 0x29 */
1325 proto_tree_add_item(dp_tree, hf_sapdiag_dp_terminal, tvb, offset, 15, ENC_ASCII|ENC_NA); /* 0x51 */
1328 static void
1329 dissect_sapdiag_support_bits(tvbuff_t *tvb, proto_tree *tree, uint32_t offset){
1331 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR, tvb, offset, 1, ENC_BIG_ENDIAN); /* 0 */
1332 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 1 */
1333 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION, tvb, offset, 1, ENC_BIG_ENDIAN); /* 2 */
1334 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 3 */
1335 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 4 */
1336 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC, tvb, offset, 1, ENC_BIG_ENDIAN); /* 5 */
1337 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED, tvb, offset, 1, ENC_BIG_ENDIAN); /* 6 */
1338 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 7 */
1339 offset+=1;
1340 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 8 */
1341 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 9 */
1342 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 10 */
1343 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 11 */
1344 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UPPERCASE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 12 */
1345 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY, tvb, offset, 1, ENC_BIG_ENDIAN); /* 13 */
1346 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 14 */
1347 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG, tvb, offset, 1, ENC_BIG_ENDIAN); /* 15 */
1348 offset+=1;
1349 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 16 */
1350 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 17 */
1351 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 18 */
1352 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 19 */
1353 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FULL_MENU, tvb, offset, 1, ENC_BIG_ENDIAN); /* 20 */
1354 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES, tvb, offset, 1, ENC_BIG_ENDIAN); /* 21 */
1355 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 22 */
1356 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 23 */
1357 offset+=1;
1358 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_APPL_MNU, tvb, offset, 1, ENC_BIG_ENDIAN); /* 24 */
1359 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO, tvb, offset, 1, ENC_BIG_ENDIAN); /* 25 */
1360 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 26 */
1361 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB, tvb, offset, 1, ENC_BIG_ENDIAN); /* 27 */
1362 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUIAPI, tvb, offset, 1, ENC_BIG_ENDIAN); /* 28 */
1363 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOGRAPH, tvb, offset, 1, ENC_BIG_ENDIAN); /* 29 */
1364 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES, tvb, offset, 1, ENC_BIG_ENDIAN); /* 30 */
1365 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NORABAX, tvb, offset, 1, ENC_BIG_ENDIAN); /* 31 */
1366 offset+=1;
1367 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG, tvb, offset, 1, ENC_BIG_ENDIAN); /* 32 */
1368 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 33 */
1369 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NORFC, tvb, offset, 1, ENC_BIG_ENDIAN); /* 34 */
1370 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 35 */
1371 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 36 */
1372 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 37 */
1373 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 38 */
1374 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK, tvb, offset, 1, ENC_BIG_ENDIAN); /* 39 */
1375 offset+=1;
1376 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 40 */
1377 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 41 */
1378 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 42 */
1379 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 43 */
1380 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 44 */
1381 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSTRIP, tvb, offset, 1, ENC_BIG_ENDIAN); /* 45 */
1382 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 46 (Unknown support bit) */
1383 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 47 */
1384 offset+=1;
1385 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES, tvb, offset, 1, ENC_BIG_ENDIAN); /* 48 */
1386 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST, tvb, offset, 1, ENC_BIG_ENDIAN); /* 49 */
1387 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 50 */
1388 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 51 */
1389 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 52 */
1390 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED, tvb, offset, 1, ENC_BIG_ENDIAN); /* 53 */
1391 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED, tvb, offset, 1, ENC_BIG_ENDIAN); /* 54 */
1392 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO, tvb, offset, 1, ENC_BIG_ENDIAN); /* 55 */
1393 offset+=1;
1394 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 56 */
1395 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_COMBOBOX, tvb, offset, 1, ENC_BIG_ENDIAN); /* 57 */
1396 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED, tvb, offset, 1, ENC_BIG_ENDIAN); /* 58 */
1397 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 59 */
1398 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 60 */
1399 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 61 */
1400 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 62 */
1401 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID, tvb, offset, 1, ENC_BIG_ENDIAN); /* 63 */
1402 offset+=1;
1403 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 64 */
1404 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 65 */
1405 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD, tvb, offset, 1, ENC_BIG_ENDIAN); /* 66 */
1406 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WIN16, tvb, offset, 1, ENC_BIG_ENDIAN); /* 67 */
1407 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU, tvb, offset, 1, ENC_BIG_ENDIAN); /* 68 */
1408 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 69 */
1409 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION, tvb, offset, 1, ENC_BIG_ENDIAN); /* 70 */
1410 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 71 */
1411 offset+=1;
1412 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD, tvb, offset, 1, ENC_BIG_ENDIAN); /* 72 */
1413 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG, tvb, offset, 1, ENC_BIG_ENDIAN); /* 73 */
1414 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 74 */
1415 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 75 */
1416 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID, tvb, offset, 1, ENC_BIG_ENDIAN); /* 76 */
1417 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 77 */
1418 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID, tvb, offset, 1, ENC_BIG_ENDIAN); /* 78 */
1419 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOTGUI, tvb, offset, 1, ENC_BIG_ENDIAN); /* 79 */
1420 offset+=1;
1421 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WAN, tvb, offset, 1, ENC_BIG_ENDIAN); /* 80 */
1422 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 81 */
1423 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 82 */
1424 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 83 */
1425 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 84 */
1426 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND, tvb, offset, 1, ENC_BIG_ENDIAN); /* 85 */
1427 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 86 */
1428 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID, tvb, offset, 1, ENC_BIG_ENDIAN); /* 87 */
1429 offset+=1;
1430 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB, tvb, offset, 1, ENC_BIG_ENDIAN); /* 88 */
1431 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 89 */
1432 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 90 */
1433 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_3, tvb, offset, 1, ENC_BIG_ENDIAN); /* 91 */
1434 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES, tvb, offset, 1, ENC_BIG_ENDIAN); /* 92 */
1435 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_4, tvb, offset, 1, ENC_BIG_ENDIAN); /* 93 */
1436 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD, tvb, offset, 1, ENC_BIG_ENDIAN); /* 94 */
1437 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 95 */
1438 offset+=1;
1439 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 96 */
1440 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_5, tvb, offset, 1, ENC_BIG_ENDIAN); /* 97 */
1441 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 98 */
1442 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ITS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 99 */
1443 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 100 */
1444 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP, tvb, offset, 1, ENC_BIG_ENDIAN); /* 101 */
1445 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_COOKIE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 102 */
1446 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_6, tvb, offset, 1, ENC_BIG_ENDIAN); /* 103 */
1447 offset+=1;
1448 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 104 */
1449 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 105 */
1450 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 106 */
1451 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY, tvb, offset, 1, ENC_BIG_ENDIAN); /* 107 */
1452 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 108 */
1453 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 109 */
1454 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR, tvb, offset, 1, ENC_BIG_ENDIAN); /* 110 */
1455 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 111 */
1456 offset+=1;
1457 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH, tvb, offset, 1, ENC_BIG_ENDIAN); /* 112 */
1458 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 113 */
1459 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN, tvb, offset, 1, ENC_BIG_ENDIAN); /* 114 */
1460 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WORKPLACE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 115 */
1461 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PRINTDATA, tvb, offset, 1, ENC_BIG_ENDIAN); /* 116 */
1462 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 117 (Unknown support bit) */
1463 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION, tvb, offset, 1, ENC_BIG_ENDIAN); /* 118 */
1464 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 119 */
1465 offset+=1;
1466 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 120 */
1467 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 121 */
1468 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO, tvb, offset, 1, ENC_BIG_ENDIAN); /* 122 */
1469 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 123 */
1470 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 124 */
1471 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WEBGUI, tvb, offset, 1, ENC_BIG_ENDIAN); /* 125 */
1472 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 126 */
1473 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST, tvb, offset, 1, ENC_BIG_ENDIAN); /* 127 */
1474 offset+=1;
1475 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 128 */
1476 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 129 */
1477 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING, tvb, offset, 1, ENC_BIG_ENDIAN); /* 130 */
1478 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SLC, tvb, offset, 1, ENC_BIG_ENDIAN); /* 131 */
1479 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY, tvb, offset, 1, ENC_BIG_ENDIAN); /* 132 */
1480 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ECATT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 133 */
1481 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3, tvb, offset, 1, ENC_BIG_ENDIAN); /* 134 */
1482 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8, tvb, offset, 1, ENC_BIG_ENDIAN); /* 135 */
1483 offset+=1;
1484 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME, tvb, offset, 1, ENC_BIG_ENDIAN); /* 136 */
1485 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST, tvb, offset, 1, ENC_BIG_ENDIAN); /* 137 */
1486 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 138 */
1487 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 139 */
1488 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP, tvb, offset, 1, ENC_BIG_ENDIAN); /* 140 */
1489 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4, tvb, offset, 1, ENC_BIG_ENDIAN); /* 141 */
1490 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL, tvb, offset, 1, ENC_BIG_ENDIAN); /* 142 */
1491 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 143 */
1492 offset+=1;
1493 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID, tvb, offset, 1, ENC_BIG_ENDIAN); /* 144 */
1494 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_THEME, tvb, offset, 1, ENC_BIG_ENDIAN); /* 145 */
1495 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW, tvb, offset, 1, ENC_BIG_ENDIAN); /* 146 */
1496 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 147 */
1497 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SPLITTER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 148 */
1498 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY, tvb, offset, 1, ENC_BIG_ENDIAN); /* 149 */
1499 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ACC_LIST, tvb, offset, 1, ENC_BIG_ENDIAN); /* 150 */
1500 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO, tvb, offset, 1, ENC_BIG_ENDIAN); /* 151 */
1501 offset+=1;
1502 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM, tvb, offset, 1, ENC_BIG_ENDIAN); /* 152 */
1503 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 153 */
1504 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 154 */
1505 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FRAME_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 155 */
1506 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI, tvb, offset, 1, ENC_BIG_ENDIAN); /* 156 */
1507 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 157 */
1508 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 158 */
1509 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP, tvb, offset, 1, ENC_BIG_ENDIAN); /* 159 */
1510 offset+=1;
1511 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 160 */
1512 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3, tvb, offset, 1, ENC_BIG_ENDIAN); /* 161 */
1513 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CELLINFO, tvb, offset, 1, ENC_BIG_ENDIAN); /* 162 */
1514 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 163 */
1515 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 164 */
1516 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN, tvb, offset, 1, ENC_BIG_ENDIAN); /* 165 */
1517 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 166 */
1518 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI, tvb, offset, 1, ENC_BIG_ENDIAN); /* 167 */
1519 offset+=1;
1520 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 168 */
1521 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RCUI, tvb, offset, 1, ENC_BIG_ENDIAN); /* 169 */
1522 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 170 */
1523 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 171 */
1524 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION, tvb, offset, 1, ENC_BIG_ENDIAN); /* 172 */
1525 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP, tvb, offset, 1, ENC_BIG_ENDIAN); /* 173 */
1526 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 174 */
1527 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3, tvb, offset, 1, ENC_BIG_ENDIAN); /* 175 */
1528 offset+=1;
1529 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SBA2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 176 */
1530 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 177 */
1531 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2, tvb, offset, 1, ENC_BIG_ENDIAN); /* 178 */
1532 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 179 */
1533 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET, tvb, offset, 1, ENC_BIG_ENDIAN); /* 180 */
1534 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER, tvb, offset, 1, ENC_BIG_ENDIAN); /* 181 */
1535 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION, tvb, offset, 1, ENC_BIG_ENDIAN); /* 182 */
1536 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST, tvb, offset, 1, ENC_BIG_ENDIAN); /* 183 */
1537 offset+=1;
1538 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME, tvb, offset, 1, ENC_BIG_ENDIAN); /* 184 */
1539 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN, tvb, offset, 1, ENC_BIG_ENDIAN); /* 185 */
1540 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1, tvb, offset, 1, ENC_BIG_ENDIAN); /* 186 */
1541 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 187 */
1542 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO, tvb, offset, 1, ENC_BIG_ENDIAN); /* 188 */
1543 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 189 */
1544 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH, tvb, offset, 1, ENC_BIG_ENDIAN); /* 190 */
1545 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT, tvb, offset, 1, ENC_BIG_ENDIAN); /* 191 */
1546 offset+=1;
1547 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3, tvb, offset, 1, ENC_BIG_ENDIAN); /* 192 (Unknown support bit) */
1548 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR, tvb, offset, 1, ENC_BIG_ENDIAN); /* 193 */
1549 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 194 */
1550 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 195 */
1551 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_IDA_ALV, tvb, offset, 1, ENC_BIG_ENDIAN); /* 196 */
1552 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 197 */
1553 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AMC, tvb, offset, 1, ENC_BIG_ENDIAN); /* 198 */
1554 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC, tvb, offset, 1, ENC_BIG_ENDIAN); /* 199 */
1555 offset+=1;
1556 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GROUPBOX, tvb, offset, 1, ENC_BIG_ENDIAN); /* 200 */
1557 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON, tvb, offset, 1, ENC_BIG_ENDIAN); /* 201 */
1558 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST, tvb, offset, 1, ENC_BIG_ENDIAN); /* 202 */
1559 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 203 */
1560 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 204 */
1561 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 205 */
1562 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AGI_ID, tvb, offset, 1, ENC_BIG_ENDIAN); /* 206 */
1563 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC, tvb, offset, 1, ENC_BIG_ENDIAN); /* 207 */
1564 offset+=1;
1565 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS, tvb, offset, 1, ENC_BIG_ENDIAN); /* 208 */
1566 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 209 */
1567 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3, tvb, offset, 1, ENC_BIG_ENDIAN); /* 210 */
1568 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NWBC, tvb, offset, 1, ENC_BIG_ENDIAN); /* 211 */
1569 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST, tvb, offset, 1, ENC_BIG_ENDIAN); /* 212 */
1570 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR, tvb, offset, 1, ENC_BIG_ENDIAN); /* 213 */
1571 proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE, tvb, offset, 1, ENC_BIG_ENDIAN); /* 214 */
1574 static void
1575 dissect_sapdiag_rfc_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, uint32_t offset, uint32_t item_length){
1577 tvbuff_t *next_tvb = NULL;
1578 dissector_handle_t rfc_handle;
1580 /* Call the RFC internal dissector.
1581 * TODO: This should be enabled when the RFC dissector is merged as they depend on each other.
1583 if (global_sapdiag_rfc_dissection && false){
1584 rfc_handle = find_dissector("saprfcinternal");
1585 if (rfc_handle){
1586 /* Set the column to not writable so the RFC dissector doesn't override the Diag info */
1587 col_set_writable(pinfo->cinfo, -1, false);
1588 /* Create a new tvb buffer and call the dissector */
1589 next_tvb = tvb_new_subset_length(tvb, offset, item_length);
1590 call_dissector(rfc_handle, next_tvb, pinfo, tree);
1597 static bool
1598 check_length(packet_info *pinfo, proto_tree *tree, uint32_t expected, uint32_t real, const char *name_string){
1599 if (expected != real){
1600 expert_add_info_format(pinfo, tree, &ei_sapdiag_item_length_invalid, "Item %s length is invalid", name_string);
1601 return false;
1602 } else return true;
1606 static uint8_t
1607 add_item_value_uint8(tvbuff_t *tvb, proto_item *item, proto_tree *tree, int hf, uint32_t offset, const char *text){
1608 proto_tree_add_none_format(tree, hf, tvb, offset, 1, "%s: %d", text, tvb_get_uint8(tvb, offset));
1609 proto_item_append_text(item, ", %s=%d", text, tvb_get_uint8(tvb, offset));
1610 return (tvb_get_uint8(tvb, offset));
1614 static uint16_t
1615 add_item_value_uint16(tvbuff_t *tvb, proto_item *item, proto_tree *tree, int hf, uint32_t offset, const char *text){
1616 proto_tree_add_none_format(tree, hf, tvb, offset, 2, "%s: %d", text, tvb_get_ntohs(tvb, offset));
1617 proto_item_append_text(item, ", %s=%d", text, tvb_get_ntohs(tvb, offset));
1618 return (tvb_get_ntohs(tvb, offset));
1622 static uint32_t
1623 add_item_value_uint32(tvbuff_t *tvb, proto_item *item, proto_tree *tree, int hf, uint32_t offset, const char *text){
1624 proto_tree_add_none_format(tree, hf, tvb, offset, 4, "%s: %d", text, tvb_get_ntohl(tvb, offset));
1625 proto_item_append_text(item, ", %s=%d", text, tvb_get_ntohl(tvb, offset));
1626 return (tvb_get_ntohl(tvb, offset));
1630 static void
1631 add_item_value_string(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *tree, int hf, uint32_t offset, uint32_t length, const char *text, int show_in_tree){
1632 uint8_t *string = tvb_get_string_enc(pinfo->pool, tvb, offset, length, ENC_ASCII);
1633 proto_tree_add_none_format(tree, hf, tvb, offset, length, "%s: %s", text, string);
1634 if (show_in_tree) proto_item_append_text(item, ", %s=%s", text, string);
1638 static uint32_t
1639 add_item_value_stringz(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *tree, int hf, uint32_t offset, const char *text, int show_in_tree){
1640 uint32_t length = tvb_strsize(tvb, offset);
1641 uint8_t *string = tvb_get_string_enc(pinfo->pool, tvb, offset, length - 1, ENC_ASCII);
1642 proto_tree_add_none_format(tree, hf, tvb, offset, length, "%s: %s", text, string);
1643 if (show_in_tree) proto_item_append_text(item, ", %s=%s", text, string);
1644 return (length);
1648 static void
1649 add_item_value_hexstring(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *tree, int hf, uint32_t offset, uint32_t length, const char *text){
1650 proto_tree_add_none_format(tree, hf, tvb, offset, length, "%s: %s", text, tvb_bytes_to_str(pinfo->pool, tvb, offset, length));
1651 proto_item_append_text(item, ", %s=%s", text, tvb_bytes_to_str(pinfo->pool, tvb, offset, length));
1655 static void
1656 dissect_sapdiag_dyntatom(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, uint32_t offset, uint32_t length){
1657 uint32_t final = offset + length;
1658 uint16_t atom_length = 0, atom_item_length = 0;
1659 uint8_t etype = 0, attr = 0;
1661 proto_item *atom = NULL, *atom_item = NULL, *atom_item_attr = NULL;
1662 proto_tree *atom_tree = NULL, *atom_item_tree = NULL, *atom_item_attr_tree = NULL;
1664 while (offset < final){
1666 etype = tvb_get_uint8(tvb, offset+4);
1667 if ((etype != 114) && (etype != 120)) {
1668 /* Add a new atom subtree */
1669 atom_length = 0;
1670 atom = proto_tree_add_item(tree, hf_sapdiag_item_dynt_atom, tvb, offset, atom_length, ENC_NA);
1671 atom_tree = proto_item_add_subtree(atom, ett_sapdiag);
1672 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 */
1675 /* Check the atom_tree for NULL values. If the atom_tree wasn't created at this point, the atom
1676 * starts with an item different to 114 or 120. */
1677 if (atom_tree == NULL){
1678 expert_add_info(pinfo, tree, &ei_sapdiag_atom_item_malformed);
1679 break;
1682 /* Add the item atom subtree */
1683 atom_item = proto_tree_add_item(atom_tree, hf_sapdiag_item_dynt_atom_item, tvb, offset, tvb_get_ntohs(tvb, offset), ENC_NA);
1684 atom_item_tree = proto_item_add_subtree(atom_item, ett_sapdiag);
1686 /* Get the atom item length */
1687 atom_item_length = add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Atom Length");
1689 /* Adjust the length of the atom tree, adding the new item's length and the length field */
1690 atom_length+= atom_item_length;
1691 proto_item_set_len(atom_tree, atom_length);
1693 /* Continue with the dissection */
1694 offset+=2;
1695 atom_item_length-=2;
1696 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Dlg Flag 1");
1697 offset+=1;
1698 atom_item_length-=1;
1699 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Dlg Flag 2");
1700 offset+=1;
1701 atom_item_length-=1;
1703 proto_tree_add_item(atom_item_tree, hf_sapdiag_item_dynt_atom_item_etype, tvb, offset, 1, ENC_BIG_ENDIAN);
1704 proto_item_append_text(atom_item, ", EType=%d", tvb_get_uint8(tvb, offset));
1705 offset+=1;
1706 atom_item_length-=1;
1708 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Area");
1709 offset+=1;
1710 atom_item_length-=1;
1711 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Block");
1712 offset+=1;
1713 atom_item_length-=1;
1714 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Group");
1715 offset+=1;
1716 atom_item_length-=1;
1717 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Row");
1718 offset+=2;
1719 atom_item_length-=2;
1720 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Col");
1721 offset+=2;
1722 atom_item_length-=2;
1724 atom_item_attr = proto_tree_add_item(atom_item_tree, hf_sapdiag_item_dynt_atom_item_attr, tvb, offset, 1, ENC_BIG_ENDIAN);
1725 atom_item_attr_tree = proto_item_add_subtree(atom_item_attr, ett_sapdiag);
1727 attr = tvb_get_uint8(tvb, offset);
1728 proto_item_append_text(atom_item, ", Attr=%d", attr);
1729 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED, tvb, offset, 1, ENC_BIG_ENDIAN);
1730 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE, tvb, offset, 1, ENC_BIG_ENDIAN);
1731 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY, tvb, offset, 1, ENC_BIG_ENDIAN);
1732 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT, tvb, offset, 1, ENC_BIG_ENDIAN);
1733 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE, tvb, offset, 1, ENC_BIG_ENDIAN);
1734 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT, tvb, offset, 1, ENC_BIG_ENDIAN);
1735 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D, tvb, offset, 1, ENC_BIG_ENDIAN);
1736 proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE, tvb, offset, 1, ENC_BIG_ENDIAN);
1737 offset+=1;
1738 atom_item_length-=1;
1740 /* If the attribute is set to invisible we're dealing probably with a password field */
1741 if (attr & SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE){
1742 expert_add_info(pinfo, atom_item, &ei_sapdiag_password_field);
1745 switch (etype){
1746 case 114:{ /* DIAG_DGOTYP_FNAME */
1747 add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 1);
1748 proto_item_append_text(atom, ", Text=%s", tvb_get_string_enc(pinfo->pool, tvb, offset, atom_item_length, ENC_ASCII));
1749 break;
1751 } case 115:{ /* DIAG_DGOTYP_PUSHBUTTON_2 */
1752 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Length");
1753 offset+=1;
1754 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Height");
1755 offset+=1;
1756 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code Offset");
1757 offset+=2;
1758 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Offset");
1759 offset+=2;
1760 offset+=add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text", 1);
1761 add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code", 1);
1762 break;
1764 } case 116:{ /* DIAG_DGOTYP_TABSTRIP_BUTTON */
1765 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Length");
1766 offset+=1;
1767 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Height");
1768 offset+=1;
1769 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Page Id");
1770 offset+=1;
1771 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code Offset");
1772 offset+=2;
1773 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Offset");
1774 offset+=2;
1775 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Id Offset");
1776 offset+=2;
1777 offset+=add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text", 1);
1778 offset+=add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code", 1);
1779 add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "ID", 1);
1780 break;
1782 } case 118: /* DIAG_DGOTYP_CHECKBUTTON_1" */
1783 case 119:{ /* DIAG_DGOTYP_RADIOBUTTON_1 */
1784 /* If the preference is set, report the item as partially dissected in the expert info */
1785 if (global_sapdiag_highlight_items){
1786 expert_add_info_format(pinfo, atom_item, &ei_sapdiag_atom_item_partial, "The Diag Atom is dissected partially (0x%.2x)", etype);
1788 break;
1790 } case 120:{ /* DIAG_DGOTYP_XMLPROP */
1791 add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "XMLProp", 1);
1792 proto_item_append_text(atom, ", XMLProp=%s", tvb_get_string_enc(pinfo->pool, tvb, offset, atom_item_length, ENC_ASCII));
1793 break;
1795 } case 121: /* DIAG_DGOTYP_EFIELD_1 */
1796 case 122: /* DIAG_DGOTYP_OFIELD_1 */
1797 case 123:{ /* DIAG_DGOTYP_KEYWORD_1_1 */
1798 /* Found in NW 7.00 and 7.01 versions */
1799 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Flag1");
1800 offset+=1;
1801 atom_item_length-=1;
1802 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DLen");
1803 offset+=1;
1804 atom_item_length-=1;
1805 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MLen");
1806 offset+=1;
1807 atom_item_length-=1;
1808 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MaxNrChars");
1809 offset+=2;
1810 atom_item_length-=2;
1811 add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 0);
1813 break;
1815 } case 127:{ /* DIAG_DGOTYP_FRAME_1 */
1816 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DRows");
1817 offset+=2;
1818 atom_item_length-=2;
1819 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DCols");
1820 offset+=2;
1821 atom_item_length-=2;
1822 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;
1823 break;
1825 } case 129:{ /* DIAG_DGOTYP_RADIOBUTTON_3 */
1826 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Button");
1827 offset+=1;
1828 atom_item_length-=1;
1829 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Visible Label Length");
1830 offset+=2;
1831 atom_item_length-=2;
1832 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "EventID Off");
1833 offset+=2;
1834 atom_item_length-=2;
1835 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "EventID Len");
1836 offset+=1;
1837 atom_item_length-=1;
1838 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Off");
1839 offset+=2;
1840 atom_item_length-=2;
1841 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Length");
1842 offset+=2;
1843 atom_item_length-=2;
1844 add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 1);
1845 break;
1847 } case 130: /* DIAG_DGOTYP_EFIELD_2 */
1848 case 131: /* DIAG_DGOTYP_OFIELD_2 */
1849 case 132:{ /* DIAG_DGOTYP_KEYWORD_2 */
1850 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Flag1");
1851 offset+=2;
1852 atom_item_length-=2;
1853 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DLen");
1854 offset+=1;
1855 atom_item_length-=1;
1856 add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MLen");
1857 offset+=1;
1858 atom_item_length-=1;
1859 add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MaxNrChars");
1860 offset+=2;
1861 atom_item_length-=2;
1862 add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 0);
1863 break;
1865 } default:
1866 /* If the preference is set, report the item as unknown in the expert info */
1867 if (global_sapdiag_highlight_items){
1868 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);
1870 break;
1876 static void
1877 dissect_sapdiag_menu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, uint32_t offset, uint32_t length){
1879 uint32_t final = offset + length;
1881 proto_item *menu = NULL;
1882 proto_tree *menu_tree = NULL;
1884 while (offset < final){
1886 /* Add the menu entry subtree */
1887 menu = proto_tree_add_item(tree, hf_sapdiag_item_menu_entry, tvb, offset, tvb_get_ntohs(tvb, offset), ENC_NA);
1888 menu_tree = proto_item_add_subtree(menu, ett_sapdiag);
1890 add_item_value_uint16(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Length");
1891 offset+=2;
1893 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 1");
1894 offset+=1;
1895 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 2");
1896 offset+=1;
1897 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 3");
1898 offset+=1;
1899 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 4");
1900 offset+=1;
1902 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Flag"); /* XXX: Add flag values */
1903 offset+=1;
1904 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Virtual Key");
1905 offset+=1;
1907 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 1");
1908 offset+=1;
1909 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 2");
1910 offset+=1;
1911 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 3");
1912 offset+=1;
1913 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 4");
1914 offset+=1;
1915 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 5");
1916 offset+=1;
1917 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 6");
1918 offset+=1;
1920 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 1");
1921 offset+=1;
1922 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 2");
1923 offset+=1;
1924 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 3");
1925 offset+=1;
1926 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 4");
1927 offset+=1;
1928 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 5");
1929 offset+=1;
1930 add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 6");
1931 offset+=1;
1933 offset+=add_item_value_stringz(tvb, pinfo, menu, menu_tree, hf_sapdiag_item_value, offset, "Text", 1);
1934 offset+=add_item_value_stringz(tvb, pinfo, menu, menu_tree, hf_sapdiag_item_value, offset, "Accelerator", 1);
1935 add_item_value_stringz(tvb, pinfo, menu, menu_tree, hf_sapdiag_item_value, offset, "Info", 1);
1940 static void
1941 dissect_sapdiag_uievent(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, uint32_t offset, uint32_t length){
1943 proto_item *event_valid_item = NULL;
1944 proto_tree *event_valid_tree = NULL;
1945 uint8_t event_valid = 0;
1946 uint16_t container_nrs = 0, i = 0;
1948 event_valid = tvb_get_uint8(tvb, offset);
1949 event_valid_item = proto_tree_add_item(tree, hf_sapdiag_item_ui_event_valid, tvb, offset, 1, ENC_BIG_ENDIAN);
1950 event_valid_tree = proto_item_add_subtree(event_valid_item, ett_sapdiag);
1952 proto_tree_add_item(event_valid_tree, hf_sapdiag_item_ui_event_valid_MENU_POS, tvb, offset, 1, ENC_BIG_ENDIAN);
1953 proto_tree_add_item(event_valid_tree, hf_sapdiag_item_ui_event_valid_CONTROL_POS, tvb, offset, 1, ENC_BIG_ENDIAN);
1954 proto_tree_add_item(event_valid_tree, hf_sapdiag_item_ui_event_valid_NAVIGATION_DATA, tvb, offset, 1, ENC_BIG_ENDIAN);
1955 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;
1957 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_event_type, tvb, offset, 2, ENC_BIG_ENDIAN);
1958 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;
1960 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_control_type, tvb, offset, 2, ENC_BIG_ENDIAN);
1961 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;
1963 /* The semantic of the event data changes depending of the event valid flag and are ignored if the
1964 SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA flag or the SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA
1965 flags are not set. We dissect them always. */
1966 if (event_valid & SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA){
1967 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_navigation_data, tvb, offset, 1, ENC_BIG_ENDIAN);
1968 offset+=1;
1969 length-=1;
1970 } else { /* SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA */
1971 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
1972 offset+=1;
1973 length-=1;
1974 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
1975 offset+=1;
1976 length-=1;
1977 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
1978 offset+=1;
1979 length-=1;
1980 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
1981 offset+=1;
1982 length-=1;
1985 /* These items are ignored if the flag SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS is not set. We dissect them always. */
1986 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_control_row, tvb, offset, 2, ENC_BIG_ENDIAN);
1987 offset+=2;
1988 length-=2;
1989 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_control_col, tvb, offset, 2, ENC_BIG_ENDIAN);
1990 offset+=2;
1991 length-=2;
1993 i = container_nrs = tvb_get_ntohs(tvb, offset);
1994 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_container_nrs, tvb, offset, 2, ENC_BIG_ENDIAN);
1995 offset+=2;
1996 length-=2;
1998 while (i>0 && length>0){
1999 proto_tree_add_item(tree, hf_sapdiag_item_ui_event_container, tvb, offset, 1, ENC_BIG_ENDIAN);
2000 offset+=1;
2001 length-=1;
2002 i--;
2005 if (i>0){
2006 expert_add_info_format(pinfo, tree, &ei_sapdiag_dynt_focus_more_cont_ids, "Number of Container IDs (%d) is invalid", container_nrs);
2010 static void
2011 dissect_sapdiag_item(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *item_value_tree, proto_tree *parent_tree, uint32_t offset, uint8_t item_type, uint8_t item_id, uint8_t item_sid, uint32_t item_length){
2013 /* SES item */
2014 if (item_type==0x01){
2015 uint8_t event_array = 0;
2016 check_length(pinfo, item_value_tree, 16, item_length, "SES");
2018 event_array = tvb_get_uint8(tvb, offset);
2019 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event Array");
2020 offset+=1;
2021 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 1");
2022 offset+=1;
2023 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 2");
2024 offset+=1;
2025 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 3");
2026 offset+=1;
2027 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 4");
2028 offset+=1;
2029 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 5");
2030 offset+=1;
2031 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Screen Flag"); /* XXX: Add flag values */
2032 offset+=1;
2033 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Modal No");
2034 offset+=1;
2035 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "X Pos");
2036 offset+=1;
2037 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Y Pos");
2038 offset+=1;
2039 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "IMode");
2040 offset+=1;
2041 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flag 1"); /* XXX: Add flag values */
2042 offset+=3;
2043 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Dim Row");
2044 offset+=1;
2045 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Dim Col");
2047 /* TODO: Incomplete dissection of this item */
2048 /* If the preference is set, report the item as partially dissected in the expert info */
2049 if (global_sapdiag_highlight_items){
2050 expert_add_info_format(pinfo, item, &ei_sapdiag_item_partial, "The SES item is dissected partially (event array = 0x%.2x)", event_array);
2053 } else if (item_type==0x0a) { /* SFE */
2054 check_length(pinfo, item_value_tree, 3, item_length, "SFE");
2055 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control format");
2056 offset+=1;
2057 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control color");
2058 offset+=1;
2059 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control extended");
2061 } else if (item_type==0x0b) { /* SBA */
2062 check_length(pinfo, item_value_tree, 2, item_length, "SBA");
2063 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control y-position");
2064 offset+=1;
2065 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control x-position");
2067 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x26){ /* Dialog Step Number */
2068 check_length(pinfo, item_value_tree, 4, item_length, "Dialog Step Number");
2069 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Dialog Step Number");
2071 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x02){ /* Connect */
2072 check_length(pinfo, item_value_tree, 12, item_length, "Connect");
2073 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Protocol Version");
2074 offset+=4;
2075 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Code Page");
2076 offset+=4;
2077 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "WS Type");
2079 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x04){ /* Font Metric */
2080 check_length(pinfo, item_value_tree, 8, item_length, "Font Metric");
2081 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Variable font size (y)");
2082 offset+=2;
2083 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Variable font size (x)");
2084 offset+=2;
2085 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Fixed font size (y)");
2086 offset+=2;
2087 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Fixed font size (x)");
2089 } else if ((item_type==0x10 && item_id==0x04 && item_sid==0x0b) || /* Support Data */
2090 (item_type==0x10 && item_id==0x06 && item_sid==0x11)){
2091 check_length(pinfo, item_value_tree, 32, item_length, "Support Data");
2092 dissect_sapdiag_support_bits(tvb, item_value_tree, offset);
2094 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x0d){ /* Window Size */
2095 check_length(pinfo, item_value_tree, 16, item_length, "Window Size");
2096 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
2097 offset+=4;
2098 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");
2099 offset+=4;
2100 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Height");
2101 offset+=4;
2102 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Width");
2104 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x0f){ /* Turn Time 2 (Response time) */
2105 check_length(pinfo, item_value_tree, 4, item_length, "Response time");
2106 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Response time");
2108 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x16){ /* Scrollbar Width */
2109 check_length(pinfo, item_value_tree, 2, item_length, "Scrollbar Width");
2110 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Scrolllbar Width");
2112 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x17){ /* Scrollbar Height */
2113 check_length(pinfo, item_value_tree, 2, item_length, "Scrollbar Height");
2114 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Scrollbar Height");
2116 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x19){ /* Gui State */
2117 check_length(pinfo, item_value_tree, 2, item_length, "Gui State");
2118 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flag 1");
2119 offset+=1;
2120 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flag 2");
2122 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x1d){ /* GUI patch level */
2124 /* GUI Patch level could be a string in old versions, or a single byte integer in newer ones */
2125 if (item_length == 2){
2126 add_item_value_string(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, 2, "GUI patch level", 1);
2127 } else {
2128 check_length(pinfo, item_value_tree, 1, item_length, "GUI patch level");
2129 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "GUI patch level");
2132 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x24){ /* Display Size */
2133 check_length(pinfo, item_value_tree, 8, item_length, "Display Size");
2134 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height");
2135 offset+=4;
2136 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height");
2138 } else if (item_type==0x10 && item_id==0x04 && item_sid==0x25){ /* GUI Type */
2139 check_length(pinfo, item_value_tree, 2, item_length, "GUI Type");
2140 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "GUI Type");
2142 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x01){ /* Mode Number */
2143 check_length(pinfo, item_value_tree, 2, item_length, "Mode Number");
2144 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Mode Number");
2146 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x06){ /* Diag version */
2147 check_length(pinfo, item_value_tree, 2, item_length, "Diag version");
2148 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Diag version");
2150 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x0a){ /* Internal Mode Number */
2151 check_length(pinfo, item_value_tree, 2, item_length, "Internal Mode Number");
2152 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Internal Mode Number");
2154 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x13){ /* GUI_FKEY */
2155 uint32_t length = offset+item_length;
2156 offset++; /* TODO: Skip one byte here */
2157 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Virtual key number", 1);
2158 while ((offset < length) && tvb_offset_exists(tvb, offset)){
2159 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "String number", 1);
2161 /* If the preference is set, report the item as partially dissected in the expert info */
2162 if (global_sapdiag_highlight_items){
2163 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);
2166 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x14){ /* GUI_FKEYT */
2167 offset++; /* TODO: Skip one byte here */
2168 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Virtual key number");
2169 offset+=2; /* TODO: Skip one byte here */
2170 add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Virtual key text", 1);
2171 /* If the preference is set, report the item as partially dissected in the expert info */
2172 if (global_sapdiag_highlight_items){
2173 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);
2176 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x16){ /* RFC Diag Block Size */
2177 check_length(pinfo, item_value_tree, 4, item_length, "RFC Diag Block Size");
2178 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "RFC Diag Block Size");
2180 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x18){ /* Info flags */
2181 check_length(pinfo, item_value_tree, 2, item_length, "Info flags");
2182 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Info flags");
2183 /* If the preference is set, report the item as partially dissected in the expert info */
2184 if (global_sapdiag_highlight_items){
2185 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);
2188 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x19){ /* User ID */
2189 check_length(pinfo, item_value_tree, 2, item_length, "User ID");
2190 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "User ID");
2192 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x1f){ /* IMode uuids 2 */
2193 uint8_t uuids = tvb_get_uint8(tvb, offset);
2194 if (!check_length(pinfo, item_value_tree, 1 + 17 * uuids, item_length, "IMode uuids") ) return;
2195 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Number of uuids");
2196 offset+=1;
2197 while ((uuids > 0) && (tvb_offset_exists(tvb, offset + 16 + 1))){
2198 add_item_value_hexstring(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, 16, "UUID");
2199 offset+=16;
2200 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Active context");
2201 offset+=1;
2202 uuids--;
2205 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x22){ /* Auto logout time */
2206 check_length(pinfo, item_value_tree, 4, item_length, "Auto logout time");
2207 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Auto logout time");
2209 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x23){ /* Codepage Diag GUI */
2210 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (numeric representation)");
2211 offset+=4;
2212 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Minimum number of bytes per character");
2213 offset+=1;
2214 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (string representation)", 1);
2215 add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage description", 1);
2217 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x27){ /* Codepage App Server */
2218 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (numeric representation)");
2219 offset+=4;
2220 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Minimum number of bytes per character");
2221 offset+=1;
2222 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (string representation)", 1);
2223 add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage description", 1);
2225 } else if (item_type==0x10 && item_id==0x06 && item_sid==0x29){ /* Kernel Version */
2226 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Database version", 1);
2227 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Kernel version", 1);
2228 add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Kernel patch level", 1);
2230 } else if (item_type==0x10 && item_id==0x09 && item_sid==0x0b){ /* Dynt Focus */
2231 uint32_t length = offset + item_length;
2232 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Num of Area ID");
2233 offset+=1;
2234 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Row");
2235 offset+=2;
2236 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Col");
2237 offset+=2;
2238 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Row Offset");
2239 offset+=2;
2240 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Col Offset");
2241 offset+=2;
2242 /* Container IDs up to 30 */
2243 if (length-offset > 30){
2244 expert_add_info_format(pinfo, item, &ei_sapdiag_dynt_focus_more_cont_ids, "The Dynt Focus contains more than 30 Container IDs (%d)", offset);
2246 /* Dissect all the remaining container IDs */
2247 while((offset < length) && tvb_offset_exists(tvb, offset)){
2248 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Container ID");
2249 offset+=1;
2252 } else if (item_type==0x10 && item_id==0x0a && item_sid==0x01){ /* Container Reset */
2253 check_length(pinfo, item_value_tree, 9, item_length, "Container Reset");
2254 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
2255 offset+=1;
2256 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
2257 offset+=2;
2258 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
2259 offset+=2;
2260 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
2261 offset+=2;
2262 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");
2264 } else if (item_type==0x10 && item_id==0x0a && item_sid==0x04){ /* Container Loop */
2265 check_length(pinfo, item_value_tree, 9, item_length, "Container Loop");
2266 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
2267 offset+=1;
2268 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
2269 offset+=2;
2270 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
2271 offset+=2;
2272 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
2273 offset+=2;
2274 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");
2276 } else if (item_type==0x10 && item_id==0x0a && item_sid==0x05){ /* Container Table */
2277 check_length(pinfo, item_value_tree, 9, item_length, "Container Table");
2278 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
2279 offset+=1;
2280 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
2281 offset+=2;
2282 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
2283 offset+=2;
2284 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
2285 offset+=2;
2286 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");
2288 } else if (item_type==0x10 && item_id==0x0a && item_sid==0x06){ /* Container Name */
2289 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Subscreen name", 1);
2290 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Container name", 1);
2291 add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Subdynpro name", 1);
2293 } else if (item_type==0x10 && item_id==0x0a && item_sid==0x08){ /* Container TabStrip */
2294 check_length(pinfo, item_value_tree, 9, item_length, "Container TabStrip");
2295 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
2296 offset+=1;
2297 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
2298 offset+=2;
2299 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
2300 offset+=2;
2301 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
2302 offset+=2;
2303 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");
2305 } else if (item_type==0x10 && item_id==0x0a && item_sid==0x09){ /* Container TabStrip Page */
2306 check_length(pinfo, item_value_tree, 9, item_length, "Container TabStrip Page");
2307 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
2308 offset+=1;
2309 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
2310 offset+=2;
2311 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
2312 offset+=2;
2313 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
2314 offset+=2;
2315 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");
2317 } else if (item_type==0x10 && item_id==0x0a && item_sid==0x0a){ /* Container Control */
2318 check_length(pinfo, item_value_tree, 9, item_length, "Container Control");
2319 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
2320 offset+=1;
2321 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
2322 offset+=2;
2323 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
2324 offset+=2;
2325 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
2326 offset+=2;
2327 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");
2329 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x03){ /* Message type */
2330 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);
2331 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);
2332 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);
2333 add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);
2335 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x02){ /* Scroll Infos */
2336 check_length(pinfo, item_value_tree, 24, item_length, "Scroll Infos");
2337 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Height");
2338 offset+=4;
2339 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Width");
2340 offset+=4;
2341 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Height");
2342 offset+=4;
2343 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Width");
2344 offset+=4;
2345 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height Offset");
2346 offset+=4;
2347 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Width Offset");
2349 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x06){ /* Scroll Infos 2 */
2350 check_length(pinfo, item_value_tree, 33, item_length, "Scroll Infos 2");
2351 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Height");
2352 offset+=4;
2353 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Width");
2354 offset+=4;
2355 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Height");
2356 offset+=4;
2357 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Width");
2358 offset+=4;
2359 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height Offset");
2360 offset+=4;
2361 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Width Offset");
2362 offset+=4;
2363 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Visible Height");
2364 offset+=4;
2365 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Visible Width");
2366 offset+=4;
2367 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Scroll Flag");
2369 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x07){ /* Area Size */
2370 check_length(pinfo, item_value_tree, 16, item_length, "Area Size");
2371 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
2372 offset+=4;
2373 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");
2374 offset+=4;
2375 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Height");
2376 offset+=4;
2377 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Width");
2379 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x08){ /* Pixel Size */
2380 check_length(pinfo, item_value_tree, 16, item_length, "Pixel Size");
2381 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
2382 offset+=4;
2383 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");
2384 offset+=4;
2385 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Height");
2386 offset+=4;
2387 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Width");
2389 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x0c){ /* Container Loop */
2390 check_length(pinfo, item_value_tree, 2, item_length, "Container Loop");
2391 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Lines Per Loop Row");
2393 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x0d){ /* List focus */
2394 check_length(pinfo, item_value_tree, 5, item_length, "List focus");
2395 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "List focus version");
2396 offset+=1;
2397 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "List focus Row");
2398 offset+=2;
2399 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "List focus Column");
2401 } else if (item_type==0x10 && item_id==0x0c && item_sid==0x0e){ /* Main Area Pixel Size */
2402 check_length(pinfo, item_value_tree, 16, item_length, "Main Area Pixel Size");
2403 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
2404 offset+=4;
2405 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");
2407 /* Dynn items */
2408 } else if ((item_type==0x09) || /* CHL */
2409 (item_type==0x10 && item_id==0x05 && item_sid==0x01)){ /* Dynn Chln */
2410 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "scrflg");
2411 offset+=2;
2412 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "chlflag");
2413 offset+=2;
2414 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "current row");
2415 offset+=1;
2416 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "current column");
2417 offset+=1;
2418 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "V Slider Size");
2419 offset+=1;
2420 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimlistrow");
2421 offset+=1;
2422 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimlistcol");
2423 offset+=1;
2424 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "H Slider Size");
2425 offset+=1;
2426 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimrow");
2427 offset+=1;
2428 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimcol");
2429 offset+=1;
2430 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "maxlistrow");
2431 offset+=2;
2432 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "listrowoffset");
2433 offset+=2;
2434 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "maxlistcol");
2435 offset+=1;
2436 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "listcoloffset");
2438 /* If the preference is set, report the item as partially dissected in the expert info */
2439 if (global_sapdiag_highlight_items){
2440 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);
2443 /* Control Properties */
2444 } else if (item_type==0x10 && item_id==0x0e && item_sid==0x01){ /* Control Properties */
2445 uint32_t length = offset + item_length;
2447 while((offset < length) && (tvb_offset_exists(tvb, offset + 3))){ /* Check against at least three bytes (2 for ID, 1 for null-terminated value) */
2448 proto_tree_add_item(item_value_tree, hf_sapdiag_item_control_properties_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2449 proto_item_append_text(item, ", Control Property ID=%d", tvb_get_ntohs(tvb, offset));
2450 offset+=2;
2451 offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_control_properties_value, offset, "Control Property Value", 1);
2454 /* UI event source */
2455 } else if (item_type==0x10 && item_id==0x0f && item_sid==0x01){ /* UI Event Source */
2456 dissect_sapdiag_uievent(tvb, pinfo, item_value_tree, offset, item_length);
2458 /* GUI Packet state */
2459 } else if (item_type==0x10 && item_id==0x14 && item_sid==0x01){ /* GUI Packet state */
2460 add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flags"); /* TODO: Add flag values */
2461 offset+=1;
2462 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Bytes Total");
2463 offset+=4;
2464 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Bytes Send");
2465 offset+=4;
2466 add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Bytes Received");
2468 /* Dynt items */
2469 } else if ((item_type==0x12 && item_id==0x09 && item_sid==0x02) || /* Dynt Atom */
2470 (item_type==0x10 && item_id==0x09 && item_sid==0x02)) {
2471 dissect_sapdiag_dyntatom(tvb, pinfo, item_value_tree, offset, item_length);
2473 /* String items */
2474 } else if ((item_type==0x10 && item_id==0x04 && item_sid==0x09) || /* Gui Version */
2475 (item_type==0x10 && item_id==0x04 && item_sid==0x1a) || /* Decimal character */
2476 (item_type==0x10 && item_id==0x04 && item_sid==0x1b) || /* Language */
2477 (item_type==0x10 && item_id==0x04 && item_sid==0x1c) || /* Username */
2478 (item_type==0x10 && item_id==0x04 && item_sid==0x1f) || /* Gui OS Version */
2479 (item_type==0x10 && item_id==0x04 && item_sid==0x20) || /* Browser Version */
2480 (item_type==0x10 && item_id==0x04 && item_sid==0x21) || /* Office Version */
2481 (item_type==0x10 && item_id==0x06 && item_sid==0x02) || /* Database name */
2482 (item_type==0x10 && item_id==0x06 && item_sid==0x03) || /* CPU name */
2483 (item_type==0x10 && item_id==0x06 && item_sid==0x07) || /* Transaction code */
2484 (item_type==0x10 && item_id==0x06 && item_sid==0x0b) || /* Message */
2485 (item_type==0x10 && item_id==0x06 && item_sid==0x0c) || /* Client */
2486 (item_type==0x10 && item_id==0x06 && item_sid==0x0d) || /* Dynpro name */
2487 (item_type==0x10 && item_id==0x06 && item_sid==0x0e) || /* Dynpro number */
2488 (item_type==0x10 && item_id==0x06 && item_sid==0x0f) || /* Cuaname */
2489 (item_type==0x10 && item_id==0x06 && item_sid==0x10) || /* Cuastatus */
2490 (item_type==0x10 && item_id==0x06 && item_sid==0x21) || /* Context ID */
2491 (item_type==0x10 && item_id==0x06 && item_sid==0x24) || /* Codepage application server */
2492 (item_type==0x10 && item_id==0x06 && item_sid==0x25) || /* GUI Theme */
2493 (item_type==0x10 && item_id==0x09 && item_sid==0x12) || /* Control Focus */
2494 (item_type==0x10 && item_id==0x0c && item_sid==0x04) || /* OK Code */
2495 (item_type==0x10 && item_id==0x0c && item_sid==0x09) || /* Session title */
2496 (item_type==0x10 && item_id==0x0c && item_sid==0x0a) || /* Session icon */
2497 (item_type==0x10 && item_id==0x0c && item_sid==0x0b)) /* List Cell text */
2499 add_item_value_string(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, item_length, "Value", 1);
2501 /* RFC Embedded calls */
2502 } else if (item_type==0x10 && item_id==0x08){ /* RFC_TR */
2503 dissect_sapdiag_rfc_call(tvb, pinfo, parent_tree, offset, item_length);
2505 /* String items (long text) */
2506 } else if (item_type==0x11){ /* Data Stream */
2507 add_item_value_string(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, item_length, "Value", 0);
2509 /* Tab Strip Controls */
2510 } else if ((item_type==0x12 && item_id==0x09 && item_sid==0x10)) {
2511 dissect_sapdiag_dyntatom(tvb, pinfo, item_value_tree, offset, item_length);
2513 /* Menu Entries items */
2514 } else if ((item_type==0x12 && item_id==0x0b)) {
2515 dissect_sapdiag_menu(tvb, pinfo, item_value_tree, offset, item_length);
2517 } else if (item_type==0x13) { /* SLC */
2518 check_length(pinfo, item_value_tree, 2, item_length, "SLC");
2519 add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Field length in characters");
2521 /* Another unknown item */
2522 } else {
2523 /* If the preference is set, report the item as unknown in the expert info */
2524 if (global_sapdiag_highlight_items){
2525 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);
2530 static const char *
2531 get_appl_string(uint8_t item_id, uint8_t item_sid){
2532 const char *item_name_string = NULL;
2534 switch (item_id){
2535 case 0x01:{ /* SCRIPT */
2536 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_script_vals, "Unknown");
2537 break;
2538 } case 0x02:{ /* GRAPH */
2539 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_graph_vals, "Unknown");
2540 break;
2541 } case 0x03:{ /* IXOS */
2542 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_ixos_vals, "Unknown");
2543 break;
2544 } case 0x04:{ /* ST_USER */
2545 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_st_user_vals, "Unknown");
2546 break;
2547 } case 0x05:{ /* DYNN */
2548 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_dynn_vals, "Unknown");
2549 break;
2550 } case 0x06:{ /* ST_R3INFO */
2551 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_st_r3info_vals, "Unknown");
2552 break;
2553 } case 0x07:{ /* POPU */
2554 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_popu_vals, "Unknown");
2555 break;
2556 } case 0x08:{ /* RFC_TR */
2557 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_rfc_tr_vals, "Unknown");
2558 break;
2559 } case 0x09:{ /* DYNT */
2560 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_dynt_vals, "Unknown");
2561 break;
2562 } case 0x0a:{ /* CONTAINER */
2563 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_container_vals, "Unknown");
2564 break;
2565 } case 0x0b:{ /* MNUENTRY */
2566 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_mnuentry_vals, "Unknown");
2567 break;
2568 } case 0x0c:{ /* VARINFO */
2569 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_varinfo_vals, "Unknown");
2570 break;
2571 } case 0x0e:{ /* CONTROL */
2572 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_control_vals, "Unknown");
2573 break;
2574 } case 0x0f:{ /* UI_EVENT */
2575 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_ui_event_vals, "Unknown");
2576 break;
2577 } case 0x12:{ /* ACC_LIST */
2578 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_acc_list_vals, "Unknown");
2579 break;
2580 } case 0x13:{ /* RCUI */
2581 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_rcui_vals, "Unknown");
2582 break;
2583 } case 0x14:{ /* GUI_PACKET */
2584 item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_gui_packet_vals, "Unknown");
2585 break;
2588 return (item_name_string);
2591 static void
2592 dissect_sapdiag_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parent_tree, uint32_t offset){
2593 int item_value_remaining_length;
2594 uint8_t item_type, item_long, item_id, item_sid;
2595 uint32_t item_length, item_value_length;
2596 const char *item_name_string = NULL;
2598 proto_item *item = NULL, *il = NULL, *item_value = NULL;
2599 proto_tree *item_tree, *item_value_tree;
2601 while (tvb_offset_exists(tvb, offset)){
2602 item_id = item_sid = item_length = item_value_length = item_long = 0;
2604 /* 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 */
2605 item = proto_tree_add_item(tree, hf_sapdiag_item, tvb, offset, 1, ENC_NA);
2606 item_tree = proto_item_add_subtree(item, ett_sapdiag);
2608 /* Get the item type */
2609 item_type = tvb_get_uint8(tvb, offset);
2610 proto_tree_add_item(item_tree, hf_sapdiag_item_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2611 offset++;
2612 item_length++;
2613 proto_item_append_text(item, ": %s", val_to_str_const(item_type, sapdiag_item_type_vals, "Unknown"));
2615 switch (item_type){
2616 case 0x01:{ /* SES */
2617 item_value_length = 16;
2618 break;
2620 case 0x02:{ /* ICO */
2621 item_value_length = 20;
2622 break;
2624 case 0x03:{ /* TIT */
2625 item_value_length = 3;
2626 break;
2628 case 0x07:{ /* DiagMessage (old format) */
2629 item_value_length = 76;
2630 break;
2632 case 0x08:{ /* OCK */
2633 /* If the preference is set, report the item as partially dissected in the expert info */
2634 if (global_sapdiag_highlight_items){
2635 expert_add_info_format(pinfo, item, &ei_sapdiag_item_unknown_length, "Diag Type of unknown length (0x%.2x)", item_type);
2637 break;
2639 case 0x09:{ /* CHL */
2640 item_value_length = 22;
2641 break;
2643 case 0x0a:{ /* SFE */
2644 item_value_length = 3;
2645 break;
2647 case 0x0b:{ /* SBA */
2648 item_value_length = 2;
2649 break;
2651 case 0x0C:{ /* EOM End of message */
2652 break;
2654 case 0x11:{ /* Data Stream */
2655 item_long = 4;
2656 break;
2658 case 0x13:{ /* SLC */
2659 item_value_length = 2;
2660 break;
2662 case 0x15:{ /* SBA2 XXX: Find the actual length */
2663 item_value_length = 36;
2664 break;
2666 case 0x10: /* APPL */
2667 case 0x12:{ /* APPL4 */
2668 /* Get the APPL(4) ID */
2669 item_id = tvb_get_uint8(tvb, offset);
2670 proto_item_append_text(item, ", %s", val_to_str_const(item_id, sapdiag_item_id_vals, "Unknown"));
2671 proto_tree_add_item(item_tree, hf_sapdiag_item_id, tvb, offset, 1, ENC_BIG_ENDIAN);
2672 offset++;
2673 item_length++;
2675 /* Get the APPL item sid value and set the respective name string according to them XXX: Change this for a multi array */
2676 item_sid = tvb_get_uint8(tvb, offset);
2677 item_name_string = get_appl_string(item_id, item_sid);
2679 proto_item_append_text(item, ", %s", item_name_string);
2680 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);
2681 offset++;
2682 item_length++;
2684 if (item_type==0x10) {
2685 item_long = 2;
2686 } else if (item_type==0x12) {
2687 item_long = 4;
2690 break;
2694 /* Get the item length (word o dword) */
2695 if (item_long == 2){
2696 item_value_length = tvb_get_ntohs(tvb, offset);
2697 il = proto_tree_add_item(item_tree, hf_sapdiag_item_length_short, tvb, offset, 2, ENC_BIG_ENDIAN);
2698 offset += 2;
2699 item_length += 2;
2700 } else if (item_long == 4){
2701 item_value_length = tvb_get_ntohl(tvb, offset);
2702 il = proto_tree_add_item(item_tree, hf_sapdiag_item_length_long, tvb, offset, 4, ENC_BIG_ENDIAN);
2703 offset += 4;
2704 item_length += 4;
2707 /* Add the item length */
2708 proto_item_append_text(item, ", Len=%d", item_value_length);
2710 /* Now we have the real length of the item, set the proper size */
2711 item_length += item_value_length;
2712 proto_item_set_len(item, item_length);
2714 /* Add the item value */
2715 if (item_value_length > 0){
2716 /* Check if the item length is valid */
2717 item_value_remaining_length = tvb_reported_length_remaining(tvb, offset);
2718 if (item_value_remaining_length < 0){
2719 expert_add_info(pinfo, il, &ei_sapdiag_item_offset_invalid);
2720 return;
2722 if ((uint32_t)item_value_remaining_length < item_value_length){
2723 expert_add_info(pinfo, il, &ei_sapdiag_item_length_invalid);
2724 item_value_length = (uint32_t)item_value_remaining_length;
2726 item_value = proto_tree_add_item(item_tree, hf_sapdiag_item_value, tvb, offset, item_value_length, ENC_NA);
2727 item_value_tree = proto_item_add_subtree(item_value, ett_sapdiag);
2728 dissect_sapdiag_item(tvb, pinfo, item, item_value_tree, parent_tree, offset, item_type, item_id, item_sid, item_value_length);
2729 offset+= item_value_length;
2734 static int
2735 check_sapdiag_dp(tvbuff_t *tvb, uint32_t offset)
2737 /* Since there's no SAP Diag mode 0xff, if the first byte is a 0xFF the
2738 * packet probably holds an initialization DP Header */
2739 if ((tvb_reported_length_remaining(tvb, offset) >= 200 + 8) && tvb_get_uint8(tvb, offset) == 0xFF){
2740 return true;
2742 return false;
2745 static int
2746 check_sapdiag_compression(tvbuff_t *tvb, uint32_t offset)
2748 /* We check for the length, the algorithm value and the presence of magic bytes */
2749 if ((tvb_reported_length_remaining(tvb, offset) >= 8) &&
2750 ((tvb_get_uint8(tvb, offset+4) == 0x11) || (tvb_get_uint8(tvb, offset+4) == 0x12)) &&
2751 (tvb_get_uint16(tvb, offset+5, ENC_LITTLE_ENDIAN) == 0x9d1f)){
2752 return true;
2754 return false;
2757 static void
2758 dissect_sapdiag_compressed_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *sapdiag, uint32_t offset)
2760 uint32_t reported_length = 0;
2761 proto_item *compression_header = NULL;
2762 proto_tree *compression_header_tree = NULL;
2764 /* Add the compression header subtree */
2765 compression_header = proto_tree_add_item(tree, hf_sapdiag_compress_header, tvb, offset, 8, ENC_NA);
2766 compression_header_tree = proto_item_add_subtree(compression_header, ett_sapdiag);
2768 /* Add the uncompressed length */
2769 reported_length = tvb_get_letohl(tvb, offset);
2770 proto_tree_add_uint(compression_header_tree, hf_sapdiag_uncomplength, tvb, offset, 4, reported_length);
2771 offset+=4;
2772 proto_item_append_text(sapdiag, ", Uncompressed Len: %u", reported_length);
2773 col_append_fstr(pinfo->cinfo, COL_INFO, " Uncompressed Length=%u ", reported_length);
2775 /* Add the algorithm */
2776 proto_tree_add_item(compression_header_tree, hf_sapdiag_algorithm, tvb, offset, 1, ENC_BIG_ENDIAN);
2777 offset++;
2778 /* Add the magic bytes */
2779 proto_tree_add_item(compression_header_tree, hf_sapdiag_magic, tvb, offset, 2, ENC_BIG_ENDIAN);
2780 offset+=2;
2781 /* Add the max bits */
2782 proto_tree_add_item(compression_header_tree, hf_sapdiag_special, tvb, offset, 1, ENC_BIG_ENDIAN);
2783 offset++;
2785 /* TODO: Decompression is not yet enabled until the LZC/LZH library is added
2786 * Here we just add the payload subtree
2788 proto_tree_add_item(tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
2792 static void
2793 dissect_sapdiag_snc_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sapdiag_tree, proto_tree *tree, uint32_t offset){
2795 tvbuff_t *next_tvb = NULL;
2796 proto_item *payload = NULL;
2797 proto_tree *payload_tree = NULL;
2799 /* Call the SNC dissector */
2800 if (global_sapdiag_snc_dissection == true){
2801 next_tvb = dissect_sapsnc_frame(tvb, pinfo, tree, offset);
2803 /* If the SNC dissection returned a new tvb, we've a payload to dissect */
2804 if (next_tvb != NULL) {
2806 /* Add a new data source for the unwrapped data. From now on, the offset is relative
2807 to the new tvb so its zero. */
2808 add_new_data_source(pinfo, next_tvb, "SNC unwrapped Data");
2810 /* Add the payload subtree using the new tvb*/
2811 payload = proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, next_tvb, 0, -1, ENC_NA);
2812 payload_tree = proto_item_add_subtree(payload, ett_sapdiag);
2814 if (check_sapdiag_compression(next_tvb, 0)) {
2815 dissect_sapdiag_compressed_payload(next_tvb, pinfo, payload_tree, payload, 0);
2816 } else {
2817 dissect_sapdiag_payload(next_tvb, pinfo, payload_tree, payload, 0);
2823 static int
2824 dissect_sapdiag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2826 uint8_t compress = 0, error_no = 0;
2827 uint32_t offset = 0;
2828 proto_item *sapdiag = NULL, *header = NULL, *com_flag = NULL, *payload = NULL;
2829 proto_tree *sapdiag_tree = NULL, *header_tree = NULL, *com_flag_tree = NULL, *payload_tree = NULL;
2831 /* Add the protocol to the column */
2832 col_set_str(pinfo->cinfo, COL_PROTOCOL, "SAPDIAG");
2833 /* Clear out stuff in the info column */
2834 col_clear(pinfo->cinfo,COL_INFO);
2836 /* Add the main SAPDiag subtree */
2837 sapdiag = proto_tree_add_item(tree, proto_sapdiag, tvb, 0, -1, ENC_NA);
2838 sapdiag_tree = proto_item_add_subtree(sapdiag, ett_sapdiag);
2840 /* Check if the packet holds a DP Header */
2841 if (check_sapdiag_dp(tvb, offset)){
2842 dissect_sapdiag_dp(tvb, sapdiag_tree, offset); offset+= 200;
2845 /* Check for fixed error messages */
2846 if (tvb_strneql(tvb, 0, "**DPTMMSG**\x00", 12) == 0){
2847 proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
2848 return offset;
2849 } else if (tvb_strneql(tvb, 0, "**DPTMOPC**\x00", 12) == 0){
2850 proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
2851 return offset;
2854 /* Add the header subtree */
2855 header = proto_tree_add_item(sapdiag_tree, hf_sapdiag_header, tvb, offset, 8, ENC_NA);
2856 header_tree = proto_item_add_subtree(header, ett_sapdiag);
2858 /* Add the fields */
2859 proto_tree_add_item(header_tree, hf_sapdiag_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
2860 offset++;
2862 com_flag = proto_tree_add_item(header_tree, hf_sapdiag_com_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
2863 com_flag_tree = proto_item_add_subtree(com_flag, ett_sapdiag);
2864 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_EOS, tvb, offset, 1, ENC_BIG_ENDIAN);
2865 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_EOC, tvb, offset, 1, ENC_BIG_ENDIAN);
2866 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_NOP, tvb, offset, 1, ENC_BIG_ENDIAN);
2867 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_EOP, tvb, offset, 1, ENC_BIG_ENDIAN);
2868 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_INI, tvb, offset, 1, ENC_BIG_ENDIAN);
2869 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_CAS, tvb, offset, 1, ENC_BIG_ENDIAN);
2870 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_NNM, tvb, offset, 1, ENC_BIG_ENDIAN);
2871 proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_GRA, tvb, offset, 1, ENC_BIG_ENDIAN);
2872 offset++;
2874 proto_tree_add_item(header_tree, hf_sapdiag_mode_stat, tvb, offset, 1, ENC_BIG_ENDIAN);
2875 offset++;
2877 error_no = tvb_get_uint8(tvb, offset);
2878 proto_tree_add_item(header_tree, hf_sapdiag_err_no, tvb, offset, 1, ENC_BIG_ENDIAN);
2879 offset++;
2880 proto_tree_add_item(header_tree, hf_sapdiag_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2881 offset++;
2882 proto_tree_add_item(header_tree, hf_sapdiag_msg_info, tvb, offset, 1, ENC_BIG_ENDIAN);
2883 offset++;
2884 proto_tree_add_item(header_tree, hf_sapdiag_msg_rc, tvb, offset, 1, ENC_BIG_ENDIAN);
2885 offset++;
2887 compress = tvb_get_uint8(tvb, offset);
2888 proto_tree_add_item(header_tree, hf_sapdiag_compress, tvb, offset, 1, ENC_BIG_ENDIAN);
2889 offset++;
2891 /* Check for error messages */
2892 if ((error_no != 0x00) && (tvb_reported_length_remaining(tvb, offset) > 0)){
2893 char *error_message = NULL;
2894 uint32_t error_message_length = 0;
2896 error_message_length = (uint32_t)tvb_reported_length_remaining(tvb, offset) - 1;
2897 error_message = (char *)tvb_get_string_enc(pinfo->pool, tvb, offset, error_message_length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
2898 proto_tree_add_string(sapdiag_tree, hf_sapdiag_error_message, tvb, offset, error_message_length, error_message);
2900 /* If the message is compressed */
2901 } else if ((compress == 0x01) && (tvb_reported_length_remaining(tvb, offset) >= 8)){
2903 /* Dissect the compressed payload */
2904 dissect_sapdiag_compressed_payload(tvb, pinfo, sapdiag_tree, sapdiag, offset);
2906 /* Message wrapped with SNC */
2907 } else if (((compress == 0x02) || (compress == 0x03)) && (tvb_reported_length_remaining(tvb, offset) > 0)){
2909 /* Call the SNC dissector */
2910 dissect_sapdiag_snc_frame(tvb, pinfo, sapdiag_tree, tree, offset);
2912 /* Uncompressed payload */
2913 } else {
2914 /* Check the payload length */
2915 if (tvb_reported_length_remaining(tvb, offset) > 0){
2916 /* Add the payload subtree */
2917 payload = proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
2918 payload_tree = proto_item_add_subtree(payload, ett_sapdiag);
2920 /* Dissect the payload */
2921 dissect_sapdiag_payload(tvb, pinfo, payload_tree, tree, offset);
2925 return offset;
2928 void
2929 proto_register_sapdiag(void)
2931 static hf_register_info hf[] = {
2932 { &hf_sapdiag_dp,
2933 { "DP Header", "sapdiag.dp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
2934 { &hf_sapdiag_header,
2935 { "Header", "sapdiag.header", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
2936 { &hf_sapdiag_payload,
2937 { "Message", "sapdiag.message", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
2938 { &hf_sapdiag_mode,
2939 { "Mode", "sapdiag.header.mode", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2940 { &hf_sapdiag_com_flag,
2941 { "Com Flag", "sapdiag.header.comflag", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
2942 { &hf_sapdiag_com_flag_TERM_EOS,
2943 { "Com Flag TERM_EOS", "sapdiag.header.comflag.TERM_EOS", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_EOS, NULL, HFILL }},
2944 { &hf_sapdiag_com_flag_TERM_EOC,
2945 { "Com Flag TERM_EOC", "sapdiag.header.comflag.TERM_EOC", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_EOC, NULL, HFILL }},
2946 { &hf_sapdiag_com_flag_TERM_NOP,
2947 { "Com Flag TERM_NOP", "sapdiag.header.comflag.TERM_NOP", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_NOP, NULL, HFILL }},
2948 { &hf_sapdiag_com_flag_TERM_EOP,
2949 { "Com Flag TERM_EOP", "sapdiag.header.comflag.TERM_EOP", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_EOP, NULL, HFILL }},
2950 { &hf_sapdiag_com_flag_TERM_INI,
2951 { "Com Flag TERM_INI", "sapdiag.header.comflag.TERM_INI", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_INI, NULL, HFILL }},
2952 { &hf_sapdiag_com_flag_TERM_CAS,
2953 { "Com Flag TERM_CAS", "sapdiag.header.comflag.TERM_CAS", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_CAS, NULL, HFILL }},
2954 { &hf_sapdiag_com_flag_TERM_NNM,
2955 { "Com Flag TERM_NNM", "sapdiag.header.comflag.TERM_NNM", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_NNM, NULL, HFILL }},
2956 { &hf_sapdiag_com_flag_TERM_GRA,
2957 { "Com Flag TERM_GRA", "sapdiag.header.comflag.TERM_GRA", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_GRA, NULL, HFILL }},
2959 { &hf_sapdiag_mode_stat,
2960 { "Mode Stat", "sapdiag.header.modestat", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2961 { &hf_sapdiag_err_no,
2962 { "Error Number", "sapdiag.header.errorno", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2963 { &hf_sapdiag_msg_type,
2964 { "Message Type", "sapdiag.header.msgtype", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2965 { &hf_sapdiag_msg_info,
2966 { "Message Info", "sapdiag.header.msginfo", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2967 { &hf_sapdiag_msg_rc,
2968 { "Message Rc", "sapdiag.header.msgrc", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2969 { &hf_sapdiag_compress,
2970 { "Compress", "sapdiag.header.compress", FT_UINT8, BASE_HEX, VALS(sapdiag_compress_vals), 0x0, NULL, HFILL }},
2972 /* Error Messages */
2973 { &hf_sapdiag_error_message,
2974 { "Error Message", "sapdiag.error_message", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
2976 /* Compression header */
2977 { &hf_sapdiag_compress_header,
2978 { "Compression Header", "sapdiag.header.compression", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
2979 { &hf_sapdiag_uncomplength,
2980 { "Uncompressed Length", "sapdiag.header.compression.uncomplength", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2981 { &hf_sapdiag_algorithm,
2982 { "Compression Algorithm", "sapdiag.header.compression.algorithm", FT_UINT8, BASE_HEX, VALS(sapdiag_algorithm_vals), 0x0, NULL, HFILL }},
2983 { &hf_sapdiag_magic,
2984 { "Magic Bytes", "sapdiag.header.compression.magic", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
2985 { &hf_sapdiag_special,
2986 { "Special", "sapdiag.header.compression.special", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
2988 /* SAPDiag Messages */
2989 { &hf_sapdiag_item,
2990 { "Item", "sapdiag.item", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
2991 { &hf_sapdiag_item_type,
2992 { "Type", "sapdiag.item.type", FT_UINT8, BASE_HEX, VALS(sapdiag_item_type_vals), 0x0, NULL, HFILL }},
2993 { &hf_sapdiag_item_id,
2994 { "ID", "sapdiag.item.id", FT_UINT8, BASE_HEX, VALS(sapdiag_item_id_vals), 0x0, NULL, HFILL }},
2995 { &hf_sapdiag_item_sid,
2996 { "SID", "sapdiag.item.sid", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
2997 { &hf_sapdiag_item_length_short,
2998 { "Length", "sapdiag.item.length_short", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
2999 { &hf_sapdiag_item_length_long,
3000 { "Length", "sapdiag.item.length_long", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3001 { &hf_sapdiag_item_value,
3002 { "Value", "sapdiag.item.value", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
3003 /* SAPDiag DP Header */
3004 { &hf_sapdiag_dp_request_id,
3005 { "Request ID", "sapdiag.dp.reqid", FT_INT32, BASE_DEC, VALS(sapdiag_dp_request_id_vals), 0x0, NULL, HFILL }},
3006 { &hf_sapdiag_dp_retcode,
3007 { "Retcode", "sapdiag.dp.retcode", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
3008 { &hf_sapdiag_dp_sender_id,
3009 { "Sender ID", "sapdiag.dp.senderid", FT_UINT8, BASE_HEX, VALS(sapdiag_dp_sender_id_vals), 0x0, NULL, HFILL }},
3010 { &hf_sapdiag_dp_action_type,
3011 { "Action type", "sapdiag.dp.actiontype", FT_UINT8, BASE_HEX, VALS(sapdiag_dp_action_type_vals), 0x0, NULL, HFILL }},
3012 { &hf_sapdiag_dp_req_info,
3013 { "Request Info", "sapdiag.dp.reqinfo", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
3014 /* Request Info Flag */
3015 { &hf_sapdiag_dp_req_info_LOGIN,
3016 { "Login Flag", "sapdiag.dp.reqinfo.login", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_LOGIN, NULL, HFILL }},
3017 { &hf_sapdiag_dp_req_info_LOGOFF,
3018 { "Logoff Flag", "sapdiag.dp.reqinfo.logoff", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_LOGOFF, NULL, HFILL }},
3019 { &hf_sapdiag_dp_req_info_SHUTDOWN,
3020 { "Shutdown Flag", "sapdiag.dp.reqinfo.shutdown", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_SHUTDOWN, NULL, HFILL }},
3021 { &hf_sapdiag_dp_req_info_GRAPHIC_TM,
3022 { "Graphic TM Flag", "sapdiag.dp.reqinfo.graphictm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_GRAPHIC_TM, NULL, HFILL }},
3023 { &hf_sapdiag_dp_req_info_ALPHA_TM,
3024 { "Alpha TM Flag", "sapdiag.dp.reqinfo.alphatm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_ALPHA_TM, NULL, HFILL }},
3025 { &hf_sapdiag_dp_req_info_ERROR_FROM_APPC,
3026 { "Error from APPC Flag", "sapdiag.dp.reqinfo.errorfromappc", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_ERROR_FROM_APPC, NULL, HFILL }},
3027 { &hf_sapdiag_dp_req_info_CANCELMODE,
3028 { "Cancel Mode Flag", "sapdiag.dp.reqinfo.cancelmode", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_CANCELMODE, NULL, HFILL }},
3029 { &hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF,
3030 { "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 }},
3031 { &hf_sapdiag_dp_req_info_MSG_WITH_OH,
3032 { "Msg with OH Flag", "sapdiag.dp.reqinfo.msg_with_oh", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_MSG_WITH_OH, NULL, HFILL }},
3033 { &hf_sapdiag_dp_req_info_BUFFER_REFRESH,
3034 { "Buffer Refresh Flag", "sapdiag.dp.reqinfo.buffer_refresh", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_BUFFER_REFRESH, NULL, HFILL }},
3035 { &hf_sapdiag_dp_req_info_BTC_SCHEDULER,
3036 { "BTC Scheduler Flag", "sapdiag.dp.reqinfo.btc_scheduler", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_BTC_SCHEDULER, NULL, HFILL }},
3037 { &hf_sapdiag_dp_req_info_APPC_SERVER_DOWN,
3038 { "APPC Server Down Flag", "sapdiag.dp.reqinfo.appc_server_down", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_APPC_SERVER_DOWN, NULL, HFILL }},
3039 { &hf_sapdiag_dp_req_info_MS_ERROR,
3040 { "MS Error Flag", "sapdiag.dp.reqinfo.ms_error", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_MS_ERROR, NULL, HFILL }},
3041 { &hf_sapdiag_dp_req_info_SET_SYSTEM_USER,
3042 { "Set System User Flag", "sapdiag.dp.reqinfo.set_system_user", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_SET_SYSTEM_USER, NULL, HFILL }},
3043 { &hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ,
3044 { "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 }},
3045 { &hf_sapdiag_dp_req_info_DP_AUTO_ABAP,
3046 { "DP Auto ABAP Flag", "sapdiag.dp.reqinfo.dp_auto_abap", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_AUTO_ABAP, NULL, HFILL }},
3047 { &hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO,
3048 { "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 }},
3049 { &hf_sapdiag_dp_req_info_DP_ADMIN,
3050 { "DP Admin Flag", "sapdiag.dp.reqinfo.dp_admin", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_ADMIN, NULL, HFILL }},
3051 { &hf_sapdiag_dp_req_info_DP_SPOOL_ALRM,
3052 { "DP Spool Alrm Flag", "sapdiag.dp.reqinfo.dp_spool_alrm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_SPOOL_ALRM, NULL, HFILL }},
3053 { &hf_sapdiag_dp_req_info_DP_HAND_SHAKE,
3054 { "DP Hand Shake Flag", "sapdiag.dp.reqinfo.dp_hand_shake", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_HAND_SHAKE, NULL, HFILL }},
3055 { &hf_sapdiag_dp_req_info_DP_CANCEL_PRIV,
3056 { "DP Cancel Privileges Flag", "sapdiag.dp.reqinfo.dp_cancel_priv", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_CANCEL_PRIV, NULL, HFILL }},
3057 { &hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT,
3058 { "DP Raise Timeout Flag", "sapdiag.dp.reqinfo.dp_raise_timeout", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_RAISE_TIMEOUT, NULL, HFILL }},
3059 { &hf_sapdiag_dp_req_info_DP_NEW_MODE,
3060 { "DP New Mode Flag", "sapdiag.dp.reqinfo.dp_new_mode", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_NEW_MODE, NULL, HFILL }},
3061 { &hf_sapdiag_dp_req_info_DP_SOFT_CANCEL,
3062 { "DP Soft Cancel Flag", "sapdiag.dp.reqinfo.dp_soft_cancel", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_SOFT_CANCEL, NULL, HFILL }},
3063 { &hf_sapdiag_dp_req_info_DP_TM_INPUT,
3064 { "DP TM Input Flag", "sapdiag.dp.reqinfo.dp_tm_input", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_TM_INPUT, NULL, HFILL }},
3065 { &hf_sapdiag_dp_req_info_DP_TM_OUTPUT,
3066 { "DP TM Output Flag", "sapdiag.dp.reqinfo.dp_tm_output", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_TM_OUTPUT, NULL, HFILL }},
3067 { &hf_sapdiag_dp_req_info_DP_ASYNC_RFC,
3068 { "DP Async RFC Flag", "sapdiag.dp.reqinfo.dp_async_rfc", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_ASYNC_RFC, NULL, HFILL }},
3069 { &hf_sapdiag_dp_req_info_DP_ICM_EVENT,
3070 { "DP ICM Event Flag", "sapdiag.dp.reqinfo.dp_icm_event", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_ICM_EVENT, NULL, HFILL }},
3071 { &hf_sapdiag_dp_req_info_DP_AUTO_TH,
3072 { "DP Auto TH Flag", "sapdiag.dp.reqinfo.dp_auto_th", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_AUTO_TH, NULL, HFILL }},
3073 { &hf_sapdiag_dp_req_info_DP_RFC_CANCEL,
3074 { "DP RFC Cancel Flag", "sapdiag.dp.reqinfo.dp_rfc_cancel", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_RFC_CANCEL, NULL, HFILL }},
3075 { &hf_sapdiag_dp_req_info_DP_MS_ADM,
3076 { "DP MS Adm Flag", "sapdiag.dp.reqinfo.dp_ms_adm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_MS_ADM, NULL, HFILL }},
3077 { &hf_sapdiag_dp_tid,
3078 { "TID", "sapdiag.dp.tid", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3079 { &hf_sapdiag_dp_uid,
3080 { "UID", "sapdiag.dp.uid", FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3081 { &hf_sapdiag_dp_mode,
3082 { "Mode", "sapdiag.dp.mode", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
3083 { &hf_sapdiag_dp_wp_id,
3084 { "WP Id", "sapdiag.dp.wpid", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3085 { &hf_sapdiag_dp_wp_ca_blk,
3086 { "WP Ca Blk", "sapdiag.dp.wpcablk", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3087 { &hf_sapdiag_dp_appc_ca_blk,
3088 { "APPC Ca Blk", "sapdiag.dp.appccablk", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3089 { &hf_sapdiag_dp_len,
3090 { "Len", "sapdiag.dp.len", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3091 { &hf_sapdiag_dp_new_stat,
3092 { "New Stat", "sapdiag.dp.newstat", FT_UINT8, BASE_HEX, VALS(sapdiag_dp_new_stat_vals), 0x0, NULL, HFILL }},
3093 { &hf_sapdiag_dp_rq_id,
3094 { "Request ID", "sapdiag.dp.rqid", FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3095 { &hf_sapdiag_dp_terminal,
3096 { "Terminal", "sapdiag.dp.terminal", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
3098 /* SAP Diag Support Bits */
3099 { &hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR,
3100 { "Support Bit PROGRESS_INDICATOR", "sapdiag.diag.supportbits.PROGRESS_INDICATOR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR, NULL, HFILL }},
3101 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS,
3102 { "Support Bit SAPGUI_LABELS", "sapdiag.diag.supportbits.SAPGUI_LABELS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS, NULL, HFILL }},
3103 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION,
3104 { "Support Bit SAPGUI_DIAGVERSION", "sapdiag.diag.supportbits.SAPGUI_DIAGVERSION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION, NULL, HFILL }},
3105 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT,
3106 { "Support Bit SAPGUI_SELECT_RECT", "sapdiag.diag.supportbits.SAPGUI_SELECT_RECT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT, NULL, HFILL }},
3107 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT,
3108 { "Support Bit SAPGUI_SYMBOL_RIGHT", "sapdiag.diag.supportbits.SAPGUI_SYMBOL_RIGHT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT, NULL, HFILL }},
3109 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC,
3110 { "Support Bit SAPGUI_FONT_METRIC", "sapdiag.diag.supportbits.SAPGUI_FONT_METRIC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC, NULL, HFILL }},
3111 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED,
3112 { "Support Bit SAPGUI_COMPR_ENHANCED", "sapdiag.diag.supportbits.SAPGUI_COMPR_ENHANCED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED, NULL, HFILL }},
3113 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE,
3114 { "Support Bit SAPGUI_IMODE", "sapdiag.diag.supportbits.SAPGUI_IMODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE, NULL, HFILL }},
3116 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE,
3117 { "Support Bit SAPGUI_LONG_MESSAGE", "sapdiag.diag.supportbits.SAPGUI_LONG_MESSAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE, NULL, HFILL }},
3118 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE,
3119 { "Support Bit SAPGUI_TABLE", "sapdiag.diag.supportbits.SAPGUI_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE, NULL, HFILL }},
3120 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1,
3121 { "Support Bit SAPGUI_FOCUS_1", "sapdiag.diag.supportbits.SAPGUI_FOCUS_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1, NULL, HFILL }},
3122 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1,
3123 { "Support Bit SAPGUI_PUSHBUTTON_1", "sapdiag.diag.supportbits.SAPGUI_PUSHBUTTON_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1, NULL, HFILL }},
3124 { &hf_SAPDIAG_SUPPORT_BIT_UPPERCASE,
3125 { "Support Bit UPPERCASE", "sapdiag.diag.supportbits.UPPERCASE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UPPERCASE, NULL, HFILL }},
3126 { &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY,
3127 { "Support Bit SAPGUI_TABPROPERTY", "sapdiag.diag.supportbits.SAPGUI_TABPROPERTY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY, NULL, HFILL }},
3128 { &hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE,
3129 { "Support Bit INPUT_UPPERCASE", "sapdiag.diag.supportbits.INPUT_UPPERCASE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE, NULL, HFILL }},
3130 { &hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG,
3131 { "Support Bit RFC_DIALOG", "sapdiag.diag.supportbits.RFC_DIALOG", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_DIALOG, NULL, HFILL }},
3133 { &hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT,
3134 { "Support Bit LIST_HOTSPOT", "sapdiag.diag.supportbits.LIST_HOTSPOT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT, NULL, HFILL }},
3135 { &hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE,
3136 { "Support Bit FKEY_TABLE", "sapdiag.diag.supportbits.FKEY_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FKEY_TABLE, NULL, HFILL }},
3137 { &hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT,
3138 { "Support Bit MENU_SHORTCUT", "sapdiag.diag.supportbits.MENU_SHORTCUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT, NULL, HFILL }},
3139 { &hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS,
3140 { "Support Bit STOP_TRANS", "sapdiag.diag.supportbits.STOP_TRANS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_STOP_TRANS, NULL, HFILL }},
3141 { &hf_SAPDIAG_SUPPORT_BIT_FULL_MENU,
3142 { "Support Bit FULL_MENU", "sapdiag.diag.supportbits.FULL_MENU", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FULL_MENU, NULL, HFILL }},
3143 { &hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES,
3144 { "Support Bit OBJECT_NAMES", "sapdiag.diag.supportbits.OBJECT_NAMES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_OBJECT_NAMES, NULL, HFILL }},
3145 { &hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE,
3146 { "Support Bit CONTAINER_TYPE", "sapdiag.diag.supportbits.CONTAINER_TYPE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE, NULL, HFILL }},
3147 { &hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS,
3148 { "Support Bit DLGH_FLAGS", "sapdiag.diag.supportbits.DLGH_FLAGS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DLGH_FLAGS, NULL, HFILL }},
3150 { &hf_SAPDIAG_SUPPORT_BIT_APPL_MNU,
3151 { "Support Bit APPL_MNU", "sapdiag.diag.supportbits.APPL_MNU", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_APPL_MNU, NULL, HFILL }},
3152 { &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO,
3153 { "Support Bit MESSAGE_INFO", "sapdiag.diag.supportbits.MESSAGE_INFO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_INFO, NULL, HFILL }},
3154 { &hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1,
3155 { "Support Bit MESDUM_FLAG1", "sapdiag.diag.supportbits.MESDUM_FLAG1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1, NULL, HFILL }},
3156 { &hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB,
3157 { "Support Bit TABSEL_ATTRIB", "sapdiag.diag.supportbits.TABSEL_ATTRIB", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB, NULL, HFILL }},
3158 { &hf_SAPDIAG_SUPPORT_BIT_GUIAPI,
3159 { "Support Bit GUIAPI", "sapdiag.diag.supportbits.GUIAPI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUIAPI, NULL, HFILL }},
3160 { &hf_SAPDIAG_SUPPORT_BIT_NOGRAPH,
3161 { "Support Bit NOGRAPH", "sapdiag.diag.supportbits.NOGRAPH", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOGRAPH, NULL, HFILL }},
3162 { &hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES,
3163 { "Support Bit NOMESSAGES", "sapdiag.diag.supportbits.NOMESSAGES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOMESSAGES, NULL, HFILL }},
3164 { &hf_SAPDIAG_SUPPORT_BIT_NORABAX,
3165 { "Support Bit NORABAX", "sapdiag.diag.supportbits.NORABAX", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NORABAX, NULL, HFILL }},
3167 { &hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG,
3168 { "Support Bit NOSYSMSG", "sapdiag.diag.supportbits.NOSYSMSG", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOSYSMSG, NULL, HFILL }},
3169 { &hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT,
3170 { "Support Bit NOSAPSCRIPT", "sapdiag.diag.supportbits.NOSAPSCRIPT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT, NULL, HFILL }},
3171 { &hf_SAPDIAG_SUPPORT_BIT_NORFC,
3172 { "Support Bit NORFC", "sapdiag.diag.supportbits.NORFC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NORFC, NULL, HFILL }},
3173 { &hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT,
3174 { "Support Bit NEW_BSD_JUSTRIGHT", "sapdiag.diag.supportbits.NEW_BSD_JUSTRIGHT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT, NULL, HFILL }},
3175 { &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS,
3176 { "Support Bit MESSAGE_VARS", "sapdiag.diag.supportbits.MESSAGE_VARS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_VARS, NULL, HFILL }},
3177 { &hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT,
3178 { "Support Bit OCX_SUPPORT", "sapdiag.diag.supportbits.OCX_SUPPORT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_OCX_SUPPORT, NULL, HFILL }},
3179 { &hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS,
3180 { "Support Bit SCROLL_INFOS", "sapdiag.diag.supportbits.SCROLL_INFOS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SCROLL_INFOS, NULL, HFILL }},
3181 { &hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK,
3182 { "Support Bit TABLE_SIZE_OK", "sapdiag.diag.supportbits.TABLE_SIZE_OK", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK, NULL, HFILL }},
3184 { &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2,
3185 { "Support Bit MESSAGE_INFO2", "sapdiag.diag.supportbits.MESSAGE_INFO2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2, NULL, HFILL }},
3186 { &hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE,
3187 { "Support Bit VARINFO_OKCODE", "sapdiag.diag.supportbits.VARINFO_OKCODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE, NULL, HFILL }},
3188 { &hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE,
3189 { "Support Bit CURR_TCODE", "sapdiag.diag.supportbits.CURR_TCODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CURR_TCODE, NULL, HFILL }},
3190 { &hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE,
3191 { "Support Bit CONN_WSIZE", "sapdiag.diag.supportbits.CONN_WSIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONN_WSIZE, NULL, HFILL }},
3192 { &hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2,
3193 { "Support Bit PUSHBUTTON_2", "sapdiag.diag.supportbits.PUSHBUTTON_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2, NULL, HFILL }},
3194 { &hf_SAPDIAG_SUPPORT_BIT_TABSTRIP,
3195 { "Support Bit TABSTRIP", "sapdiag.diag.supportbits.TABSTRIP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSTRIP, NULL, HFILL }},
3196 { &hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1,
3197 { "Support Bit UNKNOWN_1", "sapdiag.diag.supportbits.UNKNOWN_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNKNOWN_1, NULL, HFILL }},
3198 { &hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS,
3199 { "Support Bit TABSCROLL_INFOS", "sapdiag.diag.supportbits.TABSCROLL_INFOS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS, NULL, HFILL }},
3201 { &hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES,
3202 { "Support Bit TABLE_FIELD_NAMES", "sapdiag.diag.supportbits.TABLE_FIELD_NAMES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES, NULL, HFILL }},
3203 { &hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST,
3204 { "Support Bit NEW_MODE_REQUEST", "sapdiag.diag.supportbits.NEW_MODE_REQUEST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST, NULL, HFILL }},
3205 { &hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER,
3206 { "Support Bit RFCBLOB_DIAG_PARSER", "sapdiag.diag.supportbits.RFCBLOB_DIAG_PARSER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER, NULL, HFILL }},
3207 { &hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER,
3208 { "Support Bit MULTI_LOGIN_USER", "sapdiag.diag.supportbits.MULTI_LOGIN_USER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER, NULL, HFILL }},
3209 { &hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER,
3210 { "Support Bit CONTROL_CONTAINER", "sapdiag.diag.supportbits.CONTROL_CONTAINER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER, NULL, HFILL }},
3211 { &hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED,
3212 { "Support Bit APPTOOLBAR_FIXED", "sapdiag.diag.supportbits.APPTOOLBAR_FIXED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED, NULL, HFILL }},
3213 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED,
3214 { "Support Bit R3INFO_USER_CHECKED", "sapdiag.diag.supportbits.R3INFO_USER_CHECKED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED, NULL, HFILL }},
3215 { &hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO,
3216 { "Support Bit NEED_STDDYNPRO", "sapdiag.diag.supportbits.NEED_STDDYNPRO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO, NULL, HFILL }},
3218 { &hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER,
3219 { "Support Bit TYPE_SERVER", "sapdiag.diag.supportbits.TYPE_SERVER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TYPE_SERVER, NULL, HFILL }},
3220 { &hf_SAPDIAG_SUPPORT_BIT_COMBOBOX,
3221 { "Support Bit COMBOBOX", "sapdiag.diag.supportbits.COMBOBOX", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_COMBOBOX, NULL, HFILL }},
3222 { &hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED,
3223 { "Support Bit INPUT_REQUIRED", "sapdiag.diag.supportbits.INPUT_REQUIRED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED, NULL, HFILL }},
3224 { &hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE,
3225 { "Support Bit ISO_LANGUAGE", "sapdiag.diag.supportbits.ISO_LANGUAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE, NULL, HFILL }},
3226 { &hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE,
3227 { "Support Bit COMBOBOX_TABLE", "sapdiag.diag.supportbits.COMBOBOX_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE, NULL, HFILL }},
3228 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS,
3229 { "Support Bit R3INFO_FLAGS", "sapdiag.diag.supportbits.R3INFO_FLAGS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS, NULL, HFILL }},
3230 { &hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS,
3231 { "Support Bit CHECKRADIO_EVENTS", "sapdiag.diag.supportbits.CHECKRADIO_EVENTS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS, NULL, HFILL }},
3232 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID,
3233 { "Support Bit R3INFO_USERID", "sapdiag.diag.supportbits.R3INFO_USERID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_USERID, NULL, HFILL }},
3235 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT,
3236 { "Support Bit R3INFO_ROLLCOUNT", "sapdiag.diag.supportbits.R3INFO_ROLLCOUNT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT, NULL, HFILL }},
3237 { &hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2,
3238 { "Support Bit USER_TURNTIME2", "sapdiag.diag.supportbits.USER_TURNTIME2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_USER_TURNTIME2, NULL, HFILL }},
3239 { &hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD,
3240 { "Support Bit NUM_FIELD", "sapdiag.diag.supportbits.NUM_FIELD", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NUM_FIELD, NULL, HFILL }},
3241 { &hf_SAPDIAG_SUPPORT_BIT_WIN16,
3242 { "Support Bit WIN16", "sapdiag.diag.supportbits.WIN16", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WIN16, NULL, HFILL }},
3243 { &hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU,
3244 { "Support Bit CONTEXT_MENU", "sapdiag.diag.supportbits.CONTEXT_MENU", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTEXT_MENU, NULL, HFILL }},
3245 { &hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE,
3246 { "Support Bit SCROLLABLE_TABSTRIP_PAGE", "sapdiag.diag.supportbits.SCROLLABLE_TABSTRIP_PAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE, NULL, HFILL }},
3247 { &hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION,
3248 { "Support Bit EVENT_DESCRIPTION", "sapdiag.diag.supportbits.EVENT_DESCRIPTION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION, NULL, HFILL }},
3249 { &hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER,
3250 { "Support Bit LABEL_OWNER", "sapdiag.diag.supportbits.LABEL_OWNER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_LABEL_OWNER, NULL, HFILL }},
3252 { &hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD,
3253 { "Support Bit CLICKABLE_FIELD", "sapdiag.diag.supportbits.CLICKABLE_FIELD", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD, NULL, HFILL }},
3254 { &hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG,
3255 { "Support Bit PROPERTY_BAG", "sapdiag.diag.supportbits.PROPERTY_BAG", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROPERTY_BAG, NULL, HFILL }},
3256 { &hf_SAPDIAG_SUPPORT_BIT_UNUSED_1,
3257 { "Support Bit UNUSED_1", "sapdiag.diag.supportbits.UNUSED_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_1, NULL, HFILL }},
3258 { &hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2,
3259 { "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 }},
3260 { &hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID,
3261 { "Support Bit PROPFONT_VALID", "sapdiag.diag.supportbits.PROPFONT_VALID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROPFONT_VALID, NULL, HFILL }},
3262 { &hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER,
3263 { "Support Bit VARINFO_CONTAINER", "sapdiag.diag.supportbits.VARINFO_CONTAINER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER, NULL, HFILL }},
3264 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID,
3265 { "Support Bit R3INFO_IMODEUUID", "sapdiag.diag.supportbits.R3INFO_IMODEUUID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID, NULL, HFILL }},
3266 { &hf_SAPDIAG_SUPPORT_BIT_NOTGUI,
3267 { "Support Bit NOTGUI", "sapdiag.diag.supportbits.NOTGUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOTGUI, NULL, HFILL }},
3269 { &hf_SAPDIAG_SUPPORT_BIT_WAN,
3270 { "Support Bit WAN", "sapdiag.diag.supportbits.WAN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WAN, NULL, HFILL }},
3271 { &hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS,
3272 { "Support Bit XML_BLOBS", "sapdiag.diag.supportbits.XML_BLOBS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XML_BLOBS, NULL, HFILL }},
3273 { &hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE,
3274 { "Support Bit RFC_QUEUE", "sapdiag.diag.supportbits.RFC_QUEUE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_QUEUE, NULL, HFILL }},
3275 { &hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS,
3276 { "Support Bit RFC_COMPRESS", "sapdiag.diag.supportbits.RFC_COMPRESS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_COMPRESS, NULL, HFILL }},
3277 { &hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS,
3278 { "Support Bit JAVA_BEANS", "sapdiag.diag.supportbits.JAVA_BEANS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_JAVA_BEANS, NULL, HFILL }},
3279 { &hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND,
3280 { "Support Bit DPLOADONDEMAND", "sapdiag.diag.supportbits.DPLOADONDEMAND", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND, NULL, HFILL }},
3281 { &hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE,
3282 { "Support Bit CTL_PROPCACHE", "sapdiag.diag.supportbits.CTL_PROPCACHE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE, NULL, HFILL }},
3283 { &hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID,
3284 { "Support Bit ENJOY_IMODEUUID", "sapdiag.diag.supportbits.ENJOY_IMODEUUID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID, NULL, HFILL }},
3286 { &hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB,
3287 { "Support Bit RFC_ASYNC_BLOB", "sapdiag.diag.supportbits.RFC_ASYNC_BLOB", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB, NULL, HFILL }},
3288 { &hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS,
3289 { "Support Bit KEEP_SCROLLPOS", "sapdiag.diag.supportbits.KEEP_SCROLLPOS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS, NULL, HFILL }},
3290 { &hf_SAPDIAG_SUPPORT_BIT_UNUSED_2,
3291 { "Support Bit UNUSED_2", "sapdiag.diag.supportbits.UNUSED_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_2, NULL, HFILL }},
3292 { &hf_SAPDIAG_SUPPORT_BIT_UNUSED_3,
3293 { "Support Bit UNUSED_3", "sapdiag.diag.supportbits.UNUSED_3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_3, NULL, HFILL }},
3294 { &hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES,
3295 { "Support Bit XML_PROPERTIES", "sapdiag.diag.supportbits.XML_PROPERTIES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XML_PROPERTIES, NULL, HFILL }},
3296 { &hf_SAPDIAG_SUPPORT_BIT_UNUSED_4,
3297 { "Support Bit UNUSED_4", "sapdiag.diag.supportbits.UNUSED_4", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_4, NULL, HFILL }},
3298 { &hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD,
3299 { "Support Bit HEX_FIELD", "sapdiag.diag.supportbits.HEX_FIELD", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_HEX_FIELD, NULL, HFILL }},
3300 { &hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE,
3301 { "Support Bit HAS_CACHE", "sapdiag.diag.supportbits.HAS_CACHE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_HAS_CACHE, NULL, HFILL }},
3303 { &hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE,
3304 { "Support Bit XML_PROP_TABLE", "sapdiag.diag.supportbits.XML_PROP_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE, NULL, HFILL }},
3305 { &hf_SAPDIAG_SUPPORT_BIT_UNUSED_5,
3306 { "Support Bit UNUSED_5", "sapdiag.diag.supportbits.UNUSED_5", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_5, NULL, HFILL }},
3307 { &hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2,
3308 { "Support Bit ENJOY_IMODEUUID2", "sapdiag.diag.supportbits.ENJOY_IMODEUUID2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2, NULL, HFILL }},
3309 { &hf_SAPDIAG_SUPPORT_BIT_ITS,
3310 { "Support Bit ITS", "sapdiag.diag.supportbits.ITS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ITS, NULL, HFILL }},
3311 { &hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS,
3312 { "Support Bit NO_EASYACCESS", "sapdiag.diag.supportbits.NO_EASYACCESS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NO_EASYACCESS, NULL, HFILL }},
3313 { &hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP,
3314 { "Support Bit PROPERTYPUMP", "sapdiag.diag.supportbits.PROPERTYPUMP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROPERTYPUMP, NULL, HFILL }},
3315 { &hf_SAPDIAG_SUPPORT_BIT_COOKIE,
3316 { "Support Bit COOKIE", "sapdiag.diag.supportbits.COOKIE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_COOKIE, NULL, HFILL }},
3317 { &hf_SAPDIAG_SUPPORT_BIT_UNUSED_6,
3318 { "Support Bit UNUSED_6", "sapdiag.diag.supportbits.UNUSED_6", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_6, NULL, HFILL }},
3320 { &hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE,
3321 { "Support Bit SUPPBIT_AREA_SIZE", "sapdiag.diag.supportbits.SUPPBIT_AREA_SIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE, NULL, HFILL }},
3322 { &hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE,
3323 { "Support Bit DPLOADONDEMAND_WRITE", "sapdiag.diag.supportbits.DPLOADONDEMAND_WRITE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE, NULL, HFILL }},
3324 { &hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS,
3325 { "Support Bit CONTROL_FOCUS", "sapdiag.diag.supportbits.CONTROL_FOCUS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS, NULL, HFILL }},
3326 { &hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY,
3327 { "Support Bit ENTRY_HISTORY", "sapdiag.diag.supportbits.ENTRY_HISTORY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY, NULL, HFILL }},
3328 { &hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE,
3329 { "Support Bit AUTO_CODEPAGE", "sapdiag.diag.supportbits.AUTO_CODEPAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE, NULL, HFILL }},
3330 { &hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS,
3331 { "Support Bit CACHED_VSETS", "sapdiag.diag.supportbits.CACHED_VSETS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CACHED_VSETS, NULL, HFILL }},
3332 { &hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR,
3333 { "Support Bit EMERGENCY_REPAIR", "sapdiag.diag.supportbits.EMERGENCY_REPAIR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR, NULL, HFILL }},
3334 { &hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT,
3335 { "Support Bit AREA2FRONT", "sapdiag.diag.supportbits.AREA2FRONT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AREA2FRONT, NULL, HFILL }},
3337 { &hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH,
3338 { "Support Bit SCROLLBAR_WIDTH", "sapdiag.diag.supportbits.SCROLLBAR_WIDTH", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH, NULL, HFILL }},
3339 { &hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE,
3340 { "Support Bit AUTORESIZE", "sapdiag.diag.supportbits.AUTORESIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AUTORESIZE, NULL, HFILL }},
3341 { &hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN,
3342 { "Support Bit EDIT_VARLEN", "sapdiag.diag.supportbits.EDIT_VARLEN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EDIT_VARLEN, NULL, HFILL }},
3343 { &hf_SAPDIAG_SUPPORT_BIT_WORKPLACE,
3344 { "Support Bit WORKPLACE", "sapdiag.diag.supportbits.WORKPLACE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WORKPLACE, NULL, HFILL }},
3345 { &hf_SAPDIAG_SUPPORT_BIT_PRINTDATA,
3346 { "Support Bit PRINTDATA", "sapdiag.diag.supportbits.PRINTDATA", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PRINTDATA, NULL, HFILL }},
3347 { &hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2,
3348 { "Support Bit UNKNOWN_2", "sapdiag.diag.supportbits.UNKNOWN_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNKNOWN_2, NULL, HFILL }},
3349 { &hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION,
3350 { "Support Bit SINGLE_SESSION", "sapdiag.diag.supportbits.SINGLE_SESSION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SINGLE_SESSION, NULL, HFILL }},
3351 { &hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE,
3352 { "Support Bit NOTIFY_NEWMODE", "sapdiag.diag.supportbits.NOTIFY_NEWMODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE, NULL, HFILL }},
3354 { &hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT,
3355 { "Support Bit TOOLBAR_HEIGHT", "sapdiag.diag.supportbits.TOOLBAR_HEIGHT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT, NULL, HFILL }},
3356 { &hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER,
3357 { "Support Bit XMLPROP_CONTAINER", "sapdiag.diag.supportbits.XMLPROP_CONTAINER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER, NULL, HFILL }},
3358 { &hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO,
3359 { "Support Bit XMLPROP_DYNPRO", "sapdiag.diag.supportbits.XMLPROP_DYNPRO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO, NULL, HFILL }},
3360 { &hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT,
3361 { "Support Bit DP_HTTP_PUT", "sapdiag.diag.supportbits.DP_HTTP_PUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT, NULL, HFILL }},
3362 { &hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT,
3363 { "Support Bit DYNAMIC_PASSPORT", "sapdiag.diag.supportbits.DYNAMIC_PASSPORT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT, NULL, HFILL }},
3364 { &hf_SAPDIAG_SUPPORT_BIT_WEBGUI,
3365 { "Support Bit WEBGUI", "sapdiag.diag.supportbits.WEBGUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WEBGUI, NULL, HFILL }},
3366 { &hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE,
3367 { "Support Bit WEBGUI_HELPMODE", "sapdiag.diag.supportbits.WEBGUI_HELPMODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE, NULL, HFILL }},
3368 { &hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST,
3369 { "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 }},
3371 { &hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2,
3372 { "Support Bit CBU_RBUDUMMY_2", "sapdiag.diag.supportbits.CBU_RBUDUMMY_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2, NULL, HFILL }},
3373 { &hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1,
3374 { "Support Bit EOKDUMMY_1", "sapdiag.diag.supportbits.EOKDUMMY_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EOKDUMMY_1, NULL, HFILL }},
3375 { &hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING,
3376 { "Support Bit GUI_USER_SCRIPTING", "sapdiag.diag.supportbits.GUI_USER_SCRIPTING", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING, NULL, HFILL }},
3377 { &hf_SAPDIAG_SUPPORT_BIT_SLC,
3378 { "Support Bit SLC", "sapdiag.diag.supportbits.SLC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SLC, NULL, HFILL }},
3379 { &hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY,
3380 { "Support Bit ACCESSIBILITY", "sapdiag.diag.supportbits.ACCESSIBILITY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ACCESSIBILITY, NULL, HFILL }},
3381 { &hf_SAPDIAG_SUPPORT_BIT_ECATT,
3382 { "Support Bit ECATT", "sapdiag.diag.supportbits.ECATT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ECATT, NULL, HFILL }},
3383 { &hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3,
3384 { "Support Bit ENJOY_IMODEUUID3", "sapdiag.diag.supportbits.ENJOY_IMODEUUID3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3, NULL, HFILL }},
3385 { &hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8,
3386 { "Support Bit ENABLE_UTF8", "sapdiag.diag.supportbits.ENABLE_UTF8", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_UTF8, NULL, HFILL }},
3388 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME,
3389 { "Support Bit R3INFO_AUTOLOGOUT_TIME", "sapdiag.diag.supportbits.R3INFO_AUTOLOGOUT_TIME", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME, NULL, HFILL }},
3390 { &hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST,
3391 { "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 }},
3392 { &hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE,
3393 { "Support Bit ENABLE_UTF16BE", "sapdiag.diag.supportbits.ENABLE_UTF16BE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE, NULL, HFILL }},
3394 { &hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE,
3395 { "Support Bit ENABLE_UTF16LE", "sapdiag.diag.supportbits.ENABLE_UTF16LE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE, NULL, HFILL }},
3396 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP,
3397 { "Support Bit R3INFO_CODEPAGE_APP", "sapdiag.diag.supportbits.R3INFO_CODEPAGE_APP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP, NULL, HFILL }},
3398 { &hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4,
3399 { "Support Bit ENABLE_APPL4", "sapdiag.diag.supportbits.ENABLE_APPL4", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_APPL4, NULL, HFILL }},
3400 { &hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL,
3401 { "Support Bit GUIPATCHLEVEL", "sapdiag.diag.supportbits.GUIPATCHLEVEL", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL, NULL, HFILL }},
3402 { &hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE,
3403 { "Support Bit CBURBU_NEW_STATE", "sapdiag.diag.supportbits.CBURBU_NEW_STATE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE, NULL, HFILL }},
3405 { &hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID,
3406 { "Support Bit BINARY_EVENTID", "sapdiag.diag.supportbits.BINARY_EVENTID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_BINARY_EVENTID, NULL, HFILL }},
3407 { &hf_SAPDIAG_SUPPORT_BIT_GUI_THEME,
3408 { "Support Bit GUI_THEME", "sapdiag.diag.supportbits.GUI_THEME", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_THEME, NULL, HFILL }},
3409 { &hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW,
3410 { "Support Bit TOP_WINDOW", "sapdiag.diag.supportbits.TOP_WINDOW", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TOP_WINDOW, NULL, HFILL }},
3411 { &hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1,
3412 { "Support Bit EVENT_DESCRIPTION_1", "sapdiag.diag.supportbits.EVENT_DESCRIPTION_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1, NULL, HFILL }},
3413 { &hf_SAPDIAG_SUPPORT_BIT_SPLITTER,
3414 { "Support Bit SPLITTER", "sapdiag.diag.supportbits.SPLITTER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SPLITTER, NULL, HFILL }},
3415 { &hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY,
3416 { "Support Bit VALUE_4_HISTORY", "sapdiag.diag.supportbits.VALUE_4_HISTORY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY, NULL, HFILL }},
3417 { &hf_SAPDIAG_SUPPORT_BIT_ACC_LIST,
3418 { "Support Bit ACC_LIST", "sapdiag.diag.supportbits.ACC_LIST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ACC_LIST, NULL, HFILL }},
3419 { &hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO,
3420 { "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 }},
3422 { &hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM,
3423 { "Support Bit TEXTEDIT_STREAM", "sapdiag.diag.supportbits.TEXTEDIT_STREAM", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM, NULL, HFILL }},
3424 { &hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS,
3425 { "Support Bit DYNT_NOFOCUS", "sapdiag.diag.supportbits.DYNT_NOFOCUS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS, NULL, HFILL }},
3426 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1,
3427 { "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 }},
3428 { &hf_SAPDIAG_SUPPORT_BIT_FRAME_1,
3429 { "Support Bit FRAME_1", "sapdiag.diag.supportbits.FRAME_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FRAME_1, NULL, HFILL }},
3430 { &hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI,
3431 { "Support Bit TICKET4GUI", "sapdiag.diag.supportbits.TICKET4GUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TICKET4GUI, NULL, HFILL }},
3432 { &hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS,
3433 { "Support Bit ACC_LIST_PROPS", "sapdiag.diag.supportbits.ACC_LIST_PROPS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS, NULL, HFILL }},
3434 { &hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT,
3435 { "Support Bit TABSEL_ATTRIB_INPUT", "sapdiag.diag.supportbits.TABSEL_ATTRIB_INPUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT, NULL, HFILL }},
3436 { &hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP,
3437 { "Support Bit DEFAULT_TOOLTIP", "sapdiag.diag.supportbits.DEFAULT_TOOLTIP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP, NULL, HFILL }},
3439 { &hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2,
3440 { "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 }},
3441 { &hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3,
3442 { "Support Bit CBU_RBUDUMMY_3", "sapdiag.diag.supportbits.CBU_RBUDUMMY_3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3, NULL, HFILL }},
3443 { &hf_SAPDIAG_SUPPORT_BIT_CELLINFO,
3444 { "Support Bit CELLINFO", "sapdiag.diag.supportbits.CELLINFO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CELLINFO, NULL, HFILL }},
3445 { &hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2,
3446 { "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 }},
3447 { &hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT,
3448 { "Support Bit TABLE_COLUMNWIDTH_INPUT", "sapdiag.diag.supportbits.TABLE_COLUMNWIDTH_INPUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT, NULL, HFILL }},
3449 { &hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN,
3450 { "Support Bit ITS_PLUGIN", "sapdiag.diag.supportbits.ITS_PLUGIN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ITS_PLUGIN, NULL, HFILL }},
3451 { &hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS,
3452 { "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 }},
3453 { &hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI,
3454 { "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 }},
3456 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2,
3457 { "Support Bit R3INFO_FLAGS_2", "sapdiag.diag.supportbits.R3INFO_FLAGS_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2, NULL, HFILL }},
3458 { &hf_SAPDIAG_SUPPORT_BIT_RCUI,
3459 { "Support Bit RCUI", "sapdiag.diag.supportbits.RCUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RCUI, NULL, HFILL }},
3460 { &hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE,
3461 { "Support Bit MENUENTRY_WITH_FCODE", "sapdiag.diag.supportbits.MENUENTRY_WITH_FCODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE, NULL, HFILL }},
3462 { &hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE,
3463 { "Support Bit WEBSAPCONSOLE", "sapdiag.diag.supportbits.WEBSAPCONSOLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE, NULL, HFILL }},
3464 { &hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION,
3465 { "Support Bit R3INFO_KERNEL_VERSION", "sapdiag.diag.supportbits.R3INFO_KERNEL_VERSION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION, NULL, HFILL }},
3466 { &hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP,
3467 { "Support Bit VARINFO_CONTAINER_LOOP", "sapdiag.diag.supportbits.VARINFO_CONTAINER_LOOP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP, NULL, HFILL }},
3468 { &hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2,
3469 { "Support Bit EOKDUMMY_2", "sapdiag.diag.supportbits.EOKDUMMY_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EOKDUMMY_2, NULL, HFILL }},
3470 { &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3,
3471 { "Support Bit MESSAGE_INFO3", "sapdiag.diag.supportbits.MESSAGE_INFO3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3, NULL, HFILL }},
3473 { &hf_SAPDIAG_SUPPORT_BIT_SBA2,
3474 { "Support Bit SBA2", "sapdiag.diag.supportbits.SBA2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SBA2, NULL, HFILL }},
3475 { &hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE,
3476 { "Support Bit MAINAREA_SIZE", "sapdiag.diag.supportbits.MAINAREA_SIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE, NULL, HFILL }},
3477 { &hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2,
3478 { "Support Bit GUIPATCHLEVEL_2", "sapdiag.diag.supportbits.GUIPATCHLEVEL_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2, NULL, HFILL }},
3479 { &hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE,
3480 { "Support Bit DISPLAY_SIZE", "sapdiag.diag.supportbits.DISPLAY_SIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE, NULL, HFILL }},
3481 { &hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET,
3482 { "Support Bit GUI_PACKET", "sapdiag.diag.supportbits.GUI_PACKET", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_PACKET, NULL, HFILL }},
3483 { &hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER,
3484 { "Support Bit DIALOG_STEP_NUMBER", "sapdiag.diag.supportbits.DIALOG_STEP_NUMBER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER, NULL, HFILL }},
3485 { &hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION,
3486 { "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 }},
3487 { &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST,
3488 { "Support Bit MESSAGE_SERVICE_REQUEST", "sapdiag.diag.supportbits.MESSAGE_SERVICE_REQUEST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST, NULL, HFILL }},
3490 { &hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME,
3491 { "Support Bit DYNT_FOCUS_FRAME", "sapdiag.diag.supportbits.DYNT_FOCUS_FRAME", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME, NULL, HFILL }},
3492 { &hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN,
3493 { "Support Bit MAX_STRING_LEN", "sapdiag.diag.supportbits.MAX_STRING_LEN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN, NULL, HFILL }},
3494 { &hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1,
3495 { "Support Bit VARINFO_CONTAINER_1", "sapdiag.diag.supportbits.VARINFO_CONTAINER_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1, NULL, HFILL }},
3496 { &hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS,
3497 { "Support Bit STD_TOOLBAR_ITEMS", "sapdiag.diag.supportbits.STD_TOOLBAR_ITEMS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS, NULL, HFILL }},
3498 { &hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO,
3499 { "Support Bit XMLPROP_LIST_DYNPRO", "sapdiag.diag.supportbits.XMLPROP_LIST_DYNPRO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO, NULL, HFILL }},
3500 { &hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT,
3501 { "Support Bit TRACE_GUI_CONNECT", "sapdiag.diag.supportbits.TRACE_GUI_CONNECT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT, NULL, HFILL }},
3502 { &hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH,
3503 { "Support Bit LIST_FULLWIDTH", "sapdiag.diag.supportbits.LIST_FULLWIDTH", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH, NULL, HFILL }},
3504 { &hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT,
3505 { "Support Bit ALLWAYS_SEND_CLIENT", "sapdiag.diag.supportbits.ALLWAYS_SEND_CLIENT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT, NULL, HFILL }},
3507 { &hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3,
3508 { "Support Bit UNKNOWN_3", "sapdiag.diag.supportbits.UNKNOWN_3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNKNOWN_3, NULL, HFILL }},
3509 { &hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR,
3510 { "Support Bit GUI_SIGNATURE_COLOR", "sapdiag.diag.supportbits.GUI_SIGNATURE_COLOR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR, NULL, HFILL }},
3511 { &hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE,
3512 { "Support Bit MAX_WSIZE", "sapdiag.diag.supportbits.MAX_WSIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MAX_WSIZE, NULL, HFILL }},
3513 { &hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS,
3514 { "Support Bit SAP_PERSONAS", "sapdiag.diag.supportbits.SAP_PERSONAS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAP_PERSONAS, NULL, HFILL }},
3515 { &hf_SAPDIAG_SUPPORT_BIT_IDA_ALV,
3516 { "Support Bit IDA_ALV", "sapdiag.diag.supportbits.IDA_ALV", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_IDA_ALV, NULL, HFILL }},
3517 { &hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS,
3518 { "Support Bit IDA_ALV_FRAGMENTS", "sapdiag.diag.supportbits.IDA_ALV_FRAGMENTS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS, NULL, HFILL }},
3519 { &hf_SAPDIAG_SUPPORT_BIT_AMC,
3520 { "Support Bit AMC", "sapdiag.diag.supportbits.AMC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AMC, NULL, HFILL }},
3521 { &hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC,
3522 { "Support Bit EXTMODE_FONT_METRIC", "sapdiag.diag.supportbits.EXTMODE_FONT_METRIC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC, NULL, HFILL }},
3524 { &hf_SAPDIAG_SUPPORT_BIT_GROUPBOX,
3525 { "Support Bit GROUPBOX", "sapdiag.diag.supportbits.GROUPBOX", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GROUPBOX, NULL, HFILL }},
3526 { &hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON,
3527 { "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 }},
3528 { &hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST,
3529 { "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 }},
3530 { &hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE,
3531 { "Support Bit FIORI_MODE", "sapdiag.diag.supportbits.FIORI_MODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FIORI_MODE, NULL, HFILL }},
3532 { &hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE,
3533 { "Support Bit CONNECT_CHECK_DONE", "sapdiag.diag.supportbits.CONNECT_CHECK_DONE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE, NULL, HFILL }},
3534 { &hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE,
3535 { "Support Bit MSGINFO_WITH_CODEPAGE", "sapdiag.diag.supportbits.MSGINFO_WITH_CODEPAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE, NULL, HFILL }},
3536 { &hf_SAPDIAG_SUPPORT_BIT_AGI_ID,
3537 { "Support Bit AGI_ID", "sapdiag.diag.supportbits.AGI_ID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AGI_ID, NULL, HFILL }},
3538 { &hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC,
3539 { "Support Bit AGI_ID_TC", "sapdiag.diag.supportbits.AGI_ID_TC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AGI_ID_TC, NULL, HFILL }},
3541 { &hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS,
3542 { "Support Bit FIORI_TOOLBARS", "sapdiag.diag.supportbits.FIORI_TOOLBARS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS, NULL, HFILL }},
3543 { &hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE,
3544 { "Support Bit OBJECT_NAMES_ENFORCE", "sapdiag.diag.supportbits.OBJECT_NAMES_ENFORCE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE, NULL, HFILL }},
3545 { &hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3,
3546 { "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 }},
3547 { &hf_SAPDIAG_SUPPORT_BIT_NWBC,
3548 { "Support Bit NWBC", "sapdiag.diag.supportbits.NWBC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NWBC, NULL, HFILL }},
3549 { &hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST,
3550 { "Support Bit CONTAINER_LIST", "sapdiag.diag.supportbits.CONTAINER_LIST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTAINER_LIST, NULL, HFILL }},
3551 { &hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR,
3552 { "Support Bit GUI_SYSTEM_COLOR", "sapdiag.diag.supportbits.GUI_SYSTEM_COLOR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR, NULL, HFILL }},
3553 { &hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE,
3554 { "Support Bit GROUPBOX_WITHOUT_BOTTOMLINE", "sapdiag.diag.supportbits.GROUPBOX_WITHOUT_BOTTOMLINE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE, NULL, HFILL }},
3556 /* Dynt Atom */
3557 { &hf_sapdiag_item_dynt_atom,
3558 { "Dynt Atom", "sapdiag.item.value.dyntatom", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
3559 { &hf_sapdiag_item_dynt_atom_item,
3560 { "Dynt Atom Item", "sapdiag.item.value.dyntatom.item", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
3561 { &hf_sapdiag_item_dynt_atom_item_etype,
3562 { "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 }},
3564 /* Dynt Atom Attribute Flags */
3565 { &hf_sapdiag_item_dynt_atom_item_attr,
3566 { "Dynt Atom Item Attributes", "sapdiag.item.value.dyntatom.item.attr", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
3567 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE,
3568 { "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 }},
3569 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D,
3570 { "Dynt Atom Item Attribute Yes3D", "sapdiag.item.value.dyntatom.item.attr.YES3D", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_YES3D, NULL, HFILL }},
3571 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT,
3572 { "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 }},
3573 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE,
3574 { "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 }},
3575 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT,
3576 { "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 }},
3577 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY,
3578 { "Dynt Atom Item Attribute Intensify", "sapdiag.item.value.dyntatom.item.attr.INTENSIFY", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_INTENSIFY, NULL, HFILL }},
3579 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE,
3580 { "Dynt Atom Item Attribute Invisible", "sapdiag.item.value.dyntatom.item.attr.INVISIBLE", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE, NULL, HFILL }},
3581 { &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED,
3582 { "Dynt Atom Item Attribute Protected", "sapdiag.item.value.dyntatom.item.attr.PROTECTED", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_PROTECTED, NULL, HFILL }},
3584 /* Control Properties fields */
3585 { &hf_sapdiag_item_control_properties_id,
3586 { "Control Properties ID", "sapdiag.item.value.controlproperties.id", FT_UINT16, BASE_HEX, VALS(sapdiag_item_control_properties_id_vals), 0x0, NULL, HFILL }},
3587 { &hf_sapdiag_item_control_properties_value,
3588 { "Control Properties Value", "sapdiag.item.value.controlproperties.value", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
3590 /* UI Event Source fields */
3591 { &hf_sapdiag_item_ui_event_event_type,
3592 { "UI Event Source Type", "sapdiag.item.value.uievent.type", FT_UINT16, BASE_DEC, VALS(sapdiag_item_ui_event_event_type_vals), 0x0, NULL, HFILL }},
3593 { &hf_sapdiag_item_ui_event_control_type,
3594 { "UI Event Control Type", "sapdiag.item.value.uievent.control", FT_UINT16, BASE_DEC, VALS(sapdiag_item_ui_event_control_type_vals), 0x0, NULL, HFILL }},
3596 { &hf_sapdiag_item_ui_event_valid,
3597 { "UI Event Valid", "sapdiag.item.value.uievent.valid", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3598 { &hf_sapdiag_item_ui_event_valid_MENU_POS,
3599 { "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 }},
3600 { &hf_sapdiag_item_ui_event_valid_CONTROL_POS,
3601 { "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 }},
3602 { &hf_sapdiag_item_ui_event_valid_NAVIGATION_DATA,
3603 { "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 }},
3604 { &hf_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA,
3605 { "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 }},
3607 { &hf_sapdiag_item_ui_event_control_row,
3608 { "UI Event Source Control Row", "sapdiag.item.value.uievent.controlrow", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3609 { &hf_sapdiag_item_ui_event_control_col,
3610 { "UI Event Source Control Column", "sapdiag.item.value.uievent.controlcol", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3611 { &hf_sapdiag_item_ui_event_navigation_data,
3612 { "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 }},
3613 { &hf_sapdiag_item_ui_event_data,
3614 { "UI Event Source Data", "sapdiag.item.value.uievent.data", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3615 { &hf_sapdiag_item_ui_event_container_nrs,
3616 { "UI Event Source Container IDs Numbers", "sapdiag.item.value.uievent.containernrs", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3617 { &hf_sapdiag_item_ui_event_container,
3618 { "UI Event Source Container ID", "sapdiag.item.value.uievent.container", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
3620 /* Menu Entries */
3621 { &hf_sapdiag_item_menu_entry,
3622 { "Menu Entry", "sapdiag.item.value.menu", FT_NONE, BASE_NONE, NULL, 0x0, NULL,
3623 HFILL }},
3627 /* Setup protocol subtree array */
3628 static int *ett[] = {
3629 &ett_sapdiag
3632 /* Register the expert info */
3633 static ei_register_info ei[] = {
3634 { &ei_sapdiag_item_unknown, { "sapdiag.item.unknown", PI_UNDECODED, PI_WARN, "The Diag Item has a unknown type that is not dissected", EXPFILL }},
3635 { &ei_sapdiag_item_partial, { "sapdiag.item.unknown", PI_UNDECODED, PI_WARN, "The Diag Item is dissected partially", EXPFILL }},
3636 { &ei_sapdiag_item_unknown_length, { "sapdiag.item.length.unknown", PI_UNDECODED, PI_WARN, "Diag Type of unknown length", EXPFILL }},
3637 { &ei_sapdiag_item_offset_invalid, { "sapdiag.item.offset.invalid", PI_MALFORMED, PI_ERROR, "Invalid offset", EXPFILL }},
3638 { &ei_sapdiag_item_length_invalid, { "sapdiag.item.length.invalid", PI_MALFORMED, PI_WARN, "Item length is invalid", EXPFILL }},
3639 { &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 }},
3640 { &ei_sapdiag_atom_item_partial, { "sapdiag.item.value.dyntatom.item.unknown", PI_UNDECODED, PI_WARN, "The Diag Atom is dissected partially", EXPFILL }},
3641 { &ei_sapdiag_atom_item_malformed, { "sapdiag.item.value.dyntatom.invalid", PI_MALFORMED, PI_WARN, "The Diag Atom is malformed", EXPFILL }},
3642 { &ei_sapdiag_dynt_focus_more_cont_ids, { "sapdiag.item.value.uievent.containernrs.invalid", PI_MALFORMED, PI_WARN, "Number of Container IDs is invalid", EXPFILL }},
3643 { &ei_sapdiag_password_field, { "sapdiag.item.value.dyntatom.item.password", PI_SECURITY, PI_WARN, "Password field?", EXPFILL }},
3646 module_t *sapdiag_module;
3647 expert_module_t* sapdiag_expert;
3649 /* Register the protocol */
3650 proto_sapdiag = proto_register_protocol("SAP Diag Protocol", "SAPDIAG", "sapdiag");
3652 proto_register_field_array(proto_sapdiag, hf, array_length(hf));
3653 proto_register_subtree_array(ett, array_length(ett));
3655 sapdiag_expert = expert_register_protocol(proto_sapdiag);
3656 expert_register_field_array(sapdiag_expert, ei, array_length(ei));
3658 register_dissector("sapdiag", dissect_sapdiag, proto_sapdiag);
3660 /* Register the preferences */
3661 sapdiag_module = prefs_register_protocol(proto_sapdiag, proto_reg_handoff_sapdiag);
3663 range_convert_str(wmem_epan_scope(), &global_sapdiag_port_range, SAPDIAG_PORT_RANGE, MAX_TCP_PORT);
3664 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);
3666 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);
3668 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);
3670 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);
3675 * Helpers for dealing with the port range
3677 static void range_delete_callback (uint32_t port, void *ptr _U_)
3679 dissector_delete_uint("sapni.port", port, sapdiag_handle);
3682 static void range_add_callback (uint32_t port, void *ptr _U_)
3684 dissector_add_uint("sapni.port", port, sapdiag_handle);
3688 * Register Hand off for the SAP Diag Protocol
3690 void
3691 proto_reg_handoff_sapdiag(void)
3693 static range_t *sapdiag_port_range;
3694 static bool initialized = false;
3696 if (!initialized) {
3697 sapdiag_handle = create_dissector_handle(dissect_sapdiag, proto_sapdiag);
3698 initialized = true;
3699 } else {
3700 range_foreach(sapdiag_port_range, range_delete_callback, NULL);
3701 wmem_free(wmem_epan_scope(), sapdiag_port_range);
3704 sapdiag_port_range = range_copy(wmem_epan_scope(), global_sapdiag_port_range);
3705 range_foreach(sapdiag_port_range, range_add_callback, NULL);
3709 * Editor modelines - https://www.wireshark.org/tools/modelines.html
3711 * Local variables:
3712 * c-basic-offset: 8
3713 * tab-width: 8
3714 * indent-tabs-mode: t
3715 * End:
3717 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
3718 * :indentSize=8:tabSize=8:noTabs=false: