X11: Use proto_tree_add_bitmask for generated bitmasks
[metze/wireshark/wip.git] / epan / dissectors / x11-extension-implementation.h
1 /* Do not modify this file. */
2 /* It was automatically generated by ../../tools/process-x11-xcb.pl
3    using xcbproto version 1.12-9-g97fbba2 */
4 /*
5  * Copyright 2008, 2009, 2013, 2014 Open Text Corporation <pharris[AT]opentext.com>
6  *
7  * Wireshark - Network traffic analyzer
8  * By Gerald Combs <gerald[AT]wireshark.org>
9  * Copyright 1998 Gerald Combs
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  */
25
26 #include "x11-glx-render-enum.h"
27
28 static void mesa_CallList(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
29 {
30     proto_tree_add_item(t, hf_x11_glx_render_CallList_list, tvb, *offsetp, 4, byte_order);
31     *offsetp += 4;
32 }
33
34 static void mesa_CallLists(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
35 {
36     int n;
37     int type;
38     n = VALUE32(tvb, *offsetp);
39     proto_tree_add_item(t, hf_x11_glx_render_CallLists_n, tvb, *offsetp, 4, byte_order);
40     *offsetp += 4;
41     type = VALUE32(tvb, *offsetp);
42     proto_tree_add_item(t, hf_x11_glx_render_CallLists_type, tvb, *offsetp, 4, byte_order);
43     *offsetp += 4;
44     switch(type) {
45     case 0x1400: /* BYTE */
46         listOfByte(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists_signed, n, byte_order);
47         UNUSED(length - 8 - n);
48         break;
49     case 0x1401: /* UNSIGNED_BYTE */
50         listOfByte(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists_unsigned, n, byte_order);
51         UNUSED(length - 8 - n);
52         break;
53     case 0x1402: /* SHORT */
54         listOfInt16(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, hf_x11_glx_render_CallLists_lists_item_int16, n, byte_order);
55         UNUSED(length - 8 - 2 * n);
56         break;
57     case 0x1403: /* UNSIGNED_SHORT */
58         listOfCard16(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, hf_x11_glx_render_CallLists_lists_item_card16, n, byte_order);
59         UNUSED(length - 8 - 2 * n);
60         break;
61     case 0x1404: /* INT */
62         listOfInt32(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, hf_x11_glx_render_CallLists_lists_item_int32, n, byte_order);
63         break;
64     case 0x1405: /* UNSIGNED_INT */
65         listOfCard32(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, hf_x11_glx_render_CallLists_lists_item_card32, n, byte_order);
66         break;
67     case 0x1406: /* FLOAT */
68         listOfFloat(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, hf_x11_glx_render_CallLists_lists_item_float, n, byte_order);
69         break;
70     case 0x1407: /* 2_BYTES */
71         listOfCard16(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, hf_x11_glx_render_CallLists_lists_item_card16, n, ENC_BIG_ENDIAN);
72         UNUSED(length - 8 - 2 * n);
73         break;
74     case 0x1408: /* 3_BYTES */
75         UNDECODED(3 * n);
76         UNUSED(length - 8 - 3 * n);
77         break;
78     case 0x1409: /* 4_BYTES */
79         listOfCard32(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, hf_x11_glx_render_CallLists_lists_item_card32, n, ENC_BIG_ENDIAN);
80         break;
81     case 0x140B: /* HALF_FLOAT */
82         UNDECODED(2 * n);
83         UNUSED(length - 8 - 2 * n);
84         break;
85     default:     /* Unknown */
86         UNDECODED(length - 8);
87         break;
88     }
89 }
90
91 static void mesa_ListBase(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
92 {
93     proto_tree_add_item(t, hf_x11_glx_render_ListBase_base, tvb, *offsetp, 4, byte_order);
94     *offsetp += 4;
95 }
96
97 static void mesa_Begin(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
98 {
99     proto_tree_add_item(t, hf_x11_glx_render_Begin_mode, tvb, *offsetp, 4, byte_order);
100     *offsetp += 4;
101 }
102
103 static void mesa_Bitmap(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
104 {
105     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_swapbytes, tvb, *offsetp, 1, byte_order);
106     *offsetp += 1;
107     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_lsbfirst, tvb, *offsetp, 1, byte_order);
108     *offsetp += 1;
109     UNUSED(2);
110     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_rowlength, tvb, *offsetp, 4, byte_order);
111     *offsetp += 4;
112     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_skiprows, tvb, *offsetp, 4, byte_order);
113     *offsetp += 4;
114     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_skippixels, tvb, *offsetp, 4, byte_order);
115     *offsetp += 4;
116     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_alignment, tvb, *offsetp, 4, byte_order);
117     *offsetp += 4;
118     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_width, tvb, *offsetp, 4, byte_order);
119     *offsetp += 4;
120     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_height, tvb, *offsetp, 4, byte_order);
121     *offsetp += 4;
122     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_xorig, tvb, *offsetp, 4, byte_order);
123     *offsetp += 4;
124     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_yorig, tvb, *offsetp, 4, byte_order);
125     *offsetp += 4;
126     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_xmove, tvb, *offsetp, 4, byte_order);
127     *offsetp += 4;
128     proto_tree_add_item(t, hf_x11_glx_render_Bitmap_ymove, tvb, *offsetp, 4, byte_order);
129     *offsetp += 4;
130     listOfByte(tvb, offsetp, t, hf_x11_glx_render_Bitmap_bitmap, (length - 44) / 1, byte_order);
131 }
132
133 static void mesa_Color3bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
134 {
135     listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color3bv_v, 3, byte_order);
136 }
137
138 static void mesa_Color3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
139 {
140     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Color3dv_v, hf_x11_glx_render_Color3dv_v_item, 3, byte_order);
141 }
142
143 static void mesa_Color3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
144 {
145     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Color3fv_v, hf_x11_glx_render_Color3fv_v_item, 3, byte_order);
146 }
147
148 static void mesa_Color3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
149 {
150     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Color3iv_v, hf_x11_glx_render_Color3iv_v_item, 3, byte_order);
151 }
152
153 static void mesa_Color3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
154 {
155     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Color3sv_v, hf_x11_glx_render_Color3sv_v_item, 3, byte_order);
156 }
157
158 static void mesa_Color3ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
159 {
160     listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color3ubv_v, 3, byte_order);
161 }
162
163 static void mesa_Color3uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
164 {
165     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_Color3uiv_v, hf_x11_glx_render_Color3uiv_v_item, 3, byte_order);
166 }
167
168 static void mesa_Color3usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
169 {
170     listOfCard16(tvb, offsetp, t, hf_x11_glx_render_Color3usv_v, hf_x11_glx_render_Color3usv_v_item, 3, byte_order);
171 }
172
173 static void mesa_Color4bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
174 {
175     listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color4bv_v, 4, byte_order);
176 }
177
178 static void mesa_Color4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
179 {
180     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Color4dv_v, hf_x11_glx_render_Color4dv_v_item, 4, byte_order);
181 }
182
183 static void mesa_Color4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
184 {
185     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Color4fv_v, hf_x11_glx_render_Color4fv_v_item, 4, byte_order);
186 }
187
188 static void mesa_Color4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
189 {
190     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Color4iv_v, hf_x11_glx_render_Color4iv_v_item, 4, byte_order);
191 }
192
193 static void mesa_Color4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
194 {
195     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Color4sv_v, hf_x11_glx_render_Color4sv_v_item, 4, byte_order);
196 }
197
198 static void mesa_Color4ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
199 {
200     listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color4ubv_v, 4, byte_order);
201 }
202
203 static void mesa_Color4uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
204 {
205     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_Color4uiv_v, hf_x11_glx_render_Color4uiv_v_item, 4, byte_order);
206 }
207
208 static void mesa_Color4usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
209 {
210     listOfCard16(tvb, offsetp, t, hf_x11_glx_render_Color4usv_v, hf_x11_glx_render_Color4usv_v_item, 4, byte_order);
211 }
212
213 static void mesa_EdgeFlagv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
214 {
215     listOfByte(tvb, offsetp, t, hf_x11_glx_render_EdgeFlagv_flag, 1, byte_order);
216 }
217
218 static void mesa_End(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
219 {
220 }
221
222 static void mesa_Indexdv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
223 {
224     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Indexdv_c, hf_x11_glx_render_Indexdv_c_item, 1, byte_order);
225 }
226
227 static void mesa_Indexfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
228 {
229     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Indexfv_c, hf_x11_glx_render_Indexfv_c_item, 1, byte_order);
230 }
231
232 static void mesa_Indexiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
233 {
234     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Indexiv_c, hf_x11_glx_render_Indexiv_c_item, 1, byte_order);
235 }
236
237 static void mesa_Indexsv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
238 {
239     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Indexsv_c, hf_x11_glx_render_Indexsv_c_item, 1, byte_order);
240 }
241
242 static void mesa_Normal3bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
243 {
244     listOfByte(tvb, offsetp, t, hf_x11_glx_render_Normal3bv_v, 3, byte_order);
245 }
246
247 static void mesa_Normal3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
248 {
249     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Normal3dv_v, hf_x11_glx_render_Normal3dv_v_item, 3, byte_order);
250 }
251
252 static void mesa_Normal3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
253 {
254     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Normal3fv_v, hf_x11_glx_render_Normal3fv_v_item, 3, byte_order);
255 }
256
257 static void mesa_Normal3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
258 {
259     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Normal3iv_v, hf_x11_glx_render_Normal3iv_v_item, 3, byte_order);
260 }
261
262 static void mesa_Normal3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
263 {
264     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Normal3sv_v, hf_x11_glx_render_Normal3sv_v_item, 3, byte_order);
265 }
266
267 static void mesa_RasterPos2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
268 {
269     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos2dv_v, hf_x11_glx_render_RasterPos2dv_v_item, 2, byte_order);
270 }
271
272 static void mesa_RasterPos2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
273 {
274     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos2fv_v, hf_x11_glx_render_RasterPos2fv_v_item, 2, byte_order);
275 }
276
277 static void mesa_RasterPos2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
278 {
279     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos2iv_v, hf_x11_glx_render_RasterPos2iv_v_item, 2, byte_order);
280 }
281
282 static void mesa_RasterPos2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
283 {
284     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos2sv_v, hf_x11_glx_render_RasterPos2sv_v_item, 2, byte_order);
285 }
286
287 static void mesa_RasterPos3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
288 {
289     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos3dv_v, hf_x11_glx_render_RasterPos3dv_v_item, 3, byte_order);
290 }
291
292 static void mesa_RasterPos3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
293 {
294     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos3fv_v, hf_x11_glx_render_RasterPos3fv_v_item, 3, byte_order);
295 }
296
297 static void mesa_RasterPos3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
298 {
299     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos3iv_v, hf_x11_glx_render_RasterPos3iv_v_item, 3, byte_order);
300 }
301
302 static void mesa_RasterPos3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
303 {
304     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos3sv_v, hf_x11_glx_render_RasterPos3sv_v_item, 3, byte_order);
305 }
306
307 static void mesa_RasterPos4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
308 {
309     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos4dv_v, hf_x11_glx_render_RasterPos4dv_v_item, 4, byte_order);
310 }
311
312 static void mesa_RasterPos4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
313 {
314     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos4fv_v, hf_x11_glx_render_RasterPos4fv_v_item, 4, byte_order);
315 }
316
317 static void mesa_RasterPos4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
318 {
319     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos4iv_v, hf_x11_glx_render_RasterPos4iv_v_item, 4, byte_order);
320 }
321
322 static void mesa_RasterPos4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
323 {
324     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos4sv_v, hf_x11_glx_render_RasterPos4sv_v_item, 4, byte_order);
325 }
326
327 static void mesa_Rectdv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
328 {
329     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Rectdv_v1, hf_x11_glx_render_Rectdv_v1_item, 2, byte_order);
330     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Rectdv_v2, hf_x11_glx_render_Rectdv_v2_item, 2, byte_order);
331 }
332
333 static void mesa_Rectfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
334 {
335     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Rectfv_v1, hf_x11_glx_render_Rectfv_v1_item, 2, byte_order);
336     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Rectfv_v2, hf_x11_glx_render_Rectfv_v2_item, 2, byte_order);
337 }
338
339 static void mesa_Rectiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
340 {
341     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Rectiv_v1, hf_x11_glx_render_Rectiv_v1_item, 2, byte_order);
342     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Rectiv_v2, hf_x11_glx_render_Rectiv_v2_item, 2, byte_order);
343 }
344
345 static void mesa_Rectsv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
346 {
347     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Rectsv_v1, hf_x11_glx_render_Rectsv_v1_item, 2, byte_order);
348     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Rectsv_v2, hf_x11_glx_render_Rectsv_v2_item, 2, byte_order);
349 }
350
351 static void mesa_TexCoord1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
352 {
353     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord1dv_v, hf_x11_glx_render_TexCoord1dv_v_item, 1, byte_order);
354 }
355
356 static void mesa_TexCoord1fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
357 {
358     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord1fv_v, hf_x11_glx_render_TexCoord1fv_v_item, 1, byte_order);
359 }
360
361 static void mesa_TexCoord1iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
362 {
363     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord1iv_v, hf_x11_glx_render_TexCoord1iv_v_item, 1, byte_order);
364 }
365
366 static void mesa_TexCoord1sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
367 {
368     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord1sv_v, hf_x11_glx_render_TexCoord1sv_v_item, 1, byte_order);
369 }
370
371 static void mesa_TexCoord2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
372 {
373     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord2dv_v, hf_x11_glx_render_TexCoord2dv_v_item, 2, byte_order);
374 }
375
376 static void mesa_TexCoord2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
377 {
378     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord2fv_v, hf_x11_glx_render_TexCoord2fv_v_item, 2, byte_order);
379 }
380
381 static void mesa_TexCoord2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
382 {
383     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord2iv_v, hf_x11_glx_render_TexCoord2iv_v_item, 2, byte_order);
384 }
385
386 static void mesa_TexCoord2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
387 {
388     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord2sv_v, hf_x11_glx_render_TexCoord2sv_v_item, 2, byte_order);
389 }
390
391 static void mesa_TexCoord3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
392 {
393     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord3dv_v, hf_x11_glx_render_TexCoord3dv_v_item, 3, byte_order);
394 }
395
396 static void mesa_TexCoord3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
397 {
398     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord3fv_v, hf_x11_glx_render_TexCoord3fv_v_item, 3, byte_order);
399 }
400
401 static void mesa_TexCoord3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
402 {
403     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord3iv_v, hf_x11_glx_render_TexCoord3iv_v_item, 3, byte_order);
404 }
405
406 static void mesa_TexCoord3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
407 {
408     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord3sv_v, hf_x11_glx_render_TexCoord3sv_v_item, 3, byte_order);
409 }
410
411 static void mesa_TexCoord4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
412 {
413     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord4dv_v, hf_x11_glx_render_TexCoord4dv_v_item, 4, byte_order);
414 }
415
416 static void mesa_TexCoord4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
417 {
418     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord4fv_v, hf_x11_glx_render_TexCoord4fv_v_item, 4, byte_order);
419 }
420
421 static void mesa_TexCoord4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
422 {
423     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord4iv_v, hf_x11_glx_render_TexCoord4iv_v_item, 4, byte_order);
424 }
425
426 static void mesa_TexCoord4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
427 {
428     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord4sv_v, hf_x11_glx_render_TexCoord4sv_v_item, 4, byte_order);
429 }
430
431 static void mesa_Vertex2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
432 {
433     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex2dv_v, hf_x11_glx_render_Vertex2dv_v_item, 2, byte_order);
434 }
435
436 static void mesa_Vertex2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
437 {
438     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex2fv_v, hf_x11_glx_render_Vertex2fv_v_item, 2, byte_order);
439 }
440
441 static void mesa_Vertex2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
442 {
443     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex2iv_v, hf_x11_glx_render_Vertex2iv_v_item, 2, byte_order);
444 }
445
446 static void mesa_Vertex2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
447 {
448     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex2sv_v, hf_x11_glx_render_Vertex2sv_v_item, 2, byte_order);
449 }
450
451 static void mesa_Vertex3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
452 {
453     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex3dv_v, hf_x11_glx_render_Vertex3dv_v_item, 3, byte_order);
454 }
455
456 static void mesa_Vertex3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
457 {
458     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex3fv_v, hf_x11_glx_render_Vertex3fv_v_item, 3, byte_order);
459 }
460
461 static void mesa_Vertex3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
462 {
463     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex3iv_v, hf_x11_glx_render_Vertex3iv_v_item, 3, byte_order);
464 }
465
466 static void mesa_Vertex3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
467 {
468     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex3sv_v, hf_x11_glx_render_Vertex3sv_v_item, 3, byte_order);
469 }
470
471 static void mesa_Vertex4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
472 {
473     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex4dv_v, hf_x11_glx_render_Vertex4dv_v_item, 4, byte_order);
474 }
475
476 static void mesa_Vertex4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
477 {
478     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex4fv_v, hf_x11_glx_render_Vertex4fv_v_item, 4, byte_order);
479 }
480
481 static void mesa_Vertex4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
482 {
483     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex4iv_v, hf_x11_glx_render_Vertex4iv_v_item, 4, byte_order);
484 }
485
486 static void mesa_Vertex4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
487 {
488     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex4sv_v, hf_x11_glx_render_Vertex4sv_v_item, 4, byte_order);
489 }
490
491 static void mesa_ClipPlane(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
492 {
493     proto_tree_add_item(t, hf_x11_glx_render_ClipPlane_plane, tvb, *offsetp, 4, byte_order);
494     *offsetp += 4;
495     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ClipPlane_equation, hf_x11_glx_render_ClipPlane_equation_item, 4, byte_order);
496 }
497
498 static void mesa_ColorMaterial(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
499 {
500     proto_tree_add_item(t, hf_x11_glx_render_ColorMaterial_face, tvb, *offsetp, 4, byte_order);
501     *offsetp += 4;
502     proto_tree_add_item(t, hf_x11_glx_render_ColorMaterial_mode, tvb, *offsetp, 4, byte_order);
503     *offsetp += 4;
504 }
505
506 static void mesa_CullFace(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
507 {
508     proto_tree_add_item(t, hf_x11_glx_render_CullFace_mode, tvb, *offsetp, 4, byte_order);
509     *offsetp += 4;
510 }
511
512 static void mesa_Fogf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
513 {
514     proto_tree_add_item(t, hf_x11_glx_render_Fogf_pname, tvb, *offsetp, 4, byte_order);
515     *offsetp += 4;
516     proto_tree_add_item(t, hf_x11_glx_render_Fogf_param, tvb, *offsetp, 4, byte_order);
517     *offsetp += 4;
518 }
519
520 static void mesa_Fogfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
521 {
522     proto_tree_add_item(t, hf_x11_glx_render_Fogfv_pname, tvb, *offsetp, 4, byte_order);
523     *offsetp += 4;
524     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Fogfv_params, hf_x11_glx_render_Fogfv_params_item, (length - 4) / 4, byte_order);
525 }
526
527 static void mesa_Fogi(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
528 {
529     proto_tree_add_item(t, hf_x11_glx_render_Fogi_pname, tvb, *offsetp, 4, byte_order);
530     *offsetp += 4;
531     proto_tree_add_item(t, hf_x11_glx_render_Fogi_param, tvb, *offsetp, 4, byte_order);
532     *offsetp += 4;
533 }
534
535 static void mesa_Fogiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
536 {
537     proto_tree_add_item(t, hf_x11_glx_render_Fogiv_pname, tvb, *offsetp, 4, byte_order);
538     *offsetp += 4;
539     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Fogiv_params, hf_x11_glx_render_Fogiv_params_item, (length - 4) / 4, byte_order);
540 }
541
542 static void mesa_FrontFace(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
543 {
544     proto_tree_add_item(t, hf_x11_glx_render_FrontFace_mode, tvb, *offsetp, 4, byte_order);
545     *offsetp += 4;
546 }
547
548 static void mesa_Hint(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
549 {
550     proto_tree_add_item(t, hf_x11_glx_render_Hint_target, tvb, *offsetp, 4, byte_order);
551     *offsetp += 4;
552     proto_tree_add_item(t, hf_x11_glx_render_Hint_mode, tvb, *offsetp, 4, byte_order);
553     *offsetp += 4;
554 }
555
556 static void mesa_Lightf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
557 {
558     proto_tree_add_item(t, hf_x11_glx_render_Lightf_light, tvb, *offsetp, 4, byte_order);
559     *offsetp += 4;
560     proto_tree_add_item(t, hf_x11_glx_render_Lightf_pname, tvb, *offsetp, 4, byte_order);
561     *offsetp += 4;
562     proto_tree_add_item(t, hf_x11_glx_render_Lightf_param, tvb, *offsetp, 4, byte_order);
563     *offsetp += 4;
564 }
565
566 static void mesa_Lightfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
567 {
568     proto_tree_add_item(t, hf_x11_glx_render_Lightfv_light, tvb, *offsetp, 4, byte_order);
569     *offsetp += 4;
570     proto_tree_add_item(t, hf_x11_glx_render_Lightfv_pname, tvb, *offsetp, 4, byte_order);
571     *offsetp += 4;
572     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Lightfv_params, hf_x11_glx_render_Lightfv_params_item, (length - 8) / 4, byte_order);
573 }
574
575 static void mesa_Lighti(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
576 {
577     proto_tree_add_item(t, hf_x11_glx_render_Lighti_light, tvb, *offsetp, 4, byte_order);
578     *offsetp += 4;
579     proto_tree_add_item(t, hf_x11_glx_render_Lighti_pname, tvb, *offsetp, 4, byte_order);
580     *offsetp += 4;
581     proto_tree_add_item(t, hf_x11_glx_render_Lighti_param, tvb, *offsetp, 4, byte_order);
582     *offsetp += 4;
583 }
584
585 static void mesa_Lightiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
586 {
587     proto_tree_add_item(t, hf_x11_glx_render_Lightiv_light, tvb, *offsetp, 4, byte_order);
588     *offsetp += 4;
589     proto_tree_add_item(t, hf_x11_glx_render_Lightiv_pname, tvb, *offsetp, 4, byte_order);
590     *offsetp += 4;
591     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Lightiv_params, hf_x11_glx_render_Lightiv_params_item, (length - 8) / 4, byte_order);
592 }
593
594 static void mesa_LightModelf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
595 {
596     proto_tree_add_item(t, hf_x11_glx_render_LightModelf_pname, tvb, *offsetp, 4, byte_order);
597     *offsetp += 4;
598     proto_tree_add_item(t, hf_x11_glx_render_LightModelf_param, tvb, *offsetp, 4, byte_order);
599     *offsetp += 4;
600 }
601
602 static void mesa_LightModelfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
603 {
604     proto_tree_add_item(t, hf_x11_glx_render_LightModelfv_pname, tvb, *offsetp, 4, byte_order);
605     *offsetp += 4;
606     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_LightModelfv_params, hf_x11_glx_render_LightModelfv_params_item, (length - 4) / 4, byte_order);
607 }
608
609 static void mesa_LightModeli(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
610 {
611     proto_tree_add_item(t, hf_x11_glx_render_LightModeli_pname, tvb, *offsetp, 4, byte_order);
612     *offsetp += 4;
613     proto_tree_add_item(t, hf_x11_glx_render_LightModeli_param, tvb, *offsetp, 4, byte_order);
614     *offsetp += 4;
615 }
616
617 static void mesa_LightModeliv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
618 {
619     proto_tree_add_item(t, hf_x11_glx_render_LightModeliv_pname, tvb, *offsetp, 4, byte_order);
620     *offsetp += 4;
621     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_LightModeliv_params, hf_x11_glx_render_LightModeliv_params_item, (length - 4) / 4, byte_order);
622 }
623
624 static void mesa_LineStipple(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
625 {
626     proto_tree_add_item(t, hf_x11_glx_render_LineStipple_factor, tvb, *offsetp, 4, byte_order);
627     *offsetp += 4;
628     proto_tree_add_item(t, hf_x11_glx_render_LineStipple_pattern, tvb, *offsetp, 2, byte_order);
629     *offsetp += 2;
630 }
631
632 static void mesa_LineWidth(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
633 {
634     proto_tree_add_item(t, hf_x11_glx_render_LineWidth_width, tvb, *offsetp, 4, byte_order);
635     *offsetp += 4;
636 }
637
638 static void mesa_Materialf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
639 {
640     proto_tree_add_item(t, hf_x11_glx_render_Materialf_face, tvb, *offsetp, 4, byte_order);
641     *offsetp += 4;
642     proto_tree_add_item(t, hf_x11_glx_render_Materialf_pname, tvb, *offsetp, 4, byte_order);
643     *offsetp += 4;
644     proto_tree_add_item(t, hf_x11_glx_render_Materialf_param, tvb, *offsetp, 4, byte_order);
645     *offsetp += 4;
646 }
647
648 static void mesa_Materialfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
649 {
650     proto_tree_add_item(t, hf_x11_glx_render_Materialfv_face, tvb, *offsetp, 4, byte_order);
651     *offsetp += 4;
652     proto_tree_add_item(t, hf_x11_glx_render_Materialfv_pname, tvb, *offsetp, 4, byte_order);
653     *offsetp += 4;
654     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Materialfv_params, hf_x11_glx_render_Materialfv_params_item, (length - 8) / 4, byte_order);
655 }
656
657 static void mesa_Materiali(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
658 {
659     proto_tree_add_item(t, hf_x11_glx_render_Materiali_face, tvb, *offsetp, 4, byte_order);
660     *offsetp += 4;
661     proto_tree_add_item(t, hf_x11_glx_render_Materiali_pname, tvb, *offsetp, 4, byte_order);
662     *offsetp += 4;
663     proto_tree_add_item(t, hf_x11_glx_render_Materiali_param, tvb, *offsetp, 4, byte_order);
664     *offsetp += 4;
665 }
666
667 static void mesa_Materialiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
668 {
669     proto_tree_add_item(t, hf_x11_glx_render_Materialiv_face, tvb, *offsetp, 4, byte_order);
670     *offsetp += 4;
671     proto_tree_add_item(t, hf_x11_glx_render_Materialiv_pname, tvb, *offsetp, 4, byte_order);
672     *offsetp += 4;
673     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Materialiv_params, hf_x11_glx_render_Materialiv_params_item, (length - 8) / 4, byte_order);
674 }
675
676 static void mesa_PointSize(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
677 {
678     proto_tree_add_item(t, hf_x11_glx_render_PointSize_size, tvb, *offsetp, 4, byte_order);
679     *offsetp += 4;
680 }
681
682 static void mesa_PolygonMode(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
683 {
684     proto_tree_add_item(t, hf_x11_glx_render_PolygonMode_face, tvb, *offsetp, 4, byte_order);
685     *offsetp += 4;
686     proto_tree_add_item(t, hf_x11_glx_render_PolygonMode_mode, tvb, *offsetp, 4, byte_order);
687     *offsetp += 4;
688 }
689
690 static void mesa_PolygonStipple(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
691 {
692     proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_swapbytes, tvb, *offsetp, 1, byte_order);
693     *offsetp += 1;
694     proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_lsbfirst, tvb, *offsetp, 1, byte_order);
695     *offsetp += 1;
696     UNUSED(2);
697     proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_rowlength, tvb, *offsetp, 4, byte_order);
698     *offsetp += 4;
699     proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_skiprows, tvb, *offsetp, 4, byte_order);
700     *offsetp += 4;
701     proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_skippixels, tvb, *offsetp, 4, byte_order);
702     *offsetp += 4;
703     proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_alignment, tvb, *offsetp, 4, byte_order);
704     *offsetp += 4;
705     listOfByte(tvb, offsetp, t, hf_x11_glx_render_PolygonStipple_mask, (length - 20) / 1, byte_order);
706 }
707
708 static void mesa_Scissor(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
709 {
710     proto_tree_add_item(t, hf_x11_glx_render_Scissor_x, tvb, *offsetp, 4, byte_order);
711     *offsetp += 4;
712     proto_tree_add_item(t, hf_x11_glx_render_Scissor_y, tvb, *offsetp, 4, byte_order);
713     *offsetp += 4;
714     proto_tree_add_item(t, hf_x11_glx_render_Scissor_width, tvb, *offsetp, 4, byte_order);
715     *offsetp += 4;
716     proto_tree_add_item(t, hf_x11_glx_render_Scissor_height, tvb, *offsetp, 4, byte_order);
717     *offsetp += 4;
718 }
719
720 static void mesa_ShadeModel(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
721 {
722     proto_tree_add_item(t, hf_x11_glx_render_ShadeModel_mode, tvb, *offsetp, 4, byte_order);
723     *offsetp += 4;
724 }
725
726 static void mesa_TexParameterf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
727 {
728     proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_target, tvb, *offsetp, 4, byte_order);
729     *offsetp += 4;
730     proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_pname, tvb, *offsetp, 4, byte_order);
731     *offsetp += 4;
732     proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_param, tvb, *offsetp, 4, byte_order);
733     *offsetp += 4;
734 }
735
736 static void mesa_TexParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
737 {
738     proto_tree_add_item(t, hf_x11_glx_render_TexParameterfv_target, tvb, *offsetp, 4, byte_order);
739     *offsetp += 4;
740     proto_tree_add_item(t, hf_x11_glx_render_TexParameterfv_pname, tvb, *offsetp, 4, byte_order);
741     *offsetp += 4;
742     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexParameterfv_params, hf_x11_glx_render_TexParameterfv_params_item, (length - 8) / 4, byte_order);
743 }
744
745 static void mesa_TexParameteri(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
746 {
747     proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_target, tvb, *offsetp, 4, byte_order);
748     *offsetp += 4;
749     proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_pname, tvb, *offsetp, 4, byte_order);
750     *offsetp += 4;
751     proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_param, tvb, *offsetp, 4, byte_order);
752     *offsetp += 4;
753 }
754
755 static void mesa_TexParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
756 {
757     proto_tree_add_item(t, hf_x11_glx_render_TexParameteriv_target, tvb, *offsetp, 4, byte_order);
758     *offsetp += 4;
759     proto_tree_add_item(t, hf_x11_glx_render_TexParameteriv_pname, tvb, *offsetp, 4, byte_order);
760     *offsetp += 4;
761     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexParameteriv_params, hf_x11_glx_render_TexParameteriv_params_item, (length - 8) / 4, byte_order);
762 }
763
764 static void mesa_TexImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
765 {
766     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_swapbytes, tvb, *offsetp, 1, byte_order);
767     *offsetp += 1;
768     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_lsbfirst, tvb, *offsetp, 1, byte_order);
769     *offsetp += 1;
770     UNUSED(2);
771     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_rowlength, tvb, *offsetp, 4, byte_order);
772     *offsetp += 4;
773     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_skiprows, tvb, *offsetp, 4, byte_order);
774     *offsetp += 4;
775     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_skippixels, tvb, *offsetp, 4, byte_order);
776     *offsetp += 4;
777     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_alignment, tvb, *offsetp, 4, byte_order);
778     *offsetp += 4;
779     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_target, tvb, *offsetp, 4, byte_order);
780     *offsetp += 4;
781     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_level, tvb, *offsetp, 4, byte_order);
782     *offsetp += 4;
783     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_internalformat, tvb, *offsetp, 4, byte_order);
784     *offsetp += 4;
785     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_width, tvb, *offsetp, 4, byte_order);
786     *offsetp += 4;
787     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_border, tvb, *offsetp, 4, byte_order);
788     *offsetp += 4;
789     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_format, tvb, *offsetp, 4, byte_order);
790     *offsetp += 4;
791     proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_type, tvb, *offsetp, 4, byte_order);
792     *offsetp += 4;
793     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage1D_pixels, (length - 48) / 1, byte_order);
794 }
795
796 static void mesa_TexImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
797 {
798     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_swapbytes, tvb, *offsetp, 1, byte_order);
799     *offsetp += 1;
800     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_lsbfirst, tvb, *offsetp, 1, byte_order);
801     *offsetp += 1;
802     UNUSED(2);
803     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_rowlength, tvb, *offsetp, 4, byte_order);
804     *offsetp += 4;
805     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_skiprows, tvb, *offsetp, 4, byte_order);
806     *offsetp += 4;
807     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_skippixels, tvb, *offsetp, 4, byte_order);
808     *offsetp += 4;
809     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_alignment, tvb, *offsetp, 4, byte_order);
810     *offsetp += 4;
811     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_target, tvb, *offsetp, 4, byte_order);
812     *offsetp += 4;
813     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_level, tvb, *offsetp, 4, byte_order);
814     *offsetp += 4;
815     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_internalformat, tvb, *offsetp, 4, byte_order);
816     *offsetp += 4;
817     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_width, tvb, *offsetp, 4, byte_order);
818     *offsetp += 4;
819     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_height, tvb, *offsetp, 4, byte_order);
820     *offsetp += 4;
821     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_border, tvb, *offsetp, 4, byte_order);
822     *offsetp += 4;
823     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_format, tvb, *offsetp, 4, byte_order);
824     *offsetp += 4;
825     proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_type, tvb, *offsetp, 4, byte_order);
826     *offsetp += 4;
827     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage2D_pixels, (length - 52) / 1, byte_order);
828 }
829
830 static void mesa_TexEnvf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
831 {
832     proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_target, tvb, *offsetp, 4, byte_order);
833     *offsetp += 4;
834     proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_pname, tvb, *offsetp, 4, byte_order);
835     *offsetp += 4;
836     proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_param, tvb, *offsetp, 4, byte_order);
837     *offsetp += 4;
838 }
839
840 static void mesa_TexEnvfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
841 {
842     proto_tree_add_item(t, hf_x11_glx_render_TexEnvfv_target, tvb, *offsetp, 4, byte_order);
843     *offsetp += 4;
844     proto_tree_add_item(t, hf_x11_glx_render_TexEnvfv_pname, tvb, *offsetp, 4, byte_order);
845     *offsetp += 4;
846     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexEnvfv_params, hf_x11_glx_render_TexEnvfv_params_item, (length - 8) / 4, byte_order);
847 }
848
849 static void mesa_TexEnvi(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
850 {
851     proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_target, tvb, *offsetp, 4, byte_order);
852     *offsetp += 4;
853     proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_pname, tvb, *offsetp, 4, byte_order);
854     *offsetp += 4;
855     proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_param, tvb, *offsetp, 4, byte_order);
856     *offsetp += 4;
857 }
858
859 static void mesa_TexEnviv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
860 {
861     proto_tree_add_item(t, hf_x11_glx_render_TexEnviv_target, tvb, *offsetp, 4, byte_order);
862     *offsetp += 4;
863     proto_tree_add_item(t, hf_x11_glx_render_TexEnviv_pname, tvb, *offsetp, 4, byte_order);
864     *offsetp += 4;
865     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexEnviv_params, hf_x11_glx_render_TexEnviv_params_item, (length - 8) / 4, byte_order);
866 }
867
868 static void mesa_TexGend(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
869 {
870     proto_tree_add_item(t, hf_x11_glx_render_TexGend_coord, tvb, *offsetp, 4, byte_order);
871     *offsetp += 4;
872     proto_tree_add_item(t, hf_x11_glx_render_TexGend_pname, tvb, *offsetp, 4, byte_order);
873     *offsetp += 4;
874     proto_tree_add_item(t, hf_x11_glx_render_TexGend_param, tvb, *offsetp, 8, byte_order);
875     *offsetp += 8;
876 }
877
878 static void mesa_TexGendv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
879 {
880     proto_tree_add_item(t, hf_x11_glx_render_TexGendv_coord, tvb, *offsetp, 4, byte_order);
881     *offsetp += 4;
882     proto_tree_add_item(t, hf_x11_glx_render_TexGendv_pname, tvb, *offsetp, 4, byte_order);
883     *offsetp += 4;
884     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexGendv_params, hf_x11_glx_render_TexGendv_params_item, (length - 8) / 8, byte_order);
885 }
886
887 static void mesa_TexGenf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
888 {
889     proto_tree_add_item(t, hf_x11_glx_render_TexGenf_coord, tvb, *offsetp, 4, byte_order);
890     *offsetp += 4;
891     proto_tree_add_item(t, hf_x11_glx_render_TexGenf_pname, tvb, *offsetp, 4, byte_order);
892     *offsetp += 4;
893     proto_tree_add_item(t, hf_x11_glx_render_TexGenf_param, tvb, *offsetp, 4, byte_order);
894     *offsetp += 4;
895 }
896
897 static void mesa_TexGenfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
898 {
899     proto_tree_add_item(t, hf_x11_glx_render_TexGenfv_coord, tvb, *offsetp, 4, byte_order);
900     *offsetp += 4;
901     proto_tree_add_item(t, hf_x11_glx_render_TexGenfv_pname, tvb, *offsetp, 4, byte_order);
902     *offsetp += 4;
903     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexGenfv_params, hf_x11_glx_render_TexGenfv_params_item, (length - 8) / 4, byte_order);
904 }
905
906 static void mesa_TexGeni(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
907 {
908     proto_tree_add_item(t, hf_x11_glx_render_TexGeni_coord, tvb, *offsetp, 4, byte_order);
909     *offsetp += 4;
910     proto_tree_add_item(t, hf_x11_glx_render_TexGeni_pname, tvb, *offsetp, 4, byte_order);
911     *offsetp += 4;
912     proto_tree_add_item(t, hf_x11_glx_render_TexGeni_param, tvb, *offsetp, 4, byte_order);
913     *offsetp += 4;
914 }
915
916 static void mesa_TexGeniv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
917 {
918     proto_tree_add_item(t, hf_x11_glx_render_TexGeniv_coord, tvb, *offsetp, 4, byte_order);
919     *offsetp += 4;
920     proto_tree_add_item(t, hf_x11_glx_render_TexGeniv_pname, tvb, *offsetp, 4, byte_order);
921     *offsetp += 4;
922     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexGeniv_params, hf_x11_glx_render_TexGeniv_params_item, (length - 8) / 4, byte_order);
923 }
924
925 static void mesa_InitNames(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
926 {
927 }
928
929 static void mesa_LoadName(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
930 {
931     proto_tree_add_item(t, hf_x11_glx_render_LoadName_name, tvb, *offsetp, 4, byte_order);
932     *offsetp += 4;
933 }
934
935 static void mesa_PassThrough(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
936 {
937     proto_tree_add_item(t, hf_x11_glx_render_PassThrough_token, tvb, *offsetp, 4, byte_order);
938     *offsetp += 4;
939 }
940
941 static void mesa_PopName(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
942 {
943 }
944
945 static void mesa_PushName(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
946 {
947     proto_tree_add_item(t, hf_x11_glx_render_PushName_name, tvb, *offsetp, 4, byte_order);
948     *offsetp += 4;
949 }
950
951 static void mesa_DrawBuffer(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
952 {
953     proto_tree_add_item(t, hf_x11_glx_render_DrawBuffer_mode, tvb, *offsetp, 4, byte_order);
954     *offsetp += 4;
955 }
956
957 static void mesa_Clear(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
958 {
959     proto_tree_add_item(t, hf_x11_glx_render_Clear_mask, tvb, *offsetp, 4, byte_order);
960     *offsetp += 4;
961 }
962
963 static void mesa_ClearAccum(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
964 {
965     proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_red, tvb, *offsetp, 4, byte_order);
966     *offsetp += 4;
967     proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_green, tvb, *offsetp, 4, byte_order);
968     *offsetp += 4;
969     proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_blue, tvb, *offsetp, 4, byte_order);
970     *offsetp += 4;
971     proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_alpha, tvb, *offsetp, 4, byte_order);
972     *offsetp += 4;
973 }
974
975 static void mesa_ClearIndex(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
976 {
977     proto_tree_add_item(t, hf_x11_glx_render_ClearIndex_c, tvb, *offsetp, 4, byte_order);
978     *offsetp += 4;
979 }
980
981 static void mesa_ClearColor(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
982 {
983     proto_tree_add_item(t, hf_x11_glx_render_ClearColor_red, tvb, *offsetp, 4, byte_order);
984     *offsetp += 4;
985     proto_tree_add_item(t, hf_x11_glx_render_ClearColor_green, tvb, *offsetp, 4, byte_order);
986     *offsetp += 4;
987     proto_tree_add_item(t, hf_x11_glx_render_ClearColor_blue, tvb, *offsetp, 4, byte_order);
988     *offsetp += 4;
989     proto_tree_add_item(t, hf_x11_glx_render_ClearColor_alpha, tvb, *offsetp, 4, byte_order);
990     *offsetp += 4;
991 }
992
993 static void mesa_ClearStencil(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
994 {
995     proto_tree_add_item(t, hf_x11_glx_render_ClearStencil_s, tvb, *offsetp, 4, byte_order);
996     *offsetp += 4;
997 }
998
999 static void mesa_ClearDepth(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1000 {
1001     proto_tree_add_item(t, hf_x11_glx_render_ClearDepth_depth, tvb, *offsetp, 8, byte_order);
1002     *offsetp += 8;
1003 }
1004
1005 static void mesa_StencilMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1006 {
1007     proto_tree_add_item(t, hf_x11_glx_render_StencilMask_mask, tvb, *offsetp, 4, byte_order);
1008     *offsetp += 4;
1009 }
1010
1011 static void mesa_ColorMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1012 {
1013     proto_tree_add_item(t, hf_x11_glx_render_ColorMask_red, tvb, *offsetp, 1, byte_order);
1014     *offsetp += 1;
1015     proto_tree_add_item(t, hf_x11_glx_render_ColorMask_green, tvb, *offsetp, 1, byte_order);
1016     *offsetp += 1;
1017     proto_tree_add_item(t, hf_x11_glx_render_ColorMask_blue, tvb, *offsetp, 1, byte_order);
1018     *offsetp += 1;
1019     proto_tree_add_item(t, hf_x11_glx_render_ColorMask_alpha, tvb, *offsetp, 1, byte_order);
1020     *offsetp += 1;
1021 }
1022
1023 static void mesa_DepthMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1024 {
1025     proto_tree_add_item(t, hf_x11_glx_render_DepthMask_flag, tvb, *offsetp, 1, byte_order);
1026     *offsetp += 1;
1027 }
1028
1029 static void mesa_IndexMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1030 {
1031     proto_tree_add_item(t, hf_x11_glx_render_IndexMask_mask, tvb, *offsetp, 4, byte_order);
1032     *offsetp += 4;
1033 }
1034
1035 static void mesa_Accum(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1036 {
1037     proto_tree_add_item(t, hf_x11_glx_render_Accum_op, tvb, *offsetp, 4, byte_order);
1038     *offsetp += 4;
1039     proto_tree_add_item(t, hf_x11_glx_render_Accum_value, tvb, *offsetp, 4, byte_order);
1040     *offsetp += 4;
1041 }
1042
1043 static void mesa_Disable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1044 {
1045     proto_tree_add_item(t, hf_x11_glx_render_Disable_cap, tvb, *offsetp, 4, byte_order);
1046     *offsetp += 4;
1047 }
1048
1049 static void mesa_Enable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1050 {
1051     proto_tree_add_item(t, hf_x11_glx_render_Enable_cap, tvb, *offsetp, 4, byte_order);
1052     *offsetp += 4;
1053 }
1054
1055 static void mesa_PopAttrib(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
1056 {
1057 }
1058
1059 static void mesa_PushAttrib(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1060 {
1061     proto_tree_add_item(t, hf_x11_glx_render_PushAttrib_mask, tvb, *offsetp, 4, byte_order);
1062     *offsetp += 4;
1063 }
1064
1065 static void mesa_Map1d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1066 {
1067     proto_tree_add_item(t, hf_x11_glx_render_Map1d_target, tvb, *offsetp, 4, byte_order);
1068     *offsetp += 4;
1069     proto_tree_add_item(t, hf_x11_glx_render_Map1d_u1, tvb, *offsetp, 8, byte_order);
1070     *offsetp += 8;
1071     proto_tree_add_item(t, hf_x11_glx_render_Map1d_u2, tvb, *offsetp, 8, byte_order);
1072     *offsetp += 8;
1073     proto_tree_add_item(t, hf_x11_glx_render_Map1d_stride, tvb, *offsetp, 4, byte_order);
1074     *offsetp += 4;
1075     proto_tree_add_item(t, hf_x11_glx_render_Map1d_order, tvb, *offsetp, 4, byte_order);
1076     *offsetp += 4;
1077     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Map1d_points, hf_x11_glx_render_Map1d_points_item, (length - 28) / 8, byte_order);
1078 }
1079
1080 static void mesa_Map1f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1081 {
1082     proto_tree_add_item(t, hf_x11_glx_render_Map1f_target, tvb, *offsetp, 4, byte_order);
1083     *offsetp += 4;
1084     proto_tree_add_item(t, hf_x11_glx_render_Map1f_u1, tvb, *offsetp, 4, byte_order);
1085     *offsetp += 4;
1086     proto_tree_add_item(t, hf_x11_glx_render_Map1f_u2, tvb, *offsetp, 4, byte_order);
1087     *offsetp += 4;
1088     proto_tree_add_item(t, hf_x11_glx_render_Map1f_stride, tvb, *offsetp, 4, byte_order);
1089     *offsetp += 4;
1090     proto_tree_add_item(t, hf_x11_glx_render_Map1f_order, tvb, *offsetp, 4, byte_order);
1091     *offsetp += 4;
1092     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Map1f_points, hf_x11_glx_render_Map1f_points_item, (length - 20) / 4, byte_order);
1093 }
1094
1095 static void mesa_Map2d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1096 {
1097     proto_tree_add_item(t, hf_x11_glx_render_Map2d_target, tvb, *offsetp, 4, byte_order);
1098     *offsetp += 4;
1099     proto_tree_add_item(t, hf_x11_glx_render_Map2d_u1, tvb, *offsetp, 8, byte_order);
1100     *offsetp += 8;
1101     proto_tree_add_item(t, hf_x11_glx_render_Map2d_u2, tvb, *offsetp, 8, byte_order);
1102     *offsetp += 8;
1103     proto_tree_add_item(t, hf_x11_glx_render_Map2d_ustride, tvb, *offsetp, 4, byte_order);
1104     *offsetp += 4;
1105     proto_tree_add_item(t, hf_x11_glx_render_Map2d_uorder, tvb, *offsetp, 4, byte_order);
1106     *offsetp += 4;
1107     proto_tree_add_item(t, hf_x11_glx_render_Map2d_v1, tvb, *offsetp, 8, byte_order);
1108     *offsetp += 8;
1109     proto_tree_add_item(t, hf_x11_glx_render_Map2d_v2, tvb, *offsetp, 8, byte_order);
1110     *offsetp += 8;
1111     proto_tree_add_item(t, hf_x11_glx_render_Map2d_vstride, tvb, *offsetp, 4, byte_order);
1112     *offsetp += 4;
1113     proto_tree_add_item(t, hf_x11_glx_render_Map2d_vorder, tvb, *offsetp, 4, byte_order);
1114     *offsetp += 4;
1115     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Map2d_points, hf_x11_glx_render_Map2d_points_item, (length - 52) / 8, byte_order);
1116 }
1117
1118 static void mesa_Map2f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1119 {
1120     proto_tree_add_item(t, hf_x11_glx_render_Map2f_target, tvb, *offsetp, 4, byte_order);
1121     *offsetp += 4;
1122     proto_tree_add_item(t, hf_x11_glx_render_Map2f_u1, tvb, *offsetp, 4, byte_order);
1123     *offsetp += 4;
1124     proto_tree_add_item(t, hf_x11_glx_render_Map2f_u2, tvb, *offsetp, 4, byte_order);
1125     *offsetp += 4;
1126     proto_tree_add_item(t, hf_x11_glx_render_Map2f_ustride, tvb, *offsetp, 4, byte_order);
1127     *offsetp += 4;
1128     proto_tree_add_item(t, hf_x11_glx_render_Map2f_uorder, tvb, *offsetp, 4, byte_order);
1129     *offsetp += 4;
1130     proto_tree_add_item(t, hf_x11_glx_render_Map2f_v1, tvb, *offsetp, 4, byte_order);
1131     *offsetp += 4;
1132     proto_tree_add_item(t, hf_x11_glx_render_Map2f_v2, tvb, *offsetp, 4, byte_order);
1133     *offsetp += 4;
1134     proto_tree_add_item(t, hf_x11_glx_render_Map2f_vstride, tvb, *offsetp, 4, byte_order);
1135     *offsetp += 4;
1136     proto_tree_add_item(t, hf_x11_glx_render_Map2f_vorder, tvb, *offsetp, 4, byte_order);
1137     *offsetp += 4;
1138     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Map2f_points, hf_x11_glx_render_Map2f_points_item, (length - 36) / 4, byte_order);
1139 }
1140
1141 static void mesa_MapGrid1d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1142 {
1143     proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_un, tvb, *offsetp, 4, byte_order);
1144     *offsetp += 4;
1145     proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_u1, tvb, *offsetp, 8, byte_order);
1146     *offsetp += 8;
1147     proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_u2, tvb, *offsetp, 8, byte_order);
1148     *offsetp += 8;
1149 }
1150
1151 static void mesa_MapGrid1f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1152 {
1153     proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_un, tvb, *offsetp, 4, byte_order);
1154     *offsetp += 4;
1155     proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_u1, tvb, *offsetp, 4, byte_order);
1156     *offsetp += 4;
1157     proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_u2, tvb, *offsetp, 4, byte_order);
1158     *offsetp += 4;
1159 }
1160
1161 static void mesa_MapGrid2d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1162 {
1163     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_un, tvb, *offsetp, 4, byte_order);
1164     *offsetp += 4;
1165     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_u1, tvb, *offsetp, 8, byte_order);
1166     *offsetp += 8;
1167     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_u2, tvb, *offsetp, 8, byte_order);
1168     *offsetp += 8;
1169     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_vn, tvb, *offsetp, 4, byte_order);
1170     *offsetp += 4;
1171     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_v1, tvb, *offsetp, 8, byte_order);
1172     *offsetp += 8;
1173     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_v2, tvb, *offsetp, 8, byte_order);
1174     *offsetp += 8;
1175 }
1176
1177 static void mesa_MapGrid2f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1178 {
1179     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_un, tvb, *offsetp, 4, byte_order);
1180     *offsetp += 4;
1181     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_u1, tvb, *offsetp, 4, byte_order);
1182     *offsetp += 4;
1183     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_u2, tvb, *offsetp, 4, byte_order);
1184     *offsetp += 4;
1185     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_vn, tvb, *offsetp, 4, byte_order);
1186     *offsetp += 4;
1187     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_v1, tvb, *offsetp, 4, byte_order);
1188     *offsetp += 4;
1189     proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_v2, tvb, *offsetp, 4, byte_order);
1190     *offsetp += 4;
1191 }
1192
1193 static void mesa_EvalCoord1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1194 {
1195     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_EvalCoord1dv_u, hf_x11_glx_render_EvalCoord1dv_u_item, 1, byte_order);
1196 }
1197
1198 static void mesa_EvalCoord1fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1199 {
1200     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_EvalCoord1fv_u, hf_x11_glx_render_EvalCoord1fv_u_item, 1, byte_order);
1201 }
1202
1203 static void mesa_EvalCoord2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1204 {
1205     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_EvalCoord2dv_u, hf_x11_glx_render_EvalCoord2dv_u_item, 2, byte_order);
1206 }
1207
1208 static void mesa_EvalCoord2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1209 {
1210     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_EvalCoord2fv_u, hf_x11_glx_render_EvalCoord2fv_u_item, 2, byte_order);
1211 }
1212
1213 static void mesa_EvalMesh1(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1214 {
1215     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_mode, tvb, *offsetp, 4, byte_order);
1216     *offsetp += 4;
1217     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_i1, tvb, *offsetp, 4, byte_order);
1218     *offsetp += 4;
1219     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_i2, tvb, *offsetp, 4, byte_order);
1220     *offsetp += 4;
1221 }
1222
1223 static void mesa_EvalPoint1(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1224 {
1225     proto_tree_add_item(t, hf_x11_glx_render_EvalPoint1_i, tvb, *offsetp, 4, byte_order);
1226     *offsetp += 4;
1227 }
1228
1229 static void mesa_EvalMesh2(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1230 {
1231     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_mode, tvb, *offsetp, 4, byte_order);
1232     *offsetp += 4;
1233     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_i1, tvb, *offsetp, 4, byte_order);
1234     *offsetp += 4;
1235     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_i2, tvb, *offsetp, 4, byte_order);
1236     *offsetp += 4;
1237     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_j1, tvb, *offsetp, 4, byte_order);
1238     *offsetp += 4;
1239     proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_j2, tvb, *offsetp, 4, byte_order);
1240     *offsetp += 4;
1241 }
1242
1243 static void mesa_EvalPoint2(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1244 {
1245     proto_tree_add_item(t, hf_x11_glx_render_EvalPoint2_i, tvb, *offsetp, 4, byte_order);
1246     *offsetp += 4;
1247     proto_tree_add_item(t, hf_x11_glx_render_EvalPoint2_j, tvb, *offsetp, 4, byte_order);
1248     *offsetp += 4;
1249 }
1250
1251 static void mesa_AlphaFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1252 {
1253     proto_tree_add_item(t, hf_x11_glx_render_AlphaFunc_func, tvb, *offsetp, 4, byte_order);
1254     *offsetp += 4;
1255     proto_tree_add_item(t, hf_x11_glx_render_AlphaFunc_ref, tvb, *offsetp, 4, byte_order);
1256     *offsetp += 4;
1257 }
1258
1259 static void mesa_BlendFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1260 {
1261     proto_tree_add_item(t, hf_x11_glx_render_BlendFunc_sfactor, tvb, *offsetp, 4, byte_order);
1262     *offsetp += 4;
1263     proto_tree_add_item(t, hf_x11_glx_render_BlendFunc_dfactor, tvb, *offsetp, 4, byte_order);
1264     *offsetp += 4;
1265 }
1266
1267 static void mesa_LogicOp(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1268 {
1269     proto_tree_add_item(t, hf_x11_glx_render_LogicOp_opcode, tvb, *offsetp, 4, byte_order);
1270     *offsetp += 4;
1271 }
1272
1273 static void mesa_StencilFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1274 {
1275     proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_func, tvb, *offsetp, 4, byte_order);
1276     *offsetp += 4;
1277     proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_ref, tvb, *offsetp, 4, byte_order);
1278     *offsetp += 4;
1279     proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_mask, tvb, *offsetp, 4, byte_order);
1280     *offsetp += 4;
1281 }
1282
1283 static void mesa_StencilOp(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1284 {
1285     proto_tree_add_item(t, hf_x11_glx_render_StencilOp_fail, tvb, *offsetp, 4, byte_order);
1286     *offsetp += 4;
1287     proto_tree_add_item(t, hf_x11_glx_render_StencilOp_zfail, tvb, *offsetp, 4, byte_order);
1288     *offsetp += 4;
1289     proto_tree_add_item(t, hf_x11_glx_render_StencilOp_zpass, tvb, *offsetp, 4, byte_order);
1290     *offsetp += 4;
1291 }
1292
1293 static void mesa_DepthFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1294 {
1295     proto_tree_add_item(t, hf_x11_glx_render_DepthFunc_func, tvb, *offsetp, 4, byte_order);
1296     *offsetp += 4;
1297 }
1298
1299 static void mesa_PixelZoom(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1300 {
1301     proto_tree_add_item(t, hf_x11_glx_render_PixelZoom_xfactor, tvb, *offsetp, 4, byte_order);
1302     *offsetp += 4;
1303     proto_tree_add_item(t, hf_x11_glx_render_PixelZoom_yfactor, tvb, *offsetp, 4, byte_order);
1304     *offsetp += 4;
1305 }
1306
1307 static void mesa_PixelTransferf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1308 {
1309     proto_tree_add_item(t, hf_x11_glx_render_PixelTransferf_pname, tvb, *offsetp, 4, byte_order);
1310     *offsetp += 4;
1311     proto_tree_add_item(t, hf_x11_glx_render_PixelTransferf_param, tvb, *offsetp, 4, byte_order);
1312     *offsetp += 4;
1313 }
1314
1315 static void mesa_PixelTransferi(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1316 {
1317     proto_tree_add_item(t, hf_x11_glx_render_PixelTransferi_pname, tvb, *offsetp, 4, byte_order);
1318     *offsetp += 4;
1319     proto_tree_add_item(t, hf_x11_glx_render_PixelTransferi_param, tvb, *offsetp, 4, byte_order);
1320     *offsetp += 4;
1321 }
1322
1323 static void mesa_PixelMapfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1324 {
1325     int mapsize;
1326     proto_tree_add_item(t, hf_x11_glx_render_PixelMapfv_map, tvb, *offsetp, 4, byte_order);
1327     *offsetp += 4;
1328     mapsize = VALUE32(tvb, *offsetp);
1329     proto_tree_add_item(t, hf_x11_glx_render_PixelMapfv_mapsize, tvb, *offsetp, 4, byte_order);
1330     *offsetp += 4;
1331     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PixelMapfv_values, hf_x11_glx_render_PixelMapfv_values_item, mapsize, byte_order);
1332 }
1333
1334 static void mesa_PixelMapuiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1335 {
1336     int mapsize;
1337     proto_tree_add_item(t, hf_x11_glx_render_PixelMapuiv_map, tvb, *offsetp, 4, byte_order);
1338     *offsetp += 4;
1339     mapsize = VALUE32(tvb, *offsetp);
1340     proto_tree_add_item(t, hf_x11_glx_render_PixelMapuiv_mapsize, tvb, *offsetp, 4, byte_order);
1341     *offsetp += 4;
1342     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_PixelMapuiv_values, hf_x11_glx_render_PixelMapuiv_values_item, mapsize, byte_order);
1343 }
1344
1345 static void mesa_PixelMapusv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1346 {
1347     int mapsize;
1348     proto_tree_add_item(t, hf_x11_glx_render_PixelMapusv_map, tvb, *offsetp, 4, byte_order);
1349     *offsetp += 4;
1350     mapsize = VALUE32(tvb, *offsetp);
1351     proto_tree_add_item(t, hf_x11_glx_render_PixelMapusv_mapsize, tvb, *offsetp, 4, byte_order);
1352     *offsetp += 4;
1353     listOfCard16(tvb, offsetp, t, hf_x11_glx_render_PixelMapusv_values, hf_x11_glx_render_PixelMapusv_values_item, mapsize, byte_order);
1354 }
1355
1356 static void mesa_ReadBuffer(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1357 {
1358     proto_tree_add_item(t, hf_x11_glx_render_ReadBuffer_mode, tvb, *offsetp, 4, byte_order);
1359     *offsetp += 4;
1360 }
1361
1362 static void mesa_CopyPixels(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1363 {
1364     proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_x, tvb, *offsetp, 4, byte_order);
1365     *offsetp += 4;
1366     proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_y, tvb, *offsetp, 4, byte_order);
1367     *offsetp += 4;
1368     proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_width, tvb, *offsetp, 4, byte_order);
1369     *offsetp += 4;
1370     proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_height, tvb, *offsetp, 4, byte_order);
1371     *offsetp += 4;
1372     proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_type, tvb, *offsetp, 4, byte_order);
1373     *offsetp += 4;
1374 }
1375
1376 static void mesa_DrawPixels(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1377 {
1378     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_swapbytes, tvb, *offsetp, 1, byte_order);
1379     *offsetp += 1;
1380     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_lsbfirst, tvb, *offsetp, 1, byte_order);
1381     *offsetp += 1;
1382     UNUSED(2);
1383     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_rowlength, tvb, *offsetp, 4, byte_order);
1384     *offsetp += 4;
1385     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_skiprows, tvb, *offsetp, 4, byte_order);
1386     *offsetp += 4;
1387     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_skippixels, tvb, *offsetp, 4, byte_order);
1388     *offsetp += 4;
1389     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_alignment, tvb, *offsetp, 4, byte_order);
1390     *offsetp += 4;
1391     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_width, tvb, *offsetp, 4, byte_order);
1392     *offsetp += 4;
1393     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_height, tvb, *offsetp, 4, byte_order);
1394     *offsetp += 4;
1395     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_format, tvb, *offsetp, 4, byte_order);
1396     *offsetp += 4;
1397     proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_type, tvb, *offsetp, 4, byte_order);
1398     *offsetp += 4;
1399     listOfByte(tvb, offsetp, t, hf_x11_glx_render_DrawPixels_pixels, (length - 36) / 1, byte_order);
1400 }
1401
1402 static void mesa_DepthRange(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1403 {
1404     proto_tree_add_item(t, hf_x11_glx_render_DepthRange_zNear, tvb, *offsetp, 8, byte_order);
1405     *offsetp += 8;
1406     proto_tree_add_item(t, hf_x11_glx_render_DepthRange_zFar, tvb, *offsetp, 8, byte_order);
1407     *offsetp += 8;
1408 }
1409
1410 static void mesa_Frustum(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1411 {
1412     proto_tree_add_item(t, hf_x11_glx_render_Frustum_left, tvb, *offsetp, 8, byte_order);
1413     *offsetp += 8;
1414     proto_tree_add_item(t, hf_x11_glx_render_Frustum_right, tvb, *offsetp, 8, byte_order);
1415     *offsetp += 8;
1416     proto_tree_add_item(t, hf_x11_glx_render_Frustum_bottom, tvb, *offsetp, 8, byte_order);
1417     *offsetp += 8;
1418     proto_tree_add_item(t, hf_x11_glx_render_Frustum_top, tvb, *offsetp, 8, byte_order);
1419     *offsetp += 8;
1420     proto_tree_add_item(t, hf_x11_glx_render_Frustum_zNear, tvb, *offsetp, 8, byte_order);
1421     *offsetp += 8;
1422     proto_tree_add_item(t, hf_x11_glx_render_Frustum_zFar, tvb, *offsetp, 8, byte_order);
1423     *offsetp += 8;
1424 }
1425
1426 static void mesa_LoadIdentity(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
1427 {
1428 }
1429
1430 static void mesa_LoadMatrixf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1431 {
1432     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_LoadMatrixf_m, hf_x11_glx_render_LoadMatrixf_m_item, 16, byte_order);
1433 }
1434
1435 static void mesa_LoadMatrixd(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1436 {
1437     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_LoadMatrixd_m, hf_x11_glx_render_LoadMatrixd_m_item, 16, byte_order);
1438 }
1439
1440 static void mesa_MatrixMode(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1441 {
1442     proto_tree_add_item(t, hf_x11_glx_render_MatrixMode_mode, tvb, *offsetp, 4, byte_order);
1443     *offsetp += 4;
1444 }
1445
1446 static void mesa_MultMatrixf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1447 {
1448     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultMatrixf_m, hf_x11_glx_render_MultMatrixf_m_item, 16, byte_order);
1449 }
1450
1451 static void mesa_MultMatrixd(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1452 {
1453     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultMatrixd_m, hf_x11_glx_render_MultMatrixd_m_item, 16, byte_order);
1454 }
1455
1456 static void mesa_Ortho(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1457 {
1458     proto_tree_add_item(t, hf_x11_glx_render_Ortho_left, tvb, *offsetp, 8, byte_order);
1459     *offsetp += 8;
1460     proto_tree_add_item(t, hf_x11_glx_render_Ortho_right, tvb, *offsetp, 8, byte_order);
1461     *offsetp += 8;
1462     proto_tree_add_item(t, hf_x11_glx_render_Ortho_bottom, tvb, *offsetp, 8, byte_order);
1463     *offsetp += 8;
1464     proto_tree_add_item(t, hf_x11_glx_render_Ortho_top, tvb, *offsetp, 8, byte_order);
1465     *offsetp += 8;
1466     proto_tree_add_item(t, hf_x11_glx_render_Ortho_zNear, tvb, *offsetp, 8, byte_order);
1467     *offsetp += 8;
1468     proto_tree_add_item(t, hf_x11_glx_render_Ortho_zFar, tvb, *offsetp, 8, byte_order);
1469     *offsetp += 8;
1470 }
1471
1472 static void mesa_PopMatrix(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
1473 {
1474 }
1475
1476 static void mesa_PushMatrix(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
1477 {
1478 }
1479
1480 static void mesa_Rotated(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1481 {
1482     proto_tree_add_item(t, hf_x11_glx_render_Rotated_angle, tvb, *offsetp, 8, byte_order);
1483     *offsetp += 8;
1484     proto_tree_add_item(t, hf_x11_glx_render_Rotated_x, tvb, *offsetp, 8, byte_order);
1485     *offsetp += 8;
1486     proto_tree_add_item(t, hf_x11_glx_render_Rotated_y, tvb, *offsetp, 8, byte_order);
1487     *offsetp += 8;
1488     proto_tree_add_item(t, hf_x11_glx_render_Rotated_z, tvb, *offsetp, 8, byte_order);
1489     *offsetp += 8;
1490 }
1491
1492 static void mesa_Rotatef(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1493 {
1494     proto_tree_add_item(t, hf_x11_glx_render_Rotatef_angle, tvb, *offsetp, 4, byte_order);
1495     *offsetp += 4;
1496     proto_tree_add_item(t, hf_x11_glx_render_Rotatef_x, tvb, *offsetp, 4, byte_order);
1497     *offsetp += 4;
1498     proto_tree_add_item(t, hf_x11_glx_render_Rotatef_y, tvb, *offsetp, 4, byte_order);
1499     *offsetp += 4;
1500     proto_tree_add_item(t, hf_x11_glx_render_Rotatef_z, tvb, *offsetp, 4, byte_order);
1501     *offsetp += 4;
1502 }
1503
1504 static void mesa_Scaled(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1505 {
1506     proto_tree_add_item(t, hf_x11_glx_render_Scaled_x, tvb, *offsetp, 8, byte_order);
1507     *offsetp += 8;
1508     proto_tree_add_item(t, hf_x11_glx_render_Scaled_y, tvb, *offsetp, 8, byte_order);
1509     *offsetp += 8;
1510     proto_tree_add_item(t, hf_x11_glx_render_Scaled_z, tvb, *offsetp, 8, byte_order);
1511     *offsetp += 8;
1512 }
1513
1514 static void mesa_Scalef(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1515 {
1516     proto_tree_add_item(t, hf_x11_glx_render_Scalef_x, tvb, *offsetp, 4, byte_order);
1517     *offsetp += 4;
1518     proto_tree_add_item(t, hf_x11_glx_render_Scalef_y, tvb, *offsetp, 4, byte_order);
1519     *offsetp += 4;
1520     proto_tree_add_item(t, hf_x11_glx_render_Scalef_z, tvb, *offsetp, 4, byte_order);
1521     *offsetp += 4;
1522 }
1523
1524 static void mesa_Translated(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1525 {
1526     proto_tree_add_item(t, hf_x11_glx_render_Translated_x, tvb, *offsetp, 8, byte_order);
1527     *offsetp += 8;
1528     proto_tree_add_item(t, hf_x11_glx_render_Translated_y, tvb, *offsetp, 8, byte_order);
1529     *offsetp += 8;
1530     proto_tree_add_item(t, hf_x11_glx_render_Translated_z, tvb, *offsetp, 8, byte_order);
1531     *offsetp += 8;
1532 }
1533
1534 static void mesa_Translatef(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1535 {
1536     proto_tree_add_item(t, hf_x11_glx_render_Translatef_x, tvb, *offsetp, 4, byte_order);
1537     *offsetp += 4;
1538     proto_tree_add_item(t, hf_x11_glx_render_Translatef_y, tvb, *offsetp, 4, byte_order);
1539     *offsetp += 4;
1540     proto_tree_add_item(t, hf_x11_glx_render_Translatef_z, tvb, *offsetp, 4, byte_order);
1541     *offsetp += 4;
1542 }
1543
1544 static void mesa_Viewport(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1545 {
1546     proto_tree_add_item(t, hf_x11_glx_render_Viewport_x, tvb, *offsetp, 4, byte_order);
1547     *offsetp += 4;
1548     proto_tree_add_item(t, hf_x11_glx_render_Viewport_y, tvb, *offsetp, 4, byte_order);
1549     *offsetp += 4;
1550     proto_tree_add_item(t, hf_x11_glx_render_Viewport_width, tvb, *offsetp, 4, byte_order);
1551     *offsetp += 4;
1552     proto_tree_add_item(t, hf_x11_glx_render_Viewport_height, tvb, *offsetp, 4, byte_order);
1553     *offsetp += 4;
1554 }
1555
1556 static void mesa_DrawArrays(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1557 {
1558     proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_mode, tvb, *offsetp, 4, byte_order);
1559     *offsetp += 4;
1560     proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_first, tvb, *offsetp, 4, byte_order);
1561     *offsetp += 4;
1562     proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_count, tvb, *offsetp, 4, byte_order);
1563     *offsetp += 4;
1564 }
1565
1566 static void mesa_PolygonOffset(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1567 {
1568     proto_tree_add_item(t, hf_x11_glx_render_PolygonOffset_factor, tvb, *offsetp, 4, byte_order);
1569     *offsetp += 4;
1570     proto_tree_add_item(t, hf_x11_glx_render_PolygonOffset_units, tvb, *offsetp, 4, byte_order);
1571     *offsetp += 4;
1572 }
1573
1574 static void mesa_CopyTexImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1575 {
1576     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_target, tvb, *offsetp, 4, byte_order);
1577     *offsetp += 4;
1578     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_level, tvb, *offsetp, 4, byte_order);
1579     *offsetp += 4;
1580     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_internalformat, tvb, *offsetp, 4, byte_order);
1581     *offsetp += 4;
1582     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_x, tvb, *offsetp, 4, byte_order);
1583     *offsetp += 4;
1584     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_y, tvb, *offsetp, 4, byte_order);
1585     *offsetp += 4;
1586     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_width, tvb, *offsetp, 4, byte_order);
1587     *offsetp += 4;
1588     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_border, tvb, *offsetp, 4, byte_order);
1589     *offsetp += 4;
1590 }
1591
1592 static void mesa_CopyTexImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1593 {
1594     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_target, tvb, *offsetp, 4, byte_order);
1595     *offsetp += 4;
1596     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_level, tvb, *offsetp, 4, byte_order);
1597     *offsetp += 4;
1598     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_internalformat, tvb, *offsetp, 4, byte_order);
1599     *offsetp += 4;
1600     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_x, tvb, *offsetp, 4, byte_order);
1601     *offsetp += 4;
1602     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_y, tvb, *offsetp, 4, byte_order);
1603     *offsetp += 4;
1604     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_width, tvb, *offsetp, 4, byte_order);
1605     *offsetp += 4;
1606     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_height, tvb, *offsetp, 4, byte_order);
1607     *offsetp += 4;
1608     proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_border, tvb, *offsetp, 4, byte_order);
1609     *offsetp += 4;
1610 }
1611
1612 static void mesa_CopyTexSubImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1613 {
1614     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_target, tvb, *offsetp, 4, byte_order);
1615     *offsetp += 4;
1616     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_level, tvb, *offsetp, 4, byte_order);
1617     *offsetp += 4;
1618     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_xoffset, tvb, *offsetp, 4, byte_order);
1619     *offsetp += 4;
1620     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_x, tvb, *offsetp, 4, byte_order);
1621     *offsetp += 4;
1622     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_y, tvb, *offsetp, 4, byte_order);
1623     *offsetp += 4;
1624     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_width, tvb, *offsetp, 4, byte_order);
1625     *offsetp += 4;
1626 }
1627
1628 static void mesa_CopyTexSubImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1629 {
1630     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_target, tvb, *offsetp, 4, byte_order);
1631     *offsetp += 4;
1632     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_level, tvb, *offsetp, 4, byte_order);
1633     *offsetp += 4;
1634     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_xoffset, tvb, *offsetp, 4, byte_order);
1635     *offsetp += 4;
1636     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_yoffset, tvb, *offsetp, 4, byte_order);
1637     *offsetp += 4;
1638     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_x, tvb, *offsetp, 4, byte_order);
1639     *offsetp += 4;
1640     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_y, tvb, *offsetp, 4, byte_order);
1641     *offsetp += 4;
1642     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_width, tvb, *offsetp, 4, byte_order);
1643     *offsetp += 4;
1644     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_height, tvb, *offsetp, 4, byte_order);
1645     *offsetp += 4;
1646 }
1647
1648 static void mesa_TexSubImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1649 {
1650     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_swapbytes, tvb, *offsetp, 1, byte_order);
1651     *offsetp += 1;
1652     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_lsbfirst, tvb, *offsetp, 1, byte_order);
1653     *offsetp += 1;
1654     UNUSED(2);
1655     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_rowlength, tvb, *offsetp, 4, byte_order);
1656     *offsetp += 4;
1657     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_skiprows, tvb, *offsetp, 4, byte_order);
1658     *offsetp += 4;
1659     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_skippixels, tvb, *offsetp, 4, byte_order);
1660     *offsetp += 4;
1661     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_alignment, tvb, *offsetp, 4, byte_order);
1662     *offsetp += 4;
1663     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_target, tvb, *offsetp, 4, byte_order);
1664     *offsetp += 4;
1665     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_level, tvb, *offsetp, 4, byte_order);
1666     *offsetp += 4;
1667     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_xoffset, tvb, *offsetp, 4, byte_order);
1668     *offsetp += 4;
1669     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_width, tvb, *offsetp, 4, byte_order);
1670     *offsetp += 4;
1671     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_format, tvb, *offsetp, 4, byte_order);
1672     *offsetp += 4;
1673     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_type, tvb, *offsetp, 4, byte_order);
1674     *offsetp += 4;
1675     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_UNUSED, tvb, *offsetp, 4, byte_order);
1676     *offsetp += 4;
1677     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage1D_pixels, (length - 48) / 1, byte_order);
1678 }
1679
1680 static void mesa_TexSubImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1681 {
1682     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_swapbytes, tvb, *offsetp, 1, byte_order);
1683     *offsetp += 1;
1684     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_lsbfirst, tvb, *offsetp, 1, byte_order);
1685     *offsetp += 1;
1686     UNUSED(2);
1687     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_rowlength, tvb, *offsetp, 4, byte_order);
1688     *offsetp += 4;
1689     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_skiprows, tvb, *offsetp, 4, byte_order);
1690     *offsetp += 4;
1691     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_skippixels, tvb, *offsetp, 4, byte_order);
1692     *offsetp += 4;
1693     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_alignment, tvb, *offsetp, 4, byte_order);
1694     *offsetp += 4;
1695     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_target, tvb, *offsetp, 4, byte_order);
1696     *offsetp += 4;
1697     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_level, tvb, *offsetp, 4, byte_order);
1698     *offsetp += 4;
1699     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_xoffset, tvb, *offsetp, 4, byte_order);
1700     *offsetp += 4;
1701     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_yoffset, tvb, *offsetp, 4, byte_order);
1702     *offsetp += 4;
1703     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_width, tvb, *offsetp, 4, byte_order);
1704     *offsetp += 4;
1705     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_height, tvb, *offsetp, 4, byte_order);
1706     *offsetp += 4;
1707     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_format, tvb, *offsetp, 4, byte_order);
1708     *offsetp += 4;
1709     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_type, tvb, *offsetp, 4, byte_order);
1710     *offsetp += 4;
1711     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_UNUSED, tvb, *offsetp, 4, byte_order);
1712     *offsetp += 4;
1713     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage2D_pixels, (length - 56) / 1, byte_order);
1714 }
1715
1716 static void mesa_BindTexture(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1717 {
1718     proto_tree_add_item(t, hf_x11_glx_render_BindTexture_target, tvb, *offsetp, 4, byte_order);
1719     *offsetp += 4;
1720     proto_tree_add_item(t, hf_x11_glx_render_BindTexture_texture, tvb, *offsetp, 4, byte_order);
1721     *offsetp += 4;
1722 }
1723
1724 static void mesa_PrioritizeTextures(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1725 {
1726     int n;
1727     n = VALUE32(tvb, *offsetp);
1728     proto_tree_add_item(t, hf_x11_glx_render_PrioritizeTextures_n, tvb, *offsetp, 4, byte_order);
1729     *offsetp += 4;
1730     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_PrioritizeTextures_textures, hf_x11_glx_render_PrioritizeTextures_textures_item, n, byte_order);
1731     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PrioritizeTextures_priorities, hf_x11_glx_render_PrioritizeTextures_priorities_item, n, byte_order);
1732 }
1733
1734 static void mesa_Indexubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1735 {
1736     listOfByte(tvb, offsetp, t, hf_x11_glx_render_Indexubv_c, 1, byte_order);
1737 }
1738
1739 static void mesa_BlendColor(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1740 {
1741     proto_tree_add_item(t, hf_x11_glx_render_BlendColor_red, tvb, *offsetp, 4, byte_order);
1742     *offsetp += 4;
1743     proto_tree_add_item(t, hf_x11_glx_render_BlendColor_green, tvb, *offsetp, 4, byte_order);
1744     *offsetp += 4;
1745     proto_tree_add_item(t, hf_x11_glx_render_BlendColor_blue, tvb, *offsetp, 4, byte_order);
1746     *offsetp += 4;
1747     proto_tree_add_item(t, hf_x11_glx_render_BlendColor_alpha, tvb, *offsetp, 4, byte_order);
1748     *offsetp += 4;
1749 }
1750
1751 static void mesa_BlendEquation(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1752 {
1753     proto_tree_add_item(t, hf_x11_glx_render_BlendEquation_mode, tvb, *offsetp, 4, byte_order);
1754     *offsetp += 4;
1755 }
1756
1757 static void mesa_ColorTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1758 {
1759     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_swapbytes, tvb, *offsetp, 1, byte_order);
1760     *offsetp += 1;
1761     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_lsbfirst, tvb, *offsetp, 1, byte_order);
1762     *offsetp += 1;
1763     UNUSED(2);
1764     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_rowlength, tvb, *offsetp, 4, byte_order);
1765     *offsetp += 4;
1766     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_skiprows, tvb, *offsetp, 4, byte_order);
1767     *offsetp += 4;
1768     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_skippixels, tvb, *offsetp, 4, byte_order);
1769     *offsetp += 4;
1770     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_alignment, tvb, *offsetp, 4, byte_order);
1771     *offsetp += 4;
1772     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_target, tvb, *offsetp, 4, byte_order);
1773     *offsetp += 4;
1774     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_internalformat, tvb, *offsetp, 4, byte_order);
1775     *offsetp += 4;
1776     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_width, tvb, *offsetp, 4, byte_order);
1777     *offsetp += 4;
1778     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_format, tvb, *offsetp, 4, byte_order);
1779     *offsetp += 4;
1780     proto_tree_add_item(t, hf_x11_glx_render_ColorTable_type, tvb, *offsetp, 4, byte_order);
1781     *offsetp += 4;
1782     listOfByte(tvb, offsetp, t, hf_x11_glx_render_ColorTable_table, (length - 40) / 1, byte_order);
1783 }
1784
1785 static void mesa_ColorTableParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1786 {
1787     proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameterfv_target, tvb, *offsetp, 4, byte_order);
1788     *offsetp += 4;
1789     proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameterfv_pname, tvb, *offsetp, 4, byte_order);
1790     *offsetp += 4;
1791     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ColorTableParameterfv_params, hf_x11_glx_render_ColorTableParameterfv_params_item, (length - 8) / 4, byte_order);
1792 }
1793
1794 static void mesa_ColorTableParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1795 {
1796     proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameteriv_target, tvb, *offsetp, 4, byte_order);
1797     *offsetp += 4;
1798     proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameteriv_pname, tvb, *offsetp, 4, byte_order);
1799     *offsetp += 4;
1800     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_ColorTableParameteriv_params, hf_x11_glx_render_ColorTableParameteriv_params_item, (length - 8) / 4, byte_order);
1801 }
1802
1803 static void mesa_CopyColorTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1804 {
1805     proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_target, tvb, *offsetp, 4, byte_order);
1806     *offsetp += 4;
1807     proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_internalformat, tvb, *offsetp, 4, byte_order);
1808     *offsetp += 4;
1809     proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_x, tvb, *offsetp, 4, byte_order);
1810     *offsetp += 4;
1811     proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_y, tvb, *offsetp, 4, byte_order);
1812     *offsetp += 4;
1813     proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_width, tvb, *offsetp, 4, byte_order);
1814     *offsetp += 4;
1815 }
1816
1817 static void mesa_ColorSubTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1818 {
1819     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_swapbytes, tvb, *offsetp, 1, byte_order);
1820     *offsetp += 1;
1821     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_lsbfirst, tvb, *offsetp, 1, byte_order);
1822     *offsetp += 1;
1823     UNUSED(2);
1824     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_rowlength, tvb, *offsetp, 4, byte_order);
1825     *offsetp += 4;
1826     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_skiprows, tvb, *offsetp, 4, byte_order);
1827     *offsetp += 4;
1828     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_skippixels, tvb, *offsetp, 4, byte_order);
1829     *offsetp += 4;
1830     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_alignment, tvb, *offsetp, 4, byte_order);
1831     *offsetp += 4;
1832     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_target, tvb, *offsetp, 4, byte_order);
1833     *offsetp += 4;
1834     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_start, tvb, *offsetp, 4, byte_order);
1835     *offsetp += 4;
1836     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_count, tvb, *offsetp, 4, byte_order);
1837     *offsetp += 4;
1838     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_format, tvb, *offsetp, 4, byte_order);
1839     *offsetp += 4;
1840     proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_type, tvb, *offsetp, 4, byte_order);
1841     *offsetp += 4;
1842     listOfByte(tvb, offsetp, t, hf_x11_glx_render_ColorSubTable_data, (length - 40) / 1, byte_order);
1843 }
1844
1845 static void mesa_CopyColorSubTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1846 {
1847     proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_target, tvb, *offsetp, 4, byte_order);
1848     *offsetp += 4;
1849     proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_start, tvb, *offsetp, 4, byte_order);
1850     *offsetp += 4;
1851     proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_x, tvb, *offsetp, 4, byte_order);
1852     *offsetp += 4;
1853     proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_y, tvb, *offsetp, 4, byte_order);
1854     *offsetp += 4;
1855     proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_width, tvb, *offsetp, 4, byte_order);
1856     *offsetp += 4;
1857 }
1858
1859 static void mesa_ConvolutionFilter1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1860 {
1861     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_swapbytes, tvb, *offsetp, 1, byte_order);
1862     *offsetp += 1;
1863     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_lsbfirst, tvb, *offsetp, 1, byte_order);
1864     *offsetp += 1;
1865     UNUSED(2);
1866     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_rowlength, tvb, *offsetp, 4, byte_order);
1867     *offsetp += 4;
1868     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_skiprows, tvb, *offsetp, 4, byte_order);
1869     *offsetp += 4;
1870     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_skippixels, tvb, *offsetp, 4, byte_order);
1871     *offsetp += 4;
1872     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_alignment, tvb, *offsetp, 4, byte_order);
1873     *offsetp += 4;
1874     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_target, tvb, *offsetp, 4, byte_order);
1875     *offsetp += 4;
1876     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_internalformat, tvb, *offsetp, 4, byte_order);
1877     *offsetp += 4;
1878     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_width, tvb, *offsetp, 4, byte_order);
1879     *offsetp += 4;
1880     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_format, tvb, *offsetp, 4, byte_order);
1881     *offsetp += 4;
1882     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_type, tvb, *offsetp, 4, byte_order);
1883     *offsetp += 4;
1884     listOfByte(tvb, offsetp, t, hf_x11_glx_render_ConvolutionFilter1D_image, (length - 40) / 1, byte_order);
1885 }
1886
1887 static void mesa_ConvolutionFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1888 {
1889     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_swapbytes, tvb, *offsetp, 1, byte_order);
1890     *offsetp += 1;
1891     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_lsbfirst, tvb, *offsetp, 1, byte_order);
1892     *offsetp += 1;
1893     UNUSED(2);
1894     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_rowlength, tvb, *offsetp, 4, byte_order);
1895     *offsetp += 4;
1896     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_skiprows, tvb, *offsetp, 4, byte_order);
1897     *offsetp += 4;
1898     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_skippixels, tvb, *offsetp, 4, byte_order);
1899     *offsetp += 4;
1900     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_alignment, tvb, *offsetp, 4, byte_order);
1901     *offsetp += 4;
1902     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_target, tvb, *offsetp, 4, byte_order);
1903     *offsetp += 4;
1904     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_internalformat, tvb, *offsetp, 4, byte_order);
1905     *offsetp += 4;
1906     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_width, tvb, *offsetp, 4, byte_order);
1907     *offsetp += 4;
1908     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_height, tvb, *offsetp, 4, byte_order);
1909     *offsetp += 4;
1910     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_format, tvb, *offsetp, 4, byte_order);
1911     *offsetp += 4;
1912     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_type, tvb, *offsetp, 4, byte_order);
1913     *offsetp += 4;
1914     listOfByte(tvb, offsetp, t, hf_x11_glx_render_ConvolutionFilter2D_image, (length - 44) / 1, byte_order);
1915 }
1916
1917 static void mesa_ConvolutionParameterf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1918 {
1919     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_target, tvb, *offsetp, 4, byte_order);
1920     *offsetp += 4;
1921     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_pname, tvb, *offsetp, 4, byte_order);
1922     *offsetp += 4;
1923     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_params, tvb, *offsetp, 4, byte_order);
1924     *offsetp += 4;
1925 }
1926
1927 static void mesa_ConvolutionParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1928 {
1929     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterfv_target, tvb, *offsetp, 4, byte_order);
1930     *offsetp += 4;
1931     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterfv_pname, tvb, *offsetp, 4, byte_order);
1932     *offsetp += 4;
1933     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ConvolutionParameterfv_params, hf_x11_glx_render_ConvolutionParameterfv_params_item, (length - 8) / 4, byte_order);
1934 }
1935
1936 static void mesa_ConvolutionParameteri(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1937 {
1938     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_target, tvb, *offsetp, 4, byte_order);
1939     *offsetp += 4;
1940     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_pname, tvb, *offsetp, 4, byte_order);
1941     *offsetp += 4;
1942     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_params, tvb, *offsetp, 4, byte_order);
1943     *offsetp += 4;
1944 }
1945
1946 static void mesa_ConvolutionParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1947 {
1948     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteriv_target, tvb, *offsetp, 4, byte_order);
1949     *offsetp += 4;
1950     proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteriv_pname, tvb, *offsetp, 4, byte_order);
1951     *offsetp += 4;
1952     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_ConvolutionParameteriv_params, hf_x11_glx_render_ConvolutionParameteriv_params_item, (length - 8) / 4, byte_order);
1953 }
1954
1955 static void mesa_CopyConvolutionFilter1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1956 {
1957     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_target, tvb, *offsetp, 4, byte_order);
1958     *offsetp += 4;
1959     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_internalformat, tvb, *offsetp, 4, byte_order);
1960     *offsetp += 4;
1961     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_x, tvb, *offsetp, 4, byte_order);
1962     *offsetp += 4;
1963     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_y, tvb, *offsetp, 4, byte_order);
1964     *offsetp += 4;
1965     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_width, tvb, *offsetp, 4, byte_order);
1966     *offsetp += 4;
1967 }
1968
1969 static void mesa_CopyConvolutionFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1970 {
1971     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_target, tvb, *offsetp, 4, byte_order);
1972     *offsetp += 4;
1973     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_internalformat, tvb, *offsetp, 4, byte_order);
1974     *offsetp += 4;
1975     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_x, tvb, *offsetp, 4, byte_order);
1976     *offsetp += 4;
1977     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_y, tvb, *offsetp, 4, byte_order);
1978     *offsetp += 4;
1979     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_width, tvb, *offsetp, 4, byte_order);
1980     *offsetp += 4;
1981     proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_height, tvb, *offsetp, 4, byte_order);
1982     *offsetp += 4;
1983 }
1984
1985 static void mesa_SeparableFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
1986 {
1987     proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_target, tvb, *offsetp, 4, byte_order);
1988     *offsetp += 4;
1989     proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_internalformat, tvb, *offsetp, 4, byte_order);
1990     *offsetp += 4;
1991     proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_width, tvb, *offsetp, 4, byte_order);
1992     *offsetp += 4;
1993     proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_height, tvb, *offsetp, 4, byte_order);
1994     *offsetp += 4;
1995     proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_format, tvb, *offsetp, 4, byte_order);
1996     *offsetp += 4;
1997     proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_type, tvb, *offsetp, 4, byte_order);
1998     *offsetp += 4;
1999     listOfByte(tvb, offsetp, t, hf_x11_glx_render_SeparableFilter2D_row, (length - 24) / 1, byte_order);
2000     listOfByte(tvb, offsetp, t, hf_x11_glx_render_SeparableFilter2D_column, (length - 24) / 1, byte_order);
2001 }
2002
2003 static void mesa_Histogram(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2004 {
2005     proto_tree_add_item(t, hf_x11_glx_render_Histogram_target, tvb, *offsetp, 4, byte_order);
2006     *offsetp += 4;
2007     proto_tree_add_item(t, hf_x11_glx_render_Histogram_width, tvb, *offsetp, 4, byte_order);
2008     *offsetp += 4;
2009     proto_tree_add_item(t, hf_x11_glx_render_Histogram_internalformat, tvb, *offsetp, 4, byte_order);
2010     *offsetp += 4;
2011     proto_tree_add_item(t, hf_x11_glx_render_Histogram_sink, tvb, *offsetp, 1, byte_order);
2012     *offsetp += 1;
2013 }
2014
2015 static void mesa_Minmax(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2016 {
2017     proto_tree_add_item(t, hf_x11_glx_render_Minmax_target, tvb, *offsetp, 4, byte_order);
2018     *offsetp += 4;
2019     proto_tree_add_item(t, hf_x11_glx_render_Minmax_internalformat, tvb, *offsetp, 4, byte_order);
2020     *offsetp += 4;
2021     proto_tree_add_item(t, hf_x11_glx_render_Minmax_sink, tvb, *offsetp, 1, byte_order);
2022     *offsetp += 1;
2023 }
2024
2025 static void mesa_ResetHistogram(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2026 {
2027     proto_tree_add_item(t, hf_x11_glx_render_ResetHistogram_target, tvb, *offsetp, 4, byte_order);
2028     *offsetp += 4;
2029 }
2030
2031 static void mesa_ResetMinmax(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2032 {
2033     proto_tree_add_item(t, hf_x11_glx_render_ResetMinmax_target, tvb, *offsetp, 4, byte_order);
2034     *offsetp += 4;
2035 }
2036
2037 static void mesa_TexImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2038 {
2039     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_swapbytes, tvb, *offsetp, 1, byte_order);
2040     *offsetp += 1;
2041     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_lsbfirst, tvb, *offsetp, 1, byte_order);
2042     *offsetp += 1;
2043     UNUSED(2);
2044     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_rowlength, tvb, *offsetp, 4, byte_order);
2045     *offsetp += 4;
2046     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_skiprows, tvb, *offsetp, 4, byte_order);
2047     *offsetp += 4;
2048     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_skippixels, tvb, *offsetp, 4, byte_order);
2049     *offsetp += 4;
2050     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_alignment, tvb, *offsetp, 4, byte_order);
2051     *offsetp += 4;
2052     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_target, tvb, *offsetp, 4, byte_order);
2053     *offsetp += 4;
2054     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_level, tvb, *offsetp, 4, byte_order);
2055     *offsetp += 4;
2056     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_internalformat, tvb, *offsetp, 4, byte_order);
2057     *offsetp += 4;
2058     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_width, tvb, *offsetp, 4, byte_order);
2059     *offsetp += 4;
2060     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_height, tvb, *offsetp, 4, byte_order);
2061     *offsetp += 4;
2062     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_depth, tvb, *offsetp, 4, byte_order);
2063     *offsetp += 4;
2064     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_border, tvb, *offsetp, 4, byte_order);
2065     *offsetp += 4;
2066     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_format, tvb, *offsetp, 4, byte_order);
2067     *offsetp += 4;
2068     proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_type, tvb, *offsetp, 4, byte_order);
2069     *offsetp += 4;
2070     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage3D_pixels, (length - 56) / 1, byte_order);
2071 }
2072
2073 static void mesa_TexSubImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2074 {
2075     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_swapbytes, tvb, *offsetp, 1, byte_order);
2076     *offsetp += 1;
2077     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_lsbfirst, tvb, *offsetp, 1, byte_order);
2078     *offsetp += 1;
2079     UNUSED(2);
2080     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_rowlength, tvb, *offsetp, 4, byte_order);
2081     *offsetp += 4;
2082     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_skiprows, tvb, *offsetp, 4, byte_order);
2083     *offsetp += 4;
2084     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_skippixels, tvb, *offsetp, 4, byte_order);
2085     *offsetp += 4;
2086     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_alignment, tvb, *offsetp, 4, byte_order);
2087     *offsetp += 4;
2088     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_target, tvb, *offsetp, 4, byte_order);
2089     *offsetp += 4;
2090     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_level, tvb, *offsetp, 4, byte_order);
2091     *offsetp += 4;
2092     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_xoffset, tvb, *offsetp, 4, byte_order);
2093     *offsetp += 4;
2094     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_yoffset, tvb, *offsetp, 4, byte_order);
2095     *offsetp += 4;
2096     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_zoffset, tvb, *offsetp, 4, byte_order);
2097     *offsetp += 4;
2098     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_width, tvb, *offsetp, 4, byte_order);
2099     *offsetp += 4;
2100     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_height, tvb, *offsetp, 4, byte_order);
2101     *offsetp += 4;
2102     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_depth, tvb, *offsetp, 4, byte_order);
2103     *offsetp += 4;
2104     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_format, tvb, *offsetp, 4, byte_order);
2105     *offsetp += 4;
2106     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_type, tvb, *offsetp, 4, byte_order);
2107     *offsetp += 4;
2108     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_UNUSED, tvb, *offsetp, 4, byte_order);
2109     *offsetp += 4;
2110     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage3D_pixels, (length - 64) / 1, byte_order);
2111 }
2112
2113 static void mesa_CopyTexSubImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2114 {
2115     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_target, tvb, *offsetp, 4, byte_order);
2116     *offsetp += 4;
2117     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_level, tvb, *offsetp, 4, byte_order);
2118     *offsetp += 4;
2119     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_xoffset, tvb, *offsetp, 4, byte_order);
2120     *offsetp += 4;
2121     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_yoffset, tvb, *offsetp, 4, byte_order);
2122     *offsetp += 4;
2123     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_zoffset, tvb, *offsetp, 4, byte_order);
2124     *offsetp += 4;
2125     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_x, tvb, *offsetp, 4, byte_order);
2126     *offsetp += 4;
2127     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_y, tvb, *offsetp, 4, byte_order);
2128     *offsetp += 4;
2129     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_width, tvb, *offsetp, 4, byte_order);
2130     *offsetp += 4;
2131     proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_height, tvb, *offsetp, 4, byte_order);
2132     *offsetp += 4;
2133 }
2134
2135 static void mesa_ActiveTexture(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2136 {
2137     proto_tree_add_item(t, hf_x11_glx_render_ActiveTexture_texture, tvb, *offsetp, 4, byte_order);
2138     *offsetp += 4;
2139 }
2140
2141 static void mesa_MultiTexCoord1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2142 {
2143     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1dv_target, tvb, *offsetp, 4, byte_order);
2144     *offsetp += 4;
2145     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1dv_v, hf_x11_glx_render_MultiTexCoord1dv_v_item, 1, byte_order);
2146 }
2147
2148 static void mesa_MultiTexCoord1iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2149 {
2150     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1iv_target, tvb, *offsetp, 4, byte_order);
2151     *offsetp += 4;
2152     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1iv_v, hf_x11_glx_render_MultiTexCoord1iv_v_item, 1, byte_order);
2153 }
2154
2155 static void mesa_MultiTexCoord1sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2156 {
2157     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1sv_target, tvb, *offsetp, 4, byte_order);
2158     *offsetp += 4;
2159     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1sv_v, hf_x11_glx_render_MultiTexCoord1sv_v_item, 1, byte_order);
2160 }
2161
2162 static void mesa_MultiTexCoord2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2163 {
2164     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2dv_target, tvb, *offsetp, 4, byte_order);
2165     *offsetp += 4;
2166     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2dv_v, hf_x11_glx_render_MultiTexCoord2dv_v_item, 2, byte_order);
2167 }
2168
2169 static void mesa_MultiTexCoord2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2170 {
2171     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2iv_target, tvb, *offsetp, 4, byte_order);
2172     *offsetp += 4;
2173     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2iv_v, hf_x11_glx_render_MultiTexCoord2iv_v_item, 2, byte_order);
2174 }
2175
2176 static void mesa_MultiTexCoord2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2177 {
2178     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2sv_target, tvb, *offsetp, 4, byte_order);
2179     *offsetp += 4;
2180     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2sv_v, hf_x11_glx_render_MultiTexCoord2sv_v_item, 2, byte_order);
2181 }
2182
2183 static void mesa_MultiTexCoord3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2184 {
2185     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3dv_target, tvb, *offsetp, 4, byte_order);
2186     *offsetp += 4;
2187     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3dv_v, hf_x11_glx_render_MultiTexCoord3dv_v_item, 3, byte_order);
2188 }
2189
2190 static void mesa_MultiTexCoord3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2191 {
2192     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3iv_target, tvb, *offsetp, 4, byte_order);
2193     *offsetp += 4;
2194     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3iv_v, hf_x11_glx_render_MultiTexCoord3iv_v_item, 3, byte_order);
2195 }
2196
2197 static void mesa_MultiTexCoord3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2198 {
2199     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3sv_target, tvb, *offsetp, 4, byte_order);
2200     *offsetp += 4;
2201     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3sv_v, hf_x11_glx_render_MultiTexCoord3sv_v_item, 3, byte_order);
2202 }
2203
2204 static void mesa_MultiTexCoord4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2205 {
2206     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4dv_target, tvb, *offsetp, 4, byte_order);
2207     *offsetp += 4;
2208     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4dv_v, hf_x11_glx_render_MultiTexCoord4dv_v_item, 4, byte_order);
2209 }
2210
2211 static void mesa_MultiTexCoord4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2212 {
2213     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4iv_target, tvb, *offsetp, 4, byte_order);
2214     *offsetp += 4;
2215     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4iv_v, hf_x11_glx_render_MultiTexCoord4iv_v_item, 4, byte_order);
2216 }
2217
2218 static void mesa_MultiTexCoord4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2219 {
2220     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4sv_target, tvb, *offsetp, 4, byte_order);
2221     *offsetp += 4;
2222     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4sv_v, hf_x11_glx_render_MultiTexCoord4sv_v_item, 4, byte_order);
2223 }
2224
2225 static void mesa_SampleCoverage(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2226 {
2227     proto_tree_add_item(t, hf_x11_glx_render_SampleCoverage_value, tvb, *offsetp, 4, byte_order);
2228     *offsetp += 4;
2229     proto_tree_add_item(t, hf_x11_glx_render_SampleCoverage_invert, tvb, *offsetp, 1, byte_order);
2230     *offsetp += 1;
2231 }
2232
2233 static void mesa_CompressedTexImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2234 {
2235     int imageSize;
2236     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_target, tvb, *offsetp, 4, byte_order);
2237     *offsetp += 4;
2238     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_level, tvb, *offsetp, 4, byte_order);
2239     *offsetp += 4;
2240     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_internalformat, tvb, *offsetp, 4, byte_order);
2241     *offsetp += 4;
2242     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_width, tvb, *offsetp, 4, byte_order);
2243     *offsetp += 4;
2244     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_height, tvb, *offsetp, 4, byte_order);
2245     *offsetp += 4;
2246     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_depth, tvb, *offsetp, 4, byte_order);
2247     *offsetp += 4;
2248     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_border, tvb, *offsetp, 4, byte_order);
2249     *offsetp += 4;
2250     imageSize = VALUE32(tvb, *offsetp);
2251     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3D_imageSize, tvb, *offsetp, 4, byte_order);
2252     *offsetp += 4;
2253     listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage3D_data, imageSize, byte_order);
2254 }
2255
2256 static void mesa_CompressedTexImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2257 {
2258     int imageSize;
2259     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2D_target, tvb, *offsetp, 4, byte_order);
2260     *offsetp += 4;
2261     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2D_level, tvb, *offsetp, 4, byte_order);
2262     *offsetp += 4;
2263     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2D_internalformat, tvb, *offsetp, 4, byte_order);
2264     *offsetp += 4;
2265     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2D_width, tvb, *offsetp, 4, byte_order);
2266     *offsetp += 4;
2267     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2D_height, tvb, *offsetp, 4, byte_order);
2268     *offsetp += 4;
2269     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2D_border, tvb, *offsetp, 4, byte_order);
2270     *offsetp += 4;
2271     imageSize = VALUE32(tvb, *offsetp);
2272     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2D_imageSize, tvb, *offsetp, 4, byte_order);
2273     *offsetp += 4;
2274     listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage2D_data, imageSize, byte_order);
2275 }
2276
2277 static void mesa_CompressedTexImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2278 {
2279     int imageSize;
2280     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1D_target, tvb, *offsetp, 4, byte_order);
2281     *offsetp += 4;
2282     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1D_level, tvb, *offsetp, 4, byte_order);
2283     *offsetp += 4;
2284     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1D_internalformat, tvb, *offsetp, 4, byte_order);
2285     *offsetp += 4;
2286     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1D_width, tvb, *offsetp, 4, byte_order);
2287     *offsetp += 4;
2288     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1D_border, tvb, *offsetp, 4, byte_order);
2289     *offsetp += 4;
2290     imageSize = VALUE32(tvb, *offsetp);
2291     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1D_imageSize, tvb, *offsetp, 4, byte_order);
2292     *offsetp += 4;
2293     listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage1D_data, imageSize, byte_order);
2294 }
2295
2296 static void mesa_CompressedTexSubImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2297 {
2298     int imageSize;
2299     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_target, tvb, *offsetp, 4, byte_order);
2300     *offsetp += 4;
2301     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_level, tvb, *offsetp, 4, byte_order);
2302     *offsetp += 4;
2303     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_xoffset, tvb, *offsetp, 4, byte_order);
2304     *offsetp += 4;
2305     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_yoffset, tvb, *offsetp, 4, byte_order);
2306     *offsetp += 4;
2307     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_zoffset, tvb, *offsetp, 4, byte_order);
2308     *offsetp += 4;
2309     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_width, tvb, *offsetp, 4, byte_order);
2310     *offsetp += 4;
2311     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_height, tvb, *offsetp, 4, byte_order);
2312     *offsetp += 4;
2313     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_depth, tvb, *offsetp, 4, byte_order);
2314     *offsetp += 4;
2315     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_format, tvb, *offsetp, 4, byte_order);
2316     *offsetp += 4;
2317     imageSize = VALUE32(tvb, *offsetp);
2318     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3D_imageSize, tvb, *offsetp, 4, byte_order);
2319     *offsetp += 4;
2320     listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage3D_data, imageSize, byte_order);
2321 }
2322
2323 static void mesa_CompressedTexSubImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2324 {
2325     int imageSize;
2326     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_target, tvb, *offsetp, 4, byte_order);
2327     *offsetp += 4;
2328     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_level, tvb, *offsetp, 4, byte_order);
2329     *offsetp += 4;
2330     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_xoffset, tvb, *offsetp, 4, byte_order);
2331     *offsetp += 4;
2332     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_yoffset, tvb, *offsetp, 4, byte_order);
2333     *offsetp += 4;
2334     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_width, tvb, *offsetp, 4, byte_order);
2335     *offsetp += 4;
2336     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_height, tvb, *offsetp, 4, byte_order);
2337     *offsetp += 4;
2338     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_format, tvb, *offsetp, 4, byte_order);
2339     *offsetp += 4;
2340     imageSize = VALUE32(tvb, *offsetp);
2341     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2D_imageSize, tvb, *offsetp, 4, byte_order);
2342     *offsetp += 4;
2343     listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage2D_data, imageSize, byte_order);
2344 }
2345
2346 static void mesa_CompressedTexSubImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2347 {
2348     int imageSize;
2349     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1D_target, tvb, *offsetp, 4, byte_order);
2350     *offsetp += 4;
2351     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1D_level, tvb, *offsetp, 4, byte_order);
2352     *offsetp += 4;
2353     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1D_xoffset, tvb, *offsetp, 4, byte_order);
2354     *offsetp += 4;
2355     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1D_width, tvb, *offsetp, 4, byte_order);
2356     *offsetp += 4;
2357     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1D_format, tvb, *offsetp, 4, byte_order);
2358     *offsetp += 4;
2359     imageSize = VALUE32(tvb, *offsetp);
2360     proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1D_imageSize, tvb, *offsetp, 4, byte_order);
2361     *offsetp += 4;
2362     listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage1D_data, imageSize, byte_order);
2363 }
2364
2365 static void mesa_BlendFuncSeparate(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2366 {
2367     proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparate_sfactorRGB, tvb, *offsetp, 4, byte_order);
2368     *offsetp += 4;
2369     proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparate_dfactorRGB, tvb, *offsetp, 4, byte_order);
2370     *offsetp += 4;
2371     proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparate_sfactorAlpha, tvb, *offsetp, 4, byte_order);
2372     *offsetp += 4;
2373     proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparate_dfactorAlpha, tvb, *offsetp, 4, byte_order);
2374     *offsetp += 4;
2375 }
2376
2377 static void mesa_FogCoorddv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2378 {
2379     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_FogCoorddv_coord, hf_x11_glx_render_FogCoorddv_coord_item, 1, byte_order);
2380 }
2381
2382 static void mesa_PointParameterf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2383 {
2384     proto_tree_add_item(t, hf_x11_glx_render_PointParameterf_pname, tvb, *offsetp, 4, byte_order);
2385     *offsetp += 4;
2386     proto_tree_add_item(t, hf_x11_glx_render_PointParameterf_param, tvb, *offsetp, 4, byte_order);
2387     *offsetp += 4;
2388 }
2389
2390 static void mesa_PointParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2391 {
2392     proto_tree_add_item(t, hf_x11_glx_render_PointParameterfv_pname, tvb, *offsetp, 4, byte_order);
2393     *offsetp += 4;
2394     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PointParameterfv_params, hf_x11_glx_render_PointParameterfv_params_item, (length - 4) / 4, byte_order);
2395 }
2396
2397 static void mesa_PointParameteri(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2398 {
2399     proto_tree_add_item(t, hf_x11_glx_render_PointParameteri_pname, tvb, *offsetp, 4, byte_order);
2400     *offsetp += 4;
2401     proto_tree_add_item(t, hf_x11_glx_render_PointParameteri_param, tvb, *offsetp, 4, byte_order);
2402     *offsetp += 4;
2403 }
2404
2405 static void mesa_PointParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2406 {
2407     proto_tree_add_item(t, hf_x11_glx_render_PointParameteriv_pname, tvb, *offsetp, 4, byte_order);
2408     *offsetp += 4;
2409     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_PointParameteriv_params, hf_x11_glx_render_PointParameteriv_params_item, (length - 4) / 4, byte_order);
2410 }
2411
2412 static void mesa_SecondaryColor3bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2413 {
2414     listOfByte(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3bv_v, 3, byte_order);
2415 }
2416
2417 static void mesa_SecondaryColor3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2418 {
2419     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3dv_v, hf_x11_glx_render_SecondaryColor3dv_v_item, 3, byte_order);
2420 }
2421
2422 static void mesa_SecondaryColor3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2423 {
2424     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3iv_v, hf_x11_glx_render_SecondaryColor3iv_v_item, 3, byte_order);
2425 }
2426
2427 static void mesa_SecondaryColor3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2428 {
2429     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3sv_v, hf_x11_glx_render_SecondaryColor3sv_v_item, 3, byte_order);
2430 }
2431
2432 static void mesa_SecondaryColor3ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2433 {
2434     listOfByte(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3ubv_v, 3, byte_order);
2435 }
2436
2437 static void mesa_SecondaryColor3uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2438 {
2439     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3uiv_v, hf_x11_glx_render_SecondaryColor3uiv_v_item, 3, byte_order);
2440 }
2441
2442 static void mesa_SecondaryColor3usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2443 {
2444     listOfCard16(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3usv_v, hf_x11_glx_render_SecondaryColor3usv_v_item, 3, byte_order);
2445 }
2446
2447 static void mesa_WindowPos3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2448 {
2449     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_WindowPos3fv_v, hf_x11_glx_render_WindowPos3fv_v_item, 3, byte_order);
2450 }
2451
2452 static void mesa_BeginQuery(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2453 {
2454     proto_tree_add_item(t, hf_x11_glx_render_BeginQuery_target, tvb, *offsetp, 4, byte_order);
2455     *offsetp += 4;
2456     proto_tree_add_item(t, hf_x11_glx_render_BeginQuery_id, tvb, *offsetp, 4, byte_order);
2457     *offsetp += 4;
2458 }
2459
2460 static void mesa_EndQuery(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2461 {
2462     proto_tree_add_item(t, hf_x11_glx_render_EndQuery_target, tvb, *offsetp, 4, byte_order);
2463     *offsetp += 4;
2464 }
2465
2466 static void mesa_BlendEquationSeparate(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2467 {
2468     proto_tree_add_item(t, hf_x11_glx_render_BlendEquationSeparate_modeRGB, tvb, *offsetp, 4, byte_order);
2469     *offsetp += 4;
2470     proto_tree_add_item(t, hf_x11_glx_render_BlendEquationSeparate_modeA, tvb, *offsetp, 4, byte_order);
2471     *offsetp += 4;
2472 }
2473
2474 static void mesa_DrawBuffers(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2475 {
2476     int n;
2477     n = VALUE32(tvb, *offsetp);
2478     proto_tree_add_item(t, hf_x11_glx_render_DrawBuffers_n, tvb, *offsetp, 4, byte_order);
2479     *offsetp += 4;
2480     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_DrawBuffers_bufs, hf_x11_glx_render_DrawBuffers_bufs_item, n, byte_order);
2481 }
2482
2483 static void mesa_VertexAttrib1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2484 {
2485     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1dv_index, tvb, *offsetp, 4, byte_order);
2486     *offsetp += 4;
2487     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1dv_v, hf_x11_glx_render_VertexAttrib1dv_v_item, 1, byte_order);
2488 }
2489
2490 static void mesa_VertexAttrib1sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2491 {
2492     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1sv_index, tvb, *offsetp, 4, byte_order);
2493     *offsetp += 4;
2494     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1sv_v, hf_x11_glx_render_VertexAttrib1sv_v_item, 1, byte_order);
2495 }
2496
2497 static void mesa_VertexAttrib2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2498 {
2499     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2dv_index, tvb, *offsetp, 4, byte_order);
2500     *offsetp += 4;
2501     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2dv_v, hf_x11_glx_render_VertexAttrib2dv_v_item, 2, byte_order);
2502 }
2503
2504 static void mesa_VertexAttrib2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2505 {
2506     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2sv_index, tvb, *offsetp, 4, byte_order);
2507     *offsetp += 4;
2508     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2sv_v, hf_x11_glx_render_VertexAttrib2sv_v_item, 2, byte_order);
2509 }
2510
2511 static void mesa_VertexAttrib3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2512 {
2513     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3dv_index, tvb, *offsetp, 4, byte_order);
2514     *offsetp += 4;
2515     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3dv_v, hf_x11_glx_render_VertexAttrib3dv_v_item, 3, byte_order);
2516 }
2517
2518 static void mesa_VertexAttrib3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2519 {
2520     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3sv_index, tvb, *offsetp, 4, byte_order);
2521     *offsetp += 4;
2522     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3sv_v, hf_x11_glx_render_VertexAttrib3sv_v_item, 3, byte_order);
2523 }
2524
2525 static void mesa_VertexAttrib4Nbv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2526 {
2527     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4Nbv_index, tvb, *offsetp, 4, byte_order);
2528     *offsetp += 4;
2529     listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4Nbv_v, 4, byte_order);
2530 }
2531
2532 static void mesa_VertexAttrib4Niv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2533 {
2534     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4Niv_index, tvb, *offsetp, 4, byte_order);
2535     *offsetp += 4;
2536     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4Niv_v, hf_x11_glx_render_VertexAttrib4Niv_v_item, 4, byte_order);
2537 }
2538
2539 static void mesa_VertexAttrib4Nsv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2540 {
2541     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4Nsv_index, tvb, *offsetp, 4, byte_order);
2542     *offsetp += 4;
2543     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4Nsv_v, hf_x11_glx_render_VertexAttrib4Nsv_v_item, 4, byte_order);
2544 }
2545
2546 static void mesa_VertexAttrib4Nubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2547 {
2548     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4Nubv_index, tvb, *offsetp, 4, byte_order);
2549     *offsetp += 4;
2550     listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4Nubv_v, 4, byte_order);
2551 }
2552
2553 static void mesa_VertexAttrib4Nuiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2554 {
2555     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4Nuiv_index, tvb, *offsetp, 4, byte_order);
2556     *offsetp += 4;
2557     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4Nuiv_v, hf_x11_glx_render_VertexAttrib4Nuiv_v_item, 4, byte_order);
2558 }
2559
2560 static void mesa_VertexAttrib4Nusv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2561 {
2562     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4Nusv_index, tvb, *offsetp, 4, byte_order);
2563     *offsetp += 4;
2564     listOfCard16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4Nusv_v, hf_x11_glx_render_VertexAttrib4Nusv_v_item, 4, byte_order);
2565 }
2566
2567 static void mesa_VertexAttrib4bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2568 {
2569     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4bv_index, tvb, *offsetp, 4, byte_order);
2570     *offsetp += 4;
2571     listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4bv_v, 4, byte_order);
2572 }
2573
2574 static void mesa_VertexAttrib4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2575 {
2576     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4dv_index, tvb, *offsetp, 4, byte_order);
2577     *offsetp += 4;
2578     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4dv_v, hf_x11_glx_render_VertexAttrib4dv_v_item, 4, byte_order);
2579 }
2580
2581 static void mesa_VertexAttrib4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2582 {
2583     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4iv_index, tvb, *offsetp, 4, byte_order);
2584     *offsetp += 4;
2585     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4iv_v, hf_x11_glx_render_VertexAttrib4iv_v_item, 4, byte_order);
2586 }
2587
2588 static void mesa_VertexAttrib4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2589 {
2590     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4sv_index, tvb, *offsetp, 4, byte_order);
2591     *offsetp += 4;
2592     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4sv_v, hf_x11_glx_render_VertexAttrib4sv_v_item, 4, byte_order);
2593 }
2594
2595 static void mesa_VertexAttrib4ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2596 {
2597     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ubv_index, tvb, *offsetp, 4, byte_order);
2598     *offsetp += 4;
2599     listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ubv_v, 4, byte_order);
2600 }
2601
2602 static void mesa_VertexAttrib4uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2603 {
2604     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4uiv_index, tvb, *offsetp, 4, byte_order);
2605     *offsetp += 4;
2606     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4uiv_v, hf_x11_glx_render_VertexAttrib4uiv_v_item, 4, byte_order);
2607 }
2608
2609 static void mesa_VertexAttrib4usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2610 {
2611     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4usv_index, tvb, *offsetp, 4, byte_order);
2612     *offsetp += 4;
2613     listOfCard16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4usv_v, hf_x11_glx_render_VertexAttrib4usv_v_item, 4, byte_order);
2614 }
2615
2616 static void mesa_MultiTexCoord1fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2617 {
2618     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1fvARB_target, tvb, *offsetp, 4, byte_order);
2619     *offsetp += 4;
2620     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1fvARB_v, hf_x11_glx_render_MultiTexCoord1fvARB_v_item, 1, byte_order);
2621 }
2622
2623 static void mesa_MultiTexCoord2fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2624 {
2625     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2fvARB_target, tvb, *offsetp, 4, byte_order);
2626     *offsetp += 4;
2627     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2fvARB_v, hf_x11_glx_render_MultiTexCoord2fvARB_v_item, 2, byte_order);
2628 }
2629
2630 static void mesa_MultiTexCoord3fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2631 {
2632     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3fvARB_target, tvb, *offsetp, 4, byte_order);
2633     *offsetp += 4;
2634     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3fvARB_v, hf_x11_glx_render_MultiTexCoord3fvARB_v_item, 3, byte_order);
2635 }
2636
2637 static void mesa_MultiTexCoord4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2638 {
2639     proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4fvARB_target, tvb, *offsetp, 4, byte_order);
2640     *offsetp += 4;
2641     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4fvARB_v, hf_x11_glx_render_MultiTexCoord4fvARB_v_item, 4, byte_order);
2642 }
2643
2644 static void mesa_CurrentPaletteMatrixARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2645 {
2646     proto_tree_add_item(t, hf_x11_glx_render_CurrentPaletteMatrixARB_index, tvb, *offsetp, 4, byte_order);
2647     *offsetp += 4;
2648 }
2649
2650 static void mesa_MatrixIndexubvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2651 {
2652     int size;
2653     size = VALUE32(tvb, *offsetp);
2654     proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexubvARB_size, tvb, *offsetp, 4, byte_order);
2655     *offsetp += 4;
2656     listOfByte(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexubvARB_indices, size, byte_order);
2657 }
2658
2659 static void mesa_MatrixIndexusvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2660 {
2661     int size;
2662     size = VALUE32(tvb, *offsetp);
2663     proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexusvARB_size, tvb, *offsetp, 4, byte_order);
2664     *offsetp += 4;
2665     listOfCard16(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexusvARB_indices, hf_x11_glx_render_MatrixIndexusvARB_indices_item, size, byte_order);
2666 }
2667
2668 static void mesa_MatrixIndexuivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2669 {
2670     int size;
2671     size = VALUE32(tvb, *offsetp);
2672     proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexuivARB_size, tvb, *offsetp, 4, byte_order);
2673     *offsetp += 4;
2674     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexuivARB_indices, hf_x11_glx_render_MatrixIndexuivARB_indices_item, size, byte_order);
2675 }
2676
2677 static void mesa_VertexAttrib1fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2678 {
2679     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1fvARB_index, tvb, *offsetp, 4, byte_order);
2680     *offsetp += 4;
2681     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1fvARB_v, hf_x11_glx_render_VertexAttrib1fvARB_v_item, 1, byte_order);
2682 }
2683
2684 static void mesa_VertexAttrib2fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2685 {
2686     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2fvARB_index, tvb, *offsetp, 4, byte_order);
2687     *offsetp += 4;
2688     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2fvARB_v, hf_x11_glx_render_VertexAttrib2fvARB_v_item, 2, byte_order);
2689 }
2690
2691 static void mesa_VertexAttrib3fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2692 {
2693     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3fvARB_index, tvb, *offsetp, 4, byte_order);
2694     *offsetp += 4;
2695     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3fvARB_v, hf_x11_glx_render_VertexAttrib3fvARB_v_item, 3, byte_order);
2696 }
2697
2698 static void mesa_VertexAttrib4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2699 {
2700     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4fvARB_index, tvb, *offsetp, 4, byte_order);
2701     *offsetp += 4;
2702     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4fvARB_v, hf_x11_glx_render_VertexAttrib4fvARB_v_item, 4, byte_order);
2703 }
2704
2705 static void mesa_ProgramStringARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2706 {
2707     int len;
2708     proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_target, tvb, *offsetp, 4, byte_order);
2709     *offsetp += 4;
2710     proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_format, tvb, *offsetp, 4, byte_order);
2711     *offsetp += 4;
2712     len = VALUE32(tvb, *offsetp);
2713     proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_len, tvb, *offsetp, 4, byte_order);
2714     *offsetp += 4;
2715     listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramStringARB_string, len, byte_order);
2716 }
2717
2718 static void mesa_BindProgramARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2719 {
2720     proto_tree_add_item(t, hf_x11_glx_render_BindProgramARB_target, tvb, *offsetp, 4, byte_order);
2721     *offsetp += 4;
2722     proto_tree_add_item(t, hf_x11_glx_render_BindProgramARB_program, tvb, *offsetp, 4, byte_order);
2723     *offsetp += 4;
2724 }
2725
2726 static void mesa_ProgramEnvParameter4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2727 {
2728     proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4dvARB_target, tvb, *offsetp, 4, byte_order);
2729     *offsetp += 4;
2730     proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4dvARB_index, tvb, *offsetp, 4, byte_order);
2731     *offsetp += 4;
2732     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramEnvParameter4dvARB_params, hf_x11_glx_render_ProgramEnvParameter4dvARB_params_item, 4, byte_order);
2733 }
2734
2735 static void mesa_ProgramEnvParameter4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2736 {
2737     proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4fvARB_target, tvb, *offsetp, 4, byte_order);
2738     *offsetp += 4;
2739     proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4fvARB_index, tvb, *offsetp, 4, byte_order);
2740     *offsetp += 4;
2741     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramEnvParameter4fvARB_params, hf_x11_glx_render_ProgramEnvParameter4fvARB_params_item, 4, byte_order);
2742 }
2743
2744 static void mesa_ProgramLocalParameter4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2745 {
2746     proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4dvARB_target, tvb, *offsetp, 4, byte_order);
2747     *offsetp += 4;
2748     proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4dvARB_index, tvb, *offsetp, 4, byte_order);
2749     *offsetp += 4;
2750     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramLocalParameter4dvARB_params, hf_x11_glx_render_ProgramLocalParameter4dvARB_params_item, 4, byte_order);
2751 }
2752
2753 static void mesa_ProgramLocalParameter4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2754 {
2755     proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4fvARB_target, tvb, *offsetp, 4, byte_order);
2756     *offsetp += 4;
2757     proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4fvARB_index, tvb, *offsetp, 4, byte_order);
2758     *offsetp += 4;
2759     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramLocalParameter4fvARB_params, hf_x11_glx_render_ProgramLocalParameter4fvARB_params_item, 4, byte_order);
2760 }
2761
2762 static void mesa_PolygonOffsetEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2763 {
2764     proto_tree_add_item(t, hf_x11_glx_render_PolygonOffsetEXT_factor, tvb, *offsetp, 4, byte_order);
2765     *offsetp += 4;
2766     proto_tree_add_item(t, hf_x11_glx_render_PolygonOffsetEXT_bias, tvb, *offsetp, 4, byte_order);
2767     *offsetp += 4;
2768 }
2769
2770 static void mesa_TexFilterFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2771 {
2772     int n;
2773     proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_target, tvb, *offsetp, 4, byte_order);
2774     *offsetp += 4;
2775     proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_filter, tvb, *offsetp, 4, byte_order);
2776     *offsetp += 4;
2777     n = VALUE32(tvb, *offsetp);
2778     proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_n, tvb, *offsetp, 4, byte_order);
2779     *offsetp += 4;
2780     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexFilterFuncSGIS_weights, hf_x11_glx_render_TexFilterFuncSGIS_weights_item, n, byte_order);
2781 }
2782
2783 static void mesa_TexImage4DSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2784 {
2785     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_swapbytes, tvb, *offsetp, 1, byte_order);
2786     *offsetp += 1;
2787     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_lsbfirst, tvb, *offsetp, 1, byte_order);
2788     *offsetp += 1;
2789     UNUSED(2);
2790     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_rowlength, tvb, *offsetp, 4, byte_order);
2791     *offsetp += 4;
2792     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_skiprows, tvb, *offsetp, 4, byte_order);
2793     *offsetp += 4;
2794     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_skippixels, tvb, *offsetp, 4, byte_order);
2795     *offsetp += 4;
2796     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_alignment, tvb, *offsetp, 4, byte_order);
2797     *offsetp += 4;
2798     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_target, tvb, *offsetp, 4, byte_order);
2799     *offsetp += 4;
2800     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_level, tvb, *offsetp, 4, byte_order);
2801     *offsetp += 4;
2802     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_internalformat, tvb, *offsetp, 4, byte_order);
2803     *offsetp += 4;
2804     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_width, tvb, *offsetp, 4, byte_order);
2805     *offsetp += 4;
2806     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_height, tvb, *offsetp, 4, byte_order);
2807     *offsetp += 4;
2808     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_depth, tvb, *offsetp, 4, byte_order);
2809     *offsetp += 4;
2810     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_size4d, tvb, *offsetp, 4, byte_order);
2811     *offsetp += 4;
2812     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_border, tvb, *offsetp, 4, byte_order);
2813     *offsetp += 4;
2814     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_format, tvb, *offsetp, 4, byte_order);
2815     *offsetp += 4;
2816     proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_type, tvb, *offsetp, 4, byte_order);
2817     *offsetp += 4;
2818     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage4DSGIS_pixels, (length - 60) / 1, byte_order);
2819 }
2820
2821 static void mesa_TexSubImage4DSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2822 {
2823     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_swapbytes, tvb, *offsetp, 1, byte_order);
2824     *offsetp += 1;
2825     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_lsbfirst, tvb, *offsetp, 1, byte_order);
2826     *offsetp += 1;
2827     UNUSED(2);
2828     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_rowlength, tvb, *offsetp, 4, byte_order);
2829     *offsetp += 4;
2830     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_skiprows, tvb, *offsetp, 4, byte_order);
2831     *offsetp += 4;
2832     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_skippixels, tvb, *offsetp, 4, byte_order);
2833     *offsetp += 4;
2834     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_alignment, tvb, *offsetp, 4, byte_order);
2835     *offsetp += 4;
2836     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_target, tvb, *offsetp, 4, byte_order);
2837     *offsetp += 4;
2838     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_level, tvb, *offsetp, 4, byte_order);
2839     *offsetp += 4;
2840     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_xoffset, tvb, *offsetp, 4, byte_order);
2841     *offsetp += 4;
2842     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_yoffset, tvb, *offsetp, 4, byte_order);
2843     *offsetp += 4;
2844     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_zoffset, tvb, *offsetp, 4, byte_order);
2845     *offsetp += 4;
2846     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_woffset, tvb, *offsetp, 4, byte_order);
2847     *offsetp += 4;
2848     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_width, tvb, *offsetp, 4, byte_order);
2849     *offsetp += 4;
2850     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_height, tvb, *offsetp, 4, byte_order);
2851     *offsetp += 4;
2852     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_depth, tvb, *offsetp, 4, byte_order);
2853     *offsetp += 4;
2854     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_size4d, tvb, *offsetp, 4, byte_order);
2855     *offsetp += 4;
2856     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_format, tvb, *offsetp, 4, byte_order);
2857     *offsetp += 4;
2858     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_type, tvb, *offsetp, 4, byte_order);
2859     *offsetp += 4;
2860     proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_UNUSED, tvb, *offsetp, 4, byte_order);
2861     *offsetp += 4;
2862     listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage4DSGIS_pixels, (length - 72) / 1, byte_order);
2863 }
2864
2865 static void mesa_DetailTexFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2866 {
2867     int n;
2868     proto_tree_add_item(t, hf_x11_glx_render_DetailTexFuncSGIS_target, tvb, *offsetp, 4, byte_order);
2869     *offsetp += 4;
2870     n = VALUE32(tvb, *offsetp);
2871     proto_tree_add_item(t, hf_x11_glx_render_DetailTexFuncSGIS_n, tvb, *offsetp, 4, byte_order);
2872     *offsetp += 4;
2873     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_DetailTexFuncSGIS_points, hf_x11_glx_render_DetailTexFuncSGIS_points_item, n, byte_order);
2874 }
2875
2876 static void mesa_SharpenTexFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2877 {
2878     int n;
2879     proto_tree_add_item(t, hf_x11_glx_render_SharpenTexFuncSGIS_target, tvb, *offsetp, 4, byte_order);
2880     *offsetp += 4;
2881     n = VALUE32(tvb, *offsetp);
2882     proto_tree_add_item(t, hf_x11_glx_render_SharpenTexFuncSGIS_n, tvb, *offsetp, 4, byte_order);
2883     *offsetp += 4;
2884     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_SharpenTexFuncSGIS_points, hf_x11_glx_render_SharpenTexFuncSGIS_points_item, n, byte_order);
2885 }
2886
2887 static void mesa_SampleMaskSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2888 {
2889     proto_tree_add_item(t, hf_x11_glx_render_SampleMaskSGIS_value, tvb, *offsetp, 4, byte_order);
2890     *offsetp += 4;
2891     proto_tree_add_item(t, hf_x11_glx_render_SampleMaskSGIS_invert, tvb, *offsetp, 1, byte_order);
2892     *offsetp += 1;
2893 }
2894
2895 static void mesa_SamplePatternSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2896 {
2897     proto_tree_add_item(t, hf_x11_glx_render_SamplePatternSGIS_pattern, tvb, *offsetp, 4, byte_order);
2898     *offsetp += 4;
2899 }
2900
2901 static void mesa_FrameZoomSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2902 {
2903     proto_tree_add_item(t, hf_x11_glx_render_FrameZoomSGIX_factor, tvb, *offsetp, 4, byte_order);
2904     *offsetp += 4;
2905 }
2906
2907 static void mesa_TagSampleBufferSGIX(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
2908 {
2909 }
2910
2911 static void mesa_ReferencePlaneSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2912 {
2913     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ReferencePlaneSGIX_equation, hf_x11_glx_render_ReferencePlaneSGIX_equation_item, 4, byte_order);
2914 }
2915
2916 static void mesa_FogFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2917 {
2918     int n;
2919     n = VALUE32(tvb, *offsetp);
2920     proto_tree_add_item(t, hf_x11_glx_render_FogFuncSGIS_n, tvb, *offsetp, 4, byte_order);
2921     *offsetp += 4;
2922     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_FogFuncSGIS_points, hf_x11_glx_render_FogFuncSGIS_points_item, n, byte_order);
2923 }
2924
2925 static void mesa_SecondaryColor3fvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2926 {
2927     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3fvEXT_v, hf_x11_glx_render_SecondaryColor3fvEXT_v_item, 3, byte_order);
2928 }
2929
2930 static void mesa_FogCoordfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2931 {
2932     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_FogCoordfvEXT_coord, hf_x11_glx_render_FogCoordfvEXT_coord_item, 1, byte_order);
2933 }
2934
2935 static void mesa_PixelTexGenSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2936 {
2937     proto_tree_add_item(t, hf_x11_glx_render_PixelTexGenSGIX_mode, tvb, *offsetp, 4, byte_order);
2938     *offsetp += 4;
2939 }
2940
2941 static void mesa_VertexWeightfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2942 {
2943     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexWeightfvEXT_weight, hf_x11_glx_render_VertexWeightfvEXT_weight_item, 1, byte_order);
2944 }
2945
2946 static void mesa_CombinerParameterfvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2947 {
2948     proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfvNV_pname, tvb, *offsetp, 4, byte_order);
2949     *offsetp += 4;
2950     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_CombinerParameterfvNV_params, hf_x11_glx_render_CombinerParameterfvNV_params_item, (length - 4) / 4, byte_order);
2951 }
2952
2953 static void mesa_CombinerParameterfNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2954 {
2955     proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfNV_pname, tvb, *offsetp, 4, byte_order);
2956     *offsetp += 4;
2957     proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfNV_param, tvb, *offsetp, 4, byte_order);
2958     *offsetp += 4;
2959 }
2960
2961 static void mesa_CombinerParameterivNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2962 {
2963     proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterivNV_pname, tvb, *offsetp, 4, byte_order);
2964     *offsetp += 4;
2965     listOfInt32(tvb, offsetp, t, hf_x11_glx_render_CombinerParameterivNV_params, hf_x11_glx_render_CombinerParameterivNV_params_item, (length - 4) / 4, byte_order);
2966 }
2967
2968 static void mesa_CombinerParameteriNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2969 {
2970     proto_tree_add_item(t, hf_x11_glx_render_CombinerParameteriNV_pname, tvb, *offsetp, 4, byte_order);
2971     *offsetp += 4;
2972     proto_tree_add_item(t, hf_x11_glx_render_CombinerParameteriNV_param, tvb, *offsetp, 4, byte_order);
2973     *offsetp += 4;
2974 }
2975
2976 static void mesa_CombinerInputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2977 {
2978     proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_stage, tvb, *offsetp, 4, byte_order);
2979     *offsetp += 4;
2980     proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_portion, tvb, *offsetp, 4, byte_order);
2981     *offsetp += 4;
2982     proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_variable, tvb, *offsetp, 4, byte_order);
2983     *offsetp += 4;
2984     proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_input, tvb, *offsetp, 4, byte_order);
2985     *offsetp += 4;
2986     proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_mapping, tvb, *offsetp, 4, byte_order);
2987     *offsetp += 4;
2988     proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_componentUsage, tvb, *offsetp, 4, byte_order);
2989     *offsetp += 4;
2990 }
2991
2992 static void mesa_CombinerOutputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
2993 {
2994     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_stage, tvb, *offsetp, 4, byte_order);
2995     *offsetp += 4;
2996     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_portion, tvb, *offsetp, 4, byte_order);
2997     *offsetp += 4;
2998     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_abOutput, tvb, *offsetp, 4, byte_order);
2999     *offsetp += 4;
3000     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_cdOutput, tvb, *offsetp, 4, byte_order);
3001     *offsetp += 4;
3002     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_sumOutput, tvb, *offsetp, 4, byte_order);
3003     *offsetp += 4;
3004     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_scale, tvb, *offsetp, 4, byte_order);
3005     *offsetp += 4;
3006     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_bias, tvb, *offsetp, 4, byte_order);
3007     *offsetp += 4;
3008     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_abDotProduct, tvb, *offsetp, 1, byte_order);
3009     *offsetp += 1;
3010     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_cdDotProduct, tvb, *offsetp, 1, byte_order);
3011     *offsetp += 1;
3012     proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_muxSum, tvb, *offsetp, 1, byte_order);
3013     *offsetp += 1;
3014 }
3015
3016 static void mesa_FinalCombinerInputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3017 {
3018     proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_variable, tvb, *offsetp, 4, byte_order);
3019     *offsetp += 4;
3020     proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_input, tvb, *offsetp, 4, byte_order);
3021     *offsetp += 4;
3022     proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_mapping, tvb, *offsetp, 4, byte_order);
3023     *offsetp += 4;
3024     proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_componentUsage, tvb, *offsetp, 4, byte_order);
3025     *offsetp += 4;
3026 }
3027
3028 static void mesa_TextureColorMaskSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3029 {
3030     proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_red, tvb, *offsetp, 1, byte_order);
3031     *offsetp += 1;
3032     proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_green, tvb, *offsetp, 1, byte_order);
3033     *offsetp += 1;
3034     proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_blue, tvb, *offsetp, 1, byte_order);
3035     *offsetp += 1;
3036     proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_alpha, tvb, *offsetp, 1, byte_order);
3037     *offsetp += 1;
3038 }
3039
3040 static void mesa_ExecuteProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3041 {
3042     proto_tree_add_item(t, hf_x11_glx_render_ExecuteProgramNV_target, tvb, *offsetp, 4, byte_order);
3043     *offsetp += 4;
3044     proto_tree_add_item(t, hf_x11_glx_render_ExecuteProgramNV_id, tvb, *offsetp, 4, byte_order);
3045     *offsetp += 4;
3046     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ExecuteProgramNV_params, hf_x11_glx_render_ExecuteProgramNV_params_item, 4, byte_order);
3047 }
3048
3049 static void mesa_LoadProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3050 {
3051     int len;
3052     proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_target, tvb, *offsetp, 4, byte_order);
3053     *offsetp += 4;
3054     proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_id, tvb, *offsetp, 4, byte_order);
3055     *offsetp += 4;
3056     len = VALUE32(tvb, *offsetp);
3057     proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_len, tvb, *offsetp, 4, byte_order);
3058     *offsetp += 4;
3059     listOfByte(tvb, offsetp, t, hf_x11_glx_render_LoadProgramNV_program, len, byte_order);
3060 }
3061
3062 static void mesa_ProgramParameters4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3063 {
3064     int num;
3065     proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_target, tvb, *offsetp, 4, byte_order);
3066     *offsetp += 4;
3067     proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_index, tvb, *offsetp, 4, byte_order);
3068     *offsetp += 4;
3069     num = VALUE32(tvb, *offsetp);
3070     proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_num, tvb, *offsetp, 4, byte_order);
3071     *offsetp += 4;
3072     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramParameters4dvNV_params, hf_x11_glx_render_ProgramParameters4dvNV_params_item, num, byte_order);
3073 }
3074
3075 static void mesa_ProgramParameters4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3076 {
3077     int num;
3078     proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_target, tvb, *offsetp, 4, byte_order);
3079     *offsetp += 4;
3080     proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_index, tvb, *offsetp, 4, byte_order);
3081     *offsetp += 4;
3082     num = VALUE32(tvb, *offsetp);
3083     proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_num, tvb, *offsetp, 4, byte_order);
3084     *offsetp += 4;
3085     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramParameters4fvNV_params, hf_x11_glx_render_ProgramParameters4fvNV_params_item, num, byte_order);
3086 }
3087
3088 static void mesa_RequestResidentProgramsNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3089 {
3090     int n;
3091     n = VALUE32(tvb, *offsetp);
3092     proto_tree_add_item(t, hf_x11_glx_render_RequestResidentProgramsNV_n, tvb, *offsetp, 4, byte_order);
3093     *offsetp += 4;
3094     listOfCard32(tvb, offsetp, t, hf_x11_glx_render_RequestResidentProgramsNV_ids, hf_x11_glx_render_RequestResidentProgramsNV_ids_item, n, byte_order);
3095 }
3096
3097 static void mesa_TrackMatrixNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3098 {
3099     proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_target, tvb, *offsetp, 4, byte_order);
3100     *offsetp += 4;
3101     proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_address, tvb, *offsetp, 4, byte_order);
3102     *offsetp += 4;
3103     proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_matrix, tvb, *offsetp, 4, byte_order);
3104     *offsetp += 4;
3105     proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_transform, tvb, *offsetp, 4, byte_order);
3106     *offsetp += 4;
3107 }
3108
3109 static void mesa_VertexAttrib1svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3110 {
3111     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1svNV_index, tvb, *offsetp, 4, byte_order);
3112     *offsetp += 4;
3113     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1svNV_v, hf_x11_glx_render_VertexAttrib1svNV_v_item, 1, byte_order);
3114 }
3115
3116 static void mesa_VertexAttrib2svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3117 {
3118     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2svNV_index, tvb, *offsetp, 4, byte_order);
3119     *offsetp += 4;
3120     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2svNV_v, hf_x11_glx_render_VertexAttrib2svNV_v_item, 2, byte_order);
3121 }
3122
3123 static void mesa_VertexAttrib3svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3124 {
3125     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3svNV_index, tvb, *offsetp, 4, byte_order);
3126     *offsetp += 4;
3127     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3svNV_v, hf_x11_glx_render_VertexAttrib3svNV_v_item, 3, byte_order);
3128 }
3129
3130 static void mesa_VertexAttrib4svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3131 {
3132     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4svNV_index, tvb, *offsetp, 4, byte_order);
3133     *offsetp += 4;
3134     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4svNV_v, hf_x11_glx_render_VertexAttrib4svNV_v_item, 4, byte_order);
3135 }
3136
3137 static void mesa_VertexAttrib1fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3138 {
3139     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1fvNV_index, tvb, *offsetp, 4, byte_order);
3140     *offsetp += 4;
3141     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1fvNV_v, hf_x11_glx_render_VertexAttrib1fvNV_v_item, 1, byte_order);
3142 }
3143
3144 static void mesa_VertexAttrib2fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3145 {
3146     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2fvNV_index, tvb, *offsetp, 4, byte_order);
3147     *offsetp += 4;
3148     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2fvNV_v, hf_x11_glx_render_VertexAttrib2fvNV_v_item, 2, byte_order);
3149 }
3150
3151 static void mesa_VertexAttrib3fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3152 {
3153     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3fvNV_index, tvb, *offsetp, 4, byte_order);
3154     *offsetp += 4;
3155     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3fvNV_v, hf_x11_glx_render_VertexAttrib3fvNV_v_item, 3, byte_order);
3156 }
3157
3158 static void mesa_VertexAttrib4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3159 {
3160     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4fvNV_index, tvb, *offsetp, 4, byte_order);
3161     *offsetp += 4;
3162     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4fvNV_v, hf_x11_glx_render_VertexAttrib4fvNV_v_item, 4, byte_order);
3163 }
3164
3165 static void mesa_VertexAttrib1dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3166 {
3167     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1dvNV_index, tvb, *offsetp, 4, byte_order);
3168     *offsetp += 4;
3169     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1dvNV_v, hf_x11_glx_render_VertexAttrib1dvNV_v_item, 1, byte_order);
3170 }
3171
3172 static void mesa_VertexAttrib2dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3173 {
3174     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2dvNV_index, tvb, *offsetp, 4, byte_order);
3175     *offsetp += 4;
3176     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2dvNV_v, hf_x11_glx_render_VertexAttrib2dvNV_v_item, 2, byte_order);
3177 }
3178
3179 static void mesa_VertexAttrib3dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3180 {
3181     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3dvNV_index, tvb, *offsetp, 4, byte_order);
3182     *offsetp += 4;
3183     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3dvNV_v, hf_x11_glx_render_VertexAttrib3dvNV_v_item, 3, byte_order);
3184 }
3185
3186 static void mesa_VertexAttrib4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3187 {
3188     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4dvNV_index, tvb, *offsetp, 4, byte_order);
3189     *offsetp += 4;
3190     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4dvNV_v, hf_x11_glx_render_VertexAttrib4dvNV_v_item, 4, byte_order);
3191 }
3192
3193 static void mesa_VertexAttrib4ubvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3194 {
3195     proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ubvNV_index, tvb, *offsetp, 4, byte_order);
3196     *offsetp += 4;
3197     listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ubvNV_v, 4, byte_order);
3198 }
3199
3200 static void mesa_VertexAttribs1svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3201 {
3202     int n;
3203     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1svNV_index, tvb, *offsetp, 4, byte_order);
3204     *offsetp += 4;
3205     n = VALUE32(tvb, *offsetp);
3206     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1svNV_n, tvb, *offsetp, 4, byte_order);
3207     *offsetp += 4;
3208     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1svNV_v, hf_x11_glx_render_VertexAttribs1svNV_v_item, n, byte_order);
3209 }
3210
3211 static void mesa_VertexAttribs2svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3212 {
3213     int n;
3214     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2svNV_index, tvb, *offsetp, 4, byte_order);
3215     *offsetp += 4;
3216     n = VALUE32(tvb, *offsetp);
3217     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2svNV_n, tvb, *offsetp, 4, byte_order);
3218     *offsetp += 4;
3219     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2svNV_v, hf_x11_glx_render_VertexAttribs2svNV_v_item, n, byte_order);
3220 }
3221
3222 static void mesa_VertexAttribs3svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3223 {
3224     int n;
3225     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3svNV_index, tvb, *offsetp, 4, byte_order);
3226     *offsetp += 4;
3227     n = VALUE32(tvb, *offsetp);
3228     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3svNV_n, tvb, *offsetp, 4, byte_order);
3229     *offsetp += 4;
3230     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3svNV_v, hf_x11_glx_render_VertexAttribs3svNV_v_item, n, byte_order);
3231 }
3232
3233 static void mesa_VertexAttribs4svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3234 {
3235     int n;
3236     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4svNV_index, tvb, *offsetp, 4, byte_order);
3237     *offsetp += 4;
3238     n = VALUE32(tvb, *offsetp);
3239     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4svNV_n, tvb, *offsetp, 4, byte_order);
3240     *offsetp += 4;
3241     listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4svNV_v, hf_x11_glx_render_VertexAttribs4svNV_v_item, n, byte_order);
3242 }
3243
3244 static void mesa_VertexAttribs1fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3245 {
3246     int n;
3247     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1fvNV_index, tvb, *offsetp, 4, byte_order);
3248     *offsetp += 4;
3249     n = VALUE32(tvb, *offsetp);
3250     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1fvNV_n, tvb, *offsetp, 4, byte_order);
3251     *offsetp += 4;
3252     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1fvNV_v, hf_x11_glx_render_VertexAttribs1fvNV_v_item, n, byte_order);
3253 }
3254
3255 static void mesa_VertexAttribs2fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3256 {
3257     int n;
3258     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2fvNV_index, tvb, *offsetp, 4, byte_order);
3259     *offsetp += 4;
3260     n = VALUE32(tvb, *offsetp);
3261     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2fvNV_n, tvb, *offsetp, 4, byte_order);
3262     *offsetp += 4;
3263     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2fvNV_v, hf_x11_glx_render_VertexAttribs2fvNV_v_item, n, byte_order);
3264 }
3265
3266 static void mesa_VertexAttribs3fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3267 {
3268     int n;
3269     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3fvNV_index, tvb, *offsetp, 4, byte_order);
3270     *offsetp += 4;
3271     n = VALUE32(tvb, *offsetp);
3272     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3fvNV_n, tvb, *offsetp, 4, byte_order);
3273     *offsetp += 4;
3274     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3fvNV_v, hf_x11_glx_render_VertexAttribs3fvNV_v_item, n, byte_order);
3275 }
3276
3277 static void mesa_VertexAttribs4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3278 {
3279     int n;
3280     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4fvNV_index, tvb, *offsetp, 4, byte_order);
3281     *offsetp += 4;
3282     n = VALUE32(tvb, *offsetp);
3283     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4fvNV_n, tvb, *offsetp, 4, byte_order);
3284     *offsetp += 4;
3285     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4fvNV_v, hf_x11_glx_render_VertexAttribs4fvNV_v_item, n, byte_order);
3286 }
3287
3288 static void mesa_VertexAttribs1dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3289 {
3290     int n;
3291     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1dvNV_index, tvb, *offsetp, 4, byte_order);
3292     *offsetp += 4;
3293     n = VALUE32(tvb, *offsetp);
3294     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1dvNV_n, tvb, *offsetp, 4, byte_order);
3295     *offsetp += 4;
3296     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1dvNV_v, hf_x11_glx_render_VertexAttribs1dvNV_v_item, n, byte_order);
3297 }
3298
3299 static void mesa_VertexAttribs2dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3300 {
3301     int n;
3302     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2dvNV_index, tvb, *offsetp, 4, byte_order);
3303     *offsetp += 4;
3304     n = VALUE32(tvb, *offsetp);
3305     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2dvNV_n, tvb, *offsetp, 4, byte_order);
3306     *offsetp += 4;
3307     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2dvNV_v, hf_x11_glx_render_VertexAttribs2dvNV_v_item, n, byte_order);
3308 }
3309
3310 static void mesa_VertexAttribs3dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3311 {
3312     int n;
3313     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3dvNV_index, tvb, *offsetp, 4, byte_order);
3314     *offsetp += 4;
3315     n = VALUE32(tvb, *offsetp);
3316     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3dvNV_n, tvb, *offsetp, 4, byte_order);
3317     *offsetp += 4;
3318     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3dvNV_v, hf_x11_glx_render_VertexAttribs3dvNV_v_item, n, byte_order);
3319 }
3320
3321 static void mesa_VertexAttribs4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3322 {
3323     int n;
3324     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4dvNV_index, tvb, *offsetp, 4, byte_order);
3325     *offsetp += 4;
3326     n = VALUE32(tvb, *offsetp);
3327     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4dvNV_n, tvb, *offsetp, 4, byte_order);
3328     *offsetp += 4;
3329     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4dvNV_v, hf_x11_glx_render_VertexAttribs4dvNV_v_item, n, byte_order);
3330 }
3331
3332 static void mesa_VertexAttribs4ubvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3333 {
3334     int n;
3335     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4ubvNV_index, tvb, *offsetp, 4, byte_order);
3336     *offsetp += 4;
3337     n = VALUE32(tvb, *offsetp);
3338     proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4ubvNV_n, tvb, *offsetp, 4, byte_order);
3339     *offsetp += 4;
3340     listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4ubvNV_v, n, byte_order);
3341 }
3342
3343 static void mesa_ActiveStencilFaceEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3344 {
3345     proto_tree_add_item(t, hf_x11_glx_render_ActiveStencilFaceEXT_face, tvb, *offsetp, 4, byte_order);
3346     *offsetp += 4;
3347 }
3348
3349 static void mesa_ProgramNamedParameter4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3350 {
3351     int len;
3352     proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4fvNV_id, tvb, *offsetp, 4, byte_order);
3353     *offsetp += 4;
3354     len = VALUE32(tvb, *offsetp);
3355     proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4fvNV_len, tvb, *offsetp, 4, byte_order);
3356     *offsetp += 4;
3357     listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4fvNV_name, len, byte_order);
3358     listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4fvNV_v, hf_x11_glx_render_ProgramNamedParameter4fvNV_v_item, 4, byte_order);
3359 }
3360
3361 static void mesa_ProgramNamedParameter4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3362 {
3363     int len;
3364     proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4dvNV_id, tvb, *offsetp, 4, byte_order);
3365     *offsetp += 4;
3366     len = VALUE32(tvb, *offsetp);
3367     proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4dvNV_len, tvb, *offsetp, 4, byte_order);
3368     *offsetp += 4;
3369     listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4dvNV_name, len, byte_order);
3370     listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4dvNV_v, hf_x11_glx_render_ProgramNamedParameter4dvNV_v_item, 4, byte_order);
3371 }
3372
3373 static void mesa_DepthBoundsEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
3374 {
3375     proto_tree_add_item(t, hf_x11_glx_render_DepthBoundsEXT_zmin, tvb, *offsetp, 8, byte_order);
3376     *offsetp += 8;
3377     proto_tree_add_item(t, hf_x11_glx_render_DepthBoundsEXT_zmax, tvb, *offsetp, 8, byte_order);
3378     *offsetp += 8;
3379 }
3380
3381 static const value_string glx_render_op_name[] = {
3382     { 1, "glCallList" },
3383     { 2, "glCallLists" },
3384     { 3, "glListBase" },
3385     { 4, "glBegin" },
3386     { 5, "glBitmap" },
3387     { 6, "glColor3bv" },
3388     { 7, "glColor3dv" },
3389     { 8, "glColor3fv" },
3390     { 9, "glColor3iv" },
3391     { 10, "glColor3sv" },
3392     { 11, "glColor3ubv" },
3393     { 12, "glColor3uiv" },
3394     { 13, "glColor3usv" },
3395     { 14, "glColor4bv" },
3396     { 15, "glColor4dv" },
3397     { 16, "glColor4fv" },
3398     { 17, "glColor4iv" },
3399     { 18, "glColor4sv" },
3400     { 19, "glColor4ubv" },
3401     { 20, "glColor4uiv" },
3402     { 21, "glColor4usv" },
3403     { 22, "glEdgeFlagv" },
3404     { 23, "glEnd" },
3405     { 24, "glIndexdv" },
3406     { 25, "glIndexfv" },
3407     { 26, "glIndexiv" },
3408     { 27, "glIndexsv" },
3409     { 28, "glNormal3bv" },
3410     { 29, "glNormal3dv" },
3411     { 30, "glNormal3fv" },
3412     { 31, "glNormal3iv" },
3413     { 32, "glNormal3sv" },
3414     { 33, "glRasterPos2dv" },
3415     { 34, "glRasterPos2fv" },
3416     { 35, "glRasterPos2iv" },
3417     { 36, "glRasterPos2sv" },
3418     { 37, "glRasterPos3dv" },
3419     { 38, "glRasterPos3fv" },
3420     { 39, "glRasterPos3iv" },
3421     { 40, "glRasterPos3sv" },
3422     { 41, "glRasterPos4dv" },
3423     { 42, "glRasterPos4fv" },
3424     { 43, "glRasterPos4iv" },
3425     { 44, "glRasterPos4sv" },
3426     { 45, "glRectdv" },
3427     { 46, "glRectfv" },
3428     { 47, "glRectiv" },
3429     { 48, "glRectsv" },
3430     { 49, "glTexCoord1dv" },
3431     { 50, "glTexCoord1fv" },
3432     { 51, "glTexCoord1iv" },
3433     { 52, "glTexCoord1sv" },
3434     { 53, "glTexCoord2dv" },
3435     { 54, "glTexCoord2fv" },
3436     { 55, "glTexCoord2iv" },
3437     { 56, "glTexCoord2sv" },
3438     { 57, "glTexCoord3dv" },
3439     { 58, "glTexCoord3fv" },
3440     { 59, "glTexCoord3iv" },
3441     { 60, "glTexCoord3sv" },
3442     { 61, "glTexCoord4dv" },
3443     { 62, "glTexCoord4fv" },
3444     { 63, "glTexCoord4iv" },
3445     { 64, "glTexCoord4sv" },
3446     { 65, "glVertex2dv" },
3447     { 66, "glVertex2fv" },
3448     { 67, "glVertex2iv" },
3449     { 68, "glVertex2sv" },
3450     { 69, "glVertex3dv" },
3451     { 70, "glVertex3fv" },
3452     { 71, "glVertex3iv" },
3453     { 72, "glVertex3sv" },
3454     { 73, "glVertex4dv" },
3455     { 74, "glVertex4fv" },
3456     { 75, "glVertex4iv" },
3457     { 76, "glVertex4sv" },
3458     { 77, "glClipPlane" },
3459     { 78, "glColorMaterial" },
3460     { 79, "glCullFace" },
3461     { 80, "glFogf" },
3462     { 81, "glFogfv" },
3463     { 82, "glFogi" },
3464     { 83, "glFogiv" },
3465     { 84, "glFrontFace" },
3466     { 85, "glHint" },
3467     { 86, "glLightf" },
3468     { 87, "glLightfv" },
3469     { 88, "glLighti" },
3470     { 89, "glLightiv" },
3471     { 90, "glLightModelf" },
3472     { 91, "glLightModelfv" },
3473     { 92, "glLightModeli" },
3474     { 93, "glLightModeliv" },
3475     { 94, "glLineStipple" },
3476     { 95, "glLineWidth" },
3477     { 96, "glMaterialf" },
3478     { 97, "glMaterialfv" },
3479     { 98, "glMateriali" },
3480     { 99, "glMaterialiv" },
3481     { 100, "glPointSize" },
3482     { 101, "glPolygonMode" },
3483     { 102, "glPolygonStipple" },
3484     { 103, "glScissor" },
3485     { 104, "glShadeModel" },
3486     { 105, "glTexParameterf" },
3487     { 106, "glTexParameterfv" },
3488     { 107, "glTexParameteri" },
3489     { 108, "glTexParameteriv" },
3490     { 109, "glTexImage1D" },
3491     { 110, "glTexImage2D" },
3492     { 111, "glTexEnvf" },
3493     { 112, "glTexEnvfv" },
3494     { 113, "glTexEnvi" },
3495     { 114, "glTexEnviv" },
3496     { 115, "glTexGend" },
3497     { 116, "glTexGendv" },
3498     { 117, "glTexGenf" },
3499     { 118, "glTexGenfv" },
3500     { 119, "glTexGeni" },
3501     { 120, "glTexGeniv" },
3502     { 121, "glInitNames" },
3503     { 122, "glLoadName" },
3504     { 123, "glPassThrough" },
3505     { 124, "glPopName" },
3506     { 125, "glPushName" },
3507     { 126, "glDrawBuffer" },
3508     { 127, "glClear" },
3509     { 128, "glClearAccum" },
3510     { 129, "glClearIndex" },
3511     { 130, "glClearColor" },
3512     { 131, "glClearStencil" },
3513     { 132, "glClearDepth" },
3514     { 133, "glStencilMask" },
3515     { 134, "glColorMask" },
3516     { 135, "glDepthMask" },
3517     { 136, "glIndexMask" },
3518     { 137, "glAccum" },
3519     { 138, "glDisable" },
3520     { 139, "glEnable" },
3521     { 141, "glPopAttrib" },
3522     { 142, "glPushAttrib" },
3523     { 143, "glMap1d" },
3524     { 144, "glMap1f" },
3525     { 145, "glMap2d" },
3526     { 146, "glMap2f" },
3527     { 147, "glMapGrid1d" },
3528     { 148, "glMapGrid1f" },
3529     { 149, "glMapGrid2d" },
3530     { 150, "glMapGrid2f" },
3531     { 151, "glEvalCoord1dv" },
3532     { 152, "glEvalCoord1fv" },
3533     { 153, "glEvalCoord2dv" },
3534     { 154, "glEvalCoord2fv" },
3535     { 155, "glEvalMesh1" },
3536     { 156, "glEvalPoint1" },
3537     { 157, "glEvalMesh2" },
3538     { 158, "glEvalPoint2" },
3539     { 159, "glAlphaFunc" },
3540     { 160, "glBlendFunc" },
3541     { 161, "glLogicOp" },
3542     { 162, "glStencilFunc" },
3543     { 163, "glStencilOp" },
3544     { 164, "glDepthFunc" },
3545     { 165, "glPixelZoom" },
3546     { 166, "glPixelTransferf" },
3547     { 167, "glPixelTransferi" },
3548     { 168, "glPixelMapfv" },
3549     { 169, "glPixelMapuiv" },
3550     { 170, "glPixelMapusv" },
3551     { 171, "glReadBuffer" },
3552     { 172, "glCopyPixels" },
3553     { 173, "glDrawPixels" },
3554     { 174, "glDepthRange" },
3555     { 175, "glFrustum" },
3556     { 176, "glLoadIdentity" },
3557     { 177, "glLoadMatrixf" },
3558     { 178, "glLoadMatrixd" },
3559     { 179, "glMatrixMode" },
3560     { 180, "glMultMatrixf" },
3561     { 181, "glMultMatrixd" },
3562     { 182, "glOrtho" },
3563     { 183, "glPopMatrix" },
3564     { 184, "glPushMatrix" },
3565     { 185, "glRotated" },
3566     { 186, "glRotatef" },
3567     { 187, "glScaled" },
3568     { 188, "glScalef" },
3569     { 189, "glTranslated" },
3570     { 190, "glTranslatef" },
3571     { 191, "glViewport" },
3572     { 192, "glPolygonOffset" },
3573     { 193, "glDrawArrays" },
3574     { 194, "glIndexubv" },
3575     { 195, "glColorSubTable" },
3576     { 196, "glCopyColorSubTable" },
3577     { 197, "glActiveTexture" },
3578     { 198, "glMultiTexCoord1dv" },
3579     { 199, "glMultiTexCoord1fvARB" },
3580     { 200, "glMultiTexCoord1iv" },
3581     { 201, "glMultiTexCoord1sv" },
3582     { 202, "glMultiTexCoord2dv" },
3583     { 203, "glMultiTexCoord2fvARB" },
3584     { 204, "glMultiTexCoord2iv" },
3585     { 205, "glMultiTexCoord2sv" },
3586     { 206, "glMultiTexCoord3dv" },
3587     { 207, "glMultiTexCoord3fvARB" },
3588     { 208, "glMultiTexCoord3iv" },
3589     { 209, "glMultiTexCoord3sv" },
3590     { 210, "glMultiTexCoord4dv" },
3591     { 211, "glMultiTexCoord4fvARB" },
3592     { 212, "glMultiTexCoord4iv" },
3593     { 213, "glMultiTexCoord4sv" },
3594     { 214, "glCompressedTexImage1D" },
3595     { 215, "glCompressedTexImage2D" },
3596     { 216, "glCompressedTexImage3D" },
3597     { 217, "glCompressedTexSubImage1D" },
3598     { 218, "glCompressedTexSubImage2D" },
3599     { 219, "glCompressedTexSubImage3D" },
3600     { 229, "glSampleCoverage" },
3601     { 230, "glWindowPos3fv" },
3602     { 231, "glBeginQuery" },
3603     { 232, "glEndQuery" },
3604     { 233, "glDrawBuffers" },
3605     { 2048, "glSampleMaskSGIS" },
3606     { 2049, "glSamplePatternSGIS" },
3607     { 2050, "glTagSampleBufferSGIX" },
3608     { 2051, "glDetailTexFuncSGIS" },
3609     { 2052, "glSharpenTexFuncSGIS" },
3610     { 2053, "glColorTable" },
3611     { 2054, "glColorTableParameterfv" },
3612     { 2055, "glColorTableParameteriv" },
3613     { 2056, "glCopyColorTable" },
3614     { 2057, "glTexImage4DSGIS" },
3615     { 2058, "glTexSubImage4DSGIS" },
3616     { 2059, "glPixelTexGenSGIX" },
3617     { 2064, "glTexFilterFuncSGIS" },
3618     { 2065, "glPointParameterf" },
3619     { 2066, "glPointParameterfv" },
3620     { 2067, "glFogFuncSGIS" },
3621     { 2071, "glReferencePlaneSGIX" },
3622     { 2072, "glFrameZoomSGIX" },
3623     { 2082, "glTextureColorMaskSGIS" },
3624     { 4096, "glBlendColor" },
3625     { 4097, "glBlendEquation" },
3626     { 4098, "glPolygonOffsetEXT" },
3627     { 4099, "glTexSubImage1D" },
3628     { 4100, "glTexSubImage2D" },
3629     { 4101, "glConvolutionFilter1D" },
3630     { 4102, "glConvolutionFilter2D" },
3631     { 4103, "glConvolutionParameterf" },
3632     { 4104, "glConvolutionParameterfv" },
3633     { 4105, "glConvolutionParameteri" },
3634     { 4106, "glConvolutionParameteriv" },
3635     { 4107, "glCopyConvolutionFilter1D" },
3636     { 4108, "glCopyConvolutionFilter2D" },
3637     { 4109, "glSeparableFilter2D" },
3638     { 4110, "glHistogram" },
3639     { 4111, "glMinmax" },
3640     { 4112, "glResetHistogram" },
3641     { 4113, "glResetMinmax" },
3642     { 4114, "glTexImage3D" },
3643     { 4115, "glTexSubImage3D" },
3644     { 4117, "glBindTexture" },
3645     { 4118, "glPrioritizeTextures" },
3646     { 4119, "glCopyTexImage1D" },
3647     { 4120, "glCopyTexImage2D" },
3648     { 4121, "glCopyTexSubImage1D" },
3649     { 4122, "glCopyTexSubImage2D" },
3650     { 4123, "glCopyTexSubImage3D" },
3651     { 4124, "glFogCoordfvEXT" },
3652     { 4125, "glFogCoorddv" },
3653     { 4126, "glSecondaryColor3bv" },
3654     { 4127, "glSecondaryColor3sv" },
3655     { 4128, "glSecondaryColor3iv" },
3656     { 4129, "glSecondaryColor3fvEXT" },
3657     { 4130, "glSecondaryColor3dv" },
3658     { 4131, "glSecondaryColor3ubv" },
3659     { 4132, "glSecondaryColor3usv" },
3660     { 4133, "glSecondaryColor3uiv" },
3661     { 4134, "glBlendFuncSeparate" },
3662     { 4135, "glVertexWeightfvEXT" },
3663     { 4136, "glCombinerParameterfNV" },
3664     { 4137, "glCombinerParameterfvNV" },
3665     { 4138, "glCombinerParameteriNV" },
3666     { 4139, "glCombinerParameterivNV" },
3667     { 4140, "glCombinerInputNV" },
3668     { 4141, "glCombinerOutputNV" },
3669     { 4142, "glFinalCombinerInputNV" },
3670     { 4180, "glBindProgramARB" },
3671     { 4181, "glExecuteProgramNV" },
3672     { 4182, "glRequestResidentProgramsNV" },
3673     { 4183, "glLoadProgramNV" },
3674     { 4184, "glProgramEnvParameter4fvARB" },
3675     { 4185, "glProgramEnvParameter4dvARB" },
3676     { 4186, "glProgramParameters4fvNV" },
3677     { 4187, "glProgramParameters4dvNV" },
3678     { 4188, "glTrackMatrixNV" },
3679     { 4189, "glVertexAttrib1sv" },
3680     { 4190, "glVertexAttrib2sv" },
3681     { 4191, "glVertexAttrib3sv" },
3682     { 4192, "glVertexAttrib4sv" },
3683     { 4193, "glVertexAttrib1fvARB" },
3684     { 4194, "glVertexAttrib2fvARB" },
3685     { 4195, "glVertexAttrib3fvARB" },
3686     { 4196, "glVertexAttrib4fvARB" },
3687     { 4197, "glVertexAttrib1dv" },
3688     { 4198, "glVertexAttrib2dv" },
3689     { 4199, "glVertexAttrib3dv" },
3690     { 4200, "glVertexAttrib4dv" },
3691     { 4201, "glVertexAttrib4Nubv" },
3692     { 4202, "glVertexAttribs1svNV" },
3693     { 4203, "glVertexAttribs2svNV" },
3694     { 4204, "glVertexAttribs3svNV" },
3695     { 4205, "glVertexAttribs4svNV" },
3696     { 4206, "glVertexAttribs1fvNV" },
3697     { 4207, "glVertexAttribs2fvNV" },
3698     { 4208, "glVertexAttribs3fvNV" },
3699     { 4209, "glVertexAttribs4fvNV" },
3700     { 4210, "glVertexAttribs1dvNV" },
3701     { 4211, "glVertexAttribs2dvNV" },
3702     { 4212, "glVertexAttribs3dvNV" },
3703     { 4213, "glVertexAttribs4dvNV" },
3704     { 4214, "glVertexAttribs4ubvNV" },
3705     { 4215, "glProgramLocalParameter4fvARB" },
3706     { 4216, "glProgramLocalParameter4dvARB" },
3707     { 4217, "glProgramStringARB" },
3708     { 4218, "glProgramNamedParameter4fvNV" },
3709     { 4219, "glProgramNamedParameter4dvNV" },
3710     { 4220, "glActiveStencilFaceEXT" },
3711     { 4221, "glPointParameteri" },
3712     { 4222, "glPointParameteriv" },
3713     { 4228, "glBlendEquationSeparate" },
3714     { 4229, "glDepthBoundsEXT" },
3715     { 4230, "glVertexAttrib4bv" },
3716     { 4231, "glVertexAttrib4iv" },
3717     { 4232, "glVertexAttrib4ubv" },
3718     { 4233, "glVertexAttrib4usv" },
3719     { 4234, "glVertexAttrib4uiv" },
3720     { 4235, "glVertexAttrib4Nbv" },
3721     { 4236, "glVertexAttrib4Nsv" },
3722     { 4237, "glVertexAttrib4Niv" },
3723     { 4238, "glVertexAttrib4Nusv" },
3724     { 4239, "glVertexAttrib4Nuiv" },
3725     { 4265, "glVertexAttrib1svNV" },
3726     { 4266, "glVertexAttrib2svNV" },
3727     { 4267, "glVertexAttrib3svNV" },
3728     { 4268, "glVertexAttrib4svNV" },
3729     { 4269, "glVertexAttrib1fvNV" },
3730     { 4270, "glVertexAttrib2fvNV" },
3731     { 4271, "glVertexAttrib3fvNV" },
3732     { 4272, "glVertexAttrib4fvNV" },
3733     { 4273, "glVertexAttrib1dvNV" },
3734     { 4274, "glVertexAttrib2dvNV" },
3735     { 4275, "glVertexAttrib3dvNV" },
3736     { 4276, "glVertexAttrib4dvNV" },
3737     { 4277, "glVertexAttrib4ubvNV" },
3738     { 4326, "glMatrixIndexubvARB" },
3739     { 4327, "glMatrixIndexusvARB" },
3740     { 4328, "glMatrixIndexuivARB" },
3741     { 4329, "glCurrentPaletteMatrixARB" },
3742     { 0, NULL }
3743 };
3744
3745 static void dispatch_glx_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order, int length)
3746 {
3747     while (length >= 4) {
3748         guint32 op, len;
3749         int next;
3750         proto_item *ti;
3751         proto_tree *tt;
3752
3753         len = VALUE16(tvb, *offsetp);
3754
3755         op = VALUE16(tvb, *offsetp + 2);
3756         ti = proto_tree_add_uint(t, hf_x11_glx_render_op_name, tvb, *offsetp, len, op);
3757
3758         tt = proto_item_add_subtree(ti, ett_x11_list_of_rectangle);
3759
3760         ti = proto_tree_add_item(tt, hf_x11_request_length, tvb, *offsetp, 2, byte_order);
3761         *offsetp += 2;
3762         proto_tree_add_item(tt, hf_x11_glx_render_op_name, tvb, *offsetp, 2, byte_order);
3763         *offsetp += 2;
3764
3765         if (len < 4) {
3766             expert_add_info(pinfo, ti, &ei_x11_request_length);
3767             /* Eat the rest of the packet, mark it undecoded */
3768             len = length;
3769             op = -1;
3770         }
3771         len -= 4;
3772
3773         next = *offsetp + len;
3774
3775         switch (op) {
3776         case 1:
3777             mesa_CallList(tvb, offsetp, tt, byte_order, len);
3778             break;
3779         case 2:
3780             mesa_CallLists(tvb, offsetp, tt, byte_order, len);
3781             break;
3782         case 3:
3783             mesa_ListBase(tvb, offsetp, tt, byte_order, len);
3784             break;
3785         case 4:
3786             mesa_Begin(tvb, offsetp, tt, byte_order, len);
3787             break;
3788         case 5:
3789             mesa_Bitmap(tvb, offsetp, tt, byte_order, len);
3790             break;
3791         case 6:
3792             mesa_Color3bv(tvb, offsetp, tt, byte_order, len);
3793             break;
3794         case 7:
3795             mesa_Color3dv(tvb, offsetp, tt, byte_order, len);
3796             break;
3797         case 8:
3798             mesa_Color3fv(tvb, offsetp, tt, byte_order, len);
3799             break;
3800         case 9:
3801             mesa_Color3iv(tvb, offsetp, tt, byte_order, len);
3802             break;
3803         case 10:
3804             mesa_Color3sv(tvb, offsetp, tt, byte_order, len);
3805             break;
3806         case 11:
3807             mesa_Color3ubv(tvb, offsetp, tt, byte_order, len);
3808             break;
3809         case 12:
3810             mesa_Color3uiv(tvb, offsetp, tt, byte_order, len);
3811             break;
3812         case 13:
3813             mesa_Color3usv(tvb, offsetp, tt, byte_order, len);
3814             break;
3815         case 14:
3816             mesa_Color4bv(tvb, offsetp, tt, byte_order, len);
3817             break;
3818         case 15:
3819             mesa_Color4dv(tvb, offsetp, tt, byte_order, len);
3820             break;
3821         case 16:
3822             mesa_Color4fv(tvb, offsetp, tt, byte_order, len);
3823             break;
3824         case 17:
3825             mesa_Color4iv(tvb, offsetp, tt, byte_order, len);
3826             break;
3827         case 18:
3828             mesa_Color4sv(tvb, offsetp, tt, byte_order, len);
3829             break;
3830         case 19:
3831             mesa_Color4ubv(tvb, offsetp, tt, byte_order, len);
3832             break;
3833         case 20:
3834             mesa_Color4uiv(tvb, offsetp, tt, byte_order, len);
3835             break;
3836         case 21:
3837             mesa_Color4usv(tvb, offsetp, tt, byte_order, len);
3838             break;
3839         case 22:
3840             mesa_EdgeFlagv(tvb, offsetp, tt, byte_order, len);
3841             break;
3842         case 23:
3843             mesa_End(tvb, offsetp, tt, byte_order, len);
3844             break;
3845         case 24:
3846             mesa_Indexdv(tvb, offsetp, tt, byte_order, len);
3847             break;
3848         case 25:
3849             mesa_Indexfv(tvb, offsetp, tt, byte_order, len);
3850             break;
3851         case 26:
3852             mesa_Indexiv(tvb, offsetp, tt, byte_order, len);
3853             break;
3854         case 27:
3855             mesa_Indexsv(tvb, offsetp, tt, byte_order, len);
3856             break;
3857         case 28:
3858             mesa_Normal3bv(tvb, offsetp, tt, byte_order, len);
3859             break;
3860         case 29:
3861             mesa_Normal3dv(tvb, offsetp, tt, byte_order, len);
3862             break;
3863         case 30:
3864             mesa_Normal3fv(tvb, offsetp, tt, byte_order, len);
3865             break;
3866         case 31:
3867             mesa_Normal3iv(tvb, offsetp, tt, byte_order, len);
3868             break;
3869         case 32:
3870             mesa_Normal3sv(tvb, offsetp, tt, byte_order, len);
3871             break;
3872         case 33:
3873             mesa_RasterPos2dv(tvb, offsetp, tt, byte_order, len);
3874             break;
3875         case 34:
3876             mesa_RasterPos2fv(tvb, offsetp, tt, byte_order, len);
3877             break;
3878         case 35:
3879             mesa_RasterPos2iv(tvb, offsetp, tt, byte_order, len);
3880             break;
3881         case 36:
3882             mesa_RasterPos2sv(tvb, offsetp, tt, byte_order, len);
3883             break;
3884         case 37:
3885             mesa_RasterPos3dv(tvb, offsetp, tt, byte_order, len);
3886             break;
3887         case 38:
3888             mesa_RasterPos3fv(tvb, offsetp, tt, byte_order, len);
3889             break;
3890         case 39:
3891             mesa_RasterPos3iv(tvb, offsetp, tt, byte_order, len);
3892             break;
3893         case 40:
3894             mesa_RasterPos3sv(tvb, offsetp, tt, byte_order, len);
3895             break;
3896         case 41:
3897             mesa_RasterPos4dv(tvb, offsetp, tt, byte_order, len);
3898             break;
3899         case 42:
3900             mesa_RasterPos4fv(tvb, offsetp, tt, byte_order, len);
3901             break;
3902         case 43:
3903             mesa_RasterPos4iv(tvb, offsetp, tt, byte_order, len);
3904             break;
3905         case 44:
3906             mesa_RasterPos4sv(tvb, offsetp, tt, byte_order, len);
3907             break;
3908         case 45:
3909             mesa_Rectdv(tvb, offsetp, tt, byte_order, len);
3910             break;
3911         case 46:
3912             mesa_Rectfv(tvb, offsetp, tt, byte_order, len);
3913             break;
3914         case 47:
3915             mesa_Rectiv(tvb, offsetp, tt, byte_order, len);
3916             break;
3917         case 48:
3918             mesa_Rectsv(tvb, offsetp, tt, byte_order, len);
3919             break;
3920         case 49:
3921             mesa_TexCoord1dv(tvb, offsetp, tt, byte_order, len);
3922             break;
3923         case 50:
3924             mesa_TexCoord1fv(tvb, offsetp, tt, byte_order, len);
3925             break;
3926         case 51:
3927             mesa_TexCoord1iv(tvb, offsetp, tt, byte_order, len);
3928             break;
3929         case 52:
3930             mesa_TexCoord1sv(tvb, offsetp, tt, byte_order, len);
3931             break;
3932         case 53:
3933             mesa_TexCoord2dv(tvb, offsetp, tt, byte_order, len);
3934             break;
3935         case 54:
3936             mesa_TexCoord2fv(tvb, offsetp, tt, byte_order, len);
3937             break;
3938         case 55:
3939             mesa_TexCoord2iv(tvb, offsetp, tt, byte_order, len);
3940             break;
3941         case 56:
3942             mesa_TexCoord2sv(tvb, offsetp, tt, byte_order, len);
3943             break;
3944         case 57:
3945             mesa_TexCoord3dv(tvb, offsetp, tt, byte_order, len);
3946             break;
3947         case 58:
3948             mesa_TexCoord3fv(tvb, offsetp, tt, byte_order, len);
3949             break;
3950         case 59:
3951             mesa_TexCoord3iv(tvb, offsetp, tt, byte_order, len);
3952             break;
3953         case 60:
3954             mesa_TexCoord3sv(tvb, offsetp, tt, byte_order, len);
3955             break;
3956         case 61:
3957             mesa_TexCoord4dv(tvb, offsetp, tt, byte_order, len);
3958             break;
3959         case 62:
3960             mesa_TexCoord4fv(tvb, offsetp, tt, byte_order, len);
3961             break;
3962         case 63:
3963             mesa_TexCoord4iv(tvb, offsetp, tt, byte_order, len);
3964             break;
3965         case 64:
3966             mesa_TexCoord4sv(tvb, offsetp, tt, byte_order, len);
3967             break;
3968         case 65:
3969             mesa_Vertex2dv(tvb, offsetp, tt, byte_order, len);
3970             break;
3971         case 66:
3972             mesa_Vertex2fv(tvb, offsetp, tt, byte_order, len);
3973             break;
3974         case 67:
3975             mesa_Vertex2iv(tvb, offsetp, tt, byte_order, len);
3976             break;
3977         case 68:
3978             mesa_Vertex2sv(tvb, offsetp, tt, byte_order, len);
3979             break;
3980         case 69:
3981             mesa_Vertex3dv(tvb, offsetp, tt, byte_order, len);
3982             break;
3983         case 70:
3984             mesa_Vertex3fv(tvb, offsetp, tt, byte_order, len);
3985             break;
3986         case 71:
3987             mesa_Vertex3iv(tvb, offsetp, tt, byte_order, len);
3988             break;
3989         case 72:
3990             mesa_Vertex3sv(tvb, offsetp, tt, byte_order, len);
3991             break;
3992         case 73:
3993             mesa_Vertex4dv(tvb, offsetp, tt, byte_order, len);
3994             break;
3995         case 74:
3996             mesa_Vertex4fv(tvb, offsetp, tt, byte_order, len);
3997             break;
3998         case 75:
3999             mesa_Vertex4iv(tvb, offsetp, tt, byte_order, len);
4000             break;
4001         case 76:
4002             mesa_Vertex4sv(tvb, offsetp, tt, byte_order, len);
4003             break;
4004         case 77:
4005             mesa_ClipPlane(tvb, offsetp, tt, byte_order, len);
4006             break;
4007         case 78:
4008             mesa_ColorMaterial(tvb, offsetp, tt, byte_order, len);
4009             break;
4010         case 79:
4011             mesa_CullFace(tvb, offsetp, tt, byte_order, len);
4012             break;
4013         case 80:
4014             mesa_Fogf(tvb, offsetp, tt, byte_order, len);
4015             break;
4016         case 81:
4017             mesa_Fogfv(tvb, offsetp, tt, byte_order, len);
4018             break;
4019         case 82:
4020             mesa_Fogi(tvb, offsetp, tt, byte_order, len);
4021             break;
4022         case 83:
4023             mesa_Fogiv(tvb, offsetp, tt, byte_order, len);
4024             break;
4025         case 84:
4026             mesa_FrontFace(tvb, offsetp, tt, byte_order, len);
4027             break;
4028         case 85:
4029             mesa_Hint(tvb, offsetp, tt, byte_order, len);
4030             break;
4031         case 86:
4032             mesa_Lightf(tvb, offsetp, tt, byte_order, len);
4033             break;
4034         case 87:
4035             mesa_Lightfv(tvb, offsetp, tt, byte_order, len);
4036             break;
4037         case 88:
4038             mesa_Lighti(tvb, offsetp, tt, byte_order, len);
4039             break;
4040         case 89:
4041             mesa_Lightiv(tvb, offsetp, tt, byte_order, len);
4042             break;
4043         case 90:
4044             mesa_LightModelf(tvb, offsetp, tt, byte_order, len);
4045             break;
4046         case 91:
4047             mesa_LightModelfv(tvb, offsetp, tt, byte_order, len);
4048             break;
4049         case 92:
4050             mesa_LightModeli(tvb, offsetp, tt, byte_order, len);
4051             break;
4052         case 93:
4053             mesa_LightModeliv(tvb, offsetp, tt, byte_order, len);
4054             break;
4055         case 94:
4056             mesa_LineStipple(tvb, offsetp, tt, byte_order, len);
4057             break;
4058         case 95:
4059             mesa_LineWidth(tvb, offsetp, tt, byte_order, len);
4060             break;
4061         case 96:
4062             mesa_Materialf(tvb, offsetp, tt, byte_order, len);
4063             break;
4064         case 97:
4065             mesa_Materialfv(tvb, offsetp, tt, byte_order, len);
4066             break;
4067         case 98:
4068             mesa_Materiali(tvb, offsetp, tt, byte_order, len);
4069             break;
4070         case 99:
4071             mesa_Materialiv(tvb, offsetp, tt, byte_order, len);
4072             break;
4073         case 100:
4074             mesa_PointSize(tvb, offsetp, tt, byte_order, len);
4075             break;
4076         case 101:
4077             mesa_PolygonMode(tvb, offsetp, tt, byte_order, len);
4078             break;
4079         case 102:
4080             mesa_PolygonStipple(tvb, offsetp, tt, byte_order, len);
4081             break;
4082         case 103:
4083             mesa_Scissor(tvb, offsetp, tt, byte_order, len);
4084             break;
4085         case 104:
4086             mesa_ShadeModel(tvb, offsetp, tt, byte_order, len);
4087             break;
4088         case 105:
4089             mesa_TexParameterf(tvb, offsetp, tt, byte_order, len);
4090             break;
4091         case 106:
4092             mesa_TexParameterfv(tvb, offsetp, tt, byte_order, len);
4093             break;
4094         case 107:
4095             mesa_TexParameteri(tvb, offsetp, tt, byte_order, len);
4096             break;
4097         case 108:
4098             mesa_TexParameteriv(tvb, offsetp, tt, byte_order, len);
4099             break;
4100         case 109:
4101             mesa_TexImage1D(tvb, offsetp, tt, byte_order, len);
4102             break;
4103         case 110:
4104             mesa_TexImage2D(tvb, offsetp, tt, byte_order, len);
4105             break;
4106         case 111:
4107             mesa_TexEnvf(tvb, offsetp, tt, byte_order, len);
4108             break;
4109         case 112:
4110             mesa_TexEnvfv(tvb, offsetp, tt, byte_order, len);
4111             break;
4112         case 113:
4113             mesa_TexEnvi(tvb, offsetp, tt, byte_order, len);
4114             break;
4115         case 114:
4116             mesa_TexEnviv(tvb, offsetp, tt, byte_order, len);
4117             break;
4118         case 115:
4119             mesa_TexGend(tvb, offsetp, tt, byte_order, len);
4120             break;
4121         case 116:
4122             mesa_TexGendv(tvb, offsetp, tt, byte_order, len);
4123             break;
4124         case 117:
4125             mesa_TexGenf(tvb, offsetp, tt, byte_order, len);
4126             break;
4127         case 118:
4128             mesa_TexGenfv(tvb, offsetp, tt, byte_order, len);
4129             break;
4130         case 119:
4131             mesa_TexGeni(tvb, offsetp, tt, byte_order, len);
4132             break;
4133         case 120:
4134             mesa_TexGeniv(tvb, offsetp, tt, byte_order, len);
4135             break;
4136         case 121:
4137             mesa_InitNames(tvb, offsetp, tt, byte_order, len);
4138             break;
4139         case 122:
4140             mesa_LoadName(tvb, offsetp, tt, byte_order, len);
4141             break;
4142         case 123:
4143             mesa_PassThrough(tvb, offsetp, tt, byte_order, len);
4144             break;
4145         case 124:
4146             mesa_PopName(tvb, offsetp, tt, byte_order, len);
4147             break;
4148         case 125:
4149             mesa_PushName(tvb, offsetp, tt, byte_order, len);
4150             break;
4151         case 126:
4152             mesa_DrawBuffer(tvb, offsetp, tt, byte_order, len);
4153             break;
4154         case 127:
4155             mesa_Clear(tvb, offsetp, tt, byte_order, len);
4156             break;
4157         case 128:
4158             mesa_ClearAccum(tvb, offsetp, tt, byte_order, len);
4159             break;
4160         case 129:
4161             mesa_ClearIndex(tvb, offsetp, tt, byte_order, len);
4162             break;
4163         case 130:
4164             mesa_ClearColor(tvb, offsetp, tt, byte_order, len);
4165             break;
4166         case 131:
4167             mesa_ClearStencil(tvb, offsetp, tt, byte_order, len);
4168             break;
4169         case 132:
4170             mesa_ClearDepth(tvb, offsetp, tt, byte_order, len);
4171             break;
4172         case 133:
4173             mesa_StencilMask(tvb, offsetp, tt, byte_order, len);
4174             break;
4175         case 134:
4176             mesa_ColorMask(tvb, offsetp, tt, byte_order, len);
4177             break;
4178         case 135:
4179             mesa_DepthMask(tvb, offsetp, tt, byte_order, len);
4180             break;
4181         case 136:
4182             mesa_IndexMask(tvb, offsetp, tt, byte_order, len);
4183             break;
4184         case 137:
4185             mesa_Accum(tvb, offsetp, tt, byte_order, len);
4186             break;
4187         case 138:
4188             mesa_Disable(tvb, offsetp, tt, byte_order, len);
4189             break;
4190         case 139:
4191             mesa_Enable(tvb, offsetp, tt, byte_order, len);
4192             break;
4193         case 141:
4194             mesa_PopAttrib(tvb, offsetp, tt, byte_order, len);
4195             break;
4196         case 142:
4197             mesa_PushAttrib(tvb, offsetp, tt, byte_order, len);
4198             break;
4199         case 143:
4200             mesa_Map1d(tvb, offsetp, tt, byte_order, len);
4201             break;
4202         case 144:
4203             mesa_Map1f(tvb, offsetp, tt, byte_order, len);
4204             break;
4205         case 145:
4206             mesa_Map2d(tvb, offsetp, tt, byte_order, len);
4207             break;
4208         case 146:
4209             mesa_Map2f(tvb, offsetp, tt, byte_order, len);
4210             break;
4211         case 147:
4212             mesa_MapGrid1d(tvb, offsetp, tt, byte_order, len);
4213             break;
4214         case 148:
4215             mesa_MapGrid1f(tvb, offsetp, tt, byte_order, len);
4216             break;
4217         case 149:
4218             mesa_MapGrid2d(tvb, offsetp, tt, byte_order, len);
4219             break;
4220         case 150:
4221             mesa_MapGrid2f(tvb, offsetp, tt, byte_order, len);
4222             break;
4223         case 151:
4224             mesa_EvalCoord1dv(tvb, offsetp, tt, byte_order, len);
4225             break;
4226         case 152:
4227             mesa_EvalCoord1fv(tvb, offsetp, tt, byte_order, len);
4228             break;
4229         case 153:
4230             mesa_EvalCoord2dv(tvb, offsetp, tt, byte_order, len);
4231             break;
4232         case 154:
4233             mesa_EvalCoord2fv(tvb, offsetp, tt, byte_order, len);
4234             break;
4235         case 155:
4236             mesa_EvalMesh1(tvb, offsetp, tt, byte_order, len);
4237             break;
4238         case 156:
4239             mesa_EvalPoint1(tvb, offsetp, tt, byte_order, len);
4240             break;
4241         case 157:
4242             mesa_EvalMesh2(tvb, offsetp, tt, byte_order, len);
4243             break;
4244         case 158:
4245             mesa_EvalPoint2(tvb, offsetp, tt, byte_order, len);
4246             break;
4247         case 159:
4248             mesa_AlphaFunc(tvb, offsetp, tt, byte_order, len);
4249             break;
4250         case 160:
4251             mesa_BlendFunc(tvb, offsetp, tt, byte_order, len);
4252             break;
4253         case 161:
4254             mesa_LogicOp(tvb, offsetp, tt, byte_order, len);
4255             break;
4256         case 162:
4257             mesa_StencilFunc(tvb, offsetp, tt, byte_order, len);
4258             break;
4259         case 163:
4260             mesa_StencilOp(tvb, offsetp, tt, byte_order, len);
4261             break;
4262         case 164:
4263             mesa_DepthFunc(tvb, offsetp, tt, byte_order, len);
4264             break;
4265         case 165:
4266             mesa_PixelZoom(tvb, offsetp, tt, byte_order, len);
4267             break;
4268         case 166:
4269             mesa_PixelTransferf(tvb, offsetp, tt, byte_order, len);
4270             break;
4271         case 167:
4272             mesa_PixelTransferi(tvb, offsetp, tt, byte_order, len);
4273             break;
4274         case 168:
4275             mesa_PixelMapfv(tvb, offsetp, tt, byte_order, len);
4276             break;
4277         case 169:
4278             mesa_PixelMapuiv(tvb, offsetp, tt, byte_order, len);
4279             break;
4280         case 170:
4281             mesa_PixelMapusv(tvb, offsetp, tt, byte_order, len);
4282             break;
4283         case 171:
4284             mesa_ReadBuffer(tvb, offsetp, tt, byte_order, len);
4285             break;
4286         case 172:
4287             mesa_CopyPixels(tvb, offsetp, tt, byte_order, len);
4288             break;
4289         case 173:
4290             mesa_DrawPixels(tvb, offsetp, tt, byte_order, len);
4291             break;
4292         case 174:
4293             mesa_DepthRange(tvb, offsetp, tt, byte_order, len);
4294             break;
4295         case 175:
4296             mesa_Frustum(tvb, offsetp, tt, byte_order, len);
4297             break;
4298         case 176:
4299             mesa_LoadIdentity(tvb, offsetp, tt, byte_order, len);
4300             break;
4301         case 177:
4302             mesa_LoadMatrixf(tvb, offsetp, tt, byte_order, len);
4303             break;
4304         case 178:
4305             mesa_LoadMatrixd(tvb, offsetp, tt, byte_order, len);
4306             break;
4307         case 179:
4308             mesa_MatrixMode(tvb, offsetp, tt, byte_order, len);
4309             break;
4310         case 180:
4311             mesa_MultMatrixf(tvb, offsetp, tt, byte_order, len);
4312             break;
4313         case 181:
4314             mesa_MultMatrixd(tvb, offsetp, tt, byte_order, len);
4315             break;
4316         case 182:
4317             mesa_Ortho(tvb, offsetp, tt, byte_order, len);
4318             break;
4319         case 183:
4320             mesa_PopMatrix(tvb, offsetp, tt, byte_order, len);
4321             break;
4322         case 184:
4323             mesa_PushMatrix(tvb, offsetp, tt, byte_order, len);
4324             break;
4325         case 185:
4326             mesa_Rotated(tvb, offsetp, tt, byte_order, len);
4327             break;
4328         case 186:
4329             mesa_Rotatef(tvb, offsetp, tt, byte_order, len);
4330             break;
4331         case 187:
4332             mesa_Scaled(tvb, offsetp, tt, byte_order, len);
4333             break;
4334         case 188:
4335             mesa_Scalef(tvb, offsetp, tt, byte_order, len);
4336             break;
4337         case 189:
4338             mesa_Translated(tvb, offsetp, tt, byte_order, len);
4339             break;
4340         case 190:
4341             mesa_Translatef(tvb, offsetp, tt, byte_order, len);
4342             break;
4343         case 191:
4344             mesa_Viewport(tvb, offsetp, tt, byte_order, len);
4345             break;
4346         case 192:
4347             mesa_PolygonOffset(tvb, offsetp, tt, byte_order, len);
4348             break;
4349         case 193:
4350             mesa_DrawArrays(tvb, offsetp, tt, byte_order, len);
4351             break;
4352         case 194:
4353             mesa_Indexubv(tvb, offsetp, tt, byte_order, len);
4354             break;
4355         case 195:
4356             mesa_ColorSubTable(tvb, offsetp, tt, byte_order, len);
4357             break;
4358         case 196:
4359             mesa_CopyColorSubTable(tvb, offsetp, tt, byte_order, len);
4360             break;
4361         case 197:
4362             mesa_ActiveTexture(tvb, offsetp, tt, byte_order, len);
4363             break;
4364         case 198:
4365             mesa_MultiTexCoord1dv(tvb, offsetp, tt, byte_order, len);
4366             break;
4367         case 199:
4368             mesa_MultiTexCoord1fvARB(tvb, offsetp, tt, byte_order, len);
4369             break;
4370         case 200:
4371             mesa_MultiTexCoord1iv(tvb, offsetp, tt, byte_order, len);
4372             break;
4373         case 201:
4374             mesa_MultiTexCoord1sv(tvb, offsetp, tt, byte_order, len);
4375             break;
4376         case 202:
4377             mesa_MultiTexCoord2dv(tvb, offsetp, tt, byte_order, len);
4378             break;
4379         case 203:
4380             mesa_MultiTexCoord2fvARB(tvb, offsetp, tt, byte_order, len);
4381             break;
4382         case 204:
4383             mesa_MultiTexCoord2iv(tvb, offsetp, tt, byte_order, len);
4384             break;
4385         case 205:
4386             mesa_MultiTexCoord2sv(tvb, offsetp, tt, byte_order, len);
4387             break;
4388         case 206:
4389             mesa_MultiTexCoord3dv(tvb, offsetp, tt, byte_order, len);
4390             break;
4391         case 207:
4392             mesa_MultiTexCoord3fvARB(tvb, offsetp, tt, byte_order, len);
4393             break;
4394         case 208:
4395             mesa_MultiTexCoord3iv(tvb, offsetp, tt, byte_order, len);
4396             break;
4397         case 209:
4398             mesa_MultiTexCoord3sv(tvb, offsetp, tt, byte_order, len);
4399             break;
4400         case 210:
4401             mesa_MultiTexCoord4dv(tvb, offsetp, tt, byte_order, len);
4402             break;
4403         case 211:
4404             mesa_MultiTexCoord4fvARB(tvb, offsetp, tt, byte_order, len);
4405             break;
4406         case 212:
4407             mesa_MultiTexCoord4iv(tvb, offsetp, tt, byte_order, len);
4408             break;
4409         case 213:
4410             mesa_MultiTexCoord4sv(tvb, offsetp, tt, byte_order, len);
4411             break;
4412         case 214:
4413             mesa_CompressedTexImage1D(tvb, offsetp, tt, byte_order, len);
4414             break;
4415         case 215:
4416             mesa_CompressedTexImage2D(tvb, offsetp, tt, byte_order, len);
4417             break;
4418         case 216:
4419             mesa_CompressedTexImage3D(tvb, offsetp, tt, byte_order, len);
4420             break;
4421         case 217:
4422             mesa_CompressedTexSubImage1D(tvb, offsetp, tt, byte_order, len);
4423             break;
4424         case 218:
4425             mesa_CompressedTexSubImage2D(tvb, offsetp, tt, byte_order, len);
4426             break;
4427         case 219:
4428             mesa_CompressedTexSubImage3D(tvb, offsetp, tt, byte_order, len);
4429             break;
4430         case 229:
4431             mesa_SampleCoverage(tvb, offsetp, tt, byte_order, len);
4432             break;
4433         case 230:
4434             mesa_WindowPos3fv(tvb, offsetp, tt, byte_order, len);
4435             break;
4436         case 231:
4437             mesa_BeginQuery(tvb, offsetp, tt, byte_order, len);
4438             break;
4439         case 232:
4440             mesa_EndQuery(tvb, offsetp, tt, byte_order, len);
4441             break;
4442         case 233:
4443             mesa_DrawBuffers(tvb, offsetp, tt, byte_order, len);
4444             break;
4445         case 2048:
4446             mesa_SampleMaskSGIS(tvb, offsetp, tt, byte_order, len);
4447             break;
4448         case 2049:
4449             mesa_SamplePatternSGIS(tvb, offsetp, tt, byte_order, len);
4450             break;
4451         case 2050:
4452             mesa_TagSampleBufferSGIX(tvb, offsetp, tt, byte_order, len);
4453             break;
4454         case 2051:
4455             mesa_DetailTexFuncSGIS(tvb, offsetp, tt, byte_order, len);
4456             break;
4457         case 2052:
4458             mesa_SharpenTexFuncSGIS(tvb, offsetp, tt, byte_order, len);
4459             break;
4460         case 2053:
4461             mesa_ColorTable(tvb, offsetp, tt, byte_order, len);
4462             break;
4463         case 2054:
4464             mesa_ColorTableParameterfv(tvb, offsetp, tt, byte_order, len);
4465             break;
4466         case 2055:
4467             mesa_ColorTableParameteriv(tvb, offsetp, tt, byte_order, len);
4468             break;
4469         case 2056:
4470             mesa_CopyColorTable(tvb, offsetp, tt, byte_order, len);
4471             break;
4472         case 2057:
4473             mesa_TexImage4DSGIS(tvb, offsetp, tt, byte_order, len);
4474             break;
4475         case 2058:
4476             mesa_TexSubImage4DSGIS(tvb, offsetp, tt, byte_order, len);
4477             break;
4478         case 2059:
4479             mesa_PixelTexGenSGIX(tvb, offsetp, tt, byte_order, len);
4480             break;
4481         case 2064:
4482             mesa_TexFilterFuncSGIS(tvb, offsetp, tt, byte_order, len);
4483             break;
4484         case 2065:
4485             mesa_PointParameterf(tvb, offsetp, tt, byte_order, len);
4486             break;
4487         case 2066:
4488             mesa_PointParameterfv(tvb, offsetp, tt, byte_order, len);
4489             break;
4490         case 2067:
4491             mesa_FogFuncSGIS(tvb, offsetp, tt, byte_order, len);
4492             break;
4493         case 2071:
4494             mesa_ReferencePlaneSGIX(tvb, offsetp, tt, byte_order, len);
4495             break;
4496         case 2072:
4497             mesa_FrameZoomSGIX(tvb, offsetp, tt, byte_order, len);
4498             break;
4499         case 2082:
4500             mesa_TextureColorMaskSGIS(tvb, offsetp, tt, byte_order, len);
4501             break;
4502         case 4096:
4503             mesa_BlendColor(tvb, offsetp, tt, byte_order, len);
4504             break;
4505         case 4097:
4506             mesa_BlendEquation(tvb, offsetp, tt, byte_order, len);
4507             break;
4508         case 4098:
4509             mesa_PolygonOffsetEXT(tvb, offsetp, tt, byte_order, len);
4510             break;
4511         case 4099:
4512             mesa_TexSubImage1D(tvb, offsetp, tt, byte_order, len);
4513             break;
4514         case 4100:
4515             mesa_TexSubImage2D(tvb, offsetp, tt, byte_order, len);
4516             break;
4517         case 4101:
4518             mesa_ConvolutionFilter1D(tvb, offsetp, tt, byte_order, len);
4519             break;
4520         case 4102:
4521             mesa_ConvolutionFilter2D(tvb, offsetp, tt, byte_order, len);
4522             break;
4523         case 4103:
4524             mesa_ConvolutionParameterf(tvb, offsetp, tt, byte_order, len);
4525             break;
4526         case 4104:
4527             mesa_ConvolutionParameterfv(tvb, offsetp, tt, byte_order, len);
4528             break;
4529         case 4105:
4530             mesa_ConvolutionParameteri(tvb, offsetp, tt, byte_order, len);
4531             break;
4532         case 4106:
4533             mesa_ConvolutionParameteriv(tvb, offsetp, tt, byte_order, len);
4534             break;
4535         case 4107:
4536             mesa_CopyConvolutionFilter1D(tvb, offsetp, tt, byte_order, len);
4537             break;
4538         case 4108:
4539             mesa_CopyConvolutionFilter2D(tvb, offsetp, tt, byte_order, len);
4540             break;
4541         case 4109:
4542             mesa_SeparableFilter2D(tvb, offsetp, tt, byte_order, len);
4543             break;
4544         case 4110:
4545             mesa_Histogram(tvb, offsetp, tt, byte_order, len);
4546             break;
4547         case 4111:
4548             mesa_Minmax(tvb, offsetp, tt, byte_order, len);
4549             break;
4550         case 4112:
4551             mesa_ResetHistogram(tvb, offsetp, tt, byte_order, len);
4552             break;
4553         case 4113:
4554             mesa_ResetMinmax(tvb, offsetp, tt, byte_order, len);
4555             break;
4556         case 4114:
4557             mesa_TexImage3D(tvb, offsetp, tt, byte_order, len);
4558             break;
4559         case 4115:
4560             mesa_TexSubImage3D(tvb, offsetp, tt, byte_order, len);
4561             break;
4562         case 4117:
4563             mesa_BindTexture(tvb, offsetp, tt, byte_order, len);
4564             break;
4565         case 4118:
4566             mesa_PrioritizeTextures(tvb, offsetp, tt, byte_order, len);
4567             break;
4568         case 4119:
4569             mesa_CopyTexImage1D(tvb, offsetp, tt, byte_order, len);
4570             break;
4571         case 4120:
4572             mesa_CopyTexImage2D(tvb, offsetp, tt, byte_order, len);
4573             break;
4574         case 4121:
4575             mesa_CopyTexSubImage1D(tvb, offsetp, tt, byte_order, len);
4576             break;
4577         case 4122:
4578             mesa_CopyTexSubImage2D(tvb, offsetp, tt, byte_order, len);
4579             break;
4580         case 4123:
4581             mesa_CopyTexSubImage3D(tvb, offsetp, tt, byte_order, len);
4582             break;
4583         case 4124:
4584             mesa_FogCoordfvEXT(tvb, offsetp, tt, byte_order, len);
4585             break;
4586         case 4125:
4587             mesa_FogCoorddv(tvb, offsetp, tt, byte_order, len);
4588             break;
4589         case 4126:
4590             mesa_SecondaryColor3bv(tvb, offsetp, tt, byte_order, len);
4591             break;
4592         case 4127:
4593             mesa_SecondaryColor3sv(tvb, offsetp, tt, byte_order, len);
4594             break;
4595         case 4128:
4596             mesa_SecondaryColor3iv(tvb, offsetp, tt, byte_order, len);
4597             break;
4598         case 4129:
4599             mesa_SecondaryColor3fvEXT(tvb, offsetp, tt, byte_order, len);
4600             break;
4601         case 4130:
4602             mesa_SecondaryColor3dv(tvb, offsetp, tt, byte_order, len);
4603             break;
4604         case 4131:
4605             mesa_SecondaryColor3ubv(tvb, offsetp, tt, byte_order, len);
4606             break;
4607         case 4132:
4608             mesa_SecondaryColor3usv(tvb, offsetp, tt, byte_order, len);
4609             break;
4610         case 4133:
4611             mesa_SecondaryColor3uiv(tvb, offsetp, tt, byte_order, len);
4612             break;
4613         case 4134:
4614             mesa_BlendFuncSeparate(tvb, offsetp, tt, byte_order, len);
4615             break;
4616         case 4135:
4617             mesa_VertexWeightfvEXT(tvb, offsetp, tt, byte_order, len);
4618             break;
4619         case 4136:
4620             mesa_CombinerParameterfNV(tvb, offsetp, tt, byte_order, len);
4621             break;
4622         case 4137:
4623             mesa_CombinerParameterfvNV(tvb, offsetp, tt, byte_order, len);
4624             break;
4625         case 4138:
4626             mesa_CombinerParameteriNV(tvb, offsetp, tt, byte_order, len);
4627             break;
4628         case 4139:
4629             mesa_CombinerParameterivNV(tvb, offsetp, tt, byte_order, len);
4630             break;
4631         case 4140:
4632             mesa_CombinerInputNV(tvb, offsetp, tt, byte_order, len);
4633             break;
4634         case 4141:
4635             mesa_CombinerOutputNV(tvb, offsetp, tt, byte_order, len);
4636             break;
4637         case 4142:
4638             mesa_FinalCombinerInputNV(tvb, offsetp, tt, byte_order, len);
4639             break;
4640         case 4180:
4641             mesa_BindProgramARB(tvb, offsetp, tt, byte_order, len);
4642             break;
4643         case 4181:
4644             mesa_ExecuteProgramNV(tvb, offsetp, tt, byte_order, len);
4645             break;
4646         case 4182:
4647             mesa_RequestResidentProgramsNV(tvb, offsetp, tt, byte_order, len);
4648             break;
4649         case 4183:
4650             mesa_LoadProgramNV(tvb, offsetp, tt, byte_order, len);
4651             break;
4652         case 4184:
4653             mesa_ProgramEnvParameter4fvARB(tvb, offsetp, tt, byte_order, len);
4654             break;
4655         case 4185:
4656             mesa_ProgramEnvParameter4dvARB(tvb, offsetp, tt, byte_order, len);
4657             break;
4658         case 4186:
4659             mesa_ProgramParameters4fvNV(tvb, offsetp, tt, byte_order, len);
4660             break;
4661         case 4187:
4662             mesa_ProgramParameters4dvNV(tvb, offsetp, tt, byte_order, len);
4663             break;
4664         case 4188:
4665             mesa_TrackMatrixNV(tvb, offsetp, tt, byte_order, len);
4666             break;
4667         case 4189:
4668             mesa_VertexAttrib1sv(tvb, offsetp, tt, byte_order, len);
4669             break;
4670         case 4190:
4671             mesa_VertexAttrib2sv(tvb, offsetp, tt, byte_order, len);
4672             break;
4673         case 4191:
4674             mesa_VertexAttrib3sv(tvb, offsetp, tt, byte_order, len);
4675             break;
4676         case 4192:
4677             mesa_VertexAttrib4sv(tvb, offsetp, tt, byte_order, len);
4678             break;
4679         case 4193:
4680             mesa_VertexAttrib1fvARB(tvb, offsetp, tt, byte_order, len);
4681             break;
4682         case 4194:
4683             mesa_VertexAttrib2fvARB(tvb, offsetp, tt, byte_order, len);
4684             break;
4685         case 4195:
4686             mesa_VertexAttrib3fvARB(tvb, offsetp, tt, byte_order, len);
4687             break;
4688         case 4196:
4689             mesa_VertexAttrib4fvARB(tvb, offsetp, tt, byte_order, len);
4690             break;
4691         case 4197:
4692             mesa_VertexAttrib1dv(tvb, offsetp, tt, byte_order, len);
4693             break;
4694         case 4198:
4695             mesa_VertexAttrib2dv(tvb, offsetp, tt, byte_order, len);
4696             break;
4697         case 4199:
4698             mesa_VertexAttrib3dv(tvb, offsetp, tt, byte_order, len);
4699             break;
4700         case 4200:
4701             mesa_VertexAttrib4dv(tvb, offsetp, tt, byte_order, len);
4702             break;
4703         case 4201:
4704             mesa_VertexAttrib4Nubv(tvb, offsetp, tt, byte_order, len);
4705             break;
4706         case 4202:
4707             mesa_VertexAttribs1svNV(tvb, offsetp, tt, byte_order, len);
4708             break;
4709         case 4203:
4710             mesa_VertexAttribs2svNV(tvb, offsetp, tt, byte_order, len);
4711             break;
4712         case 4204:
4713             mesa_VertexAttribs3svNV(tvb, offsetp, tt, byte_order, len);
4714             break;
4715         case 4205:
4716             mesa_VertexAttribs4svNV(tvb, offsetp, tt, byte_order, len);
4717             break;
4718         case 4206:
4719             mesa_VertexAttribs1fvNV(tvb, offsetp, tt, byte_order, len);
4720             break;
4721         case 4207:
4722             mesa_VertexAttribs2fvNV(tvb, offsetp, tt, byte_order, len);
4723             break;
4724         case 4208:
4725             mesa_VertexAttribs3fvNV(tvb, offsetp, tt, byte_order, len);
4726             break;
4727         case 4209:
4728             mesa_VertexAttribs4fvNV(tvb, offsetp, tt, byte_order, len);
4729             break;
4730         case 4210:
4731             mesa_VertexAttribs1dvNV(tvb, offsetp, tt, byte_order, len);
4732             break;
4733         case 4211:
4734             mesa_VertexAttribs2dvNV(tvb, offsetp, tt, byte_order, len);
4735             break;
4736         case 4212:
4737             mesa_VertexAttribs3dvNV(tvb, offsetp, tt, byte_order, len);
4738             break;
4739         case 4213:
4740             mesa_VertexAttribs4dvNV(tvb, offsetp, tt, byte_order, len);
4741             break;
4742         case 4214:
4743             mesa_VertexAttribs4ubvNV(tvb, offsetp, tt, byte_order, len);
4744             break;
4745         case 4215:
4746             mesa_ProgramLocalParameter4fvARB(tvb, offsetp, tt, byte_order, len);
4747             break;
4748         case 4216:
4749             mesa_ProgramLocalParameter4dvARB(tvb, offsetp, tt, byte_order, len);
4750             break;
4751         case 4217:
4752             mesa_ProgramStringARB(tvb, offsetp, tt, byte_order, len);
4753             break;
4754         case 4218:
4755             mesa_ProgramNamedParameter4fvNV(tvb, offsetp, tt, byte_order, len);
4756             break;
4757         case 4219:
4758             mesa_ProgramNamedParameter4dvNV(tvb, offsetp, tt, byte_order, len);
4759             break;
4760         case 4220:
4761             mesa_ActiveStencilFaceEXT(tvb, offsetp, tt, byte_order, len);
4762             break;
4763         case 4221:
4764             mesa_PointParameteri(tvb, offsetp, tt, byte_order, len);
4765             break;
4766         case 4222:
4767             mesa_PointParameteriv(tvb, offsetp, tt, byte_order, len);
4768             break;
4769         case 4228:
4770             mesa_BlendEquationSeparate(tvb, offsetp, tt, byte_order, len);
4771             break;
4772         case 4229:
4773             mesa_DepthBoundsEXT(tvb, offsetp, tt, byte_order, len);
4774             break;
4775         case 4230:
4776             mesa_VertexAttrib4bv(tvb, offsetp, tt, byte_order, len);
4777             break;
4778         case 4231:
4779             mesa_VertexAttrib4iv(tvb, offsetp, tt, byte_order, len);
4780             break;
4781         case 4232:
4782             mesa_VertexAttrib4ubv(tvb, offsetp, tt, byte_order, len);
4783             break;
4784         case 4233:
4785             mesa_VertexAttrib4usv(tvb, offsetp, tt, byte_order, len);
4786             break;
4787         case 4234:
4788             mesa_VertexAttrib4uiv(tvb, offsetp, tt, byte_order, len);
4789             break;
4790         case 4235:
4791             mesa_VertexAttrib4Nbv(tvb, offsetp, tt, byte_order, len);
4792             break;
4793         case 4236:
4794             mesa_VertexAttrib4Nsv(tvb, offsetp, tt, byte_order, len);
4795             break;
4796         case 4237:
4797             mesa_VertexAttrib4Niv(tvb, offsetp, tt, byte_order, len);
4798             break;
4799         case 4238:
4800             mesa_VertexAttrib4Nusv(tvb, offsetp, tt, byte_order, len);
4801             break;
4802         case 4239:
4803             mesa_VertexAttrib4Nuiv(tvb, offsetp, tt, byte_order, len);
4804             break;
4805         case 4265:
4806             mesa_VertexAttrib1svNV(tvb, offsetp, tt, byte_order, len);
4807             break;
4808         case 4266:
4809             mesa_VertexAttrib2svNV(tvb, offsetp, tt, byte_order, len);
4810             break;
4811         case 4267:
4812             mesa_VertexAttrib3svNV(tvb, offsetp, tt, byte_order, len);
4813             break;
4814         case 4268:
4815             mesa_VertexAttrib4svNV(tvb, offsetp, tt, byte_order, len);
4816             break;
4817         case 4269:
4818             mesa_VertexAttrib1fvNV(tvb, offsetp, tt, byte_order, len);
4819             break;
4820         case 4270:
4821             mesa_VertexAttrib2fvNV(tvb, offsetp, tt, byte_order, len);
4822             break;
4823         case 4271:
4824             mesa_VertexAttrib3fvNV(tvb, offsetp, tt, byte_order, len);
4825             break;
4826         case 4272:
4827             mesa_VertexAttrib4fvNV(tvb, offsetp, tt, byte_order, len);
4828             break;
4829         case 4273:
4830             mesa_VertexAttrib1dvNV(tvb, offsetp, tt, byte_order, len);
4831             break;
4832         case 4274:
4833             mesa_VertexAttrib2dvNV(tvb, offsetp, tt, byte_order, len);
4834             break;
4835         case 4275:
4836             mesa_VertexAttrib3dvNV(tvb, offsetp, tt, byte_order, len);
4837             break;
4838         case 4276:
4839             mesa_VertexAttrib4dvNV(tvb, offsetp, tt, byte_order, len);
4840             break;
4841         case 4277:
4842             mesa_VertexAttrib4ubvNV(tvb, offsetp, tt, byte_order, len);
4843             break;
4844         case 4326:
4845             mesa_MatrixIndexubvARB(tvb, offsetp, tt, byte_order, len);
4846             break;
4847         case 4327:
4848             mesa_MatrixIndexusvARB(tvb, offsetp, tt, byte_order, len);
4849             break;
4850         case 4328:
4851             mesa_MatrixIndexuivARB(tvb, offsetp, tt, byte_order, len);
4852             break;
4853         case 4329:
4854             mesa_CurrentPaletteMatrixARB(tvb, offsetp, tt, byte_order, len);
4855             break;
4856         default:
4857             proto_tree_add_item(tt, hf_x11_undecoded, tvb, *offsetp, len, ENC_NA);
4858             *offsetp += len;
4859         }
4860         if (*offsetp < next) {
4861             proto_tree_add_item(tt, hf_x11_unused, tvb, *offsetp, next - *offsetp, ENC_NA);
4862             *offsetp = next;
4863         }
4864         length -= (len + 4);
4865     }
4866 }
4867 #include "x11-enum.h"
4868
4869
4870 static void bigreqEnable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
4871 {
4872 }
4873 static void bigreqEnable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
4874 {
4875     int sequence_number;
4876
4877     col_append_fstr(pinfo->cinfo, COL_INFO, "-Enable");
4878
4879     REPLY(reply);
4880     UNUSED(1);
4881     sequence_number = VALUE16(tvb, *offsetp);
4882     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
4883             "%d (bigreq-Enable)", sequence_number);
4884     *offsetp += 2;
4885     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
4886     *offsetp += 4;
4887     proto_tree_add_item(t, hf_x11_bigreq_Enable_reply_maximum_request_length, tvb, *offsetp, 4, byte_order);
4888     *offsetp += 4;
4889 }
4890 static const value_string bigreq_extension_minor[] = {
4891     { 0, "Enable" },
4892     { 0, NULL }
4893 };
4894 const x11_event_info bigreq_events[] = {
4895     { NULL, NULL }
4896 };
4897 static x11_reply_info bigreq_replies[] = {
4898     { 0, bigreqEnable_Reply },
4899     { 0, NULL }
4900 };
4901
4902 static void dispatch_bigreq(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
4903 {
4904     int minor, length;
4905     minor = CARD8(bigreq_extension_minor);
4906     length = REQUEST_LENGTH();
4907
4908     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
4909                           val_to_str(minor, bigreq_extension_minor,
4910                                      "<Unknown opcode %d>"));
4911     switch (minor) {
4912     case 0:
4913         bigreqEnable(tvb, pinfo, offsetp, t, byte_order, length);
4914         break;
4915     /* No need for a default case here, since Unknown is printed above,
4916        and UNDECODED() is taken care of by dissect_x11_request */
4917     }
4918 }
4919
4920 static void register_bigreq(void)
4921 {
4922     set_handler("BIG-REQUESTS", dispatch_bigreq, bigreq_errors, bigreq_events, NULL, bigreq_replies);
4923 }
4924
4925 static void struct_xproto_RECTANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
4926 {
4927     int i;
4928     for (i = 0; i < count; i++) {
4929         proto_item *item;
4930         proto_tree *t;
4931
4932         item = proto_tree_add_item(root, hf_x11_struct_xproto_RECTANGLE, tvb, *offsetp, 8, ENC_NA);
4933         t = proto_item_add_subtree(item, ett_x11_rectangle);
4934         proto_tree_add_item(t, hf_x11_struct_xproto_RECTANGLE_x, tvb, *offsetp, 2, byte_order);
4935         *offsetp += 2;
4936         proto_tree_add_item(t, hf_x11_struct_xproto_RECTANGLE_y, tvb, *offsetp, 2, byte_order);
4937         *offsetp += 2;
4938         proto_tree_add_item(t, hf_x11_struct_xproto_RECTANGLE_width, tvb, *offsetp, 2, byte_order);
4939         *offsetp += 2;
4940         proto_tree_add_item(t, hf_x11_struct_xproto_RECTANGLE_height, tvb, *offsetp, 2, byte_order);
4941         *offsetp += 2;
4942     }
4943 }
4944
4945 static int struct_size_xproto_STR(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
4946 {
4947     int size = 0;
4948     int f_name_len;
4949     f_name_len = VALUE8(tvb, *offsetp + size + 0);
4950     size += f_name_len * 1;
4951     return size + 1;
4952 }
4953
4954 static void struct_xproto_STR(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
4955 {
4956     int i;
4957     for (i = 0; i < count; i++) {
4958         proto_item *item;
4959         proto_tree *t;
4960         int f_name_len;
4961
4962         item = proto_tree_add_item(root, hf_x11_struct_xproto_STR, tvb, *offsetp, struct_size_xproto_STR(tvb, offsetp, byte_order), ENC_NA);
4963         t = proto_item_add_subtree(item, ett_x11_rectangle);
4964         f_name_len = VALUE8(tvb, *offsetp);
4965         proto_tree_add_item(t, hf_x11_struct_xproto_STR_name_len, tvb, *offsetp, 1, byte_order);
4966         *offsetp += 1;
4967         listOfByte(tvb, offsetp, t, hf_x11_struct_xproto_STR_name, f_name_len, byte_order);
4968     }
4969 }
4970
4971 static void struct_render_DIRECTFORMAT(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
4972 {
4973     int i;
4974     for (i = 0; i < count; i++) {
4975         proto_item *item;
4976         proto_tree *t;
4977
4978         item = proto_tree_add_item(root, hf_x11_struct_render_DIRECTFORMAT, tvb, *offsetp, 16, ENC_NA);
4979         t = proto_item_add_subtree(item, ett_x11_rectangle);
4980         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_red_shift, tvb, *offsetp, 2, byte_order);
4981         *offsetp += 2;
4982         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_red_mask, tvb, *offsetp, 2, byte_order);
4983         *offsetp += 2;
4984         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_green_shift, tvb, *offsetp, 2, byte_order);
4985         *offsetp += 2;
4986         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_green_mask, tvb, *offsetp, 2, byte_order);
4987         *offsetp += 2;
4988         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_blue_shift, tvb, *offsetp, 2, byte_order);
4989         *offsetp += 2;
4990         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_blue_mask, tvb, *offsetp, 2, byte_order);
4991         *offsetp += 2;
4992         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_alpha_shift, tvb, *offsetp, 2, byte_order);
4993         *offsetp += 2;
4994         proto_tree_add_item(t, hf_x11_struct_render_DIRECTFORMAT_alpha_mask, tvb, *offsetp, 2, byte_order);
4995         *offsetp += 2;
4996     }
4997 }
4998
4999 static void struct_render_PICTFORMINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5000 {
5001     int i;
5002     for (i = 0; i < count; i++) {
5003         proto_item *item;
5004         proto_tree *t;
5005
5006         item = proto_tree_add_item(root, hf_x11_struct_render_PICTFORMINFO, tvb, *offsetp, 28, ENC_NA);
5007         t = proto_item_add_subtree(item, ett_x11_rectangle);
5008         proto_tree_add_item(t, hf_x11_struct_render_PICTFORMINFO_id, tvb, *offsetp, 4, byte_order);
5009         *offsetp += 4;
5010         field8(tvb, offsetp, t, hf_x11_struct_render_PICTFORMINFO_type, byte_order);
5011         proto_tree_add_item(t, hf_x11_struct_render_PICTFORMINFO_depth, tvb, *offsetp, 1, byte_order);
5012         *offsetp += 1;
5013         UNUSED(2);
5014         struct_render_DIRECTFORMAT(tvb, offsetp, t, byte_order, 1);
5015         proto_tree_add_item(t, hf_x11_struct_render_PICTFORMINFO_colormap, tvb, *offsetp, 4, byte_order);
5016         *offsetp += 4;
5017     }
5018 }
5019
5020 static void struct_render_PICTVISUAL(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5021 {
5022     int i;
5023     for (i = 0; i < count; i++) {
5024         proto_item *item;
5025         proto_tree *t;
5026
5027         item = proto_tree_add_item(root, hf_x11_struct_render_PICTVISUAL, tvb, *offsetp, 8, ENC_NA);
5028         t = proto_item_add_subtree(item, ett_x11_rectangle);
5029         proto_tree_add_item(t, hf_x11_struct_render_PICTVISUAL_visual, tvb, *offsetp, 4, byte_order);
5030         *offsetp += 4;
5031         proto_tree_add_item(t, hf_x11_struct_render_PICTVISUAL_format, tvb, *offsetp, 4, byte_order);
5032         *offsetp += 4;
5033     }
5034 }
5035
5036 static int struct_size_render_PICTDEPTH(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
5037 {
5038     int size = 0;
5039     int f_num_visuals;
5040     f_num_visuals = VALUE16(tvb, *offsetp + size + 2);
5041     size += f_num_visuals * 8;
5042     return size + 8;
5043 }
5044
5045 static void struct_render_PICTDEPTH(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5046 {
5047     int i;
5048     for (i = 0; i < count; i++) {
5049         proto_item *item;
5050         proto_tree *t;
5051         int f_num_visuals;
5052
5053         item = proto_tree_add_item(root, hf_x11_struct_render_PICTDEPTH, tvb, *offsetp, struct_size_render_PICTDEPTH(tvb, offsetp, byte_order), ENC_NA);
5054         t = proto_item_add_subtree(item, ett_x11_rectangle);
5055         proto_tree_add_item(t, hf_x11_struct_render_PICTDEPTH_depth, tvb, *offsetp, 1, byte_order);
5056         *offsetp += 1;
5057         UNUSED(1);
5058         f_num_visuals = VALUE16(tvb, *offsetp);
5059         proto_tree_add_item(t, hf_x11_struct_render_PICTDEPTH_num_visuals, tvb, *offsetp, 2, byte_order);
5060         *offsetp += 2;
5061         UNUSED(4);
5062         struct_render_PICTVISUAL(tvb, offsetp, t, byte_order, f_num_visuals);
5063     }
5064 }
5065
5066 static int struct_size_render_PICTSCREEN(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
5067 {
5068     int size = 0;
5069     int i, off;
5070     int f_num_depths;
5071     f_num_depths = VALUE32(tvb, *offsetp + size + 0);
5072     for (i = 0; i < f_num_depths; i++) {
5073         off = (*offsetp) + size + 8;
5074         size += struct_size_render_PICTDEPTH(tvb, &off, byte_order);
5075     }
5076     return size + 8;
5077 }
5078
5079 static void struct_render_PICTSCREEN(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5080 {
5081     int i;
5082     for (i = 0; i < count; i++) {
5083         proto_item *item;
5084         proto_tree *t;
5085         int f_num_depths;
5086
5087         item = proto_tree_add_item(root, hf_x11_struct_render_PICTSCREEN, tvb, *offsetp, struct_size_render_PICTSCREEN(tvb, offsetp, byte_order), ENC_NA);
5088         t = proto_item_add_subtree(item, ett_x11_rectangle);
5089         f_num_depths = VALUE32(tvb, *offsetp);
5090         proto_tree_add_item(t, hf_x11_struct_render_PICTSCREEN_num_depths, tvb, *offsetp, 4, byte_order);
5091         *offsetp += 4;
5092         proto_tree_add_item(t, hf_x11_struct_render_PICTSCREEN_fallback, tvb, *offsetp, 4, byte_order);
5093         *offsetp += 4;
5094         struct_render_PICTDEPTH(tvb, offsetp, t, byte_order, f_num_depths);
5095     }
5096 }
5097
5098 static void struct_render_INDEXVALUE(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5099 {
5100     int i;
5101     for (i = 0; i < count; i++) {
5102         proto_item *item;
5103         proto_tree *t;
5104
5105         item = proto_tree_add_item(root, hf_x11_struct_render_INDEXVALUE, tvb, *offsetp, 12, ENC_NA);
5106         t = proto_item_add_subtree(item, ett_x11_rectangle);
5107         proto_tree_add_item(t, hf_x11_struct_render_INDEXVALUE_pixel, tvb, *offsetp, 4, byte_order);
5108         *offsetp += 4;
5109         proto_tree_add_item(t, hf_x11_struct_render_INDEXVALUE_red, tvb, *offsetp, 2, byte_order);
5110         *offsetp += 2;
5111         proto_tree_add_item(t, hf_x11_struct_render_INDEXVALUE_green, tvb, *offsetp, 2, byte_order);
5112         *offsetp += 2;
5113         proto_tree_add_item(t, hf_x11_struct_render_INDEXVALUE_blue, tvb, *offsetp, 2, byte_order);
5114         *offsetp += 2;
5115         proto_tree_add_item(t, hf_x11_struct_render_INDEXVALUE_alpha, tvb, *offsetp, 2, byte_order);
5116         *offsetp += 2;
5117     }
5118 }
5119
5120 static void struct_render_COLOR(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5121 {
5122     int i;
5123     for (i = 0; i < count; i++) {
5124         proto_item *item;
5125         proto_tree *t;
5126
5127         item = proto_tree_add_item(root, hf_x11_struct_render_COLOR, tvb, *offsetp, 8, ENC_NA);
5128         t = proto_item_add_subtree(item, ett_x11_rectangle);
5129         proto_tree_add_item(t, hf_x11_struct_render_COLOR_red, tvb, *offsetp, 2, byte_order);
5130         *offsetp += 2;
5131         proto_tree_add_item(t, hf_x11_struct_render_COLOR_green, tvb, *offsetp, 2, byte_order);
5132         *offsetp += 2;
5133         proto_tree_add_item(t, hf_x11_struct_render_COLOR_blue, tvb, *offsetp, 2, byte_order);
5134         *offsetp += 2;
5135         proto_tree_add_item(t, hf_x11_struct_render_COLOR_alpha, tvb, *offsetp, 2, byte_order);
5136         *offsetp += 2;
5137     }
5138 }
5139
5140 static void struct_render_POINTFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5141 {
5142     int i;
5143     for (i = 0; i < count; i++) {
5144         proto_item *item;
5145         proto_tree *t;
5146
5147         item = proto_tree_add_item(root, hf_x11_struct_render_POINTFIX, tvb, *offsetp, 8, ENC_NA);
5148         t = proto_item_add_subtree(item, ett_x11_rectangle);
5149         proto_tree_add_item(t, hf_x11_struct_render_POINTFIX_x, tvb, *offsetp, 4, byte_order);
5150         *offsetp += 4;
5151         proto_tree_add_item(t, hf_x11_struct_render_POINTFIX_y, tvb, *offsetp, 4, byte_order);
5152         *offsetp += 4;
5153     }
5154 }
5155
5156 static void struct_render_LINEFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5157 {
5158     int i;
5159     for (i = 0; i < count; i++) {
5160         proto_item *item;
5161         proto_tree *t;
5162
5163         item = proto_tree_add_item(root, hf_x11_struct_render_LINEFIX, tvb, *offsetp, 16, ENC_NA);
5164         t = proto_item_add_subtree(item, ett_x11_rectangle);
5165         struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
5166         struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
5167     }
5168 }
5169
5170 static void struct_render_TRIANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5171 {
5172     int i;
5173     for (i = 0; i < count; i++) {
5174         proto_item *item;
5175         proto_tree *t;
5176
5177         item = proto_tree_add_item(root, hf_x11_struct_render_TRIANGLE, tvb, *offsetp, 24, ENC_NA);
5178         t = proto_item_add_subtree(item, ett_x11_rectangle);
5179         struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
5180         struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
5181         struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
5182     }
5183 }
5184
5185 static void struct_render_TRAPEZOID(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5186 {
5187     int i;
5188     for (i = 0; i < count; i++) {
5189         proto_item *item;
5190         proto_tree *t;
5191
5192         item = proto_tree_add_item(root, hf_x11_struct_render_TRAPEZOID, tvb, *offsetp, 40, ENC_NA);
5193         t = proto_item_add_subtree(item, ett_x11_rectangle);
5194         proto_tree_add_item(t, hf_x11_struct_render_TRAPEZOID_top, tvb, *offsetp, 4, byte_order);
5195         *offsetp += 4;
5196         proto_tree_add_item(t, hf_x11_struct_render_TRAPEZOID_bottom, tvb, *offsetp, 4, byte_order);
5197         *offsetp += 4;
5198         struct_render_LINEFIX(tvb, offsetp, t, byte_order, 1);
5199         struct_render_LINEFIX(tvb, offsetp, t, byte_order, 1);
5200     }
5201 }
5202
5203 static void struct_render_GLYPHINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5204 {
5205     int i;
5206     for (i = 0; i < count; i++) {
5207         proto_item *item;
5208         proto_tree *t;
5209
5210         item = proto_tree_add_item(root, hf_x11_struct_render_GLYPHINFO, tvb, *offsetp, 12, ENC_NA);
5211         t = proto_item_add_subtree(item, ett_x11_rectangle);
5212         proto_tree_add_item(t, hf_x11_struct_render_GLYPHINFO_width, tvb, *offsetp, 2, byte_order);
5213         *offsetp += 2;
5214         proto_tree_add_item(t, hf_x11_struct_render_GLYPHINFO_height, tvb, *offsetp, 2, byte_order);
5215         *offsetp += 2;
5216         proto_tree_add_item(t, hf_x11_struct_render_GLYPHINFO_x, tvb, *offsetp, 2, byte_order);
5217         *offsetp += 2;
5218         proto_tree_add_item(t, hf_x11_struct_render_GLYPHINFO_y, tvb, *offsetp, 2, byte_order);
5219         *offsetp += 2;
5220         proto_tree_add_item(t, hf_x11_struct_render_GLYPHINFO_x_off, tvb, *offsetp, 2, byte_order);
5221         *offsetp += 2;
5222         proto_tree_add_item(t, hf_x11_struct_render_GLYPHINFO_y_off, tvb, *offsetp, 2, byte_order);
5223         *offsetp += 2;
5224     }
5225 }
5226
5227 static void struct_render_TRANSFORM(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5228 {
5229     int i;
5230     for (i = 0; i < count; i++) {
5231         proto_item *item;
5232         proto_tree *t;
5233
5234         item = proto_tree_add_item(root, hf_x11_struct_render_TRANSFORM, tvb, *offsetp, 36, ENC_NA);
5235         t = proto_item_add_subtree(item, ett_x11_rectangle);
5236         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix11, tvb, *offsetp, 4, byte_order);
5237         *offsetp += 4;
5238         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix12, tvb, *offsetp, 4, byte_order);
5239         *offsetp += 4;
5240         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix13, tvb, *offsetp, 4, byte_order);
5241         *offsetp += 4;
5242         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix21, tvb, *offsetp, 4, byte_order);
5243         *offsetp += 4;
5244         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix22, tvb, *offsetp, 4, byte_order);
5245         *offsetp += 4;
5246         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix23, tvb, *offsetp, 4, byte_order);
5247         *offsetp += 4;
5248         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix31, tvb, *offsetp, 4, byte_order);
5249         *offsetp += 4;
5250         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix32, tvb, *offsetp, 4, byte_order);
5251         *offsetp += 4;
5252         proto_tree_add_item(t, hf_x11_struct_render_TRANSFORM_matrix33, tvb, *offsetp, 4, byte_order);
5253         *offsetp += 4;
5254     }
5255 }
5256
5257 static void struct_render_ANIMCURSORELT(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5258 {
5259     int i;
5260     for (i = 0; i < count; i++) {
5261         proto_item *item;
5262         proto_tree *t;
5263
5264         item = proto_tree_add_item(root, hf_x11_struct_render_ANIMCURSORELT, tvb, *offsetp, 8, ENC_NA);
5265         t = proto_item_add_subtree(item, ett_x11_rectangle);
5266         proto_tree_add_item(t, hf_x11_struct_render_ANIMCURSORELT_cursor, tvb, *offsetp, 4, byte_order);
5267         *offsetp += 4;
5268         proto_tree_add_item(t, hf_x11_struct_render_ANIMCURSORELT_delay, tvb, *offsetp, 4, byte_order);
5269         *offsetp += 4;
5270     }
5271 }
5272
5273 static void struct_render_SPANFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5274 {
5275     int i;
5276     for (i = 0; i < count; i++) {
5277         proto_item *item;
5278         proto_tree *t;
5279
5280         item = proto_tree_add_item(root, hf_x11_struct_render_SPANFIX, tvb, *offsetp, 12, ENC_NA);
5281         t = proto_item_add_subtree(item, ett_x11_rectangle);
5282         proto_tree_add_item(t, hf_x11_struct_render_SPANFIX_l, tvb, *offsetp, 4, byte_order);
5283         *offsetp += 4;
5284         proto_tree_add_item(t, hf_x11_struct_render_SPANFIX_r, tvb, *offsetp, 4, byte_order);
5285         *offsetp += 4;
5286         proto_tree_add_item(t, hf_x11_struct_render_SPANFIX_y, tvb, *offsetp, 4, byte_order);
5287         *offsetp += 4;
5288     }
5289 }
5290
5291 static void struct_render_TRAP(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5292 {
5293     int i;
5294     for (i = 0; i < count; i++) {
5295         proto_item *item;
5296         proto_tree *t;
5297
5298         item = proto_tree_add_item(root, hf_x11_struct_render_TRAP, tvb, *offsetp, 24, ENC_NA);
5299         t = proto_item_add_subtree(item, ett_x11_rectangle);
5300         struct_render_SPANFIX(tvb, offsetp, t, byte_order, 1);
5301         struct_render_SPANFIX(tvb, offsetp, t, byte_order, 1);
5302     }
5303 }
5304
5305 static void compositeQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5306 {
5307     proto_tree_add_item(t, hf_x11_composite_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
5308     *offsetp += 4;
5309     proto_tree_add_item(t, hf_x11_composite_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
5310     *offsetp += 4;
5311 }
5312 static void compositeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5313 {
5314     int sequence_number;
5315
5316     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
5317
5318     REPLY(reply);
5319     UNUSED(1);
5320     sequence_number = VALUE16(tvb, *offsetp);
5321     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5322             "%d (composite-QueryVersion)", sequence_number);
5323     *offsetp += 2;
5324     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5325     *offsetp += 4;
5326     proto_tree_add_item(t, hf_x11_composite_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
5327     *offsetp += 4;
5328     proto_tree_add_item(t, hf_x11_composite_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
5329     *offsetp += 4;
5330     UNUSED(16);
5331 }
5332
5333 static void compositeRedirectWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5334 {
5335     proto_tree_add_item(t, hf_x11_composite_RedirectWindow_window, tvb, *offsetp, 4, byte_order);
5336     *offsetp += 4;
5337     field8(tvb, offsetp, t, hf_x11_composite_RedirectWindow_update, byte_order);
5338     UNUSED(3);
5339 }
5340
5341 static void compositeRedirectSubwindows(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5342 {
5343     proto_tree_add_item(t, hf_x11_composite_RedirectSubwindows_window, tvb, *offsetp, 4, byte_order);
5344     *offsetp += 4;
5345     field8(tvb, offsetp, t, hf_x11_composite_RedirectSubwindows_update, byte_order);
5346     UNUSED(3);
5347 }
5348
5349 static void compositeUnredirectWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5350 {
5351     proto_tree_add_item(t, hf_x11_composite_UnredirectWindow_window, tvb, *offsetp, 4, byte_order);
5352     *offsetp += 4;
5353     field8(tvb, offsetp, t, hf_x11_composite_UnredirectWindow_update, byte_order);
5354     UNUSED(3);
5355 }
5356
5357 static void compositeUnredirectSubwindows(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5358 {
5359     proto_tree_add_item(t, hf_x11_composite_UnredirectSubwindows_window, tvb, *offsetp, 4, byte_order);
5360     *offsetp += 4;
5361     field8(tvb, offsetp, t, hf_x11_composite_UnredirectSubwindows_update, byte_order);
5362     UNUSED(3);
5363 }
5364
5365 static void compositeCreateRegionFromBorderClip(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5366 {
5367     proto_tree_add_item(t, hf_x11_composite_CreateRegionFromBorderClip_region, tvb, *offsetp, 4, byte_order);
5368     *offsetp += 4;
5369     proto_tree_add_item(t, hf_x11_composite_CreateRegionFromBorderClip_window, tvb, *offsetp, 4, byte_order);
5370     *offsetp += 4;
5371 }
5372
5373 static void compositeNameWindowPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5374 {
5375     proto_tree_add_item(t, hf_x11_composite_NameWindowPixmap_window, tvb, *offsetp, 4, byte_order);
5376     *offsetp += 4;
5377     proto_tree_add_item(t, hf_x11_composite_NameWindowPixmap_pixmap, tvb, *offsetp, 4, byte_order);
5378     *offsetp += 4;
5379 }
5380
5381 static void compositeGetOverlayWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5382 {
5383     proto_tree_add_item(t, hf_x11_composite_GetOverlayWindow_window, tvb, *offsetp, 4, byte_order);
5384     *offsetp += 4;
5385 }
5386 static void compositeGetOverlayWindow_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5387 {
5388     int sequence_number;
5389
5390     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetOverlayWindow");
5391
5392     REPLY(reply);
5393     UNUSED(1);
5394     sequence_number = VALUE16(tvb, *offsetp);
5395     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5396             "%d (composite-GetOverlayWindow)", sequence_number);
5397     *offsetp += 2;
5398     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5399     *offsetp += 4;
5400     proto_tree_add_item(t, hf_x11_composite_GetOverlayWindow_reply_overlay_win, tvb, *offsetp, 4, byte_order);
5401     *offsetp += 4;
5402     UNUSED(20);
5403 }
5404
5405 static void compositeReleaseOverlayWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5406 {
5407     proto_tree_add_item(t, hf_x11_composite_ReleaseOverlayWindow_window, tvb, *offsetp, 4, byte_order);
5408     *offsetp += 4;
5409 }
5410 static const value_string composite_extension_minor[] = {
5411     { 0, "QueryVersion" },
5412     { 1, "RedirectWindow" },
5413     { 2, "RedirectSubwindows" },
5414     { 3, "UnredirectWindow" },
5415     { 4, "UnredirectSubwindows" },
5416     { 5, "CreateRegionFromBorderClip" },
5417     { 6, "NameWindowPixmap" },
5418     { 7, "GetOverlayWindow" },
5419     { 8, "ReleaseOverlayWindow" },
5420     { 0, NULL }
5421 };
5422 const x11_event_info composite_events[] = {
5423     { NULL, NULL }
5424 };
5425 static x11_reply_info composite_replies[] = {
5426     { 0, compositeQueryVersion_Reply },
5427     { 7, compositeGetOverlayWindow_Reply },
5428     { 0, NULL }
5429 };
5430
5431 static void dispatch_composite(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5432 {
5433     int minor, length;
5434     minor = CARD8(composite_extension_minor);
5435     length = REQUEST_LENGTH();
5436
5437     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
5438                           val_to_str(minor, composite_extension_minor,
5439                                      "<Unknown opcode %d>"));
5440     switch (minor) {
5441     case 0:
5442         compositeQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
5443         break;
5444     case 1:
5445         compositeRedirectWindow(tvb, pinfo, offsetp, t, byte_order, length);
5446         break;
5447     case 2:
5448         compositeRedirectSubwindows(tvb, pinfo, offsetp, t, byte_order, length);
5449         break;
5450     case 3:
5451         compositeUnredirectWindow(tvb, pinfo, offsetp, t, byte_order, length);
5452         break;
5453     case 4:
5454         compositeUnredirectSubwindows(tvb, pinfo, offsetp, t, byte_order, length);
5455         break;
5456     case 5:
5457         compositeCreateRegionFromBorderClip(tvb, pinfo, offsetp, t, byte_order, length);
5458         break;
5459     case 6:
5460         compositeNameWindowPixmap(tvb, pinfo, offsetp, t, byte_order, length);
5461         break;
5462     case 7:
5463         compositeGetOverlayWindow(tvb, pinfo, offsetp, t, byte_order, length);
5464         break;
5465     case 8:
5466         compositeReleaseOverlayWindow(tvb, pinfo, offsetp, t, byte_order, length);
5467         break;
5468     /* No need for a default case here, since Unknown is printed above,
5469        and UNDECODED() is taken care of by dissect_x11_request */
5470     }
5471 }
5472
5473 static void register_composite(void)
5474 {
5475     set_handler("Composite", dispatch_composite, composite_errors, composite_events, NULL, composite_replies);
5476 }
5477
5478 static void damageQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5479 {
5480     proto_tree_add_item(t, hf_x11_damage_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
5481     *offsetp += 4;
5482     proto_tree_add_item(t, hf_x11_damage_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
5483     *offsetp += 4;
5484 }
5485 static void damageQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5486 {
5487     int sequence_number;
5488
5489     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
5490
5491     REPLY(reply);
5492     UNUSED(1);
5493     sequence_number = VALUE16(tvb, *offsetp);
5494     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5495             "%d (damage-QueryVersion)", sequence_number);
5496     *offsetp += 2;
5497     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5498     *offsetp += 4;
5499     proto_tree_add_item(t, hf_x11_damage_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
5500     *offsetp += 4;
5501     proto_tree_add_item(t, hf_x11_damage_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
5502     *offsetp += 4;
5503     UNUSED(16);
5504 }
5505
5506 static void damageCreate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5507 {
5508     proto_tree_add_item(t, hf_x11_damage_Create_damage, tvb, *offsetp, 4, byte_order);
5509     *offsetp += 4;
5510     proto_tree_add_item(t, hf_x11_damage_Create_drawable, tvb, *offsetp, 4, byte_order);
5511     *offsetp += 4;
5512     field8(tvb, offsetp, t, hf_x11_damage_Create_level, byte_order);
5513     UNUSED(3);
5514 }
5515
5516 static void damageDestroy(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5517 {
5518     proto_tree_add_item(t, hf_x11_damage_Destroy_damage, tvb, *offsetp, 4, byte_order);
5519     *offsetp += 4;
5520 }
5521
5522 static void damageSubtract(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5523 {
5524     proto_tree_add_item(t, hf_x11_damage_Subtract_damage, tvb, *offsetp, 4, byte_order);
5525     *offsetp += 4;
5526     field32(tvb, offsetp, t, hf_x11_damage_Subtract_repair, byte_order);
5527     field32(tvb, offsetp, t, hf_x11_damage_Subtract_parts, byte_order);
5528 }
5529
5530 static void damageAdd(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5531 {
5532     proto_tree_add_item(t, hf_x11_damage_Add_drawable, tvb, *offsetp, 4, byte_order);
5533     *offsetp += 4;
5534     proto_tree_add_item(t, hf_x11_damage_Add_region, tvb, *offsetp, 4, byte_order);
5535     *offsetp += 4;
5536 }
5537 static const value_string damage_extension_minor[] = {
5538     { 0, "QueryVersion" },
5539     { 1, "Create" },
5540     { 2, "Destroy" },
5541     { 3, "Subtract" },
5542     { 4, "Add" },
5543     { 0, NULL }
5544 };
5545 const x11_event_info damage_events[] = {
5546     { NULL, NULL }
5547 };
5548 static x11_reply_info damage_replies[] = {
5549     { 0, damageQueryVersion_Reply },
5550     { 0, NULL }
5551 };
5552
5553 static void dispatch_damage(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5554 {
5555     int minor, length;
5556     minor = CARD8(damage_extension_minor);
5557     length = REQUEST_LENGTH();
5558
5559     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
5560                           val_to_str(minor, damage_extension_minor,
5561                                      "<Unknown opcode %d>"));
5562     switch (minor) {
5563     case 0:
5564         damageQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
5565         break;
5566     case 1:
5567         damageCreate(tvb, pinfo, offsetp, t, byte_order, length);
5568         break;
5569     case 2:
5570         damageDestroy(tvb, pinfo, offsetp, t, byte_order, length);
5571         break;
5572     case 3:
5573         damageSubtract(tvb, pinfo, offsetp, t, byte_order, length);
5574         break;
5575     case 4:
5576         damageAdd(tvb, pinfo, offsetp, t, byte_order, length);
5577         break;
5578     /* No need for a default case here, since Unknown is printed above,
5579        and UNDECODED() is taken care of by dissect_x11_request */
5580     }
5581 }
5582
5583 static void register_damage(void)
5584 {
5585     set_handler("DAMAGE", dispatch_damage, damage_errors, damage_events, NULL, damage_replies);
5586 }
5587
5588 static void dpmsGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5589 {
5590     proto_tree_add_item(t, hf_x11_dpms_GetVersion_client_major_version, tvb, *offsetp, 2, byte_order);
5591     *offsetp += 2;
5592     proto_tree_add_item(t, hf_x11_dpms_GetVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
5593     *offsetp += 2;
5594 }
5595 static void dpmsGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5596 {
5597     int sequence_number;
5598
5599     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetVersion");
5600
5601     REPLY(reply);
5602     UNUSED(1);
5603     sequence_number = VALUE16(tvb, *offsetp);
5604     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5605             "%d (dpms-GetVersion)", sequence_number);
5606     *offsetp += 2;
5607     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5608     *offsetp += 4;
5609     proto_tree_add_item(t, hf_x11_dpms_GetVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
5610     *offsetp += 2;
5611     proto_tree_add_item(t, hf_x11_dpms_GetVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
5612     *offsetp += 2;
5613 }
5614
5615 static void dpmsCapable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
5616 {
5617 }
5618 static void dpmsCapable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5619 {
5620     int sequence_number;
5621
5622     col_append_fstr(pinfo->cinfo, COL_INFO, "-Capable");
5623
5624     REPLY(reply);
5625     UNUSED(1);
5626     sequence_number = VALUE16(tvb, *offsetp);
5627     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5628             "%d (dpms-Capable)", sequence_number);
5629     *offsetp += 2;
5630     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5631     *offsetp += 4;
5632     proto_tree_add_item(t, hf_x11_dpms_Capable_reply_capable, tvb, *offsetp, 1, byte_order);
5633     *offsetp += 1;
5634     UNUSED(23);
5635 }
5636
5637 static void dpmsGetTimeouts(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
5638 {
5639 }
5640 static void dpmsGetTimeouts_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5641 {
5642     int sequence_number;
5643
5644     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTimeouts");
5645
5646     REPLY(reply);
5647     UNUSED(1);
5648     sequence_number = VALUE16(tvb, *offsetp);
5649     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5650             "%d (dpms-GetTimeouts)", sequence_number);
5651     *offsetp += 2;
5652     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5653     *offsetp += 4;
5654     proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_standby_timeout, tvb, *offsetp, 2, byte_order);
5655     *offsetp += 2;
5656     proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_suspend_timeout, tvb, *offsetp, 2, byte_order);
5657     *offsetp += 2;
5658     proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_off_timeout, tvb, *offsetp, 2, byte_order);
5659     *offsetp += 2;
5660     UNUSED(18);
5661 }
5662
5663 static void dpmsSetTimeouts(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5664 {
5665     proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_standby_timeout, tvb, *offsetp, 2, byte_order);
5666     *offsetp += 2;
5667     proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_suspend_timeout, tvb, *offsetp, 2, byte_order);
5668     *offsetp += 2;
5669     proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_off_timeout, tvb, *offsetp, 2, byte_order);
5670     *offsetp += 2;
5671 }
5672
5673 static void dpmsEnable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
5674 {
5675 }
5676
5677 static void dpmsDisable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
5678 {
5679 }
5680
5681 static void dpmsForceLevel(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5682 {
5683     field16(tvb, offsetp, t, hf_x11_dpms_ForceLevel_power_level, byte_order);
5684 }
5685
5686 static void dpmsInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
5687 {
5688 }
5689 static void dpmsInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5690 {
5691     int sequence_number;
5692
5693     col_append_fstr(pinfo->cinfo, COL_INFO, "-Info");
5694
5695     REPLY(reply);
5696     UNUSED(1);
5697     sequence_number = VALUE16(tvb, *offsetp);
5698     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5699             "%d (dpms-Info)", sequence_number);
5700     *offsetp += 2;
5701     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5702     *offsetp += 4;
5703     field16(tvb, offsetp, t, hf_x11_dpms_Info_reply_power_level, byte_order);
5704     proto_tree_add_item(t, hf_x11_dpms_Info_reply_state, tvb, *offsetp, 1, byte_order);
5705     *offsetp += 1;
5706     UNUSED(21);
5707 }
5708 static const value_string dpms_extension_minor[] = {
5709     { 0, "GetVersion" },
5710     { 1, "Capable" },
5711     { 2, "GetTimeouts" },
5712     { 3, "SetTimeouts" },
5713     { 4, "Enable" },
5714     { 5, "Disable" },
5715     { 6, "ForceLevel" },
5716     { 7, "Info" },
5717     { 0, NULL }
5718 };
5719 const x11_event_info dpms_events[] = {
5720     { NULL, NULL }
5721 };
5722 static x11_reply_info dpms_replies[] = {
5723     { 0, dpmsGetVersion_Reply },
5724     { 1, dpmsCapable_Reply },
5725     { 2, dpmsGetTimeouts_Reply },
5726     { 7, dpmsInfo_Reply },
5727     { 0, NULL }
5728 };
5729
5730 static void dispatch_dpms(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5731 {
5732     int minor, length;
5733     minor = CARD8(dpms_extension_minor);
5734     length = REQUEST_LENGTH();
5735
5736     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
5737                           val_to_str(minor, dpms_extension_minor,
5738                                      "<Unknown opcode %d>"));
5739     switch (minor) {
5740     case 0:
5741         dpmsGetVersion(tvb, pinfo, offsetp, t, byte_order, length);
5742         break;
5743     case 1:
5744         dpmsCapable(tvb, pinfo, offsetp, t, byte_order, length);
5745         break;
5746     case 2:
5747         dpmsGetTimeouts(tvb, pinfo, offsetp, t, byte_order, length);
5748         break;
5749     case 3:
5750         dpmsSetTimeouts(tvb, pinfo, offsetp, t, byte_order, length);
5751         break;
5752     case 4:
5753         dpmsEnable(tvb, pinfo, offsetp, t, byte_order, length);
5754         break;
5755     case 5:
5756         dpmsDisable(tvb, pinfo, offsetp, t, byte_order, length);
5757         break;
5758     case 6:
5759         dpmsForceLevel(tvb, pinfo, offsetp, t, byte_order, length);
5760         break;
5761     case 7:
5762         dpmsInfo(tvb, pinfo, offsetp, t, byte_order, length);
5763         break;
5764     /* No need for a default case here, since Unknown is printed above,
5765        and UNDECODED() is taken care of by dissect_x11_request */
5766     }
5767 }
5768
5769 static void register_dpms(void)
5770 {
5771     set_handler("DPMS", dispatch_dpms, dpms_errors, dpms_events, NULL, dpms_replies);
5772 }
5773
5774 static void struct_dri2_DRI2Buffer(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5775 {
5776     int i;
5777     for (i = 0; i < count; i++) {
5778         proto_item *item;
5779         proto_tree *t;
5780
5781         item = proto_tree_add_item(root, hf_x11_struct_dri2_DRI2Buffer, tvb, *offsetp, 20, ENC_NA);
5782         t = proto_item_add_subtree(item, ett_x11_rectangle);
5783         field32(tvb, offsetp, t, hf_x11_struct_dri2_DRI2Buffer_attachment, byte_order);
5784         proto_tree_add_item(t, hf_x11_struct_dri2_DRI2Buffer_name, tvb, *offsetp, 4, byte_order);
5785         *offsetp += 4;
5786         proto_tree_add_item(t, hf_x11_struct_dri2_DRI2Buffer_pitch, tvb, *offsetp, 4, byte_order);
5787         *offsetp += 4;
5788         proto_tree_add_item(t, hf_x11_struct_dri2_DRI2Buffer_cpp, tvb, *offsetp, 4, byte_order);
5789         *offsetp += 4;
5790         proto_tree_add_item(t, hf_x11_struct_dri2_DRI2Buffer_flags, tvb, *offsetp, 4, byte_order);
5791         *offsetp += 4;
5792     }
5793 }
5794
5795 static void struct_dri2_AttachFormat(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
5796 {
5797     int i;
5798     for (i = 0; i < count; i++) {
5799         proto_item *item;
5800         proto_tree *t;
5801
5802         item = proto_tree_add_item(root, hf_x11_struct_dri2_AttachFormat, tvb, *offsetp, 8, ENC_NA);
5803         t = proto_item_add_subtree(item, ett_x11_rectangle);
5804         field32(tvb, offsetp, t, hf_x11_struct_dri2_AttachFormat_attachment, byte_order);
5805         proto_tree_add_item(t, hf_x11_struct_dri2_AttachFormat_format, tvb, *offsetp, 4, byte_order);
5806         *offsetp += 4;
5807     }
5808 }
5809
5810 static void dri2QueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5811 {
5812     proto_tree_add_item(t, hf_x11_dri2_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
5813     *offsetp += 4;
5814     proto_tree_add_item(t, hf_x11_dri2_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
5815     *offsetp += 4;
5816 }
5817 static void dri2QueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5818 {
5819     int sequence_number;
5820
5821     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
5822
5823     REPLY(reply);
5824     UNUSED(1);
5825     sequence_number = VALUE16(tvb, *offsetp);
5826     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5827             "%d (dri2-QueryVersion)", sequence_number);
5828     *offsetp += 2;
5829     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5830     *offsetp += 4;
5831     proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
5832     *offsetp += 4;
5833     proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
5834     *offsetp += 4;
5835 }
5836
5837 static void dri2Connect(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5838 {
5839     proto_tree_add_item(t, hf_x11_dri2_Connect_window, tvb, *offsetp, 4, byte_order);
5840     *offsetp += 4;
5841     field32(tvb, offsetp, t, hf_x11_dri2_Connect_driver_type, byte_order);
5842 }
5843 static void dri2Connect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5844 {
5845     int sequence_number;
5846     int f_driver_name_length;
5847     int f_device_name_length;
5848
5849     col_append_fstr(pinfo->cinfo, COL_INFO, "-Connect");
5850
5851     REPLY(reply);
5852     UNUSED(1);
5853     sequence_number = VALUE16(tvb, *offsetp);
5854     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5855             "%d (dri2-Connect)", sequence_number);
5856     *offsetp += 2;
5857     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5858     *offsetp += 4;
5859     f_driver_name_length = VALUE32(tvb, *offsetp);
5860     proto_tree_add_item(t, hf_x11_dri2_Connect_reply_driver_name_length, tvb, *offsetp, 4, byte_order);
5861     *offsetp += 4;
5862     f_device_name_length = VALUE32(tvb, *offsetp);
5863     proto_tree_add_item(t, hf_x11_dri2_Connect_reply_device_name_length, tvb, *offsetp, 4, byte_order);
5864     *offsetp += 4;
5865     UNUSED(16);
5866     listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_driver_name, f_driver_name_length, byte_order);
5867     listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_alignment_pad, (((f_driver_name_length + 3) & (~3)) - f_driver_name_length), byte_order);
5868     listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_device_name, f_device_name_length, byte_order);
5869 }
5870
5871 static void dri2Authenticate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5872 {
5873     proto_tree_add_item(t, hf_x11_dri2_Authenticate_window, tvb, *offsetp, 4, byte_order);
5874     *offsetp += 4;
5875     proto_tree_add_item(t, hf_x11_dri2_Authenticate_magic, tvb, *offsetp, 4, byte_order);
5876     *offsetp += 4;
5877 }
5878 static void dri2Authenticate_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5879 {
5880     int sequence_number;
5881
5882     col_append_fstr(pinfo->cinfo, COL_INFO, "-Authenticate");
5883
5884     REPLY(reply);
5885     UNUSED(1);
5886     sequence_number = VALUE16(tvb, *offsetp);
5887     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5888             "%d (dri2-Authenticate)", sequence_number);
5889     *offsetp += 2;
5890     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5891     *offsetp += 4;
5892     proto_tree_add_item(t, hf_x11_dri2_Authenticate_reply_authenticated, tvb, *offsetp, 4, byte_order);
5893     *offsetp += 4;
5894 }
5895
5896 static void dri2CreateDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5897 {
5898     proto_tree_add_item(t, hf_x11_dri2_CreateDrawable_drawable, tvb, *offsetp, 4, byte_order);
5899     *offsetp += 4;
5900 }
5901
5902 static void dri2DestroyDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5903 {
5904     proto_tree_add_item(t, hf_x11_dri2_DestroyDrawable_drawable, tvb, *offsetp, 4, byte_order);
5905     *offsetp += 4;
5906 }
5907
5908 static void dri2GetBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5909 {
5910     proto_tree_add_item(t, hf_x11_dri2_GetBuffers_drawable, tvb, *offsetp, 4, byte_order);
5911     *offsetp += 4;
5912     proto_tree_add_item(t, hf_x11_dri2_GetBuffers_count, tvb, *offsetp, 4, byte_order);
5913     *offsetp += 4;
5914     listOfCard32(tvb, offsetp, t, hf_x11_dri2_GetBuffers_attachments, hf_x11_dri2_GetBuffers_attachments_item, (length - 12) / 4, byte_order);
5915 }
5916 static void dri2GetBuffers_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5917 {
5918     int sequence_number;
5919     int f_count;
5920
5921     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetBuffers");
5922
5923     REPLY(reply);
5924     UNUSED(1);
5925     sequence_number = VALUE16(tvb, *offsetp);
5926     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5927             "%d (dri2-GetBuffers)", sequence_number);
5928     *offsetp += 2;
5929     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5930     *offsetp += 4;
5931     proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_width, tvb, *offsetp, 4, byte_order);
5932     *offsetp += 4;
5933     proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_height, tvb, *offsetp, 4, byte_order);
5934     *offsetp += 4;
5935     f_count = VALUE32(tvb, *offsetp);
5936     proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_count, tvb, *offsetp, 4, byte_order);
5937     *offsetp += 4;
5938     UNUSED(12);
5939     struct_dri2_DRI2Buffer(tvb, offsetp, t, byte_order, f_count);
5940 }
5941
5942 static void dri2CopyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5943 {
5944     proto_tree_add_item(t, hf_x11_dri2_CopyRegion_drawable, tvb, *offsetp, 4, byte_order);
5945     *offsetp += 4;
5946     proto_tree_add_item(t, hf_x11_dri2_CopyRegion_region, tvb, *offsetp, 4, byte_order);
5947     *offsetp += 4;
5948     proto_tree_add_item(t, hf_x11_dri2_CopyRegion_dest, tvb, *offsetp, 4, byte_order);
5949     *offsetp += 4;
5950     proto_tree_add_item(t, hf_x11_dri2_CopyRegion_src, tvb, *offsetp, 4, byte_order);
5951     *offsetp += 4;
5952 }
5953 static void dri2CopyRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5954 {
5955     int sequence_number;
5956
5957     col_append_fstr(pinfo->cinfo, COL_INFO, "-CopyRegion");
5958
5959     REPLY(reply);
5960     UNUSED(1);
5961     sequence_number = VALUE16(tvb, *offsetp);
5962     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5963             "%d (dri2-CopyRegion)", sequence_number);
5964     *offsetp += 2;
5965     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5966     *offsetp += 4;
5967 }
5968
5969 static void dri2GetBuffersWithFormat(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
5970 {
5971     proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_drawable, tvb, *offsetp, 4, byte_order);
5972     *offsetp += 4;
5973     proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_count, tvb, *offsetp, 4, byte_order);
5974     *offsetp += 4;
5975     struct_dri2_AttachFormat(tvb, offsetp, t, byte_order, (length - 12) / 8);
5976 }
5977 static void dri2GetBuffersWithFormat_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
5978 {
5979     int sequence_number;
5980     int f_count;
5981
5982     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetBuffersWithFormat");
5983
5984     REPLY(reply);
5985     UNUSED(1);
5986     sequence_number = VALUE16(tvb, *offsetp);
5987     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
5988             "%d (dri2-GetBuffersWithFormat)", sequence_number);
5989     *offsetp += 2;
5990     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
5991     *offsetp += 4;
5992     proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_width, tvb, *offsetp, 4, byte_order);
5993     *offsetp += 4;
5994     proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_height, tvb, *offsetp, 4, byte_order);
5995     *offsetp += 4;
5996     f_count = VALUE32(tvb, *offsetp);
5997     proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_count, tvb, *offsetp, 4, byte_order);
5998     *offsetp += 4;
5999     UNUSED(12);
6000     struct_dri2_DRI2Buffer(tvb, offsetp, t, byte_order, f_count);
6001 }
6002
6003 static void dri2SwapBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6004 {
6005     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_drawable, tvb, *offsetp, 4, byte_order);
6006     *offsetp += 4;
6007     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_target_msc_hi, tvb, *offsetp, 4, byte_order);
6008     *offsetp += 4;
6009     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_target_msc_lo, tvb, *offsetp, 4, byte_order);
6010     *offsetp += 4;
6011     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_divisor_hi, tvb, *offsetp, 4, byte_order);
6012     *offsetp += 4;
6013     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_divisor_lo, tvb, *offsetp, 4, byte_order);
6014     *offsetp += 4;
6015     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_remainder_hi, tvb, *offsetp, 4, byte_order);
6016     *offsetp += 4;
6017     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_remainder_lo, tvb, *offsetp, 4, byte_order);
6018     *offsetp += 4;
6019 }
6020 static void dri2SwapBuffers_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6021 {
6022     int sequence_number;
6023
6024     col_append_fstr(pinfo->cinfo, COL_INFO, "-SwapBuffers");
6025
6026     REPLY(reply);
6027     UNUSED(1);
6028     sequence_number = VALUE16(tvb, *offsetp);
6029     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6030             "%d (dri2-SwapBuffers)", sequence_number);
6031     *offsetp += 2;
6032     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6033     *offsetp += 4;
6034     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_reply_swap_hi, tvb, *offsetp, 4, byte_order);
6035     *offsetp += 4;
6036     proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_reply_swap_lo, tvb, *offsetp, 4, byte_order);
6037     *offsetp += 4;
6038 }
6039
6040 static void dri2GetMSC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6041 {
6042     proto_tree_add_item(t, hf_x11_dri2_GetMSC_drawable, tvb, *offsetp, 4, byte_order);
6043     *offsetp += 4;
6044 }
6045 static void dri2GetMSC_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6046 {
6047     int sequence_number;
6048
6049     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMSC");
6050
6051     REPLY(reply);
6052     UNUSED(1);
6053     sequence_number = VALUE16(tvb, *offsetp);
6054     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6055             "%d (dri2-GetMSC)", sequence_number);
6056     *offsetp += 2;
6057     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6058     *offsetp += 4;
6059     proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_ust_hi, tvb, *offsetp, 4, byte_order);
6060     *offsetp += 4;
6061     proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_ust_lo, tvb, *offsetp, 4, byte_order);
6062     *offsetp += 4;
6063     proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_msc_hi, tvb, *offsetp, 4, byte_order);
6064     *offsetp += 4;
6065     proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_msc_lo, tvb, *offsetp, 4, byte_order);
6066     *offsetp += 4;
6067     proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_sbc_hi, tvb, *offsetp, 4, byte_order);
6068     *offsetp += 4;
6069     proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_sbc_lo, tvb, *offsetp, 4, byte_order);
6070     *offsetp += 4;
6071 }
6072
6073 static void dri2WaitMSC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6074 {
6075     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_drawable, tvb, *offsetp, 4, byte_order);
6076     *offsetp += 4;
6077     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_target_msc_hi, tvb, *offsetp, 4, byte_order);
6078     *offsetp += 4;
6079     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_target_msc_lo, tvb, *offsetp, 4, byte_order);
6080     *offsetp += 4;
6081     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_divisor_hi, tvb, *offsetp, 4, byte_order);
6082     *offsetp += 4;
6083     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_divisor_lo, tvb, *offsetp, 4, byte_order);
6084     *offsetp += 4;
6085     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_remainder_hi, tvb, *offsetp, 4, byte_order);
6086     *offsetp += 4;
6087     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_remainder_lo, tvb, *offsetp, 4, byte_order);
6088     *offsetp += 4;
6089 }
6090 static void dri2WaitMSC_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6091 {
6092     int sequence_number;
6093
6094     col_append_fstr(pinfo->cinfo, COL_INFO, "-WaitMSC");
6095
6096     REPLY(reply);
6097     UNUSED(1);
6098     sequence_number = VALUE16(tvb, *offsetp);
6099     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6100             "%d (dri2-WaitMSC)", sequence_number);
6101     *offsetp += 2;
6102     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6103     *offsetp += 4;
6104     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_ust_hi, tvb, *offsetp, 4, byte_order);
6105     *offsetp += 4;
6106     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_ust_lo, tvb, *offsetp, 4, byte_order);
6107     *offsetp += 4;
6108     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_msc_hi, tvb, *offsetp, 4, byte_order);
6109     *offsetp += 4;
6110     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_msc_lo, tvb, *offsetp, 4, byte_order);
6111     *offsetp += 4;
6112     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_sbc_hi, tvb, *offsetp, 4, byte_order);
6113     *offsetp += 4;
6114     proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_sbc_lo, tvb, *offsetp, 4, byte_order);
6115     *offsetp += 4;
6116 }
6117
6118 static void dri2WaitSBC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6119 {
6120     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_drawable, tvb, *offsetp, 4, byte_order);
6121     *offsetp += 4;
6122     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_target_sbc_hi, tvb, *offsetp, 4, byte_order);
6123     *offsetp += 4;
6124     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_target_sbc_lo, tvb, *offsetp, 4, byte_order);
6125     *offsetp += 4;
6126 }
6127 static void dri2WaitSBC_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6128 {
6129     int sequence_number;
6130
6131     col_append_fstr(pinfo->cinfo, COL_INFO, "-WaitSBC");
6132
6133     REPLY(reply);
6134     UNUSED(1);
6135     sequence_number = VALUE16(tvb, *offsetp);
6136     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6137             "%d (dri2-WaitSBC)", sequence_number);
6138     *offsetp += 2;
6139     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6140     *offsetp += 4;
6141     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_ust_hi, tvb, *offsetp, 4, byte_order);
6142     *offsetp += 4;
6143     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_ust_lo, tvb, *offsetp, 4, byte_order);
6144     *offsetp += 4;
6145     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_msc_hi, tvb, *offsetp, 4, byte_order);
6146     *offsetp += 4;
6147     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_msc_lo, tvb, *offsetp, 4, byte_order);
6148     *offsetp += 4;
6149     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_sbc_hi, tvb, *offsetp, 4, byte_order);
6150     *offsetp += 4;
6151     proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_sbc_lo, tvb, *offsetp, 4, byte_order);
6152     *offsetp += 4;
6153 }
6154
6155 static void dri2SwapInterval(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6156 {
6157     proto_tree_add_item(t, hf_x11_dri2_SwapInterval_drawable, tvb, *offsetp, 4, byte_order);
6158     *offsetp += 4;
6159     proto_tree_add_item(t, hf_x11_dri2_SwapInterval_interval, tvb, *offsetp, 4, byte_order);
6160     *offsetp += 4;
6161 }
6162
6163 static void dri2GetParam(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6164 {
6165     proto_tree_add_item(t, hf_x11_dri2_GetParam_drawable, tvb, *offsetp, 4, byte_order);
6166     *offsetp += 4;
6167     proto_tree_add_item(t, hf_x11_dri2_GetParam_param, tvb, *offsetp, 4, byte_order);
6168     *offsetp += 4;
6169 }
6170 static void dri2GetParam_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6171 {
6172     int sequence_number;
6173
6174     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetParam");
6175
6176     REPLY(reply);
6177     proto_tree_add_item(t, hf_x11_dri2_GetParam_reply_is_param_recognized, tvb, *offsetp, 1, byte_order);
6178     *offsetp += 1;
6179     sequence_number = VALUE16(tvb, *offsetp);
6180     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6181             "%d (dri2-GetParam)", sequence_number);
6182     *offsetp += 2;
6183     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6184     *offsetp += 4;
6185     proto_tree_add_item(t, hf_x11_dri2_GetParam_reply_value_hi, tvb, *offsetp, 4, byte_order);
6186     *offsetp += 4;
6187     proto_tree_add_item(t, hf_x11_dri2_GetParam_reply_value_lo, tvb, *offsetp, 4, byte_order);
6188     *offsetp += 4;
6189 }
6190
6191 static void dri2InvalidateBuffers(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
6192 {
6193     UNUSED(1);
6194     CARD16(event_sequencenumber);
6195     proto_tree_add_item(t, hf_x11_dri2_InvalidateBuffers_drawable, tvb, *offsetp, 4, byte_order);
6196     *offsetp += 4;
6197 }
6198
6199 static const value_string dri2_extension_minor[] = {
6200     { 0, "QueryVersion" },
6201     { 1, "Connect" },
6202     { 2, "Authenticate" },
6203     { 3, "CreateDrawable" },
6204     { 4, "DestroyDrawable" },
6205     { 5, "GetBuffers" },
6206     { 6, "CopyRegion" },
6207     { 7, "GetBuffersWithFormat" },
6208     { 8, "SwapBuffers" },
6209     { 9, "GetMSC" },
6210     { 10, "WaitMSC" },
6211     { 11, "WaitSBC" },
6212     { 12, "SwapInterval" },
6213     { 13, "GetParam" },
6214     { 0, NULL }
6215 };
6216 const x11_event_info dri2_events[] = {
6217     { "dri2-InvalidateBuffers", dri2InvalidateBuffers },
6218     { NULL, NULL }
6219 };
6220 static x11_reply_info dri2_replies[] = {
6221     { 0, dri2QueryVersion_Reply },
6222     { 1, dri2Connect_Reply },
6223     { 2, dri2Authenticate_Reply },
6224     { 5, dri2GetBuffers_Reply },
6225     { 6, dri2CopyRegion_Reply },
6226     { 7, dri2GetBuffersWithFormat_Reply },
6227     { 8, dri2SwapBuffers_Reply },
6228     { 9, dri2GetMSC_Reply },
6229     { 10, dri2WaitMSC_Reply },
6230     { 11, dri2WaitSBC_Reply },
6231     { 13, dri2GetParam_Reply },
6232     { 0, NULL }
6233 };
6234
6235 static void dispatch_dri2(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6236 {
6237     int minor, length;
6238     minor = CARD8(dri2_extension_minor);
6239     length = REQUEST_LENGTH();
6240
6241     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
6242                           val_to_str(minor, dri2_extension_minor,
6243                                      "<Unknown opcode %d>"));
6244     switch (minor) {
6245     case 0:
6246         dri2QueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
6247         break;
6248     case 1:
6249         dri2Connect(tvb, pinfo, offsetp, t, byte_order, length);
6250         break;
6251     case 2:
6252         dri2Authenticate(tvb, pinfo, offsetp, t, byte_order, length);
6253         break;
6254     case 3:
6255         dri2CreateDrawable(tvb, pinfo, offsetp, t, byte_order, length);
6256         break;
6257     case 4:
6258         dri2DestroyDrawable(tvb, pinfo, offsetp, t, byte_order, length);
6259         break;
6260     case 5:
6261         dri2GetBuffers(tvb, pinfo, offsetp, t, byte_order, length);
6262         break;
6263     case 6:
6264         dri2CopyRegion(tvb, pinfo, offsetp, t, byte_order, length);
6265         break;
6266     case 7:
6267         dri2GetBuffersWithFormat(tvb, pinfo, offsetp, t, byte_order, length);
6268         break;
6269     case 8:
6270         dri2SwapBuffers(tvb, pinfo, offsetp, t, byte_order, length);
6271         break;
6272     case 9:
6273         dri2GetMSC(tvb, pinfo, offsetp, t, byte_order, length);
6274         break;
6275     case 10:
6276         dri2WaitMSC(tvb, pinfo, offsetp, t, byte_order, length);
6277         break;
6278     case 11:
6279         dri2WaitSBC(tvb, pinfo, offsetp, t, byte_order, length);
6280         break;
6281     case 12:
6282         dri2SwapInterval(tvb, pinfo, offsetp, t, byte_order, length);
6283         break;
6284     case 13:
6285         dri2GetParam(tvb, pinfo, offsetp, t, byte_order, length);
6286         break;
6287     /* No need for a default case here, since Unknown is printed above,
6288        and UNDECODED() is taken care of by dissect_x11_request */
6289     }
6290 }
6291
6292 static void register_dri2(void)
6293 {
6294     set_handler("DRI2", dispatch_dri2, dri2_errors, dri2_events, NULL, dri2_replies);
6295 }
6296
6297 static void dri3QueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6298 {
6299     proto_tree_add_item(t, hf_x11_dri3_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
6300     *offsetp += 4;
6301     proto_tree_add_item(t, hf_x11_dri3_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
6302     *offsetp += 4;
6303 }
6304 static void dri3QueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6305 {
6306     int sequence_number;
6307
6308     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
6309
6310     REPLY(reply);
6311     UNUSED(1);
6312     sequence_number = VALUE16(tvb, *offsetp);
6313     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6314             "%d (dri3-QueryVersion)", sequence_number);
6315     *offsetp += 2;
6316     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6317     *offsetp += 4;
6318     proto_tree_add_item(t, hf_x11_dri3_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
6319     *offsetp += 4;
6320     proto_tree_add_item(t, hf_x11_dri3_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
6321     *offsetp += 4;
6322 }
6323
6324 static void dri3Open(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6325 {
6326     proto_tree_add_item(t, hf_x11_dri3_Open_drawable, tvb, *offsetp, 4, byte_order);
6327     *offsetp += 4;
6328     proto_tree_add_item(t, hf_x11_dri3_Open_provider, tvb, *offsetp, 4, byte_order);
6329     *offsetp += 4;
6330 }
6331 static void dri3Open_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6332 {
6333     int sequence_number;
6334
6335     col_append_fstr(pinfo->cinfo, COL_INFO, "-Open");
6336
6337     REPLY(reply);
6338     proto_tree_add_item(t, hf_x11_dri3_Open_reply_nfd, tvb, *offsetp, 1, byte_order);
6339     *offsetp += 1;
6340     sequence_number = VALUE16(tvb, *offsetp);
6341     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6342             "%d (dri3-Open)", sequence_number);
6343     *offsetp += 2;
6344     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6345     *offsetp += 4;
6346     UNUSED(24);
6347 }
6348
6349 static void dri3PixmapFromBuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6350 {
6351     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_pixmap, tvb, *offsetp, 4, byte_order);
6352     *offsetp += 4;
6353     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_drawable, tvb, *offsetp, 4, byte_order);
6354     *offsetp += 4;
6355     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_size, tvb, *offsetp, 4, byte_order);
6356     *offsetp += 4;
6357     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_width, tvb, *offsetp, 2, byte_order);
6358     *offsetp += 2;
6359     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_height, tvb, *offsetp, 2, byte_order);
6360     *offsetp += 2;
6361     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_stride, tvb, *offsetp, 2, byte_order);
6362     *offsetp += 2;
6363     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_depth, tvb, *offsetp, 1, byte_order);
6364     *offsetp += 1;
6365     proto_tree_add_item(t, hf_x11_dri3_PixmapFromBuffer_bpp, tvb, *offsetp, 1, byte_order);
6366     *offsetp += 1;
6367 }
6368
6369 static void dri3BufferFromPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6370 {
6371     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_pixmap, tvb, *offsetp, 4, byte_order);
6372     *offsetp += 4;
6373 }
6374 static void dri3BufferFromPixmap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6375 {
6376     int sequence_number;
6377
6378     col_append_fstr(pinfo->cinfo, COL_INFO, "-BufferFromPixmap");
6379
6380     REPLY(reply);
6381     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_reply_nfd, tvb, *offsetp, 1, byte_order);
6382     *offsetp += 1;
6383     sequence_number = VALUE16(tvb, *offsetp);
6384     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6385             "%d (dri3-BufferFromPixmap)", sequence_number);
6386     *offsetp += 2;
6387     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6388     *offsetp += 4;
6389     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_reply_size, tvb, *offsetp, 4, byte_order);
6390     *offsetp += 4;
6391     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_reply_width, tvb, *offsetp, 2, byte_order);
6392     *offsetp += 2;
6393     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_reply_height, tvb, *offsetp, 2, byte_order);
6394     *offsetp += 2;
6395     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_reply_stride, tvb, *offsetp, 2, byte_order);
6396     *offsetp += 2;
6397     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_reply_depth, tvb, *offsetp, 1, byte_order);
6398     *offsetp += 1;
6399     proto_tree_add_item(t, hf_x11_dri3_BufferFromPixmap_reply_bpp, tvb, *offsetp, 1, byte_order);
6400     *offsetp += 1;
6401     UNUSED(12);
6402 }
6403
6404 static void dri3FenceFromFD(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6405 {
6406     proto_tree_add_item(t, hf_x11_dri3_FenceFromFD_drawable, tvb, *offsetp, 4, byte_order);
6407     *offsetp += 4;
6408     proto_tree_add_item(t, hf_x11_dri3_FenceFromFD_fence, tvb, *offsetp, 4, byte_order);
6409     *offsetp += 4;
6410     proto_tree_add_item(t, hf_x11_dri3_FenceFromFD_initially_triggered, tvb, *offsetp, 1, byte_order);
6411     *offsetp += 1;
6412     UNUSED(3);
6413 }
6414
6415 static void dri3FDFromFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6416 {
6417     proto_tree_add_item(t, hf_x11_dri3_FDFromFence_drawable, tvb, *offsetp, 4, byte_order);
6418     *offsetp += 4;
6419     proto_tree_add_item(t, hf_x11_dri3_FDFromFence_fence, tvb, *offsetp, 4, byte_order);
6420     *offsetp += 4;
6421 }
6422 static void dri3FDFromFence_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6423 {
6424     int sequence_number;
6425
6426     col_append_fstr(pinfo->cinfo, COL_INFO, "-FDFromFence");
6427
6428     REPLY(reply);
6429     proto_tree_add_item(t, hf_x11_dri3_FDFromFence_reply_nfd, tvb, *offsetp, 1, byte_order);
6430     *offsetp += 1;
6431     sequence_number = VALUE16(tvb, *offsetp);
6432     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6433             "%d (dri3-FDFromFence)", sequence_number);
6434     *offsetp += 2;
6435     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6436     *offsetp += 4;
6437     UNUSED(24);
6438 }
6439 static const value_string dri3_extension_minor[] = {
6440     { 0, "QueryVersion" },
6441     { 1, "Open" },
6442     { 2, "PixmapFromBuffer" },
6443     { 3, "BufferFromPixmap" },
6444     { 4, "FenceFromFD" },
6445     { 5, "FDFromFence" },
6446     { 0, NULL }
6447 };
6448 const x11_event_info dri3_events[] = {
6449     { NULL, NULL }
6450 };
6451 static x11_reply_info dri3_replies[] = {
6452     { 0, dri3QueryVersion_Reply },
6453     { 1, dri3Open_Reply },
6454     { 3, dri3BufferFromPixmap_Reply },
6455     { 5, dri3FDFromFence_Reply },
6456     { 0, NULL }
6457 };
6458
6459 static void dispatch_dri3(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6460 {
6461     int minor, length;
6462     minor = CARD8(dri3_extension_minor);
6463     length = REQUEST_LENGTH();
6464
6465     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
6466                           val_to_str(minor, dri3_extension_minor,
6467                                      "<Unknown opcode %d>"));
6468     switch (minor) {
6469     case 0:
6470         dri3QueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
6471         break;
6472     case 1:
6473         dri3Open(tvb, pinfo, offsetp, t, byte_order, length);
6474         break;
6475     case 2:
6476         dri3PixmapFromBuffer(tvb, pinfo, offsetp, t, byte_order, length);
6477         break;
6478     case 3:
6479         dri3BufferFromPixmap(tvb, pinfo, offsetp, t, byte_order, length);
6480         break;
6481     case 4:
6482         dri3FenceFromFD(tvb, pinfo, offsetp, t, byte_order, length);
6483         break;
6484     case 5:
6485         dri3FDFromFence(tvb, pinfo, offsetp, t, byte_order, length);
6486         break;
6487     /* No need for a default case here, since Unknown is printed above,
6488        and UNDECODED() is taken care of by dissect_x11_request */
6489     }
6490 }
6491
6492 static void register_dri3(void)
6493 {
6494     set_handler("DRI3", dispatch_dri3, dri3_errors, dri3_events, NULL, dri3_replies);
6495 }
6496
6497 static void geQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6498 {
6499     proto_tree_add_item(t, hf_x11_ge_QueryVersion_client_major_version, tvb, *offsetp, 2, byte_order);
6500     *offsetp += 2;
6501     proto_tree_add_item(t, hf_x11_ge_QueryVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
6502     *offsetp += 2;
6503 }
6504 static void geQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6505 {
6506     int sequence_number;
6507
6508     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
6509
6510     REPLY(reply);
6511     UNUSED(1);
6512     sequence_number = VALUE16(tvb, *offsetp);
6513     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6514             "%d (ge-QueryVersion)", sequence_number);
6515     *offsetp += 2;
6516     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6517     *offsetp += 4;
6518     proto_tree_add_item(t, hf_x11_ge_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
6519     *offsetp += 2;
6520     proto_tree_add_item(t, hf_x11_ge_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
6521     *offsetp += 2;
6522     UNUSED(20);
6523 }
6524 static const value_string ge_extension_minor[] = {
6525     { 0, "QueryVersion" },
6526     { 0, NULL }
6527 };
6528 const x11_event_info ge_events[] = {
6529     { NULL, NULL }
6530 };
6531 static x11_reply_info ge_replies[] = {
6532     { 0, geQueryVersion_Reply },
6533     { 0, NULL }
6534 };
6535
6536 static void dispatch_ge(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6537 {
6538     int minor, length;
6539     minor = CARD8(ge_extension_minor);
6540     length = REQUEST_LENGTH();
6541
6542     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
6543                           val_to_str(minor, ge_extension_minor,
6544                                      "<Unknown opcode %d>"));
6545     switch (minor) {
6546     case 0:
6547         geQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
6548         break;
6549     /* No need for a default case here, since Unknown is printed above,
6550        and UNDECODED() is taken care of by dissect_x11_request */
6551     }
6552 }
6553
6554 static void register_ge(void)
6555 {
6556     set_handler("Generic Event Extension", dispatch_ge, ge_errors, ge_events, NULL, ge_replies);
6557 }
6558
6559 static void glxBufferSwapComplete(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
6560 {
6561     UNUSED(1);
6562     CARD16(event_sequencenumber);
6563     proto_tree_add_item(t, hf_x11_glx_BufferSwapComplete_event_type, tvb, *offsetp, 2, byte_order);
6564     *offsetp += 2;
6565     UNUSED(2);
6566     proto_tree_add_item(t, hf_x11_glx_BufferSwapComplete_drawable, tvb, *offsetp, 4, byte_order);
6567     *offsetp += 4;
6568     proto_tree_add_item(t, hf_x11_glx_BufferSwapComplete_ust_hi, tvb, *offsetp, 4, byte_order);
6569     *offsetp += 4;
6570     proto_tree_add_item(t, hf_x11_glx_BufferSwapComplete_ust_lo, tvb, *offsetp, 4, byte_order);
6571     *offsetp += 4;
6572     proto_tree_add_item(t, hf_x11_glx_BufferSwapComplete_msc_hi, tvb, *offsetp, 4, byte_order);
6573     *offsetp += 4;
6574     proto_tree_add_item(t, hf_x11_glx_BufferSwapComplete_msc_lo, tvb, *offsetp, 4, byte_order);
6575     *offsetp += 4;
6576     proto_tree_add_item(t, hf_x11_glx_BufferSwapComplete_sbc, tvb, *offsetp, 4, byte_order);
6577     *offsetp += 4;
6578 }
6579
6580
6581 static void glxRender(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6582 {
6583     proto_tree_add_item(t, hf_x11_glx_Render_context_tag, tvb, *offsetp, 4, byte_order);
6584     *offsetp += 4;
6585     dispatch_glx_render(tvb, pinfo, offsetp, t, byte_order, (length - 8));
6586 }
6587
6588 static void glxRenderLarge(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6589 {
6590     int f_data_len;
6591     proto_tree_add_item(t, hf_x11_glx_RenderLarge_context_tag, tvb, *offsetp, 4, byte_order);
6592     *offsetp += 4;
6593     proto_tree_add_item(t, hf_x11_glx_RenderLarge_request_num, tvb, *offsetp, 2, byte_order);
6594     *offsetp += 2;
6595     proto_tree_add_item(t, hf_x11_glx_RenderLarge_request_total, tvb, *offsetp, 2, byte_order);
6596     *offsetp += 2;
6597     f_data_len = VALUE32(tvb, *offsetp);
6598     proto_tree_add_item(t, hf_x11_glx_RenderLarge_data_len, tvb, *offsetp, 4, byte_order);
6599     *offsetp += 4;
6600     listOfByte(tvb, offsetp, t, hf_x11_glx_RenderLarge_data, f_data_len, byte_order);
6601     length -= f_data_len * 1;
6602 }
6603
6604 static void glxCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6605 {
6606     proto_tree_add_item(t, hf_x11_glx_CreateContext_context, tvb, *offsetp, 4, byte_order);
6607     *offsetp += 4;
6608     proto_tree_add_item(t, hf_x11_glx_CreateContext_visual, tvb, *offsetp, 4, byte_order);
6609     *offsetp += 4;
6610     proto_tree_add_item(t, hf_x11_glx_CreateContext_screen, tvb, *offsetp, 4, byte_order);
6611     *offsetp += 4;
6612     proto_tree_add_item(t, hf_x11_glx_CreateContext_share_list, tvb, *offsetp, 4, byte_order);
6613     *offsetp += 4;
6614     proto_tree_add_item(t, hf_x11_glx_CreateContext_is_direct, tvb, *offsetp, 1, byte_order);
6615     *offsetp += 1;
6616     UNUSED(3);
6617 }
6618
6619 static void glxDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6620 {
6621     proto_tree_add_item(t, hf_x11_glx_DestroyContext_context, tvb, *offsetp, 4, byte_order);
6622     *offsetp += 4;
6623 }
6624
6625 static void glxMakeCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6626 {
6627     proto_tree_add_item(t, hf_x11_glx_MakeCurrent_drawable, tvb, *offsetp, 4, byte_order);
6628     *offsetp += 4;
6629     proto_tree_add_item(t, hf_x11_glx_MakeCurrent_context, tvb, *offsetp, 4, byte_order);
6630     *offsetp += 4;
6631     proto_tree_add_item(t, hf_x11_glx_MakeCurrent_old_context_tag, tvb, *offsetp, 4, byte_order);
6632     *offsetp += 4;
6633 }
6634 static void glxMakeCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6635 {
6636     int sequence_number;
6637
6638     col_append_fstr(pinfo->cinfo, COL_INFO, "-MakeCurrent");
6639
6640     REPLY(reply);
6641     UNUSED(1);
6642     sequence_number = VALUE16(tvb, *offsetp);
6643     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6644             "%d (glx-MakeCurrent)", sequence_number);
6645     *offsetp += 2;
6646     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6647     *offsetp += 4;
6648     proto_tree_add_item(t, hf_x11_glx_MakeCurrent_reply_context_tag, tvb, *offsetp, 4, byte_order);
6649     *offsetp += 4;
6650     UNUSED(20);
6651 }
6652
6653 static void glxIsDirect(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6654 {
6655     proto_tree_add_item(t, hf_x11_glx_IsDirect_context, tvb, *offsetp, 4, byte_order);
6656     *offsetp += 4;
6657 }
6658 static void glxIsDirect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6659 {
6660     int sequence_number;
6661
6662     col_append_fstr(pinfo->cinfo, COL_INFO, "-IsDirect");
6663
6664     REPLY(reply);
6665     UNUSED(1);
6666     sequence_number = VALUE16(tvb, *offsetp);
6667     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6668             "%d (glx-IsDirect)", sequence_number);
6669     *offsetp += 2;
6670     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6671     *offsetp += 4;
6672     proto_tree_add_item(t, hf_x11_glx_IsDirect_reply_is_direct, tvb, *offsetp, 1, byte_order);
6673     *offsetp += 1;
6674     UNUSED(23);
6675 }
6676
6677 static void glxQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6678 {
6679     proto_tree_add_item(t, hf_x11_glx_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
6680     *offsetp += 4;
6681     proto_tree_add_item(t, hf_x11_glx_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
6682     *offsetp += 4;
6683 }
6684 static void glxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6685 {
6686     int sequence_number;
6687
6688     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
6689
6690     REPLY(reply);
6691     UNUSED(1);
6692     sequence_number = VALUE16(tvb, *offsetp);
6693     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6694             "%d (glx-QueryVersion)", sequence_number);
6695     *offsetp += 2;
6696     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6697     *offsetp += 4;
6698     proto_tree_add_item(t, hf_x11_glx_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
6699     *offsetp += 4;
6700     proto_tree_add_item(t, hf_x11_glx_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
6701     *offsetp += 4;
6702     UNUSED(16);
6703 }
6704
6705 static void glxWaitGL(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6706 {
6707     proto_tree_add_item(t, hf_x11_glx_WaitGL_context_tag, tvb, *offsetp, 4, byte_order);
6708     *offsetp += 4;
6709 }
6710
6711 static void glxWaitX(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6712 {
6713     proto_tree_add_item(t, hf_x11_glx_WaitX_context_tag, tvb, *offsetp, 4, byte_order);
6714     *offsetp += 4;
6715 }
6716
6717 static void glxCopyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6718 {
6719     proto_tree_add_item(t, hf_x11_glx_CopyContext_src, tvb, *offsetp, 4, byte_order);
6720     *offsetp += 4;
6721     proto_tree_add_item(t, hf_x11_glx_CopyContext_dest, tvb, *offsetp, 4, byte_order);
6722     *offsetp += 4;
6723     proto_tree_add_item(t, hf_x11_glx_CopyContext_mask, tvb, *offsetp, 4, byte_order);
6724     *offsetp += 4;
6725     proto_tree_add_item(t, hf_x11_glx_CopyContext_src_context_tag, tvb, *offsetp, 4, byte_order);
6726     *offsetp += 4;
6727 }
6728
6729 static void glxSwapBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6730 {
6731     proto_tree_add_item(t, hf_x11_glx_SwapBuffers_context_tag, tvb, *offsetp, 4, byte_order);
6732     *offsetp += 4;
6733     proto_tree_add_item(t, hf_x11_glx_SwapBuffers_drawable, tvb, *offsetp, 4, byte_order);
6734     *offsetp += 4;
6735 }
6736
6737 static void glxUseXFont(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6738 {
6739     proto_tree_add_item(t, hf_x11_glx_UseXFont_context_tag, tvb, *offsetp, 4, byte_order);
6740     *offsetp += 4;
6741     proto_tree_add_item(t, hf_x11_glx_UseXFont_font, tvb, *offsetp, 4, byte_order);
6742     *offsetp += 4;
6743     proto_tree_add_item(t, hf_x11_glx_UseXFont_first, tvb, *offsetp, 4, byte_order);
6744     *offsetp += 4;
6745     proto_tree_add_item(t, hf_x11_glx_UseXFont_count, tvb, *offsetp, 4, byte_order);
6746     *offsetp += 4;
6747     proto_tree_add_item(t, hf_x11_glx_UseXFont_list_base, tvb, *offsetp, 4, byte_order);
6748     *offsetp += 4;
6749 }
6750
6751 static void glxCreateGLXPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6752 {
6753     proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_screen, tvb, *offsetp, 4, byte_order);
6754     *offsetp += 4;
6755     proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_visual, tvb, *offsetp, 4, byte_order);
6756     *offsetp += 4;
6757     proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_pixmap, tvb, *offsetp, 4, byte_order);
6758     *offsetp += 4;
6759     proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
6760     *offsetp += 4;
6761 }
6762
6763 static void glxGetVisualConfigs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6764 {
6765     proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_screen, tvb, *offsetp, 4, byte_order);
6766     *offsetp += 4;
6767 }
6768 static void glxGetVisualConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6769 {
6770     int sequence_number;
6771     int f_length;
6772
6773     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetVisualConfigs");
6774
6775     REPLY(reply);
6776     UNUSED(1);
6777     sequence_number = VALUE16(tvb, *offsetp);
6778     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6779             "%d (glx-GetVisualConfigs)", sequence_number);
6780     *offsetp += 2;
6781     f_length = VALUE32(tvb, *offsetp);
6782     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6783     *offsetp += 4;
6784     proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_reply_num_visuals, tvb, *offsetp, 4, byte_order);
6785     *offsetp += 4;
6786     proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_reply_num_properties, tvb, *offsetp, 4, byte_order);
6787     *offsetp += 4;
6788     UNUSED(16);
6789     listOfCard32(tvb, offsetp, t, hf_x11_glx_GetVisualConfigs_reply_property_list, hf_x11_glx_GetVisualConfigs_reply_property_list_item, f_length, byte_order);
6790 }
6791
6792 static void glxDestroyGLXPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6793 {
6794     proto_tree_add_item(t, hf_x11_glx_DestroyGLXPixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
6795     *offsetp += 4;
6796 }
6797
6798 static void glxVendorPrivate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6799 {
6800     proto_tree_add_item(t, hf_x11_glx_VendorPrivate_vendor_code, tvb, *offsetp, 4, byte_order);
6801     *offsetp += 4;
6802     proto_tree_add_item(t, hf_x11_glx_VendorPrivate_context_tag, tvb, *offsetp, 4, byte_order);
6803     *offsetp += 4;
6804     listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivate_data, (length - 12) / 1, byte_order);
6805 }
6806
6807 static void glxVendorPrivateWithReply(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6808 {
6809     proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_vendor_code, tvb, *offsetp, 4, byte_order);
6810     *offsetp += 4;
6811     proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_context_tag, tvb, *offsetp, 4, byte_order);
6812     *offsetp += 4;
6813     listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_data, (length - 12) / 1, byte_order);
6814 }
6815 static void glxVendorPrivateWithReply_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6816 {
6817     int sequence_number;
6818     int f_length;
6819
6820     col_append_fstr(pinfo->cinfo, COL_INFO, "-VendorPrivateWithReply");
6821
6822     REPLY(reply);
6823     UNUSED(1);
6824     sequence_number = VALUE16(tvb, *offsetp);
6825     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6826             "%d (glx-VendorPrivateWithReply)", sequence_number);
6827     *offsetp += 2;
6828     f_length = VALUE32(tvb, *offsetp);
6829     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6830     *offsetp += 4;
6831     proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_reply_retval, tvb, *offsetp, 4, byte_order);
6832     *offsetp += 4;
6833     listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_reply_data1, 24, byte_order);
6834     listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_reply_data2, (f_length * 4), byte_order);
6835 }
6836
6837 static void glxQueryExtensionsString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6838 {
6839     proto_tree_add_item(t, hf_x11_glx_QueryExtensionsString_screen, tvb, *offsetp, 4, byte_order);
6840     *offsetp += 4;
6841 }
6842 static void glxQueryExtensionsString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6843 {
6844     int sequence_number;
6845
6846     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryExtensionsString");
6847
6848     REPLY(reply);
6849     UNUSED(1);
6850     sequence_number = VALUE16(tvb, *offsetp);
6851     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6852             "%d (glx-QueryExtensionsString)", sequence_number);
6853     *offsetp += 2;
6854     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6855     *offsetp += 4;
6856     UNUSED(4);
6857     proto_tree_add_item(t, hf_x11_glx_QueryExtensionsString_reply_n, tvb, *offsetp, 4, byte_order);
6858     *offsetp += 4;
6859     UNUSED(16);
6860 }
6861
6862 static void glxQueryServerString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6863 {
6864     proto_tree_add_item(t, hf_x11_glx_QueryServerString_screen, tvb, *offsetp, 4, byte_order);
6865     *offsetp += 4;
6866     proto_tree_add_item(t, hf_x11_glx_QueryServerString_name, tvb, *offsetp, 4, byte_order);
6867     *offsetp += 4;
6868 }
6869 static void glxQueryServerString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6870 {
6871     int sequence_number;
6872     int f_str_len;
6873
6874     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryServerString");
6875
6876     REPLY(reply);
6877     UNUSED(1);
6878     sequence_number = VALUE16(tvb, *offsetp);
6879     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6880             "%d (glx-QueryServerString)", sequence_number);
6881     *offsetp += 2;
6882     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6883     *offsetp += 4;
6884     UNUSED(4);
6885     f_str_len = VALUE32(tvb, *offsetp);
6886     proto_tree_add_item(t, hf_x11_glx_QueryServerString_reply_str_len, tvb, *offsetp, 4, byte_order);
6887     *offsetp += 4;
6888     UNUSED(16);
6889     listOfByte(tvb, offsetp, t, hf_x11_glx_QueryServerString_reply_string, f_str_len, byte_order);
6890 }
6891
6892 static void glxClientInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6893 {
6894     int f_str_len;
6895     proto_tree_add_item(t, hf_x11_glx_ClientInfo_major_version, tvb, *offsetp, 4, byte_order);
6896     *offsetp += 4;
6897     proto_tree_add_item(t, hf_x11_glx_ClientInfo_minor_version, tvb, *offsetp, 4, byte_order);
6898     *offsetp += 4;
6899     f_str_len = VALUE32(tvb, *offsetp);
6900     proto_tree_add_item(t, hf_x11_glx_ClientInfo_str_len, tvb, *offsetp, 4, byte_order);
6901     *offsetp += 4;
6902     listOfByte(tvb, offsetp, t, hf_x11_glx_ClientInfo_string, f_str_len, byte_order);
6903     length -= f_str_len * 1;
6904 }
6905
6906 static void glxGetFBConfigs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6907 {
6908     proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_screen, tvb, *offsetp, 4, byte_order);
6909     *offsetp += 4;
6910 }
6911 static void glxGetFBConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6912 {
6913     int sequence_number;
6914     int f_length;
6915
6916     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetFBConfigs");
6917
6918     REPLY(reply);
6919     UNUSED(1);
6920     sequence_number = VALUE16(tvb, *offsetp);
6921     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6922             "%d (glx-GetFBConfigs)", sequence_number);
6923     *offsetp += 2;
6924     f_length = VALUE32(tvb, *offsetp);
6925     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6926     *offsetp += 4;
6927     proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_reply_num_FB_configs, tvb, *offsetp, 4, byte_order);
6928     *offsetp += 4;
6929     proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_reply_num_properties, tvb, *offsetp, 4, byte_order);
6930     *offsetp += 4;
6931     UNUSED(16);
6932     listOfCard32(tvb, offsetp, t, hf_x11_glx_GetFBConfigs_reply_property_list, hf_x11_glx_GetFBConfigs_reply_property_list_item, f_length, byte_order);
6933 }
6934
6935 static void glxCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6936 {
6937     int f_num_attribs;
6938     proto_tree_add_item(t, hf_x11_glx_CreatePixmap_screen, tvb, *offsetp, 4, byte_order);
6939     *offsetp += 4;
6940     proto_tree_add_item(t, hf_x11_glx_CreatePixmap_fbconfig, tvb, *offsetp, 4, byte_order);
6941     *offsetp += 4;
6942     proto_tree_add_item(t, hf_x11_glx_CreatePixmap_pixmap, tvb, *offsetp, 4, byte_order);
6943     *offsetp += 4;
6944     proto_tree_add_item(t, hf_x11_glx_CreatePixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
6945     *offsetp += 4;
6946     f_num_attribs = VALUE32(tvb, *offsetp);
6947     proto_tree_add_item(t, hf_x11_glx_CreatePixmap_num_attribs, tvb, *offsetp, 4, byte_order);
6948     *offsetp += 4;
6949     listOfCard32(tvb, offsetp, t, hf_x11_glx_CreatePixmap_attribs, hf_x11_glx_CreatePixmap_attribs_item, (f_num_attribs * 2), byte_order);
6950     length -= (f_num_attribs * 2) * 4;
6951 }
6952
6953 static void glxDestroyPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6954 {
6955     proto_tree_add_item(t, hf_x11_glx_DestroyPixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
6956     *offsetp += 4;
6957 }
6958
6959 static void glxCreateNewContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6960 {
6961     proto_tree_add_item(t, hf_x11_glx_CreateNewContext_context, tvb, *offsetp, 4, byte_order);
6962     *offsetp += 4;
6963     proto_tree_add_item(t, hf_x11_glx_CreateNewContext_fbconfig, tvb, *offsetp, 4, byte_order);
6964     *offsetp += 4;
6965     proto_tree_add_item(t, hf_x11_glx_CreateNewContext_screen, tvb, *offsetp, 4, byte_order);
6966     *offsetp += 4;
6967     proto_tree_add_item(t, hf_x11_glx_CreateNewContext_render_type, tvb, *offsetp, 4, byte_order);
6968     *offsetp += 4;
6969     proto_tree_add_item(t, hf_x11_glx_CreateNewContext_share_list, tvb, *offsetp, 4, byte_order);
6970     *offsetp += 4;
6971     proto_tree_add_item(t, hf_x11_glx_CreateNewContext_is_direct, tvb, *offsetp, 1, byte_order);
6972     *offsetp += 1;
6973     UNUSED(3);
6974 }
6975
6976 static void glxQueryContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
6977 {
6978     proto_tree_add_item(t, hf_x11_glx_QueryContext_context, tvb, *offsetp, 4, byte_order);
6979     *offsetp += 4;
6980 }
6981 static void glxQueryContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
6982 {
6983     int sequence_number;
6984     int f_num_attribs;
6985
6986     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryContext");
6987
6988     REPLY(reply);
6989     UNUSED(1);
6990     sequence_number = VALUE16(tvb, *offsetp);
6991     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
6992             "%d (glx-QueryContext)", sequence_number);
6993     *offsetp += 2;
6994     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
6995     *offsetp += 4;
6996     f_num_attribs = VALUE32(tvb, *offsetp);
6997     proto_tree_add_item(t, hf_x11_glx_QueryContext_reply_num_attribs, tvb, *offsetp, 4, byte_order);
6998     *offsetp += 4;
6999     UNUSED(20);
7000     listOfCard32(tvb, offsetp, t, hf_x11_glx_QueryContext_reply_attribs, hf_x11_glx_QueryContext_reply_attribs_item, (f_num_attribs * 2), byte_order);
7001 }
7002
7003 static void glxMakeContextCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7004 {
7005     proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_old_context_tag, tvb, *offsetp, 4, byte_order);
7006     *offsetp += 4;
7007     proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_drawable, tvb, *offsetp, 4, byte_order);
7008     *offsetp += 4;
7009     proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_read_drawable, tvb, *offsetp, 4, byte_order);
7010     *offsetp += 4;
7011     proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_context, tvb, *offsetp, 4, byte_order);
7012     *offsetp += 4;
7013 }
7014 static void glxMakeContextCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7015 {
7016     int sequence_number;
7017
7018     col_append_fstr(pinfo->cinfo, COL_INFO, "-MakeContextCurrent");
7019
7020     REPLY(reply);
7021     UNUSED(1);
7022     sequence_number = VALUE16(tvb, *offsetp);
7023     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7024             "%d (glx-MakeContextCurrent)", sequence_number);
7025     *offsetp += 2;
7026     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7027     *offsetp += 4;
7028     proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_reply_context_tag, tvb, *offsetp, 4, byte_order);
7029     *offsetp += 4;
7030     UNUSED(20);
7031 }
7032
7033 static void glxCreatePbuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7034 {
7035     int f_num_attribs;
7036     proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_screen, tvb, *offsetp, 4, byte_order);
7037     *offsetp += 4;
7038     proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_fbconfig, tvb, *offsetp, 4, byte_order);
7039     *offsetp += 4;
7040     proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_pbuffer, tvb, *offsetp, 4, byte_order);
7041     *offsetp += 4;
7042     f_num_attribs = VALUE32(tvb, *offsetp);
7043     proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_num_attribs, tvb, *offsetp, 4, byte_order);
7044     *offsetp += 4;
7045     listOfCard32(tvb, offsetp, t, hf_x11_glx_CreatePbuffer_attribs, hf_x11_glx_CreatePbuffer_attribs_item, (f_num_attribs * 2), byte_order);
7046     length -= (f_num_attribs * 2) * 4;
7047 }
7048
7049 static void glxDestroyPbuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7050 {
7051     proto_tree_add_item(t, hf_x11_glx_DestroyPbuffer_pbuffer, tvb, *offsetp, 4, byte_order);
7052     *offsetp += 4;
7053 }
7054
7055 static void glxGetDrawableAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7056 {
7057     proto_tree_add_item(t, hf_x11_glx_GetDrawableAttributes_drawable, tvb, *offsetp, 4, byte_order);
7058     *offsetp += 4;
7059 }
7060 static void glxGetDrawableAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7061 {
7062     int sequence_number;
7063     int f_num_attribs;
7064
7065     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDrawableAttributes");
7066
7067     REPLY(reply);
7068     UNUSED(1);
7069     sequence_number = VALUE16(tvb, *offsetp);
7070     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7071             "%d (glx-GetDrawableAttributes)", sequence_number);
7072     *offsetp += 2;
7073     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7074     *offsetp += 4;
7075     f_num_attribs = VALUE32(tvb, *offsetp);
7076     proto_tree_add_item(t, hf_x11_glx_GetDrawableAttributes_reply_num_attribs, tvb, *offsetp, 4, byte_order);
7077     *offsetp += 4;
7078     UNUSED(20);
7079     listOfCard32(tvb, offsetp, t, hf_x11_glx_GetDrawableAttributes_reply_attribs, hf_x11_glx_GetDrawableAttributes_reply_attribs_item, (f_num_attribs * 2), byte_order);
7080 }
7081
7082 static void glxChangeDrawableAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7083 {
7084     int f_num_attribs;
7085     proto_tree_add_item(t, hf_x11_glx_ChangeDrawableAttributes_drawable, tvb, *offsetp, 4, byte_order);
7086     *offsetp += 4;
7087     f_num_attribs = VALUE32(tvb, *offsetp);
7088     proto_tree_add_item(t, hf_x11_glx_ChangeDrawableAttributes_num_attribs, tvb, *offsetp, 4, byte_order);
7089     *offsetp += 4;
7090     listOfCard32(tvb, offsetp, t, hf_x11_glx_ChangeDrawableAttributes_attribs, hf_x11_glx_ChangeDrawableAttributes_attribs_item, (f_num_attribs * 2), byte_order);
7091     length -= (f_num_attribs * 2) * 4;
7092 }
7093
7094 static void glxCreateWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7095 {
7096     int f_num_attribs;
7097     proto_tree_add_item(t, hf_x11_glx_CreateWindow_screen, tvb, *offsetp, 4, byte_order);
7098     *offsetp += 4;
7099     proto_tree_add_item(t, hf_x11_glx_CreateWindow_fbconfig, tvb, *offsetp, 4, byte_order);
7100     *offsetp += 4;
7101     proto_tree_add_item(t, hf_x11_glx_CreateWindow_window, tvb, *offsetp, 4, byte_order);
7102     *offsetp += 4;
7103     proto_tree_add_item(t, hf_x11_glx_CreateWindow_glx_window, tvb, *offsetp, 4, byte_order);
7104     *offsetp += 4;
7105     f_num_attribs = VALUE32(tvb, *offsetp);
7106     proto_tree_add_item(t, hf_x11_glx_CreateWindow_num_attribs, tvb, *offsetp, 4, byte_order);
7107     *offsetp += 4;
7108     listOfCard32(tvb, offsetp, t, hf_x11_glx_CreateWindow_attribs, hf_x11_glx_CreateWindow_attribs_item, (f_num_attribs * 2), byte_order);
7109     length -= (f_num_attribs * 2) * 4;
7110 }
7111
7112 static void glxDeleteWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7113 {
7114     proto_tree_add_item(t, hf_x11_glx_DeleteWindow_glxwindow, tvb, *offsetp, 4, byte_order);
7115     *offsetp += 4;
7116 }
7117
7118 static void glxSetClientInfoARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7119 {
7120     int f_num_versions;
7121     int f_gl_str_len;
7122     int f_glx_str_len;
7123     proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_major_version, tvb, *offsetp, 4, byte_order);
7124     *offsetp += 4;
7125     proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_minor_version, tvb, *offsetp, 4, byte_order);
7126     *offsetp += 4;
7127     f_num_versions = VALUE32(tvb, *offsetp);
7128     proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_num_versions, tvb, *offsetp, 4, byte_order);
7129     *offsetp += 4;
7130     f_gl_str_len = VALUE32(tvb, *offsetp);
7131     proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_gl_str_len, tvb, *offsetp, 4, byte_order);
7132     *offsetp += 4;
7133     f_glx_str_len = VALUE32(tvb, *offsetp);
7134     proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_glx_str_len, tvb, *offsetp, 4, byte_order);
7135     *offsetp += 4;
7136     listOfCard32(tvb, offsetp, t, hf_x11_glx_SetClientInfoARB_gl_versions, hf_x11_glx_SetClientInfoARB_gl_versions_item, (f_num_versions * 2), byte_order);
7137     length -= (f_num_versions * 2) * 4;
7138     listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfoARB_gl_extension_string, f_gl_str_len, byte_order);
7139     length -= f_gl_str_len * 1;
7140     listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfoARB_glx_extension_string, f_glx_str_len, byte_order);
7141     length -= f_glx_str_len * 1;
7142 }
7143
7144 static void glxCreateContextAttribsARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7145 {
7146     int f_num_attribs;
7147     proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_context, tvb, *offsetp, 4, byte_order);
7148     *offsetp += 4;
7149     proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_fbconfig, tvb, *offsetp, 4, byte_order);
7150     *offsetp += 4;
7151     proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_screen, tvb, *offsetp, 4, byte_order);
7152     *offsetp += 4;
7153     proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_share_list, tvb, *offsetp, 4, byte_order);
7154     *offsetp += 4;
7155     proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_is_direct, tvb, *offsetp, 1, byte_order);
7156     *offsetp += 1;
7157     UNUSED(3);
7158     f_num_attribs = VALUE32(tvb, *offsetp);
7159     proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_num_attribs, tvb, *offsetp, 4, byte_order);
7160     *offsetp += 4;
7161     listOfCard32(tvb, offsetp, t, hf_x11_glx_CreateContextAttribsARB_attribs, hf_x11_glx_CreateContextAttribsARB_attribs_item, (f_num_attribs * 2), byte_order);
7162     length -= (f_num_attribs * 2) * 4;
7163 }
7164
7165 static void glxSetClientInfo2ARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7166 {
7167     int f_num_versions;
7168     int f_gl_str_len;
7169     int f_glx_str_len;
7170     proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_major_version, tvb, *offsetp, 4, byte_order);
7171     *offsetp += 4;
7172     proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_minor_version, tvb, *offsetp, 4, byte_order);
7173     *offsetp += 4;
7174     f_num_versions = VALUE32(tvb, *offsetp);
7175     proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_num_versions, tvb, *offsetp, 4, byte_order);
7176     *offsetp += 4;
7177     f_gl_str_len = VALUE32(tvb, *offsetp);
7178     proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_gl_str_len, tvb, *offsetp, 4, byte_order);
7179     *offsetp += 4;
7180     f_glx_str_len = VALUE32(tvb, *offsetp);
7181     proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_glx_str_len, tvb, *offsetp, 4, byte_order);
7182     *offsetp += 4;
7183     listOfCard32(tvb, offsetp, t, hf_x11_glx_SetClientInfo2ARB_gl_versions, hf_x11_glx_SetClientInfo2ARB_gl_versions_item, (f_num_versions * 3), byte_order);
7184     length -= (f_num_versions * 3) * 4;
7185     listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfo2ARB_gl_extension_string, f_gl_str_len, byte_order);
7186     length -= f_gl_str_len * 1;
7187     listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfo2ARB_glx_extension_string, f_glx_str_len, byte_order);
7188     length -= f_glx_str_len * 1;
7189 }
7190
7191 static void glxNewList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7192 {
7193     proto_tree_add_item(t, hf_x11_glx_NewList_context_tag, tvb, *offsetp, 4, byte_order);
7194     *offsetp += 4;
7195     proto_tree_add_item(t, hf_x11_glx_NewList_list, tvb, *offsetp, 4, byte_order);
7196     *offsetp += 4;
7197     proto_tree_add_item(t, hf_x11_glx_NewList_mode, tvb, *offsetp, 4, byte_order);
7198     *offsetp += 4;
7199 }
7200
7201 static void glxEndList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7202 {
7203     proto_tree_add_item(t, hf_x11_glx_EndList_context_tag, tvb, *offsetp, 4, byte_order);
7204     *offsetp += 4;
7205 }
7206
7207 static void glxDeleteLists(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7208 {
7209     proto_tree_add_item(t, hf_x11_glx_DeleteLists_context_tag, tvb, *offsetp, 4, byte_order);
7210     *offsetp += 4;
7211     proto_tree_add_item(t, hf_x11_glx_DeleteLists_list, tvb, *offsetp, 4, byte_order);
7212     *offsetp += 4;
7213     proto_tree_add_item(t, hf_x11_glx_DeleteLists_range, tvb, *offsetp, 4, byte_order);
7214     *offsetp += 4;
7215 }
7216
7217 static void glxGenLists(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7218 {
7219     proto_tree_add_item(t, hf_x11_glx_GenLists_context_tag, tvb, *offsetp, 4, byte_order);
7220     *offsetp += 4;
7221     proto_tree_add_item(t, hf_x11_glx_GenLists_range, tvb, *offsetp, 4, byte_order);
7222     *offsetp += 4;
7223 }
7224 static void glxGenLists_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7225 {
7226     int sequence_number;
7227
7228     col_append_fstr(pinfo->cinfo, COL_INFO, "-GenLists");
7229
7230     REPLY(reply);
7231     UNUSED(1);
7232     sequence_number = VALUE16(tvb, *offsetp);
7233     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7234             "%d (glx-GenLists)", sequence_number);
7235     *offsetp += 2;
7236     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7237     *offsetp += 4;
7238     proto_tree_add_item(t, hf_x11_glx_GenLists_reply_ret_val, tvb, *offsetp, 4, byte_order);
7239     *offsetp += 4;
7240 }
7241
7242 static void glxFeedbackBuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7243 {
7244     proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_context_tag, tvb, *offsetp, 4, byte_order);
7245     *offsetp += 4;
7246     proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_size, tvb, *offsetp, 4, byte_order);
7247     *offsetp += 4;
7248     proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_type, tvb, *offsetp, 4, byte_order);
7249     *offsetp += 4;
7250 }
7251
7252 static void glxSelectBuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7253 {
7254     proto_tree_add_item(t, hf_x11_glx_SelectBuffer_context_tag, tvb, *offsetp, 4, byte_order);
7255     *offsetp += 4;
7256     proto_tree_add_item(t, hf_x11_glx_SelectBuffer_size, tvb, *offsetp, 4, byte_order);
7257     *offsetp += 4;
7258 }
7259
7260 static void glxRenderMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7261 {
7262     proto_tree_add_item(t, hf_x11_glx_RenderMode_context_tag, tvb, *offsetp, 4, byte_order);
7263     *offsetp += 4;
7264     proto_tree_add_item(t, hf_x11_glx_RenderMode_mode, tvb, *offsetp, 4, byte_order);
7265     *offsetp += 4;
7266 }
7267 static void glxRenderMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7268 {
7269     int sequence_number;
7270     int f_n;
7271
7272     col_append_fstr(pinfo->cinfo, COL_INFO, "-RenderMode");
7273
7274     REPLY(reply);
7275     UNUSED(1);
7276     sequence_number = VALUE16(tvb, *offsetp);
7277     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7278             "%d (glx-RenderMode)", sequence_number);
7279     *offsetp += 2;
7280     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7281     *offsetp += 4;
7282     proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_ret_val, tvb, *offsetp, 4, byte_order);
7283     *offsetp += 4;
7284     f_n = VALUE32(tvb, *offsetp);
7285     proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_n, tvb, *offsetp, 4, byte_order);
7286     *offsetp += 4;
7287     proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_new_mode, tvb, *offsetp, 4, byte_order);
7288     *offsetp += 4;
7289     UNUSED(12);
7290     listOfCard32(tvb, offsetp, t, hf_x11_glx_RenderMode_reply_data, hf_x11_glx_RenderMode_reply_data_item, f_n, byte_order);
7291 }
7292
7293 static void glxFinish(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7294 {
7295     proto_tree_add_item(t, hf_x11_glx_Finish_context_tag, tvb, *offsetp, 4, byte_order);
7296     *offsetp += 4;
7297 }
7298 static void glxFinish_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7299 {
7300     int sequence_number;
7301
7302     col_append_fstr(pinfo->cinfo, COL_INFO, "-Finish");
7303
7304     REPLY(reply);
7305     UNUSED(1);
7306     sequence_number = VALUE16(tvb, *offsetp);
7307     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7308             "%d (glx-Finish)", sequence_number);
7309     *offsetp += 2;
7310     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7311     *offsetp += 4;
7312 }
7313
7314 static void glxPixelStoref(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7315 {
7316     proto_tree_add_item(t, hf_x11_glx_PixelStoref_context_tag, tvb, *offsetp, 4, byte_order);
7317     *offsetp += 4;
7318     proto_tree_add_item(t, hf_x11_glx_PixelStoref_pname, tvb, *offsetp, 4, byte_order);
7319     *offsetp += 4;
7320     proto_tree_add_item(t, hf_x11_glx_PixelStoref_datum, tvb, *offsetp, 4, byte_order);
7321     *offsetp += 4;
7322 }
7323
7324 static void glxPixelStorei(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7325 {
7326     proto_tree_add_item(t, hf_x11_glx_PixelStorei_context_tag, tvb, *offsetp, 4, byte_order);
7327     *offsetp += 4;
7328     proto_tree_add_item(t, hf_x11_glx_PixelStorei_pname, tvb, *offsetp, 4, byte_order);
7329     *offsetp += 4;
7330     proto_tree_add_item(t, hf_x11_glx_PixelStorei_datum, tvb, *offsetp, 4, byte_order);
7331     *offsetp += 4;
7332 }
7333
7334 static void glxReadPixels(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7335 {
7336     proto_tree_add_item(t, hf_x11_glx_ReadPixels_context_tag, tvb, *offsetp, 4, byte_order);
7337     *offsetp += 4;
7338     proto_tree_add_item(t, hf_x11_glx_ReadPixels_x, tvb, *offsetp, 4, byte_order);
7339     *offsetp += 4;
7340     proto_tree_add_item(t, hf_x11_glx_ReadPixels_y, tvb, *offsetp, 4, byte_order);
7341     *offsetp += 4;
7342     proto_tree_add_item(t, hf_x11_glx_ReadPixels_width, tvb, *offsetp, 4, byte_order);
7343     *offsetp += 4;
7344     proto_tree_add_item(t, hf_x11_glx_ReadPixels_height, tvb, *offsetp, 4, byte_order);
7345     *offsetp += 4;
7346     proto_tree_add_item(t, hf_x11_glx_ReadPixels_format, tvb, *offsetp, 4, byte_order);
7347     *offsetp += 4;
7348     proto_tree_add_item(t, hf_x11_glx_ReadPixels_type, tvb, *offsetp, 4, byte_order);
7349     *offsetp += 4;
7350     proto_tree_add_item(t, hf_x11_glx_ReadPixels_swap_bytes, tvb, *offsetp, 1, byte_order);
7351     *offsetp += 1;
7352     proto_tree_add_item(t, hf_x11_glx_ReadPixels_lsb_first, tvb, *offsetp, 1, byte_order);
7353     *offsetp += 1;
7354 }
7355 static void glxReadPixels_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7356 {
7357     int sequence_number;
7358     int f_length;
7359
7360     col_append_fstr(pinfo->cinfo, COL_INFO, "-ReadPixels");
7361
7362     REPLY(reply);
7363     UNUSED(1);
7364     sequence_number = VALUE16(tvb, *offsetp);
7365     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7366             "%d (glx-ReadPixels)", sequence_number);
7367     *offsetp += 2;
7368     f_length = VALUE32(tvb, *offsetp);
7369     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7370     *offsetp += 4;
7371     UNUSED(24);
7372     listOfByte(tvb, offsetp, t, hf_x11_glx_ReadPixels_reply_data, (f_length * 4), byte_order);
7373 }
7374
7375 static void glxGetBooleanv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7376 {
7377     proto_tree_add_item(t, hf_x11_glx_GetBooleanv_context_tag, tvb, *offsetp, 4, byte_order);
7378     *offsetp += 4;
7379     proto_tree_add_item(t, hf_x11_glx_GetBooleanv_pname, tvb, *offsetp, 4, byte_order);
7380     *offsetp += 4;
7381 }
7382 static void glxGetBooleanv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7383 {
7384     int sequence_number;
7385     int f_n;
7386
7387     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetBooleanv");
7388
7389     REPLY(reply);
7390     UNUSED(1);
7391     sequence_number = VALUE16(tvb, *offsetp);
7392     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7393             "%d (glx-GetBooleanv)", sequence_number);
7394     *offsetp += 2;
7395     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7396     *offsetp += 4;
7397     UNUSED(4);
7398     f_n = VALUE32(tvb, *offsetp);
7399     proto_tree_add_item(t, hf_x11_glx_GetBooleanv_reply_n, tvb, *offsetp, 4, byte_order);
7400     *offsetp += 4;
7401     proto_tree_add_item(t, hf_x11_glx_GetBooleanv_reply_datum, tvb, *offsetp, 1, byte_order);
7402     *offsetp += 1;
7403     UNUSED(15);
7404     listOfByte(tvb, offsetp, t, hf_x11_glx_GetBooleanv_reply_data, f_n, byte_order);
7405 }
7406
7407 static void glxGetClipPlane(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7408 {
7409     proto_tree_add_item(t, hf_x11_glx_GetClipPlane_context_tag, tvb, *offsetp, 4, byte_order);
7410     *offsetp += 4;
7411     proto_tree_add_item(t, hf_x11_glx_GetClipPlane_plane, tvb, *offsetp, 4, byte_order);
7412     *offsetp += 4;
7413 }
7414 static void glxGetClipPlane_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7415 {
7416     int sequence_number;
7417     int f_length;
7418
7419     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetClipPlane");
7420
7421     REPLY(reply);
7422     UNUSED(1);
7423     sequence_number = VALUE16(tvb, *offsetp);
7424     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7425             "%d (glx-GetClipPlane)", sequence_number);
7426     *offsetp += 2;
7427     f_length = VALUE32(tvb, *offsetp);
7428     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7429     *offsetp += 4;
7430     UNUSED(24);
7431     listOfDouble(tvb, offsetp, t, hf_x11_glx_GetClipPlane_reply_data, hf_x11_glx_GetClipPlane_reply_data_item, (f_length / 2), byte_order);
7432 }
7433
7434 static void glxGetDoublev(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7435 {
7436     proto_tree_add_item(t, hf_x11_glx_GetDoublev_context_tag, tvb, *offsetp, 4, byte_order);
7437     *offsetp += 4;
7438     proto_tree_add_item(t, hf_x11_glx_GetDoublev_pname, tvb, *offsetp, 4, byte_order);
7439     *offsetp += 4;
7440 }
7441 static void glxGetDoublev_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7442 {
7443     int sequence_number;
7444     int f_n;
7445
7446     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDoublev");
7447
7448     REPLY(reply);
7449     UNUSED(1);
7450     sequence_number = VALUE16(tvb, *offsetp);
7451     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7452             "%d (glx-GetDoublev)", sequence_number);
7453     *offsetp += 2;
7454     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7455     *offsetp += 4;
7456     UNUSED(4);
7457     f_n = VALUE32(tvb, *offsetp);
7458     proto_tree_add_item(t, hf_x11_glx_GetDoublev_reply_n, tvb, *offsetp, 4, byte_order);
7459     *offsetp += 4;
7460     proto_tree_add_item(t, hf_x11_glx_GetDoublev_reply_datum, tvb, *offsetp, 8, byte_order);
7461     *offsetp += 8;
7462     UNUSED(8);
7463     listOfDouble(tvb, offsetp, t, hf_x11_glx_GetDoublev_reply_data, hf_x11_glx_GetDoublev_reply_data_item, f_n, byte_order);
7464 }
7465
7466 static void glxGetError(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7467 {
7468     proto_tree_add_item(t, hf_x11_glx_GetError_context_tag, tvb, *offsetp, 4, byte_order);
7469     *offsetp += 4;
7470 }
7471 static void glxGetError_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7472 {
7473     int sequence_number;
7474
7475     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetError");
7476
7477     REPLY(reply);
7478     UNUSED(1);
7479     sequence_number = VALUE16(tvb, *offsetp);
7480     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7481             "%d (glx-GetError)", sequence_number);
7482     *offsetp += 2;
7483     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7484     *offsetp += 4;
7485     proto_tree_add_item(t, hf_x11_glx_GetError_reply_error, tvb, *offsetp, 4, byte_order);
7486     *offsetp += 4;
7487 }
7488
7489 static void glxGetFloatv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7490 {
7491     proto_tree_add_item(t, hf_x11_glx_GetFloatv_context_tag, tvb, *offsetp, 4, byte_order);
7492     *offsetp += 4;
7493     proto_tree_add_item(t, hf_x11_glx_GetFloatv_pname, tvb, *offsetp, 4, byte_order);
7494     *offsetp += 4;
7495 }
7496 static void glxGetFloatv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7497 {
7498     int sequence_number;
7499     int f_n;
7500
7501     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetFloatv");
7502
7503     REPLY(reply);
7504     UNUSED(1);
7505     sequence_number = VALUE16(tvb, *offsetp);
7506     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7507             "%d (glx-GetFloatv)", sequence_number);
7508     *offsetp += 2;
7509     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7510     *offsetp += 4;
7511     UNUSED(4);
7512     f_n = VALUE32(tvb, *offsetp);
7513     proto_tree_add_item(t, hf_x11_glx_GetFloatv_reply_n, tvb, *offsetp, 4, byte_order);
7514     *offsetp += 4;
7515     proto_tree_add_item(t, hf_x11_glx_GetFloatv_reply_datum, tvb, *offsetp, 4, byte_order);
7516     *offsetp += 4;
7517     UNUSED(12);
7518     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetFloatv_reply_data, hf_x11_glx_GetFloatv_reply_data_item, f_n, byte_order);
7519 }
7520
7521 static void glxGetIntegerv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7522 {
7523     proto_tree_add_item(t, hf_x11_glx_GetIntegerv_context_tag, tvb, *offsetp, 4, byte_order);
7524     *offsetp += 4;
7525     proto_tree_add_item(t, hf_x11_glx_GetIntegerv_pname, tvb, *offsetp, 4, byte_order);
7526     *offsetp += 4;
7527 }
7528 static void glxGetIntegerv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7529 {
7530     int sequence_number;
7531     int f_n;
7532
7533     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetIntegerv");
7534
7535     REPLY(reply);
7536     UNUSED(1);
7537     sequence_number = VALUE16(tvb, *offsetp);
7538     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7539             "%d (glx-GetIntegerv)", sequence_number);
7540     *offsetp += 2;
7541     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7542     *offsetp += 4;
7543     UNUSED(4);
7544     f_n = VALUE32(tvb, *offsetp);
7545     proto_tree_add_item(t, hf_x11_glx_GetIntegerv_reply_n, tvb, *offsetp, 4, byte_order);
7546     *offsetp += 4;
7547     proto_tree_add_item(t, hf_x11_glx_GetIntegerv_reply_datum, tvb, *offsetp, 4, byte_order);
7548     *offsetp += 4;
7549     UNUSED(12);
7550     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetIntegerv_reply_data, hf_x11_glx_GetIntegerv_reply_data_item, f_n, byte_order);
7551 }
7552
7553 static void glxGetLightfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7554 {
7555     proto_tree_add_item(t, hf_x11_glx_GetLightfv_context_tag, tvb, *offsetp, 4, byte_order);
7556     *offsetp += 4;
7557     proto_tree_add_item(t, hf_x11_glx_GetLightfv_light, tvb, *offsetp, 4, byte_order);
7558     *offsetp += 4;
7559     proto_tree_add_item(t, hf_x11_glx_GetLightfv_pname, tvb, *offsetp, 4, byte_order);
7560     *offsetp += 4;
7561 }
7562 static void glxGetLightfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7563 {
7564     int sequence_number;
7565     int f_n;
7566
7567     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetLightfv");
7568
7569     REPLY(reply);
7570     UNUSED(1);
7571     sequence_number = VALUE16(tvb, *offsetp);
7572     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7573             "%d (glx-GetLightfv)", sequence_number);
7574     *offsetp += 2;
7575     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7576     *offsetp += 4;
7577     UNUSED(4);
7578     f_n = VALUE32(tvb, *offsetp);
7579     proto_tree_add_item(t, hf_x11_glx_GetLightfv_reply_n, tvb, *offsetp, 4, byte_order);
7580     *offsetp += 4;
7581     proto_tree_add_item(t, hf_x11_glx_GetLightfv_reply_datum, tvb, *offsetp, 4, byte_order);
7582     *offsetp += 4;
7583     UNUSED(12);
7584     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetLightfv_reply_data, hf_x11_glx_GetLightfv_reply_data_item, f_n, byte_order);
7585 }
7586
7587 static void glxGetLightiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7588 {
7589     proto_tree_add_item(t, hf_x11_glx_GetLightiv_context_tag, tvb, *offsetp, 4, byte_order);
7590     *offsetp += 4;
7591     proto_tree_add_item(t, hf_x11_glx_GetLightiv_light, tvb, *offsetp, 4, byte_order);
7592     *offsetp += 4;
7593     proto_tree_add_item(t, hf_x11_glx_GetLightiv_pname, tvb, *offsetp, 4, byte_order);
7594     *offsetp += 4;
7595 }
7596 static void glxGetLightiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7597 {
7598     int sequence_number;
7599     int f_n;
7600
7601     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetLightiv");
7602
7603     REPLY(reply);
7604     UNUSED(1);
7605     sequence_number = VALUE16(tvb, *offsetp);
7606     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7607             "%d (glx-GetLightiv)", sequence_number);
7608     *offsetp += 2;
7609     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7610     *offsetp += 4;
7611     UNUSED(4);
7612     f_n = VALUE32(tvb, *offsetp);
7613     proto_tree_add_item(t, hf_x11_glx_GetLightiv_reply_n, tvb, *offsetp, 4, byte_order);
7614     *offsetp += 4;
7615     proto_tree_add_item(t, hf_x11_glx_GetLightiv_reply_datum, tvb, *offsetp, 4, byte_order);
7616     *offsetp += 4;
7617     UNUSED(12);
7618     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetLightiv_reply_data, hf_x11_glx_GetLightiv_reply_data_item, f_n, byte_order);
7619 }
7620
7621 static void glxGetMapdv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7622 {
7623     proto_tree_add_item(t, hf_x11_glx_GetMapdv_context_tag, tvb, *offsetp, 4, byte_order);
7624     *offsetp += 4;
7625     proto_tree_add_item(t, hf_x11_glx_GetMapdv_target, tvb, *offsetp, 4, byte_order);
7626     *offsetp += 4;
7627     proto_tree_add_item(t, hf_x11_glx_GetMapdv_query, tvb, *offsetp, 4, byte_order);
7628     *offsetp += 4;
7629 }
7630 static void glxGetMapdv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7631 {
7632     int sequence_number;
7633     int f_n;
7634
7635     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMapdv");
7636
7637     REPLY(reply);
7638     UNUSED(1);
7639     sequence_number = VALUE16(tvb, *offsetp);
7640     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7641             "%d (glx-GetMapdv)", sequence_number);
7642     *offsetp += 2;
7643     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7644     *offsetp += 4;
7645     UNUSED(4);
7646     f_n = VALUE32(tvb, *offsetp);
7647     proto_tree_add_item(t, hf_x11_glx_GetMapdv_reply_n, tvb, *offsetp, 4, byte_order);
7648     *offsetp += 4;
7649     proto_tree_add_item(t, hf_x11_glx_GetMapdv_reply_datum, tvb, *offsetp, 8, byte_order);
7650     *offsetp += 8;
7651     UNUSED(8);
7652     listOfDouble(tvb, offsetp, t, hf_x11_glx_GetMapdv_reply_data, hf_x11_glx_GetMapdv_reply_data_item, f_n, byte_order);
7653 }
7654
7655 static void glxGetMapfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7656 {
7657     proto_tree_add_item(t, hf_x11_glx_GetMapfv_context_tag, tvb, *offsetp, 4, byte_order);
7658     *offsetp += 4;
7659     proto_tree_add_item(t, hf_x11_glx_GetMapfv_target, tvb, *offsetp, 4, byte_order);
7660     *offsetp += 4;
7661     proto_tree_add_item(t, hf_x11_glx_GetMapfv_query, tvb, *offsetp, 4, byte_order);
7662     *offsetp += 4;
7663 }
7664 static void glxGetMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7665 {
7666     int sequence_number;
7667     int f_n;
7668
7669     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMapfv");
7670
7671     REPLY(reply);
7672     UNUSED(1);
7673     sequence_number = VALUE16(tvb, *offsetp);
7674     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7675             "%d (glx-GetMapfv)", sequence_number);
7676     *offsetp += 2;
7677     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7678     *offsetp += 4;
7679     UNUSED(4);
7680     f_n = VALUE32(tvb, *offsetp);
7681     proto_tree_add_item(t, hf_x11_glx_GetMapfv_reply_n, tvb, *offsetp, 4, byte_order);
7682     *offsetp += 4;
7683     proto_tree_add_item(t, hf_x11_glx_GetMapfv_reply_datum, tvb, *offsetp, 4, byte_order);
7684     *offsetp += 4;
7685     UNUSED(12);
7686     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMapfv_reply_data, hf_x11_glx_GetMapfv_reply_data_item, f_n, byte_order);
7687 }
7688
7689 static void glxGetMapiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7690 {
7691     proto_tree_add_item(t, hf_x11_glx_GetMapiv_context_tag, tvb, *offsetp, 4, byte_order);
7692     *offsetp += 4;
7693     proto_tree_add_item(t, hf_x11_glx_GetMapiv_target, tvb, *offsetp, 4, byte_order);
7694     *offsetp += 4;
7695     proto_tree_add_item(t, hf_x11_glx_GetMapiv_query, tvb, *offsetp, 4, byte_order);
7696     *offsetp += 4;
7697 }
7698 static void glxGetMapiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7699 {
7700     int sequence_number;
7701     int f_n;
7702
7703     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMapiv");
7704
7705     REPLY(reply);
7706     UNUSED(1);
7707     sequence_number = VALUE16(tvb, *offsetp);
7708     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7709             "%d (glx-GetMapiv)", sequence_number);
7710     *offsetp += 2;
7711     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7712     *offsetp += 4;
7713     UNUSED(4);
7714     f_n = VALUE32(tvb, *offsetp);
7715     proto_tree_add_item(t, hf_x11_glx_GetMapiv_reply_n, tvb, *offsetp, 4, byte_order);
7716     *offsetp += 4;
7717     proto_tree_add_item(t, hf_x11_glx_GetMapiv_reply_datum, tvb, *offsetp, 4, byte_order);
7718     *offsetp += 4;
7719     UNUSED(12);
7720     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMapiv_reply_data, hf_x11_glx_GetMapiv_reply_data_item, f_n, byte_order);
7721 }
7722
7723 static void glxGetMaterialfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7724 {
7725     proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_context_tag, tvb, *offsetp, 4, byte_order);
7726     *offsetp += 4;
7727     proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_face, tvb, *offsetp, 4, byte_order);
7728     *offsetp += 4;
7729     proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_pname, tvb, *offsetp, 4, byte_order);
7730     *offsetp += 4;
7731 }
7732 static void glxGetMaterialfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7733 {
7734     int sequence_number;
7735     int f_n;
7736
7737     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMaterialfv");
7738
7739     REPLY(reply);
7740     UNUSED(1);
7741     sequence_number = VALUE16(tvb, *offsetp);
7742     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7743             "%d (glx-GetMaterialfv)", sequence_number);
7744     *offsetp += 2;
7745     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7746     *offsetp += 4;
7747     UNUSED(4);
7748     f_n = VALUE32(tvb, *offsetp);
7749     proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_reply_n, tvb, *offsetp, 4, byte_order);
7750     *offsetp += 4;
7751     proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_reply_datum, tvb, *offsetp, 4, byte_order);
7752     *offsetp += 4;
7753     UNUSED(12);
7754     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMaterialfv_reply_data, hf_x11_glx_GetMaterialfv_reply_data_item, f_n, byte_order);
7755 }
7756
7757 static void glxGetMaterialiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7758 {
7759     proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_context_tag, tvb, *offsetp, 4, byte_order);
7760     *offsetp += 4;
7761     proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_face, tvb, *offsetp, 4, byte_order);
7762     *offsetp += 4;
7763     proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_pname, tvb, *offsetp, 4, byte_order);
7764     *offsetp += 4;
7765 }
7766 static void glxGetMaterialiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7767 {
7768     int sequence_number;
7769     int f_n;
7770
7771     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMaterialiv");
7772
7773     REPLY(reply);
7774     UNUSED(1);
7775     sequence_number = VALUE16(tvb, *offsetp);
7776     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7777             "%d (glx-GetMaterialiv)", sequence_number);
7778     *offsetp += 2;
7779     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7780     *offsetp += 4;
7781     UNUSED(4);
7782     f_n = VALUE32(tvb, *offsetp);
7783     proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_reply_n, tvb, *offsetp, 4, byte_order);
7784     *offsetp += 4;
7785     proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_reply_datum, tvb, *offsetp, 4, byte_order);
7786     *offsetp += 4;
7787     UNUSED(12);
7788     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMaterialiv_reply_data, hf_x11_glx_GetMaterialiv_reply_data_item, f_n, byte_order);
7789 }
7790
7791 static void glxGetPixelMapfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7792 {
7793     proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_context_tag, tvb, *offsetp, 4, byte_order);
7794     *offsetp += 4;
7795     proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_map, tvb, *offsetp, 4, byte_order);
7796     *offsetp += 4;
7797 }
7798 static void glxGetPixelMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7799 {
7800     int sequence_number;
7801     int f_n;
7802
7803     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPixelMapfv");
7804
7805     REPLY(reply);
7806     UNUSED(1);
7807     sequence_number = VALUE16(tvb, *offsetp);
7808     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7809             "%d (glx-GetPixelMapfv)", sequence_number);
7810     *offsetp += 2;
7811     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7812     *offsetp += 4;
7813     UNUSED(4);
7814     f_n = VALUE32(tvb, *offsetp);
7815     proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_reply_n, tvb, *offsetp, 4, byte_order);
7816     *offsetp += 4;
7817     proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_reply_datum, tvb, *offsetp, 4, byte_order);
7818     *offsetp += 4;
7819     UNUSED(12);
7820     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetPixelMapfv_reply_data, hf_x11_glx_GetPixelMapfv_reply_data_item, f_n, byte_order);
7821 }
7822
7823 static void glxGetPixelMapuiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7824 {
7825     proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_context_tag, tvb, *offsetp, 4, byte_order);
7826     *offsetp += 4;
7827     proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_map, tvb, *offsetp, 4, byte_order);
7828     *offsetp += 4;
7829 }
7830 static void glxGetPixelMapuiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7831 {
7832     int sequence_number;
7833     int f_n;
7834
7835     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPixelMapuiv");
7836
7837     REPLY(reply);
7838     UNUSED(1);
7839     sequence_number = VALUE16(tvb, *offsetp);
7840     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7841             "%d (glx-GetPixelMapuiv)", sequence_number);
7842     *offsetp += 2;
7843     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7844     *offsetp += 4;
7845     UNUSED(4);
7846     f_n = VALUE32(tvb, *offsetp);
7847     proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_reply_n, tvb, *offsetp, 4, byte_order);
7848     *offsetp += 4;
7849     proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_reply_datum, tvb, *offsetp, 4, byte_order);
7850     *offsetp += 4;
7851     UNUSED(12);
7852     listOfCard32(tvb, offsetp, t, hf_x11_glx_GetPixelMapuiv_reply_data, hf_x11_glx_GetPixelMapuiv_reply_data_item, f_n, byte_order);
7853 }
7854
7855 static void glxGetPixelMapusv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7856 {
7857     proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_context_tag, tvb, *offsetp, 4, byte_order);
7858     *offsetp += 4;
7859     proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_map, tvb, *offsetp, 4, byte_order);
7860     *offsetp += 4;
7861 }
7862 static void glxGetPixelMapusv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7863 {
7864     int sequence_number;
7865     int f_n;
7866
7867     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPixelMapusv");
7868
7869     REPLY(reply);
7870     UNUSED(1);
7871     sequence_number = VALUE16(tvb, *offsetp);
7872     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7873             "%d (glx-GetPixelMapusv)", sequence_number);
7874     *offsetp += 2;
7875     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7876     *offsetp += 4;
7877     UNUSED(4);
7878     f_n = VALUE32(tvb, *offsetp);
7879     proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_reply_n, tvb, *offsetp, 4, byte_order);
7880     *offsetp += 4;
7881     proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_reply_datum, tvb, *offsetp, 2, byte_order);
7882     *offsetp += 2;
7883     UNUSED(16);
7884     listOfCard16(tvb, offsetp, t, hf_x11_glx_GetPixelMapusv_reply_data, hf_x11_glx_GetPixelMapusv_reply_data_item, f_n, byte_order);
7885 }
7886
7887 static void glxGetPolygonStipple(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7888 {
7889     proto_tree_add_item(t, hf_x11_glx_GetPolygonStipple_context_tag, tvb, *offsetp, 4, byte_order);
7890     *offsetp += 4;
7891     proto_tree_add_item(t, hf_x11_glx_GetPolygonStipple_lsb_first, tvb, *offsetp, 1, byte_order);
7892     *offsetp += 1;
7893 }
7894 static void glxGetPolygonStipple_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7895 {
7896     int sequence_number;
7897     int f_length;
7898
7899     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPolygonStipple");
7900
7901     REPLY(reply);
7902     UNUSED(1);
7903     sequence_number = VALUE16(tvb, *offsetp);
7904     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7905             "%d (glx-GetPolygonStipple)", sequence_number);
7906     *offsetp += 2;
7907     f_length = VALUE32(tvb, *offsetp);
7908     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7909     *offsetp += 4;
7910     UNUSED(24);
7911     listOfByte(tvb, offsetp, t, hf_x11_glx_GetPolygonStipple_reply_data, (f_length * 4), byte_order);
7912 }
7913
7914 static void glxGetString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7915 {
7916     proto_tree_add_item(t, hf_x11_glx_GetString_context_tag, tvb, *offsetp, 4, byte_order);
7917     *offsetp += 4;
7918     proto_tree_add_item(t, hf_x11_glx_GetString_name, tvb, *offsetp, 4, byte_order);
7919     *offsetp += 4;
7920 }
7921 static void glxGetString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7922 {
7923     int sequence_number;
7924     int f_n;
7925
7926     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetString");
7927
7928     REPLY(reply);
7929     UNUSED(1);
7930     sequence_number = VALUE16(tvb, *offsetp);
7931     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7932             "%d (glx-GetString)", sequence_number);
7933     *offsetp += 2;
7934     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7935     *offsetp += 4;
7936     UNUSED(4);
7937     f_n = VALUE32(tvb, *offsetp);
7938     proto_tree_add_item(t, hf_x11_glx_GetString_reply_n, tvb, *offsetp, 4, byte_order);
7939     *offsetp += 4;
7940     UNUSED(16);
7941     listOfByte(tvb, offsetp, t, hf_x11_glx_GetString_reply_string, f_n, byte_order);
7942 }
7943
7944 static void glxGetTexEnvfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7945 {
7946     proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_context_tag, tvb, *offsetp, 4, byte_order);
7947     *offsetp += 4;
7948     proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_target, tvb, *offsetp, 4, byte_order);
7949     *offsetp += 4;
7950     proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_pname, tvb, *offsetp, 4, byte_order);
7951     *offsetp += 4;
7952 }
7953 static void glxGetTexEnvfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7954 {
7955     int sequence_number;
7956     int f_n;
7957
7958     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexEnvfv");
7959
7960     REPLY(reply);
7961     UNUSED(1);
7962     sequence_number = VALUE16(tvb, *offsetp);
7963     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7964             "%d (glx-GetTexEnvfv)", sequence_number);
7965     *offsetp += 2;
7966     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
7967     *offsetp += 4;
7968     UNUSED(4);
7969     f_n = VALUE32(tvb, *offsetp);
7970     proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_reply_n, tvb, *offsetp, 4, byte_order);
7971     *offsetp += 4;
7972     proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_reply_datum, tvb, *offsetp, 4, byte_order);
7973     *offsetp += 4;
7974     UNUSED(12);
7975     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexEnvfv_reply_data, hf_x11_glx_GetTexEnvfv_reply_data_item, f_n, byte_order);
7976 }
7977
7978 static void glxGetTexEnviv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
7979 {
7980     proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_context_tag, tvb, *offsetp, 4, byte_order);
7981     *offsetp += 4;
7982     proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_target, tvb, *offsetp, 4, byte_order);
7983     *offsetp += 4;
7984     proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_pname, tvb, *offsetp, 4, byte_order);
7985     *offsetp += 4;
7986 }
7987 static void glxGetTexEnviv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
7988 {
7989     int sequence_number;
7990     int f_n;
7991
7992     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexEnviv");
7993
7994     REPLY(reply);
7995     UNUSED(1);
7996     sequence_number = VALUE16(tvb, *offsetp);
7997     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
7998             "%d (glx-GetTexEnviv)", sequence_number);
7999     *offsetp += 2;
8000     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8001     *offsetp += 4;
8002     UNUSED(4);
8003     f_n = VALUE32(tvb, *offsetp);
8004     proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_reply_n, tvb, *offsetp, 4, byte_order);
8005     *offsetp += 4;
8006     proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_reply_datum, tvb, *offsetp, 4, byte_order);
8007     *offsetp += 4;
8008     UNUSED(12);
8009     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexEnviv_reply_data, hf_x11_glx_GetTexEnviv_reply_data_item, f_n, byte_order);
8010 }
8011
8012 static void glxGetTexGendv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8013 {
8014     proto_tree_add_item(t, hf_x11_glx_GetTexGendv_context_tag, tvb, *offsetp, 4, byte_order);
8015     *offsetp += 4;
8016     proto_tree_add_item(t, hf_x11_glx_GetTexGendv_coord, tvb, *offsetp, 4, byte_order);
8017     *offsetp += 4;
8018     proto_tree_add_item(t, hf_x11_glx_GetTexGendv_pname, tvb, *offsetp, 4, byte_order);
8019     *offsetp += 4;
8020 }
8021 static void glxGetTexGendv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8022 {
8023     int sequence_number;
8024     int f_n;
8025
8026     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexGendv");
8027
8028     REPLY(reply);
8029     UNUSED(1);
8030     sequence_number = VALUE16(tvb, *offsetp);
8031     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8032             "%d (glx-GetTexGendv)", sequence_number);
8033     *offsetp += 2;
8034     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8035     *offsetp += 4;
8036     UNUSED(4);
8037     f_n = VALUE32(tvb, *offsetp);
8038     proto_tree_add_item(t, hf_x11_glx_GetTexGendv_reply_n, tvb, *offsetp, 4, byte_order);
8039     *offsetp += 4;
8040     proto_tree_add_item(t, hf_x11_glx_GetTexGendv_reply_datum, tvb, *offsetp, 8, byte_order);
8041     *offsetp += 8;
8042     UNUSED(8);
8043     listOfDouble(tvb, offsetp, t, hf_x11_glx_GetTexGendv_reply_data, hf_x11_glx_GetTexGendv_reply_data_item, f_n, byte_order);
8044 }
8045
8046 static void glxGetTexGenfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8047 {
8048     proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_context_tag, tvb, *offsetp, 4, byte_order);
8049     *offsetp += 4;
8050     proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_coord, tvb, *offsetp, 4, byte_order);
8051     *offsetp += 4;
8052     proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_pname, tvb, *offsetp, 4, byte_order);
8053     *offsetp += 4;
8054 }
8055 static void glxGetTexGenfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8056 {
8057     int sequence_number;
8058     int f_n;
8059
8060     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexGenfv");
8061
8062     REPLY(reply);
8063     UNUSED(1);
8064     sequence_number = VALUE16(tvb, *offsetp);
8065     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8066             "%d (glx-GetTexGenfv)", sequence_number);
8067     *offsetp += 2;
8068     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8069     *offsetp += 4;
8070     UNUSED(4);
8071     f_n = VALUE32(tvb, *offsetp);
8072     proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_reply_n, tvb, *offsetp, 4, byte_order);
8073     *offsetp += 4;
8074     proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_reply_datum, tvb, *offsetp, 4, byte_order);
8075     *offsetp += 4;
8076     UNUSED(12);
8077     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexGenfv_reply_data, hf_x11_glx_GetTexGenfv_reply_data_item, f_n, byte_order);
8078 }
8079
8080 static void glxGetTexGeniv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8081 {
8082     proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_context_tag, tvb, *offsetp, 4, byte_order);
8083     *offsetp += 4;
8084     proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_coord, tvb, *offsetp, 4, byte_order);
8085     *offsetp += 4;
8086     proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_pname, tvb, *offsetp, 4, byte_order);
8087     *offsetp += 4;
8088 }
8089 static void glxGetTexGeniv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8090 {
8091     int sequence_number;
8092     int f_n;
8093
8094     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexGeniv");
8095
8096     REPLY(reply);
8097     UNUSED(1);
8098     sequence_number = VALUE16(tvb, *offsetp);
8099     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8100             "%d (glx-GetTexGeniv)", sequence_number);
8101     *offsetp += 2;
8102     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8103     *offsetp += 4;
8104     UNUSED(4);
8105     f_n = VALUE32(tvb, *offsetp);
8106     proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_reply_n, tvb, *offsetp, 4, byte_order);
8107     *offsetp += 4;
8108     proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_reply_datum, tvb, *offsetp, 4, byte_order);
8109     *offsetp += 4;
8110     UNUSED(12);
8111     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexGeniv_reply_data, hf_x11_glx_GetTexGeniv_reply_data_item, f_n, byte_order);
8112 }
8113
8114 static void glxGetTexImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8115 {
8116     proto_tree_add_item(t, hf_x11_glx_GetTexImage_context_tag, tvb, *offsetp, 4, byte_order);
8117     *offsetp += 4;
8118     proto_tree_add_item(t, hf_x11_glx_GetTexImage_target, tvb, *offsetp, 4, byte_order);
8119     *offsetp += 4;
8120     proto_tree_add_item(t, hf_x11_glx_GetTexImage_level, tvb, *offsetp, 4, byte_order);
8121     *offsetp += 4;
8122     proto_tree_add_item(t, hf_x11_glx_GetTexImage_format, tvb, *offsetp, 4, byte_order);
8123     *offsetp += 4;
8124     proto_tree_add_item(t, hf_x11_glx_GetTexImage_type, tvb, *offsetp, 4, byte_order);
8125     *offsetp += 4;
8126     proto_tree_add_item(t, hf_x11_glx_GetTexImage_swap_bytes, tvb, *offsetp, 1, byte_order);
8127     *offsetp += 1;
8128 }
8129 static void glxGetTexImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8130 {
8131     int sequence_number;
8132     int f_length;
8133
8134     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexImage");
8135
8136     REPLY(reply);
8137     UNUSED(1);
8138     sequence_number = VALUE16(tvb, *offsetp);
8139     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8140             "%d (glx-GetTexImage)", sequence_number);
8141     *offsetp += 2;
8142     f_length = VALUE32(tvb, *offsetp);
8143     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8144     *offsetp += 4;
8145     UNUSED(8);
8146     proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_width, tvb, *offsetp, 4, byte_order);
8147     *offsetp += 4;
8148     proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_height, tvb, *offsetp, 4, byte_order);
8149     *offsetp += 4;
8150     proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_depth, tvb, *offsetp, 4, byte_order);
8151     *offsetp += 4;
8152     UNUSED(4);
8153     listOfByte(tvb, offsetp, t, hf_x11_glx_GetTexImage_reply_data, (f_length * 4), byte_order);
8154 }
8155
8156 static void glxGetTexParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8157 {
8158     proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
8159     *offsetp += 4;
8160     proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_target, tvb, *offsetp, 4, byte_order);
8161     *offsetp += 4;
8162     proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_pname, tvb, *offsetp, 4, byte_order);
8163     *offsetp += 4;
8164 }
8165 static void glxGetTexParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8166 {
8167     int sequence_number;
8168     int f_n;
8169
8170     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexParameterfv");
8171
8172     REPLY(reply);
8173     UNUSED(1);
8174     sequence_number = VALUE16(tvb, *offsetp);
8175     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8176             "%d (glx-GetTexParameterfv)", sequence_number);
8177     *offsetp += 2;
8178     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8179     *offsetp += 4;
8180     UNUSED(4);
8181     f_n = VALUE32(tvb, *offsetp);
8182     proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
8183     *offsetp += 4;
8184     proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
8185     *offsetp += 4;
8186     UNUSED(12);
8187     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexParameterfv_reply_data, hf_x11_glx_GetTexParameterfv_reply_data_item, f_n, byte_order);
8188 }
8189
8190 static void glxGetTexParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8191 {
8192     proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
8193     *offsetp += 4;
8194     proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_target, tvb, *offsetp, 4, byte_order);
8195     *offsetp += 4;
8196     proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_pname, tvb, *offsetp, 4, byte_order);
8197     *offsetp += 4;
8198 }
8199 static void glxGetTexParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8200 {
8201     int sequence_number;
8202     int f_n;
8203
8204     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexParameteriv");
8205
8206     REPLY(reply);
8207     UNUSED(1);
8208     sequence_number = VALUE16(tvb, *offsetp);
8209     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8210             "%d (glx-GetTexParameteriv)", sequence_number);
8211     *offsetp += 2;
8212     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8213     *offsetp += 4;
8214     UNUSED(4);
8215     f_n = VALUE32(tvb, *offsetp);
8216     proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
8217     *offsetp += 4;
8218     proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
8219     *offsetp += 4;
8220     UNUSED(12);
8221     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexParameteriv_reply_data, hf_x11_glx_GetTexParameteriv_reply_data_item, f_n, byte_order);
8222 }
8223
8224 static void glxGetTexLevelParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8225 {
8226     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
8227     *offsetp += 4;
8228     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_target, tvb, *offsetp, 4, byte_order);
8229     *offsetp += 4;
8230     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_level, tvb, *offsetp, 4, byte_order);
8231     *offsetp += 4;
8232     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_pname, tvb, *offsetp, 4, byte_order);
8233     *offsetp += 4;
8234 }
8235 static void glxGetTexLevelParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8236 {
8237     int sequence_number;
8238     int f_n;
8239
8240     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexLevelParameterfv");
8241
8242     REPLY(reply);
8243     UNUSED(1);
8244     sequence_number = VALUE16(tvb, *offsetp);
8245     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8246             "%d (glx-GetTexLevelParameterfv)", sequence_number);
8247     *offsetp += 2;
8248     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8249     *offsetp += 4;
8250     UNUSED(4);
8251     f_n = VALUE32(tvb, *offsetp);
8252     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
8253     *offsetp += 4;
8254     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
8255     *offsetp += 4;
8256     UNUSED(12);
8257     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexLevelParameterfv_reply_data, hf_x11_glx_GetTexLevelParameterfv_reply_data_item, f_n, byte_order);
8258 }
8259
8260 static void glxGetTexLevelParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8261 {
8262     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
8263     *offsetp += 4;
8264     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_target, tvb, *offsetp, 4, byte_order);
8265     *offsetp += 4;
8266     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_level, tvb, *offsetp, 4, byte_order);
8267     *offsetp += 4;
8268     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_pname, tvb, *offsetp, 4, byte_order);
8269     *offsetp += 4;
8270 }
8271 static void glxGetTexLevelParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8272 {
8273     int sequence_number;
8274     int f_n;
8275
8276     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetTexLevelParameteriv");
8277
8278     REPLY(reply);
8279     UNUSED(1);
8280     sequence_number = VALUE16(tvb, *offsetp);
8281     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8282             "%d (glx-GetTexLevelParameteriv)", sequence_number);
8283     *offsetp += 2;
8284     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8285     *offsetp += 4;
8286     UNUSED(4);
8287     f_n = VALUE32(tvb, *offsetp);
8288     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
8289     *offsetp += 4;
8290     proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
8291     *offsetp += 4;
8292     UNUSED(12);
8293     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexLevelParameteriv_reply_data, hf_x11_glx_GetTexLevelParameteriv_reply_data_item, f_n, byte_order);
8294 }
8295
8296 static void glxIsEnabled(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8297 {
8298     proto_tree_add_item(t, hf_x11_glx_IsEnabled_context_tag, tvb, *offsetp, 4, byte_order);
8299     *offsetp += 4;
8300     proto_tree_add_item(t, hf_x11_glx_IsEnabled_capability, tvb, *offsetp, 4, byte_order);
8301     *offsetp += 4;
8302 }
8303 static void glxIsEnabled_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8304 {
8305     int sequence_number;
8306
8307     col_append_fstr(pinfo->cinfo, COL_INFO, "-IsEnabled");
8308
8309     REPLY(reply);
8310     UNUSED(1);
8311     sequence_number = VALUE16(tvb, *offsetp);
8312     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8313             "%d (glx-IsEnabled)", sequence_number);
8314     *offsetp += 2;
8315     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8316     *offsetp += 4;
8317     proto_tree_add_item(t, hf_x11_glx_IsEnabled_reply_ret_val, tvb, *offsetp, 4, byte_order);
8318     *offsetp += 4;
8319 }
8320
8321 static void glxIsList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8322 {
8323     proto_tree_add_item(t, hf_x11_glx_IsList_context_tag, tvb, *offsetp, 4, byte_order);
8324     *offsetp += 4;
8325     proto_tree_add_item(t, hf_x11_glx_IsList_list, tvb, *offsetp, 4, byte_order);
8326     *offsetp += 4;
8327 }
8328 static void glxIsList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8329 {
8330     int sequence_number;
8331
8332     col_append_fstr(pinfo->cinfo, COL_INFO, "-IsList");
8333
8334     REPLY(reply);
8335     UNUSED(1);
8336     sequence_number = VALUE16(tvb, *offsetp);
8337     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8338             "%d (glx-IsList)", sequence_number);
8339     *offsetp += 2;
8340     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8341     *offsetp += 4;
8342     proto_tree_add_item(t, hf_x11_glx_IsList_reply_ret_val, tvb, *offsetp, 4, byte_order);
8343     *offsetp += 4;
8344 }
8345
8346 static void glxFlush(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8347 {
8348     proto_tree_add_item(t, hf_x11_glx_Flush_context_tag, tvb, *offsetp, 4, byte_order);
8349     *offsetp += 4;
8350 }
8351
8352 static void glxAreTexturesResident(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8353 {
8354     int f_n;
8355     proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_context_tag, tvb, *offsetp, 4, byte_order);
8356     *offsetp += 4;
8357     f_n = VALUE32(tvb, *offsetp);
8358     proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_n, tvb, *offsetp, 4, byte_order);
8359     *offsetp += 4;
8360     listOfCard32(tvb, offsetp, t, hf_x11_glx_AreTexturesResident_textures, hf_x11_glx_AreTexturesResident_textures_item, f_n, byte_order);
8361     length -= f_n * 4;
8362 }
8363 static void glxAreTexturesResident_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8364 {
8365     int sequence_number;
8366     int f_length;
8367
8368     col_append_fstr(pinfo->cinfo, COL_INFO, "-AreTexturesResident");
8369
8370     REPLY(reply);
8371     UNUSED(1);
8372     sequence_number = VALUE16(tvb, *offsetp);
8373     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8374             "%d (glx-AreTexturesResident)", sequence_number);
8375     *offsetp += 2;
8376     f_length = VALUE32(tvb, *offsetp);
8377     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8378     *offsetp += 4;
8379     proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_reply_ret_val, tvb, *offsetp, 4, byte_order);
8380     *offsetp += 4;
8381     UNUSED(20);
8382     listOfByte(tvb, offsetp, t, hf_x11_glx_AreTexturesResident_reply_data, (f_length * 4), byte_order);
8383 }
8384
8385 static void glxDeleteTextures(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8386 {
8387     int f_n;
8388     proto_tree_add_item(t, hf_x11_glx_DeleteTextures_context_tag, tvb, *offsetp, 4, byte_order);
8389     *offsetp += 4;
8390     f_n = VALUE32(tvb, *offsetp);
8391     proto_tree_add_item(t, hf_x11_glx_DeleteTextures_n, tvb, *offsetp, 4, byte_order);
8392     *offsetp += 4;
8393     listOfCard32(tvb, offsetp, t, hf_x11_glx_DeleteTextures_textures, hf_x11_glx_DeleteTextures_textures_item, f_n, byte_order);
8394     length -= f_n * 4;
8395 }
8396
8397 static void glxGenTextures(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8398 {
8399     proto_tree_add_item(t, hf_x11_glx_GenTextures_context_tag, tvb, *offsetp, 4, byte_order);
8400     *offsetp += 4;
8401     proto_tree_add_item(t, hf_x11_glx_GenTextures_n, tvb, *offsetp, 4, byte_order);
8402     *offsetp += 4;
8403 }
8404 static void glxGenTextures_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8405 {
8406     int sequence_number;
8407     int f_length;
8408
8409     col_append_fstr(pinfo->cinfo, COL_INFO, "-GenTextures");
8410
8411     REPLY(reply);
8412     UNUSED(1);
8413     sequence_number = VALUE16(tvb, *offsetp);
8414     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8415             "%d (glx-GenTextures)", sequence_number);
8416     *offsetp += 2;
8417     f_length = VALUE32(tvb, *offsetp);
8418     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8419     *offsetp += 4;
8420     UNUSED(24);
8421     listOfCard32(tvb, offsetp, t, hf_x11_glx_GenTextures_reply_data, hf_x11_glx_GenTextures_reply_data_item, f_length, byte_order);
8422 }
8423
8424 static void glxIsTexture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8425 {
8426     proto_tree_add_item(t, hf_x11_glx_IsTexture_context_tag, tvb, *offsetp, 4, byte_order);
8427     *offsetp += 4;
8428     proto_tree_add_item(t, hf_x11_glx_IsTexture_texture, tvb, *offsetp, 4, byte_order);
8429     *offsetp += 4;
8430 }
8431 static void glxIsTexture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8432 {
8433     int sequence_number;
8434
8435     col_append_fstr(pinfo->cinfo, COL_INFO, "-IsTexture");
8436
8437     REPLY(reply);
8438     UNUSED(1);
8439     sequence_number = VALUE16(tvb, *offsetp);
8440     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8441             "%d (glx-IsTexture)", sequence_number);
8442     *offsetp += 2;
8443     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8444     *offsetp += 4;
8445     proto_tree_add_item(t, hf_x11_glx_IsTexture_reply_ret_val, tvb, *offsetp, 4, byte_order);
8446     *offsetp += 4;
8447 }
8448
8449 static void glxGetColorTable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8450 {
8451     proto_tree_add_item(t, hf_x11_glx_GetColorTable_context_tag, tvb, *offsetp, 4, byte_order);
8452     *offsetp += 4;
8453     proto_tree_add_item(t, hf_x11_glx_GetColorTable_target, tvb, *offsetp, 4, byte_order);
8454     *offsetp += 4;
8455     proto_tree_add_item(t, hf_x11_glx_GetColorTable_format, tvb, *offsetp, 4, byte_order);
8456     *offsetp += 4;
8457     proto_tree_add_item(t, hf_x11_glx_GetColorTable_type, tvb, *offsetp, 4, byte_order);
8458     *offsetp += 4;
8459     proto_tree_add_item(t, hf_x11_glx_GetColorTable_swap_bytes, tvb, *offsetp, 1, byte_order);
8460     *offsetp += 1;
8461 }
8462 static void glxGetColorTable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8463 {
8464     int sequence_number;
8465     int f_length;
8466
8467     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetColorTable");
8468
8469     REPLY(reply);
8470     UNUSED(1);
8471     sequence_number = VALUE16(tvb, *offsetp);
8472     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8473             "%d (glx-GetColorTable)", sequence_number);
8474     *offsetp += 2;
8475     f_length = VALUE32(tvb, *offsetp);
8476     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8477     *offsetp += 4;
8478     UNUSED(8);
8479     proto_tree_add_item(t, hf_x11_glx_GetColorTable_reply_width, tvb, *offsetp, 4, byte_order);
8480     *offsetp += 4;
8481     UNUSED(12);
8482     listOfByte(tvb, offsetp, t, hf_x11_glx_GetColorTable_reply_data, (f_length * 4), byte_order);
8483 }
8484
8485 static void glxGetColorTableParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8486 {
8487     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
8488     *offsetp += 4;
8489     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_target, tvb, *offsetp, 4, byte_order);
8490     *offsetp += 4;
8491     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_pname, tvb, *offsetp, 4, byte_order);
8492     *offsetp += 4;
8493 }
8494 static void glxGetColorTableParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8495 {
8496     int sequence_number;
8497     int f_n;
8498
8499     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetColorTableParameterfv");
8500
8501     REPLY(reply);
8502     UNUSED(1);
8503     sequence_number = VALUE16(tvb, *offsetp);
8504     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8505             "%d (glx-GetColorTableParameterfv)", sequence_number);
8506     *offsetp += 2;
8507     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8508     *offsetp += 4;
8509     UNUSED(4);
8510     f_n = VALUE32(tvb, *offsetp);
8511     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
8512     *offsetp += 4;
8513     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
8514     *offsetp += 4;
8515     UNUSED(12);
8516     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetColorTableParameterfv_reply_data, hf_x11_glx_GetColorTableParameterfv_reply_data_item, f_n, byte_order);
8517 }
8518
8519 static void glxGetColorTableParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8520 {
8521     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
8522     *offsetp += 4;
8523     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_target, tvb, *offsetp, 4, byte_order);
8524     *offsetp += 4;
8525     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_pname, tvb, *offsetp, 4, byte_order);
8526     *offsetp += 4;
8527 }
8528 static void glxGetColorTableParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8529 {
8530     int sequence_number;
8531     int f_n;
8532
8533     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetColorTableParameteriv");
8534
8535     REPLY(reply);
8536     UNUSED(1);
8537     sequence_number = VALUE16(tvb, *offsetp);
8538     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8539             "%d (glx-GetColorTableParameteriv)", sequence_number);
8540     *offsetp += 2;
8541     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8542     *offsetp += 4;
8543     UNUSED(4);
8544     f_n = VALUE32(tvb, *offsetp);
8545     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
8546     *offsetp += 4;
8547     proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
8548     *offsetp += 4;
8549     UNUSED(12);
8550     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetColorTableParameteriv_reply_data, hf_x11_glx_GetColorTableParameteriv_reply_data_item, f_n, byte_order);
8551 }
8552
8553 static void glxGetConvolutionFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8554 {
8555     proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_context_tag, tvb, *offsetp, 4, byte_order);
8556     *offsetp += 4;
8557     proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_target, tvb, *offsetp, 4, byte_order);
8558     *offsetp += 4;
8559     proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_format, tvb, *offsetp, 4, byte_order);
8560     *offsetp += 4;
8561     proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_type, tvb, *offsetp, 4, byte_order);
8562     *offsetp += 4;
8563     proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_swap_bytes, tvb, *offsetp, 1, byte_order);
8564     *offsetp += 1;
8565 }
8566 static void glxGetConvolutionFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8567 {
8568     int sequence_number;
8569     int f_length;
8570
8571     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetConvolutionFilter");
8572
8573     REPLY(reply);
8574     UNUSED(1);
8575     sequence_number = VALUE16(tvb, *offsetp);
8576     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8577             "%d (glx-GetConvolutionFilter)", sequence_number);
8578     *offsetp += 2;
8579     f_length = VALUE32(tvb, *offsetp);
8580     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8581     *offsetp += 4;
8582     UNUSED(8);
8583     proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_reply_width, tvb, *offsetp, 4, byte_order);
8584     *offsetp += 4;
8585     proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_reply_height, tvb, *offsetp, 4, byte_order);
8586     *offsetp += 4;
8587     UNUSED(8);
8588     listOfByte(tvb, offsetp, t, hf_x11_glx_GetConvolutionFilter_reply_data, (f_length * 4), byte_order);
8589 }
8590
8591 static void glxGetConvolutionParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8592 {
8593     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
8594     *offsetp += 4;
8595     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_target, tvb, *offsetp, 4, byte_order);
8596     *offsetp += 4;
8597     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_pname, tvb, *offsetp, 4, byte_order);
8598     *offsetp += 4;
8599 }
8600 static void glxGetConvolutionParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8601 {
8602     int sequence_number;
8603     int f_n;
8604
8605     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetConvolutionParameterfv");
8606
8607     REPLY(reply);
8608     UNUSED(1);
8609     sequence_number = VALUE16(tvb, *offsetp);
8610     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8611             "%d (glx-GetConvolutionParameterfv)", sequence_number);
8612     *offsetp += 2;
8613     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8614     *offsetp += 4;
8615     UNUSED(4);
8616     f_n = VALUE32(tvb, *offsetp);
8617     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
8618     *offsetp += 4;
8619     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
8620     *offsetp += 4;
8621     UNUSED(12);
8622     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetConvolutionParameterfv_reply_data, hf_x11_glx_GetConvolutionParameterfv_reply_data_item, f_n, byte_order);
8623 }
8624
8625 static void glxGetConvolutionParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8626 {
8627     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
8628     *offsetp += 4;
8629     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_target, tvb, *offsetp, 4, byte_order);
8630     *offsetp += 4;
8631     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_pname, tvb, *offsetp, 4, byte_order);
8632     *offsetp += 4;
8633 }
8634 static void glxGetConvolutionParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8635 {
8636     int sequence_number;
8637     int f_n;
8638
8639     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetConvolutionParameteriv");
8640
8641     REPLY(reply);
8642     UNUSED(1);
8643     sequence_number = VALUE16(tvb, *offsetp);
8644     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8645             "%d (glx-GetConvolutionParameteriv)", sequence_number);
8646     *offsetp += 2;
8647     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8648     *offsetp += 4;
8649     UNUSED(4);
8650     f_n = VALUE32(tvb, *offsetp);
8651     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
8652     *offsetp += 4;
8653     proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
8654     *offsetp += 4;
8655     UNUSED(12);
8656     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetConvolutionParameteriv_reply_data, hf_x11_glx_GetConvolutionParameteriv_reply_data_item, f_n, byte_order);
8657 }
8658
8659 static void glxGetSeparableFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8660 {
8661     proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_context_tag, tvb, *offsetp, 4, byte_order);
8662     *offsetp += 4;
8663     proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_target, tvb, *offsetp, 4, byte_order);
8664     *offsetp += 4;
8665     proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_format, tvb, *offsetp, 4, byte_order);
8666     *offsetp += 4;
8667     proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_type, tvb, *offsetp, 4, byte_order);
8668     *offsetp += 4;
8669     proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_swap_bytes, tvb, *offsetp, 1, byte_order);
8670     *offsetp += 1;
8671 }
8672 static void glxGetSeparableFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8673 {
8674     int sequence_number;
8675     int f_length;
8676
8677     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetSeparableFilter");
8678
8679     REPLY(reply);
8680     UNUSED(1);
8681     sequence_number = VALUE16(tvb, *offsetp);
8682     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8683             "%d (glx-GetSeparableFilter)", sequence_number);
8684     *offsetp += 2;
8685     f_length = VALUE32(tvb, *offsetp);
8686     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8687     *offsetp += 4;
8688     UNUSED(8);
8689     proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_reply_row_w, tvb, *offsetp, 4, byte_order);
8690     *offsetp += 4;
8691     proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_reply_col_h, tvb, *offsetp, 4, byte_order);
8692     *offsetp += 4;
8693     UNUSED(8);
8694     listOfByte(tvb, offsetp, t, hf_x11_glx_GetSeparableFilter_reply_rows_and_cols, (f_length * 4), byte_order);
8695 }
8696
8697 static void glxGetHistogram(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8698 {
8699     proto_tree_add_item(t, hf_x11_glx_GetHistogram_context_tag, tvb, *offsetp, 4, byte_order);
8700     *offsetp += 4;
8701     proto_tree_add_item(t, hf_x11_glx_GetHistogram_target, tvb, *offsetp, 4, byte_order);
8702     *offsetp += 4;
8703     proto_tree_add_item(t, hf_x11_glx_GetHistogram_format, tvb, *offsetp, 4, byte_order);
8704     *offsetp += 4;
8705     proto_tree_add_item(t, hf_x11_glx_GetHistogram_type, tvb, *offsetp, 4, byte_order);
8706     *offsetp += 4;
8707     proto_tree_add_item(t, hf_x11_glx_GetHistogram_swap_bytes, tvb, *offsetp, 1, byte_order);
8708     *offsetp += 1;
8709     proto_tree_add_item(t, hf_x11_glx_GetHistogram_reset, tvb, *offsetp, 1, byte_order);
8710     *offsetp += 1;
8711 }
8712 static void glxGetHistogram_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8713 {
8714     int sequence_number;
8715     int f_length;
8716
8717     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetHistogram");
8718
8719     REPLY(reply);
8720     UNUSED(1);
8721     sequence_number = VALUE16(tvb, *offsetp);
8722     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8723             "%d (glx-GetHistogram)", sequence_number);
8724     *offsetp += 2;
8725     f_length = VALUE32(tvb, *offsetp);
8726     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8727     *offsetp += 4;
8728     UNUSED(8);
8729     proto_tree_add_item(t, hf_x11_glx_GetHistogram_reply_width, tvb, *offsetp, 4, byte_order);
8730     *offsetp += 4;
8731     UNUSED(12);
8732     listOfByte(tvb, offsetp, t, hf_x11_glx_GetHistogram_reply_data, (f_length * 4), byte_order);
8733 }
8734
8735 static void glxGetHistogramParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8736 {
8737     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
8738     *offsetp += 4;
8739     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_target, tvb, *offsetp, 4, byte_order);
8740     *offsetp += 4;
8741     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_pname, tvb, *offsetp, 4, byte_order);
8742     *offsetp += 4;
8743 }
8744 static void glxGetHistogramParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8745 {
8746     int sequence_number;
8747     int f_n;
8748
8749     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetHistogramParameterfv");
8750
8751     REPLY(reply);
8752     UNUSED(1);
8753     sequence_number = VALUE16(tvb, *offsetp);
8754     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8755             "%d (glx-GetHistogramParameterfv)", sequence_number);
8756     *offsetp += 2;
8757     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8758     *offsetp += 4;
8759     UNUSED(4);
8760     f_n = VALUE32(tvb, *offsetp);
8761     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
8762     *offsetp += 4;
8763     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
8764     *offsetp += 4;
8765     UNUSED(12);
8766     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetHistogramParameterfv_reply_data, hf_x11_glx_GetHistogramParameterfv_reply_data_item, f_n, byte_order);
8767 }
8768
8769 static void glxGetHistogramParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8770 {
8771     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
8772     *offsetp += 4;
8773     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_target, tvb, *offsetp, 4, byte_order);
8774     *offsetp += 4;
8775     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_pname, tvb, *offsetp, 4, byte_order);
8776     *offsetp += 4;
8777 }
8778 static void glxGetHistogramParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8779 {
8780     int sequence_number;
8781     int f_n;
8782
8783     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetHistogramParameteriv");
8784
8785     REPLY(reply);
8786     UNUSED(1);
8787     sequence_number = VALUE16(tvb, *offsetp);
8788     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8789             "%d (glx-GetHistogramParameteriv)", sequence_number);
8790     *offsetp += 2;
8791     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8792     *offsetp += 4;
8793     UNUSED(4);
8794     f_n = VALUE32(tvb, *offsetp);
8795     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
8796     *offsetp += 4;
8797     proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
8798     *offsetp += 4;
8799     UNUSED(12);
8800     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetHistogramParameteriv_reply_data, hf_x11_glx_GetHistogramParameteriv_reply_data_item, f_n, byte_order);
8801 }
8802
8803 static void glxGetMinmax(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8804 {
8805     proto_tree_add_item(t, hf_x11_glx_GetMinmax_context_tag, tvb, *offsetp, 4, byte_order);
8806     *offsetp += 4;
8807     proto_tree_add_item(t, hf_x11_glx_GetMinmax_target, tvb, *offsetp, 4, byte_order);
8808     *offsetp += 4;
8809     proto_tree_add_item(t, hf_x11_glx_GetMinmax_format, tvb, *offsetp, 4, byte_order);
8810     *offsetp += 4;
8811     proto_tree_add_item(t, hf_x11_glx_GetMinmax_type, tvb, *offsetp, 4, byte_order);
8812     *offsetp += 4;
8813     proto_tree_add_item(t, hf_x11_glx_GetMinmax_swap_bytes, tvb, *offsetp, 1, byte_order);
8814     *offsetp += 1;
8815     proto_tree_add_item(t, hf_x11_glx_GetMinmax_reset, tvb, *offsetp, 1, byte_order);
8816     *offsetp += 1;
8817 }
8818 static void glxGetMinmax_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8819 {
8820     int sequence_number;
8821     int f_length;
8822
8823     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMinmax");
8824
8825     REPLY(reply);
8826     UNUSED(1);
8827     sequence_number = VALUE16(tvb, *offsetp);
8828     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8829             "%d (glx-GetMinmax)", sequence_number);
8830     *offsetp += 2;
8831     f_length = VALUE32(tvb, *offsetp);
8832     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8833     *offsetp += 4;
8834     UNUSED(24);
8835     listOfByte(tvb, offsetp, t, hf_x11_glx_GetMinmax_reply_data, (f_length * 4), byte_order);
8836 }
8837
8838 static void glxGetMinmaxParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8839 {
8840     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
8841     *offsetp += 4;
8842     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_target, tvb, *offsetp, 4, byte_order);
8843     *offsetp += 4;
8844     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_pname, tvb, *offsetp, 4, byte_order);
8845     *offsetp += 4;
8846 }
8847 static void glxGetMinmaxParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8848 {
8849     int sequence_number;
8850     int f_n;
8851
8852     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMinmaxParameterfv");
8853
8854     REPLY(reply);
8855     UNUSED(1);
8856     sequence_number = VALUE16(tvb, *offsetp);
8857     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8858             "%d (glx-GetMinmaxParameterfv)", sequence_number);
8859     *offsetp += 2;
8860     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8861     *offsetp += 4;
8862     UNUSED(4);
8863     f_n = VALUE32(tvb, *offsetp);
8864     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
8865     *offsetp += 4;
8866     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
8867     *offsetp += 4;
8868     UNUSED(12);
8869     listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMinmaxParameterfv_reply_data, hf_x11_glx_GetMinmaxParameterfv_reply_data_item, f_n, byte_order);
8870 }
8871
8872 static void glxGetMinmaxParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8873 {
8874     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
8875     *offsetp += 4;
8876     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_target, tvb, *offsetp, 4, byte_order);
8877     *offsetp += 4;
8878     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_pname, tvb, *offsetp, 4, byte_order);
8879     *offsetp += 4;
8880 }
8881 static void glxGetMinmaxParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8882 {
8883     int sequence_number;
8884     int f_n;
8885
8886     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMinmaxParameteriv");
8887
8888     REPLY(reply);
8889     UNUSED(1);
8890     sequence_number = VALUE16(tvb, *offsetp);
8891     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8892             "%d (glx-GetMinmaxParameteriv)", sequence_number);
8893     *offsetp += 2;
8894     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8895     *offsetp += 4;
8896     UNUSED(4);
8897     f_n = VALUE32(tvb, *offsetp);
8898     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
8899     *offsetp += 4;
8900     proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
8901     *offsetp += 4;
8902     UNUSED(12);
8903     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMinmaxParameteriv_reply_data, hf_x11_glx_GetMinmaxParameteriv_reply_data_item, f_n, byte_order);
8904 }
8905
8906 static void glxGetCompressedTexImageARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8907 {
8908     proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_context_tag, tvb, *offsetp, 4, byte_order);
8909     *offsetp += 4;
8910     proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_target, tvb, *offsetp, 4, byte_order);
8911     *offsetp += 4;
8912     proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_level, tvb, *offsetp, 4, byte_order);
8913     *offsetp += 4;
8914 }
8915 static void glxGetCompressedTexImageARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8916 {
8917     int sequence_number;
8918     int f_length;
8919
8920     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCompressedTexImageARB");
8921
8922     REPLY(reply);
8923     UNUSED(1);
8924     sequence_number = VALUE16(tvb, *offsetp);
8925     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8926             "%d (glx-GetCompressedTexImageARB)", sequence_number);
8927     *offsetp += 2;
8928     f_length = VALUE32(tvb, *offsetp);
8929     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8930     *offsetp += 4;
8931     UNUSED(8);
8932     proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_reply_size, tvb, *offsetp, 4, byte_order);
8933     *offsetp += 4;
8934     UNUSED(12);
8935     listOfByte(tvb, offsetp, t, hf_x11_glx_GetCompressedTexImageARB_reply_data, (f_length * 4), byte_order);
8936 }
8937
8938 static void glxDeleteQueriesARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8939 {
8940     int f_n;
8941     proto_tree_add_item(t, hf_x11_glx_DeleteQueriesARB_context_tag, tvb, *offsetp, 4, byte_order);
8942     *offsetp += 4;
8943     f_n = VALUE32(tvb, *offsetp);
8944     proto_tree_add_item(t, hf_x11_glx_DeleteQueriesARB_n, tvb, *offsetp, 4, byte_order);
8945     *offsetp += 4;
8946     listOfCard32(tvb, offsetp, t, hf_x11_glx_DeleteQueriesARB_ids, hf_x11_glx_DeleteQueriesARB_ids_item, f_n, byte_order);
8947     length -= f_n * 4;
8948 }
8949
8950 static void glxGenQueriesARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8951 {
8952     proto_tree_add_item(t, hf_x11_glx_GenQueriesARB_context_tag, tvb, *offsetp, 4, byte_order);
8953     *offsetp += 4;
8954     proto_tree_add_item(t, hf_x11_glx_GenQueriesARB_n, tvb, *offsetp, 4, byte_order);
8955     *offsetp += 4;
8956 }
8957 static void glxGenQueriesARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8958 {
8959     int sequence_number;
8960     int f_length;
8961
8962     col_append_fstr(pinfo->cinfo, COL_INFO, "-GenQueriesARB");
8963
8964     REPLY(reply);
8965     UNUSED(1);
8966     sequence_number = VALUE16(tvb, *offsetp);
8967     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8968             "%d (glx-GenQueriesARB)", sequence_number);
8969     *offsetp += 2;
8970     f_length = VALUE32(tvb, *offsetp);
8971     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8972     *offsetp += 4;
8973     UNUSED(24);
8974     listOfCard32(tvb, offsetp, t, hf_x11_glx_GenQueriesARB_reply_data, hf_x11_glx_GenQueriesARB_reply_data_item, f_length, byte_order);
8975 }
8976
8977 static void glxIsQueryARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
8978 {
8979     proto_tree_add_item(t, hf_x11_glx_IsQueryARB_context_tag, tvb, *offsetp, 4, byte_order);
8980     *offsetp += 4;
8981     proto_tree_add_item(t, hf_x11_glx_IsQueryARB_id, tvb, *offsetp, 4, byte_order);
8982     *offsetp += 4;
8983 }
8984 static void glxIsQueryARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
8985 {
8986     int sequence_number;
8987
8988     col_append_fstr(pinfo->cinfo, COL_INFO, "-IsQueryARB");
8989
8990     REPLY(reply);
8991     UNUSED(1);
8992     sequence_number = VALUE16(tvb, *offsetp);
8993     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
8994             "%d (glx-IsQueryARB)", sequence_number);
8995     *offsetp += 2;
8996     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
8997     *offsetp += 4;
8998     proto_tree_add_item(t, hf_x11_glx_IsQueryARB_reply_ret_val, tvb, *offsetp, 4, byte_order);
8999     *offsetp += 4;
9000 }
9001
9002 static void glxGetQueryivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
9003 {
9004     proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_context_tag, tvb, *offsetp, 4, byte_order);
9005     *offsetp += 4;
9006     proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_target, tvb, *offsetp, 4, byte_order);
9007     *offsetp += 4;
9008     proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_pname, tvb, *offsetp, 4, byte_order);
9009     *offsetp += 4;
9010 }
9011 static void glxGetQueryivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
9012 {
9013     int sequence_number;
9014     int f_n;
9015
9016     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetQueryivARB");
9017
9018     REPLY(reply);
9019     UNUSED(1);
9020     sequence_number = VALUE16(tvb, *offsetp);
9021     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
9022             "%d (glx-GetQueryivARB)", sequence_number);
9023     *offsetp += 2;
9024     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
9025     *offsetp += 4;
9026     UNUSED(4);
9027     f_n = VALUE32(tvb, *offsetp);
9028     proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_reply_n, tvb, *offsetp, 4, byte_order);
9029     *offsetp += 4;
9030     proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_reply_datum, tvb, *offsetp, 4, byte_order);
9031     *offsetp += 4;
9032     UNUSED(12);
9033     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetQueryivARB_reply_data, hf_x11_glx_GetQueryivARB_reply_data_item, f_n, byte_order);
9034 }
9035
9036 static void glxGetQueryObjectivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
9037 {
9038     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_context_tag, tvb, *offsetp, 4, byte_order);
9039     *offsetp += 4;
9040     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_id, tvb, *offsetp, 4, byte_order);
9041     *offsetp += 4;
9042     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_pname, tvb, *offsetp, 4, byte_order);
9043     *offsetp += 4;
9044 }
9045 static void glxGetQueryObjectivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
9046 {
9047     int sequence_number;
9048     int f_n;
9049
9050     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetQueryObjectivARB");
9051
9052     REPLY(reply);
9053     UNUSED(1);
9054     sequence_number = VALUE16(tvb, *offsetp);
9055     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
9056             "%d (glx-GetQueryObjectivARB)", sequence_number);
9057     *offsetp += 2;
9058     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
9059     *offsetp += 4;
9060     UNUSED(4);
9061     f_n = VALUE32(tvb, *offsetp);
9062     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_reply_n, tvb, *offsetp, 4, byte_order);
9063     *offsetp += 4;
9064     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_reply_datum, tvb, *offsetp, 4, byte_order);
9065     *offsetp += 4;
9066     UNUSED(12);
9067     listOfInt32(tvb, offsetp, t, hf_x11_glx_GetQueryObjectivARB_reply_data, hf_x11_glx_GetQueryObjectivARB_reply_data_item, f_n, byte_order);
9068 }
9069
9070 static void glxGetQueryObjectuivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
9071 {
9072     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_context_tag, tvb, *offsetp, 4, byte_order);
9073     *offsetp += 4;
9074     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_id, tvb, *offsetp, 4, byte_order);
9075     *offsetp += 4;
9076     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_pname, tvb, *offsetp, 4, byte_order);
9077     *offsetp += 4;
9078 }
9079 static void glxGetQueryObjectuivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
9080 {
9081     int sequence_number;
9082     int f_n;
9083
9084     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetQueryObjectuivARB");
9085
9086     REPLY(reply);
9087     UNUSED(1);
9088     sequence_number = VALUE16(tvb, *offsetp);
9089     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
9090             "%d (glx-GetQueryObjectuivARB)", sequence_number);
9091     *offsetp += 2;
9092     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
9093     *offsetp += 4;
9094     UNUSED(4);
9095     f_n = VALUE32(tvb, *offsetp);
9096     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_reply_n, tvb, *offsetp, 4, byte_order);
9097     *offsetp += 4;
9098     proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_reply_datum, tvb, *offsetp, 4, byte_order);
9099     *offsetp += 4;
9100     UNUSED(12);
9101     listOfCard32(tvb, offsetp, t, hf_x11_glx_GetQueryObjectuivARB_reply_data, hf_x11_glx_GetQueryObjectuivARB_reply_data_item, f_n, byte_order);
9102 }
9103 static const value_string glx_extension_minor[] = {
9104     { 1, "Render" },
9105     { 2, "RenderLarge" },
9106     { 3, "CreateContext" },
9107     { 4, "DestroyContext" },
9108     { 5, "MakeCurrent" },
9109     { 6, "IsDirect" },
9110     { 7, "QueryVersion" },
9111     { 8, "WaitGL" },
9112     { 9, "WaitX" },
9113     { 10, "CopyContext" },
9114     { 11, "SwapBuffers" },
9115     { 12, "UseXFont" },
9116     { 13, "CreateGLXPixmap" },
9117     { 14, "GetVisualConfigs" },
9118     { 15, "DestroyGLXPixmap" },
9119     { 16, "VendorPrivate" },
9120     { 17, "VendorPrivateWithReply" },
9121     { 18, "QueryExtensionsString" },
9122     { 19, "QueryServerString" },
9123     { 20, "ClientInfo" },
9124     { 21, "GetFBConfigs" },
9125     { 22, "CreatePixmap" },
9126     { 23, "DestroyPixmap" },
9127     { 24, "CreateNewContext" },
9128     { 25, "QueryContext" },
9129     { 26, "MakeContextCurrent" },
9130     { 27, "CreatePbuffer" },
9131     { 28, "DestroyPbuffer" },
9132     { 29, "GetDrawableAttributes" },
9133     { 30, "ChangeDrawableAttributes" },
9134     { 31, "CreateWindow" },
9135     { 32, "DeleteWindow" },
9136     { 33, "SetClientInfoARB" },
9137     { 34, "CreateContextAttribsARB" },
9138     { 35, "SetClientInfo2ARB" },
9139     { 101, "NewList" },
9140     { 102, "EndList" },
9141     { 103, "DeleteLists" },
9142     { 104, "GenLists" },
9143     { 105, "FeedbackBuffer" },
9144     { 106, "SelectBuffer" },
9145     { 107, "RenderMode" },
9146     { 108, "Finish" },
9147     { 109, "PixelStoref" },
9148     { 110, "PixelStorei" },
9149     { 111, "ReadPixels" },
9150     { 112, "GetBooleanv" },
9151     { 113, "GetClipPlane" },
9152     { 114, "GetDoublev" },
9153     { 115, "GetError" },
9154     { 116, "GetFloatv" },
9155     { 117, "GetIntegerv" },
9156     { 118, "GetLightfv" },
9157     { 119, "GetLightiv" },
9158     { 120, "GetMapdv" },
9159     { 121, "GetMapfv" },
9160     { 122, "GetMapiv" },
9161     { 123, "GetMaterialfv" },
9162     { 124, "GetMaterialiv" },
9163     { 125, "GetPixelMapfv" },
9164     { 126, "GetPixelMapuiv" },
9165     { 127, "GetPixelMapusv" },
9166     { 128, "GetPolygonStipple" },
9167     { 129, "GetString" },
9168     { 130, "GetTexEnvfv" },
9169     { 131, "GetTexEnviv" },
9170     { 132, "GetTexGendv" },
9171     { 133, "GetTexGenfv" },
9172     { 134, "GetTexGeniv" },
9173     { 135, "GetTexImage" },
9174     { 136, "GetTexParameterfv" },
9175     { 137, "GetTexParameteriv" },
9176     { 138, "GetTexLevelParameterfv" },
9177     { 139, "GetTexLevelParameteriv" },
9178     { 140, "IsEnabled" },
9179     { 141, "IsList" },
9180     { 142, "Flush" },
9181     { 143, "AreTexturesResident" },
9182     { 144, "DeleteTextures" },
9183     { 145, "GenTextures" },
9184     { 146, "IsTexture" },
9185     { 147, "GetColorTable" },
9186     { 148, "GetColorTableParameterfv" },
9187     { 149, "GetColorTableParameteriv" },
9188     { 150, "GetConvolutionFilter" },
9189     { 151, "GetConvolutionParameterfv" },
9190     { 152, "GetConvolutionParameteriv" },
9191     { 153, "GetSeparableFilter" },
9192     { 154, "GetHistogram" },
9193     { 155, "GetHistogramParameterfv" },
9194     { 156, "GetHistogramParameteriv" },
9195     { 157, "GetMinmax" },
9196     { 158, "GetMinmaxParameterfv" },
9197     { 159, "GetMinmaxParameteriv" },
9198     { 160, "GetCompressedTexImageARB" },
9199     { 161, "DeleteQueriesARB" },
9200     { 162, "GenQueriesARB" },
9201     { 163, "IsQueryARB" },
9202     { 164, "GetQueryivARB" },
9203     { 165, "GetQueryObjectivARB" },
9204     { 166, "GetQueryObjectuivARB" },
9205     { 0, NULL }
9206 };
9207 const x11_event_info glx_events[] = {
9208     { "glx-BufferSwapComplete", glxBufferSwapComplete },
9209     { NULL, NULL }
9210 };
9211 static x11_reply_info glx_replies[] = {
9212     { 5, glxMakeCurrent_Reply },
9213     { 6, glxIsDirect_Reply },
9214     { 7, glxQueryVersion_Reply },
9215     { 14, glxGetVisualConfigs_Reply },
9216     { 17, glxVendorPrivateWithReply_Reply },
9217     { 18, glxQueryExtensionsString_Reply },
9218     { 19, glxQueryServerString_Reply },
9219     { 21, glxGetFBConfigs_Reply },
9220     { 25, glxQueryContext_Reply },
9221     { 26, glxMakeContextCurrent_Reply },
9222     { 29, glxGetDrawableAttributes_Reply },
9223     { 104, glxGenLists_Reply },
9224     { 107, glxRenderMode_Reply },
9225     { 108, glxFinish_Reply },
9226     { 111, glxReadPixels_Reply },
9227     { 112, glxGetBooleanv_Reply },
9228     { 113, glxGetClipPlane_Reply },
9229     { 114, glxGetDoublev_Reply },
9230     { 115, glxGetError_Reply },
9231     { 116, glxGetFloatv_Reply },
9232     { 117, glxGetIntegerv_Reply },
9233     { 118, glxGetLightfv_Reply },
9234     { 119, glxGetLightiv_Reply },
9235     { 120, glxGetMapdv_Reply },
9236     { 121, glxGetMapfv_Reply },
9237     { 122, glxGetMapiv_Reply },
9238     { 123, glxGetMaterialfv_Reply },
9239     { 124, glxGetMaterialiv_Reply },
9240     { 125, glxGetPixelMapfv_Reply },
9241     { 126, glxGetPixelMapuiv_Reply },
9242     { 127, glxGetPixelMapusv_Reply },
9243     { 128, glxGetPolygonStipple_Reply },
9244     { 129, glxGetString_Reply },
9245     { 130, glxGetTexEnvfv_Reply },
9246     { 131, glxGetTexEnviv_Reply },
9247     { 132, glxGetTexGendv_Reply },
9248     { 133, glxGetTexGenfv_Reply },
9249     { 134, glxGetTexGeniv_Reply },
9250     { 135, glxGetTexImage_Reply },
9251     { 136, glxGetTexParameterfv_Reply },
9252     { 137, glxGetTexParameteriv_Reply },
9253     { 138, glxGetTexLevelParameterfv_Reply },
9254     { 139, glxGetTexLevelParameteriv_Reply },
9255     { 140, glxIsEnabled_Reply },
9256     { 141, glxIsList_Reply },
9257     { 143, glxAreTexturesResident_Reply },
9258     { 145, glxGenTextures_Reply },
9259     { 146, glxIsTexture_Reply },
9260     { 147, glxGetColorTable_Reply },
9261     { 148, glxGetColorTableParameterfv_Reply },
9262     { 149, glxGetColorTableParameteriv_Reply },
9263     { 150, glxGetConvolutionFilter_Reply },
9264     { 151, glxGetConvolutionParameterfv_Reply },
9265     { 152, glxGetConvolutionParameteriv_Reply },
9266     { 153, glxGetSeparableFilter_Reply },
9267     { 154, glxGetHistogram_Reply },
9268     { 155, glxGetHistogramParameterfv_Reply },
9269     { 156, glxGetHistogramParameteriv_Reply },
9270     { 157, glxGetMinmax_Reply },
9271     { 158, glxGetMinmaxParameterfv_Reply },
9272     { 159, glxGetMinmaxParameteriv_Reply },
9273     { 160, glxGetCompressedTexImageARB_Reply },
9274     { 162, glxGenQueriesARB_Reply },
9275     { 163, glxIsQueryARB_Reply },
9276     { 164, glxGetQueryivARB_Reply },
9277     { 165, glxGetQueryObjectivARB_Reply },
9278     { 166, glxGetQueryObjectuivARB_Reply },
9279     { 0, NULL }
9280 };
9281
9282 static void dispatch_glx(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
9283 {
9284     int minor, length;
9285     minor = CARD8(glx_extension_minor);
9286     length = REQUEST_LENGTH();
9287
9288     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
9289                           val_to_str(minor, glx_extension_minor,
9290                                      "<Unknown opcode %d>"));
9291     switch (minor) {
9292     case 1:
9293         glxRender(tvb, pinfo, offsetp, t, byte_order, length);
9294         break;
9295     case 2:
9296         glxRenderLarge(tvb, pinfo, offsetp, t, byte_order, length);
9297         break;
9298     case 3:
9299         glxCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
9300         break;
9301     case 4:
9302         glxDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
9303         break;
9304     case 5:
9305         glxMakeCurrent(tvb, pinfo, offsetp, t, byte_order, length);
9306         break;
9307     case 6:
9308         glxIsDirect(tvb, pinfo, offsetp, t, byte_order, length);
9309         break;
9310     case 7:
9311         glxQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
9312         break;
9313     case 8:
9314         glxWaitGL(tvb, pinfo, offsetp, t, byte_order, length);
9315         break;
9316     case 9:
9317         glxWaitX(tvb, pinfo, offsetp, t, byte_order, length);
9318         break;
9319     case 10:
9320         glxCopyContext(tvb, pinfo, offsetp, t, byte_order, length);
9321         break;
9322     case 11:
9323         glxSwapBuffers(tvb, pinfo, offsetp, t, byte_order, length);
9324         break;
9325     case 12:
9326         glxUseXFont(tvb, pinfo, offsetp, t, byte_order, length);
9327         break;
9328     case 13:
9329         glxCreateGLXPixmap(tvb, pinfo, offsetp, t, byte_order, length);
9330         break;
9331     case 14:
9332         glxGetVisualConfigs(tvb, pinfo, offsetp, t, byte_order, length);
9333         break;
9334     case 15:
9335         glxDestroyGLXPixmap(tvb, pinfo, offsetp, t, byte_order, length);
9336         break;
9337     case 16:
9338         glxVendorPrivate(tvb, pinfo, offsetp, t, byte_order, length);
9339         break;
9340     case 17:
9341         glxVendorPrivateWithReply(tvb, pinfo, offsetp, t, byte_order, length);
9342         break;
9343     case 18:
9344         glxQueryExtensionsString(tvb, pinfo, offsetp, t, byte_order, length);
9345         break;
9346     case 19:
9347         glxQueryServerString(tvb, pinfo, offsetp, t, byte_order, length);
9348         break;
9349     case 20:
9350         glxClientInfo(tvb, pinfo, offsetp, t, byte_order, length);
9351         break;
9352     case 21:
9353         glxGetFBConfigs(tvb, pinfo, offsetp, t, byte_order, length);
9354         break;
9355     case 22:
9356         glxCreatePixmap(tvb, pinfo, offsetp, t, byte_order, length);
9357         break;
9358     case 23:
9359         glxDestroyPixmap(tvb, pinfo, offsetp, t, byte_order, length);
9360         break;
9361     case 24:
9362         glxCreateNewContext(tvb, pinfo, offsetp, t, byte_order, length);
9363         break;
9364     case 25:
9365         glxQueryContext(tvb, pinfo, offsetp, t, byte_order, length);
9366         break;
9367     case 26:
9368         glxMakeContextCurrent(tvb, pinfo, offsetp, t, byte_order, length);
9369         break;
9370     case 27:
9371         glxCreatePbuffer(tvb, pinfo, offsetp, t, byte_order, length);
9372         break;
9373     case 28:
9374         glxDestroyPbuffer(tvb, pinfo, offsetp, t, byte_order, length);
9375         break;
9376     case 29:
9377         glxGetDrawableAttributes(tvb, pinfo, offsetp, t, byte_order, length);
9378         break;
9379     case 30:
9380         glxChangeDrawableAttributes(tvb, pinfo, offsetp, t, byte_order, length);
9381         break;
9382     case 31:
9383         glxCreateWindow(tvb, pinfo, offsetp, t, byte_order, length);
9384         break;
9385     case 32:
9386         glxDeleteWindow(tvb, pinfo, offsetp, t, byte_order, length);
9387         break;
9388     case 33:
9389         glxSetClientInfoARB(tvb, pinfo, offsetp, t, byte_order, length);
9390         break;
9391     case 34:
9392         glxCreateContextAttribsARB(tvb, pinfo, offsetp, t, byte_order, length);
9393         break;
9394     case 35:
9395         glxSetClientInfo2ARB(tvb, pinfo, offsetp, t, byte_order, length);
9396         break;
9397     case 101:
9398         glxNewList(tvb, pinfo, offsetp, t, byte_order, length);
9399         break;
9400     case 102:
9401         glxEndList(tvb, pinfo, offsetp, t, byte_order, length);
9402         break;
9403     case 103:
9404         glxDeleteLists(tvb, pinfo, offsetp, t, byte_order, length);
9405         break;
9406     case 104:
9407         glxGenLists(tvb, pinfo, offsetp, t, byte_order, length);
9408         break;
9409     case 105:
9410         glxFeedbackBuffer(tvb, pinfo, offsetp, t, byte_order, length);
9411         break;
9412     case 106:
9413         glxSelectBuffer(tvb, pinfo, offsetp, t, byte_order, length);
9414         break;
9415     case 107:
9416         glxRenderMode(tvb, pinfo, offsetp, t, byte_order, length);
9417         break;
9418     case 108:
9419         glxFinish(tvb, pinfo, offsetp, t, byte_order, length);
9420         break;
9421     case 109:
9422         glxPixelStoref(tvb, pinfo, offsetp, t, byte_order, length);
9423         break;
9424     case 110:
9425         glxPixelStorei(tvb, pinfo, offsetp, t, byte_order, length);
9426         break;
9427     case 111:
9428         glxReadPixels(tvb, pinfo, offsetp, t, byte_order, length);
9429         break;
9430     case 112:
9431         glxGetBooleanv(tvb, pinfo, offsetp, t, byte_order, length);
9432         break;
9433     case 113:
9434         glxGetClipPlane(tvb, pinfo, offsetp, t, byte_order, length);
9435         break;
9436     case 114:
9437         glxGetDoublev(tvb, pinfo, offsetp, t, byte_order, length);
9438         break;
9439     case 115:
9440         glxGetError(tvb, pinfo, offsetp, t, byte_order, length);
9441         break;
9442     case 116:
9443         glxGetFloatv(tvb, pinfo, offsetp, t, byte_order, length);
9444         break;
9445     case 117:
9446         glxGetIntegerv(tvb, pinfo, offsetp, t, byte_order, length);
9447         break;
9448     case 118:
9449         glxGetLightfv(tvb, pinfo, offsetp, t, byte_order, length);
9450         break;
9451     case 119:
9452         glxGetLightiv(tvb, pinfo, offsetp, t, byte_order, length);
9453         break;
9454     case 120:
9455         glxGetMapdv(tvb, pinfo, offsetp, t, byte_order, length);
9456         break;
9457     case 121:
9458         glxGetMapfv(tvb, pinfo, offsetp, t, byte_order, length);
9459         break;
9460     case 122:
9461         glxGetMapiv(tvb, pinfo, offsetp, t, byte_order, length);
9462         break;
9463     case 123:
9464         glxGetMaterialfv(tvb, pinfo, offsetp, t, byte_order, length);
9465         break;
9466     case 124:
9467         glxGetMaterialiv(tvb, pinfo, offsetp, t, byte_order, length);
9468         break;
9469     case 125:
9470         glxGetPixelMapfv(tvb, pinfo, offsetp, t, byte_order, length);
9471         break;
9472     case 126:
9473         glxGetPixelMapuiv(tvb, pinfo, offsetp, t, byte_order, length);
9474         break;
9475     case 127:
9476         glxGetPixelMapusv(tvb, pinfo, offsetp, t, byte_order, length);
9477         break;
9478     case 128:
9479         glxGetPolygonStipple(tvb, pinfo, offsetp, t, byte_order, length);
9480         break;
9481     case 129:
9482         glxGetString(tvb, pinfo, offsetp, t, byte_order, length);
9483         break;
9484     case 130:
9485         glxGetTexEnvfv(tvb, pinfo, offsetp, t, byte_order, length);
9486         break;
9487     case 131:
9488         glxGetTexEnviv(tvb, pinfo, offsetp, t, byte_order, length);
9489         break;
9490     case 132:
9491         glxGetTexGendv(tvb, pinfo, offsetp, t, byte_order, length);
9492         break;
9493     case 133:
9494         glxGetTexGenfv(tvb, pinfo, offsetp, t, byte_order, length);
9495         break;
9496     case 134:
9497         glxGetTexGeniv(tvb, pinfo, offsetp, t, byte_order, length);
9498         break;
9499     case 135:
9500         glxGetTexImage(tvb, pinfo, offsetp, t, byte_order, length);
9501         break;
9502     case 136:
9503         glxGetTexParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
9504         break;
9505     case 137:
9506         glxGetTexParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
9507         break;
9508     case 138:
9509         glxGetTexLevelParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
9510         break;
9511     case 139:
9512         glxGetTexLevelParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
9513         break;
9514     case 140:
9515         glxIsEnabled(tvb, pinfo, offsetp, t, byte_order, length);
9516         break;
9517     case 141:
9518         glxIsList(tvb, pinfo, offsetp, t, byte_order, length);
9519         break;
9520     case 142:
9521         glxFlush(tvb, pinfo, offsetp, t, byte_order, length);
9522         break;
9523     case 143:
9524         glxAreTexturesResident(tvb, pinfo, offsetp, t, byte_order, length);
9525         break;
9526     case 144:
9527         glxDeleteTextures(tvb, pinfo, offsetp, t, byte_order, length);
9528         break;
9529     case 145:
9530         glxGenTextures(tvb, pinfo, offsetp, t, byte_order, length);
9531         break;
9532     case 146:
9533         glxIsTexture(tvb, pinfo, offsetp, t, byte_order, length);
9534         break;
9535     case 147:
9536         glxGetColorTable(tvb, pinfo, offsetp, t, byte_order, length);
9537         break;
9538     case 148:
9539         glxGetColorTableParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
9540         break;
9541     case 149:
9542         glxGetColorTableParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
9543         break;
9544     case 150:
9545         glxGetConvolutionFilter(tvb, pinfo, offsetp, t, byte_order, length);
9546         break;
9547     case 151:
9548         glxGetConvolutionParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
9549         break;
9550     case 152:
9551         glxGetConvolutionParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
9552         break;
9553     case 153:
9554         glxGetSeparableFilter(tvb, pinfo, offsetp, t, byte_order, length);
9555         break;
9556     case 154:
9557         glxGetHistogram(tvb, pinfo, offsetp, t, byte_order, length);
9558         break;
9559     case 155:
9560         glxGetHistogramParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
9561         break;
9562     case 156:
9563         glxGetHistogramParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
9564         break;
9565     case 157:
9566         glxGetMinmax(tvb, pinfo, offsetp, t, byte_order, length);
9567         break;
9568     case 158:
9569         glxGetMinmaxParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
9570         break;
9571     case 159:
9572         glxGetMinmaxParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
9573         break;
9574     case 160:
9575         glxGetCompressedTexImageARB(tvb, pinfo, offsetp, t, byte_order, length);
9576         break;
9577     case 161:
9578         glxDeleteQueriesARB(tvb, pinfo, offsetp, t, byte_order, length);
9579         break;
9580     case 162:
9581         glxGenQueriesARB(tvb, pinfo, offsetp, t, byte_order, length);
9582         break;
9583     case 163:
9584         glxIsQueryARB(tvb, pinfo, offsetp, t, byte_order, length);
9585         break;
9586     case 164:
9587         glxGetQueryivARB(tvb, pinfo, offsetp, t, byte_order, length);
9588         break;
9589     case 165:
9590         glxGetQueryObjectivARB(tvb, pinfo, offsetp, t, byte_order, length);
9591         break;
9592     case 166:
9593         glxGetQueryObjectuivARB(tvb, pinfo, offsetp, t, byte_order, length);
9594         break;
9595     /* No need for a default case here, since Unknown is printed above,
9596        and UNDECODED() is taken care of by dissect_x11_request */
9597     }
9598 }
9599
9600 static void register_glx(void)
9601 {
9602     set_handler("GLX", dispatch_glx, glx_errors, glx_events, NULL, glx_replies);
9603 }
9604
9605 static void struct_randr_ScreenSize(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9606 {
9607     int i;
9608     for (i = 0; i < count; i++) {
9609         proto_item *item;
9610         proto_tree *t;
9611
9612         item = proto_tree_add_item(root, hf_x11_struct_randr_ScreenSize, tvb, *offsetp, 8, ENC_NA);
9613         t = proto_item_add_subtree(item, ett_x11_rectangle);
9614         proto_tree_add_item(t, hf_x11_struct_randr_ScreenSize_width, tvb, *offsetp, 2, byte_order);
9615         *offsetp += 2;
9616         proto_tree_add_item(t, hf_x11_struct_randr_ScreenSize_height, tvb, *offsetp, 2, byte_order);
9617         *offsetp += 2;
9618         proto_tree_add_item(t, hf_x11_struct_randr_ScreenSize_mwidth, tvb, *offsetp, 2, byte_order);
9619         *offsetp += 2;
9620         proto_tree_add_item(t, hf_x11_struct_randr_ScreenSize_mheight, tvb, *offsetp, 2, byte_order);
9621         *offsetp += 2;
9622     }
9623 }
9624
9625 static int struct_size_randr_RefreshRates(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
9626 {
9627     int size = 0;
9628     int f_nRates;
9629     f_nRates = VALUE16(tvb, *offsetp + size + 0);
9630     size += f_nRates * 2;
9631     return size + 2;
9632 }
9633
9634 static void struct_randr_RefreshRates(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9635 {
9636     int i;
9637     for (i = 0; i < count; i++) {
9638         proto_item *item;
9639         proto_tree *t;
9640         int f_nRates;
9641
9642         item = proto_tree_add_item(root, hf_x11_struct_randr_RefreshRates, tvb, *offsetp, struct_size_randr_RefreshRates(tvb, offsetp, byte_order), ENC_NA);
9643         t = proto_item_add_subtree(item, ett_x11_rectangle);
9644         f_nRates = VALUE16(tvb, *offsetp);
9645         proto_tree_add_item(t, hf_x11_struct_randr_RefreshRates_nRates, tvb, *offsetp, 2, byte_order);
9646         *offsetp += 2;
9647         listOfCard16(tvb, offsetp, t, hf_x11_struct_randr_RefreshRates_rates, hf_x11_struct_randr_RefreshRates_rates_item, f_nRates, byte_order);
9648     }
9649 }
9650
9651 static void struct_randr_ModeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9652 {
9653     int i;
9654     for (i = 0; i < count; i++) {
9655         proto_item *item;
9656         proto_tree *t;
9657
9658         item = proto_tree_add_item(root, hf_x11_struct_randr_ModeInfo, tvb, *offsetp, 32, ENC_NA);
9659         t = proto_item_add_subtree(item, ett_x11_rectangle);
9660         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_id, tvb, *offsetp, 4, byte_order);
9661         *offsetp += 4;
9662         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_width, tvb, *offsetp, 2, byte_order);
9663         *offsetp += 2;
9664         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_height, tvb, *offsetp, 2, byte_order);
9665         *offsetp += 2;
9666         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_dot_clock, tvb, *offsetp, 4, byte_order);
9667         *offsetp += 4;
9668         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_hsync_start, tvb, *offsetp, 2, byte_order);
9669         *offsetp += 2;
9670         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_hsync_end, tvb, *offsetp, 2, byte_order);
9671         *offsetp += 2;
9672         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_htotal, tvb, *offsetp, 2, byte_order);
9673         *offsetp += 2;
9674         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_hskew, tvb, *offsetp, 2, byte_order);
9675         *offsetp += 2;
9676         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_vsync_start, tvb, *offsetp, 2, byte_order);
9677         *offsetp += 2;
9678         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_vsync_end, tvb, *offsetp, 2, byte_order);
9679         *offsetp += 2;
9680         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_vtotal, tvb, *offsetp, 2, byte_order);
9681         *offsetp += 2;
9682         proto_tree_add_item(t, hf_x11_struct_randr_ModeInfo_name_len, tvb, *offsetp, 2, byte_order);
9683         *offsetp += 2;
9684         {
9685             const int* mode_flags_bits [] = {
9686                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_HsyncPositive,
9687                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_HsyncNegative,
9688                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_VsyncPositive,
9689                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_VsyncNegative,
9690                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_Interlace,
9691                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_DoubleScan,
9692                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_Csync,
9693                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_CsyncPositive,
9694                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_CsyncNegative,
9695                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_HskewPresent,
9696                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_Bcast,
9697                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_PixelMultiplex,
9698                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_DoubleClock,
9699                 &hf_x11_struct_randr_ModeInfo_mode_flags_mask_HalveClock,
9700             };
9701             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_randr_ModeInfo_mode_flags, ett_x11_rectangle, mode_flags_bits, byte_order);
9702         }
9703         *offsetp += 4;
9704     }
9705 }
9706
9707 static void struct_randr_CrtcChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9708 {
9709     int i;
9710     for (i = 0; i < count; i++) {
9711         proto_item *item;
9712         proto_tree *t;
9713
9714         item = proto_tree_add_item(root, hf_x11_struct_randr_CrtcChange, tvb, *offsetp, 28, ENC_NA);
9715         t = proto_item_add_subtree(item, ett_x11_rectangle);
9716         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_timestamp, tvb, *offsetp, 4, byte_order);
9717         *offsetp += 4;
9718         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_window, tvb, *offsetp, 4, byte_order);
9719         *offsetp += 4;
9720         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_crtc, tvb, *offsetp, 4, byte_order);
9721         *offsetp += 4;
9722         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_mode, tvb, *offsetp, 4, byte_order);
9723         *offsetp += 4;
9724         {
9725             const int* rotation_bits [] = {
9726                 &hf_x11_struct_randr_CrtcChange_rotation_mask_Rotate_0,
9727                 &hf_x11_struct_randr_CrtcChange_rotation_mask_Rotate_90,
9728                 &hf_x11_struct_randr_CrtcChange_rotation_mask_Rotate_180,
9729                 &hf_x11_struct_randr_CrtcChange_rotation_mask_Rotate_270,
9730                 &hf_x11_struct_randr_CrtcChange_rotation_mask_Reflect_X,
9731                 &hf_x11_struct_randr_CrtcChange_rotation_mask_Reflect_Y,
9732             };
9733             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_randr_CrtcChange_rotation, ett_x11_rectangle, rotation_bits, byte_order);
9734         }
9735         *offsetp += 2;
9736         UNUSED(2);
9737         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_x, tvb, *offsetp, 2, byte_order);
9738         *offsetp += 2;
9739         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_y, tvb, *offsetp, 2, byte_order);
9740         *offsetp += 2;
9741         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_width, tvb, *offsetp, 2, byte_order);
9742         *offsetp += 2;
9743         proto_tree_add_item(t, hf_x11_struct_randr_CrtcChange_height, tvb, *offsetp, 2, byte_order);
9744         *offsetp += 2;
9745     }
9746 }
9747
9748 static void struct_randr_OutputChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9749 {
9750     int i;
9751     for (i = 0; i < count; i++) {
9752         proto_item *item;
9753         proto_tree *t;
9754
9755         item = proto_tree_add_item(root, hf_x11_struct_randr_OutputChange, tvb, *offsetp, 28, ENC_NA);
9756         t = proto_item_add_subtree(item, ett_x11_rectangle);
9757         proto_tree_add_item(t, hf_x11_struct_randr_OutputChange_timestamp, tvb, *offsetp, 4, byte_order);
9758         *offsetp += 4;
9759         proto_tree_add_item(t, hf_x11_struct_randr_OutputChange_config_timestamp, tvb, *offsetp, 4, byte_order);
9760         *offsetp += 4;
9761         proto_tree_add_item(t, hf_x11_struct_randr_OutputChange_window, tvb, *offsetp, 4, byte_order);
9762         *offsetp += 4;
9763         proto_tree_add_item(t, hf_x11_struct_randr_OutputChange_output, tvb, *offsetp, 4, byte_order);
9764         *offsetp += 4;
9765         proto_tree_add_item(t, hf_x11_struct_randr_OutputChange_crtc, tvb, *offsetp, 4, byte_order);
9766         *offsetp += 4;
9767         proto_tree_add_item(t, hf_x11_struct_randr_OutputChange_mode, tvb, *offsetp, 4, byte_order);
9768         *offsetp += 4;
9769         {
9770             const int* rotation_bits [] = {
9771                 &hf_x11_struct_randr_OutputChange_rotation_mask_Rotate_0,
9772                 &hf_x11_struct_randr_OutputChange_rotation_mask_Rotate_90,
9773                 &hf_x11_struct_randr_OutputChange_rotation_mask_Rotate_180,
9774                 &hf_x11_struct_randr_OutputChange_rotation_mask_Rotate_270,
9775                 &hf_x11_struct_randr_OutputChange_rotation_mask_Reflect_X,
9776                 &hf_x11_struct_randr_OutputChange_rotation_mask_Reflect_Y,
9777             };
9778             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_randr_OutputChange_rotation, ett_x11_rectangle, rotation_bits, byte_order);
9779         }
9780         *offsetp += 2;
9781         field8(tvb, offsetp, t, hf_x11_struct_randr_OutputChange_connection, byte_order);
9782         field8(tvb, offsetp, t, hf_x11_struct_randr_OutputChange_subpixel_order, byte_order);
9783     }
9784 }
9785
9786 static void struct_randr_OutputProperty(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9787 {
9788     int i;
9789     for (i = 0; i < count; i++) {
9790         proto_item *item;
9791         proto_tree *t;
9792
9793         item = proto_tree_add_item(root, hf_x11_struct_randr_OutputProperty, tvb, *offsetp, 28, ENC_NA);
9794         t = proto_item_add_subtree(item, ett_x11_rectangle);
9795         proto_tree_add_item(t, hf_x11_struct_randr_OutputProperty_window, tvb, *offsetp, 4, byte_order);
9796         *offsetp += 4;
9797         proto_tree_add_item(t, hf_x11_struct_randr_OutputProperty_output, tvb, *offsetp, 4, byte_order);
9798         *offsetp += 4;
9799         proto_tree_add_item(t, hf_x11_struct_randr_OutputProperty_atom, tvb, *offsetp, 4, byte_order);
9800         *offsetp += 4;
9801         proto_tree_add_item(t, hf_x11_struct_randr_OutputProperty_timestamp, tvb, *offsetp, 4, byte_order);
9802         *offsetp += 4;
9803         field8(tvb, offsetp, t, hf_x11_struct_randr_OutputProperty_status, byte_order);
9804         UNUSED(11);
9805     }
9806 }
9807
9808 static void struct_randr_ProviderChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9809 {
9810     int i;
9811     for (i = 0; i < count; i++) {
9812         proto_item *item;
9813         proto_tree *t;
9814
9815         item = proto_tree_add_item(root, hf_x11_struct_randr_ProviderChange, tvb, *offsetp, 28, ENC_NA);
9816         t = proto_item_add_subtree(item, ett_x11_rectangle);
9817         proto_tree_add_item(t, hf_x11_struct_randr_ProviderChange_timestamp, tvb, *offsetp, 4, byte_order);
9818         *offsetp += 4;
9819         proto_tree_add_item(t, hf_x11_struct_randr_ProviderChange_window, tvb, *offsetp, 4, byte_order);
9820         *offsetp += 4;
9821         proto_tree_add_item(t, hf_x11_struct_randr_ProviderChange_provider, tvb, *offsetp, 4, byte_order);
9822         *offsetp += 4;
9823         UNUSED(16);
9824     }
9825 }
9826
9827 static void struct_randr_ProviderProperty(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9828 {
9829     int i;
9830     for (i = 0; i < count; i++) {
9831         proto_item *item;
9832         proto_tree *t;
9833
9834         item = proto_tree_add_item(root, hf_x11_struct_randr_ProviderProperty, tvb, *offsetp, 28, ENC_NA);
9835         t = proto_item_add_subtree(item, ett_x11_rectangle);
9836         proto_tree_add_item(t, hf_x11_struct_randr_ProviderProperty_window, tvb, *offsetp, 4, byte_order);
9837         *offsetp += 4;
9838         proto_tree_add_item(t, hf_x11_struct_randr_ProviderProperty_provider, tvb, *offsetp, 4, byte_order);
9839         *offsetp += 4;
9840         proto_tree_add_item(t, hf_x11_struct_randr_ProviderProperty_atom, tvb, *offsetp, 4, byte_order);
9841         *offsetp += 4;
9842         proto_tree_add_item(t, hf_x11_struct_randr_ProviderProperty_timestamp, tvb, *offsetp, 4, byte_order);
9843         *offsetp += 4;
9844         proto_tree_add_item(t, hf_x11_struct_randr_ProviderProperty_state, tvb, *offsetp, 1, byte_order);
9845         *offsetp += 1;
9846         UNUSED(11);
9847     }
9848 }
9849
9850 static void struct_randr_ResourceChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9851 {
9852     int i;
9853     for (i = 0; i < count; i++) {
9854         proto_item *item;
9855         proto_tree *t;
9856
9857         item = proto_tree_add_item(root, hf_x11_struct_randr_ResourceChange, tvb, *offsetp, 28, ENC_NA);
9858         t = proto_item_add_subtree(item, ett_x11_rectangle);
9859         proto_tree_add_item(t, hf_x11_struct_randr_ResourceChange_timestamp, tvb, *offsetp, 4, byte_order);
9860         *offsetp += 4;
9861         proto_tree_add_item(t, hf_x11_struct_randr_ResourceChange_window, tvb, *offsetp, 4, byte_order);
9862         *offsetp += 4;
9863         UNUSED(20);
9864     }
9865 }
9866
9867 static int struct_size_randr_MonitorInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
9868 {
9869     int size = 0;
9870     int f_nOutput;
9871     f_nOutput = VALUE16(tvb, *offsetp + size + 6);
9872     size += f_nOutput * 4;
9873     return size + 24;
9874 }
9875
9876 static void struct_randr_MonitorInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9877 {
9878     int i;
9879     for (i = 0; i < count; i++) {
9880         proto_item *item;
9881         proto_tree *t;
9882         int f_nOutput;
9883
9884         item = proto_tree_add_item(root, hf_x11_struct_randr_MonitorInfo, tvb, *offsetp, struct_size_randr_MonitorInfo(tvb, offsetp, byte_order), ENC_NA);
9885         t = proto_item_add_subtree(item, ett_x11_rectangle);
9886         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_name, tvb, *offsetp, 4, byte_order);
9887         *offsetp += 4;
9888         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_primary, tvb, *offsetp, 1, byte_order);
9889         *offsetp += 1;
9890         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_automatic, tvb, *offsetp, 1, byte_order);
9891         *offsetp += 1;
9892         f_nOutput = VALUE16(tvb, *offsetp);
9893         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_nOutput, tvb, *offsetp, 2, byte_order);
9894         *offsetp += 2;
9895         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_x, tvb, *offsetp, 2, byte_order);
9896         *offsetp += 2;
9897         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_y, tvb, *offsetp, 2, byte_order);
9898         *offsetp += 2;
9899         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_width, tvb, *offsetp, 2, byte_order);
9900         *offsetp += 2;
9901         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_height, tvb, *offsetp, 2, byte_order);
9902         *offsetp += 2;
9903         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_width_in_millimeters, tvb, *offsetp, 4, byte_order);
9904         *offsetp += 4;
9905         proto_tree_add_item(t, hf_x11_struct_randr_MonitorInfo_height_in_millimeters, tvb, *offsetp, 4, byte_order);
9906         *offsetp += 4;
9907         listOfCard32(tvb, offsetp, t, hf_x11_struct_randr_MonitorInfo_outputs, hf_x11_struct_randr_MonitorInfo_outputs_item, f_nOutput, byte_order);
9908     }
9909 }
9910
9911 static void struct_sync_INT64(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9912 {
9913     int i;
9914     for (i = 0; i < count; i++) {
9915         proto_item *item;
9916         proto_tree *t;
9917
9918         item = proto_tree_add_item(root, hf_x11_struct_sync_INT64, tvb, *offsetp, 8, ENC_NA);
9919         t = proto_item_add_subtree(item, ett_x11_rectangle);
9920         proto_tree_add_item(t, hf_x11_struct_sync_INT64_hi, tvb, *offsetp, 4, byte_order);
9921         *offsetp += 4;
9922         proto_tree_add_item(t, hf_x11_struct_sync_INT64_lo, tvb, *offsetp, 4, byte_order);
9923         *offsetp += 4;
9924     }
9925 }
9926
9927 static int struct_size_sync_SYSTEMCOUNTER(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
9928 {
9929     int size = 0;
9930     int f_name_len;
9931     f_name_len = VALUE16(tvb, *offsetp + size + 12);
9932     size += f_name_len * 1;
9933     size = (size + 3) & ~3;
9934     return size + 14;
9935 }
9936
9937 static void struct_sync_SYSTEMCOUNTER(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9938 {
9939     int i;
9940     for (i = 0; i < count; i++) {
9941         proto_item *item;
9942         proto_tree *t;
9943         int f_name_len;
9944
9945         item = proto_tree_add_item(root, hf_x11_struct_sync_SYSTEMCOUNTER, tvb, *offsetp, struct_size_sync_SYSTEMCOUNTER(tvb, offsetp, byte_order), ENC_NA);
9946         t = proto_item_add_subtree(item, ett_x11_rectangle);
9947         proto_tree_add_item(t, hf_x11_struct_sync_SYSTEMCOUNTER_counter, tvb, *offsetp, 4, byte_order);
9948         *offsetp += 4;
9949         struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
9950         f_name_len = VALUE16(tvb, *offsetp);
9951         proto_tree_add_item(t, hf_x11_struct_sync_SYSTEMCOUNTER_name_len, tvb, *offsetp, 2, byte_order);
9952         *offsetp += 2;
9953         listOfByte(tvb, offsetp, t, hf_x11_struct_sync_SYSTEMCOUNTER_name, f_name_len, byte_order);
9954         if (*offsetp % 4) {
9955             UNUSED(4 - *offsetp % 4);
9956         }
9957     }
9958 }
9959
9960 static void struct_sync_TRIGGER(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9961 {
9962     int i;
9963     for (i = 0; i < count; i++) {
9964         proto_item *item;
9965         proto_tree *t;
9966
9967         item = proto_tree_add_item(root, hf_x11_struct_sync_TRIGGER, tvb, *offsetp, 20, ENC_NA);
9968         t = proto_item_add_subtree(item, ett_x11_rectangle);
9969         proto_tree_add_item(t, hf_x11_struct_sync_TRIGGER_counter, tvb, *offsetp, 4, byte_order);
9970         *offsetp += 4;
9971         field32(tvb, offsetp, t, hf_x11_struct_sync_TRIGGER_wait_type, byte_order);
9972         struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
9973         field32(tvb, offsetp, t, hf_x11_struct_sync_TRIGGER_test_type, byte_order);
9974     }
9975 }
9976
9977 static void struct_sync_WAITCONDITION(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9978 {
9979     int i;
9980     for (i = 0; i < count; i++) {
9981         proto_item *item;
9982         proto_tree *t;
9983
9984         item = proto_tree_add_item(root, hf_x11_struct_sync_WAITCONDITION, tvb, *offsetp, 28, ENC_NA);
9985         t = proto_item_add_subtree(item, ett_x11_rectangle);
9986         struct_sync_TRIGGER(tvb, offsetp, t, byte_order, 1);
9987         struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
9988     }
9989 }
9990
9991 static void struct_present_Notify(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
9992 {
9993     int i;
9994     for (i = 0; i < count; i++) {
9995         proto_item *item;
9996         proto_tree *t;
9997
9998         item = proto_tree_add_item(root, hf_x11_struct_present_Notify, tvb, *offsetp, 8, ENC_NA);
9999         t = proto_item_add_subtree(item, ett_x11_rectangle);
10000         proto_tree_add_item(t, hf_x11_struct_present_Notify_window, tvb, *offsetp, 4, byte_order);
10001         *offsetp += 4;
10002         proto_tree_add_item(t, hf_x11_struct_present_Notify_serial, tvb, *offsetp, 4, byte_order);
10003         *offsetp += 4;
10004     }
10005 }
10006
10007 static void presentQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10008 {
10009     proto_tree_add_item(t, hf_x11_present_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
10010     *offsetp += 4;
10011     proto_tree_add_item(t, hf_x11_present_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
10012     *offsetp += 4;
10013 }
10014 static void presentQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10015 {
10016     int sequence_number;
10017
10018     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
10019
10020     REPLY(reply);
10021     UNUSED(1);
10022     sequence_number = VALUE16(tvb, *offsetp);
10023     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10024             "%d (present-QueryVersion)", sequence_number);
10025     *offsetp += 2;
10026     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10027     *offsetp += 4;
10028     proto_tree_add_item(t, hf_x11_present_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
10029     *offsetp += 4;
10030     proto_tree_add_item(t, hf_x11_present_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
10031     *offsetp += 4;
10032 }
10033
10034 static void presentPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10035 {
10036     proto_tree_add_item(t, hf_x11_present_Pixmap_window, tvb, *offsetp, 4, byte_order);
10037     *offsetp += 4;
10038     proto_tree_add_item(t, hf_x11_present_Pixmap_pixmap, tvb, *offsetp, 4, byte_order);
10039     *offsetp += 4;
10040     proto_tree_add_item(t, hf_x11_present_Pixmap_serial, tvb, *offsetp, 4, byte_order);
10041     *offsetp += 4;
10042     proto_tree_add_item(t, hf_x11_present_Pixmap_valid, tvb, *offsetp, 4, byte_order);
10043     *offsetp += 4;
10044     proto_tree_add_item(t, hf_x11_present_Pixmap_update, tvb, *offsetp, 4, byte_order);
10045     *offsetp += 4;
10046     proto_tree_add_item(t, hf_x11_present_Pixmap_x_off, tvb, *offsetp, 2, byte_order);
10047     *offsetp += 2;
10048     proto_tree_add_item(t, hf_x11_present_Pixmap_y_off, tvb, *offsetp, 2, byte_order);
10049     *offsetp += 2;
10050     proto_tree_add_item(t, hf_x11_present_Pixmap_target_crtc, tvb, *offsetp, 4, byte_order);
10051     *offsetp += 4;
10052     proto_tree_add_item(t, hf_x11_present_Pixmap_wait_fence, tvb, *offsetp, 4, byte_order);
10053     *offsetp += 4;
10054     proto_tree_add_item(t, hf_x11_present_Pixmap_idle_fence, tvb, *offsetp, 4, byte_order);
10055     *offsetp += 4;
10056     proto_tree_add_item(t, hf_x11_present_Pixmap_options, tvb, *offsetp, 4, byte_order);
10057     *offsetp += 4;
10058     UNUSED(4);
10059     proto_tree_add_item(t, hf_x11_present_Pixmap_target_msc, tvb, *offsetp, 8, byte_order);
10060     *offsetp += 8;
10061     proto_tree_add_item(t, hf_x11_present_Pixmap_divisor, tvb, *offsetp, 8, byte_order);
10062     *offsetp += 8;
10063     proto_tree_add_item(t, hf_x11_present_Pixmap_remainder, tvb, *offsetp, 8, byte_order);
10064     *offsetp += 8;
10065     struct_present_Notify(tvb, offsetp, t, byte_order, (length - 72) / 8);
10066 }
10067
10068 static void presentNotifyMSC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10069 {
10070     proto_tree_add_item(t, hf_x11_present_NotifyMSC_window, tvb, *offsetp, 4, byte_order);
10071     *offsetp += 4;
10072     proto_tree_add_item(t, hf_x11_present_NotifyMSC_serial, tvb, *offsetp, 4, byte_order);
10073     *offsetp += 4;
10074     UNUSED(4);
10075     proto_tree_add_item(t, hf_x11_present_NotifyMSC_target_msc, tvb, *offsetp, 8, byte_order);
10076     *offsetp += 8;
10077     proto_tree_add_item(t, hf_x11_present_NotifyMSC_divisor, tvb, *offsetp, 8, byte_order);
10078     *offsetp += 8;
10079     proto_tree_add_item(t, hf_x11_present_NotifyMSC_remainder, tvb, *offsetp, 8, byte_order);
10080     *offsetp += 8;
10081 }
10082
10083 static void presentSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10084 {
10085     proto_tree_add_item(t, hf_x11_present_SelectInput_eid, tvb, *offsetp, 4, byte_order);
10086     *offsetp += 4;
10087     proto_tree_add_item(t, hf_x11_present_SelectInput_window, tvb, *offsetp, 4, byte_order);
10088     *offsetp += 4;
10089     {
10090         const int* event_mask_bits [] = {
10091         &hf_x11_present_SelectInput_event_mask_mask_ConfigureNotify,
10092         &hf_x11_present_SelectInput_event_mask_mask_CompleteNotify,
10093         &hf_x11_present_SelectInput_event_mask_mask_IdleNotify,
10094         &hf_x11_present_SelectInput_event_mask_mask_RedirectNotify,
10095         };
10096         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_present_SelectInput_event_mask, ett_x11_rectangle, event_mask_bits, byte_order);
10097     }
10098     *offsetp += 4;
10099 }
10100
10101 static void presentQueryCapabilities(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10102 {
10103     proto_tree_add_item(t, hf_x11_present_QueryCapabilities_target, tvb, *offsetp, 4, byte_order);
10104     *offsetp += 4;
10105 }
10106 static void presentQueryCapabilities_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10107 {
10108     int sequence_number;
10109
10110     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryCapabilities");
10111
10112     REPLY(reply);
10113     UNUSED(1);
10114     sequence_number = VALUE16(tvb, *offsetp);
10115     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10116             "%d (present-QueryCapabilities)", sequence_number);
10117     *offsetp += 2;
10118     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10119     *offsetp += 4;
10120     proto_tree_add_item(t, hf_x11_present_QueryCapabilities_reply_capabilities, tvb, *offsetp, 4, byte_order);
10121     *offsetp += 4;
10122 }
10123
10124 static void presentCompleteNotify(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
10125 {
10126     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 1,
10127                                "CompleteNotify (1)");
10128     field8(tvb, offsetp, t, hf_x11_present_CompleteNotify_kind, byte_order);
10129     field8(tvb, offsetp, t, hf_x11_present_CompleteNotify_mode, byte_order);
10130     proto_tree_add_item(t, hf_x11_present_CompleteNotify_event, tvb, *offsetp, 4, byte_order);
10131     *offsetp += 4;
10132     proto_tree_add_item(t, hf_x11_present_CompleteNotify_window, tvb, *offsetp, 4, byte_order);
10133     *offsetp += 4;
10134     proto_tree_add_item(t, hf_x11_present_CompleteNotify_serial, tvb, *offsetp, 4, byte_order);
10135     *offsetp += 4;
10136     proto_tree_add_item(t, hf_x11_present_CompleteNotify_ust, tvb, *offsetp, 8, byte_order);
10137     *offsetp += 8;
10138     proto_tree_add_item(t, hf_x11_present_CompleteNotify_msc, tvb, *offsetp, 8, byte_order);
10139     *offsetp += 8;
10140 }
10141
10142
10143 static void presentIdleNotify(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
10144 {
10145     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 2,
10146                                "IdleNotify (2)");
10147     UNUSED(2);
10148     proto_tree_add_item(t, hf_x11_present_IdleNotify_event, tvb, *offsetp, 4, byte_order);
10149     *offsetp += 4;
10150     proto_tree_add_item(t, hf_x11_present_IdleNotify_window, tvb, *offsetp, 4, byte_order);
10151     *offsetp += 4;
10152     proto_tree_add_item(t, hf_x11_present_IdleNotify_serial, tvb, *offsetp, 4, byte_order);
10153     *offsetp += 4;
10154     proto_tree_add_item(t, hf_x11_present_IdleNotify_pixmap, tvb, *offsetp, 4, byte_order);
10155     *offsetp += 4;
10156     proto_tree_add_item(t, hf_x11_present_IdleNotify_idle_fence, tvb, *offsetp, 4, byte_order);
10157     *offsetp += 4;
10158 }
10159
10160
10161 static void presentRedirectNotify(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
10162 {
10163     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 3,
10164                                "RedirectNotify (3)");
10165     proto_tree_add_item(t, hf_x11_present_RedirectNotify_update_window, tvb, *offsetp, 1, byte_order);
10166     *offsetp += 1;
10167     UNUSED(1);
10168     proto_tree_add_item(t, hf_x11_present_RedirectNotify_event, tvb, *offsetp, 4, byte_order);
10169     *offsetp += 4;
10170     proto_tree_add_item(t, hf_x11_present_RedirectNotify_event_window, tvb, *offsetp, 4, byte_order);
10171     *offsetp += 4;
10172     proto_tree_add_item(t, hf_x11_present_RedirectNotify_window, tvb, *offsetp, 4, byte_order);
10173     *offsetp += 4;
10174     proto_tree_add_item(t, hf_x11_present_RedirectNotify_pixmap, tvb, *offsetp, 4, byte_order);
10175     *offsetp += 4;
10176     proto_tree_add_item(t, hf_x11_present_RedirectNotify_serial, tvb, *offsetp, 4, byte_order);
10177     *offsetp += 4;
10178     proto_tree_add_item(t, hf_x11_present_RedirectNotify_valid_region, tvb, *offsetp, 4, byte_order);
10179     *offsetp += 4;
10180     proto_tree_add_item(t, hf_x11_present_RedirectNotify_update_region, tvb, *offsetp, 4, byte_order);
10181     *offsetp += 4;
10182     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, 1);
10183     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, 1);
10184     proto_tree_add_item(t, hf_x11_present_RedirectNotify_x_off, tvb, *offsetp, 2, byte_order);
10185     *offsetp += 2;
10186     proto_tree_add_item(t, hf_x11_present_RedirectNotify_y_off, tvb, *offsetp, 2, byte_order);
10187     *offsetp += 2;
10188     proto_tree_add_item(t, hf_x11_present_RedirectNotify_target_crtc, tvb, *offsetp, 4, byte_order);
10189     *offsetp += 4;
10190     proto_tree_add_item(t, hf_x11_present_RedirectNotify_wait_fence, tvb, *offsetp, 4, byte_order);
10191     *offsetp += 4;
10192     proto_tree_add_item(t, hf_x11_present_RedirectNotify_idle_fence, tvb, *offsetp, 4, byte_order);
10193     *offsetp += 4;
10194     proto_tree_add_item(t, hf_x11_present_RedirectNotify_options, tvb, *offsetp, 4, byte_order);
10195     *offsetp += 4;
10196     UNUSED(4);
10197     proto_tree_add_item(t, hf_x11_present_RedirectNotify_target_msc, tvb, *offsetp, 8, byte_order);
10198     *offsetp += 8;
10199     proto_tree_add_item(t, hf_x11_present_RedirectNotify_divisor, tvb, *offsetp, 8, byte_order);
10200     *offsetp += 8;
10201     proto_tree_add_item(t, hf_x11_present_RedirectNotify_remainder, tvb, *offsetp, 8, byte_order);
10202     *offsetp += 8;
10203     struct_present_Notify(tvb, offsetp, t, byte_order, (length - 104) / 8);
10204 }
10205
10206 static const value_string present_extension_minor[] = {
10207     { 0, "QueryVersion" },
10208     { 1, "Pixmap" },
10209     { 2, "NotifyMSC" },
10210     { 3, "SelectInput" },
10211     { 4, "QueryCapabilities" },
10212     { 0, NULL }
10213 };
10214 const x11_event_info present_events[] = {
10215     { NULL, NULL }
10216 };
10217 static const x11_generic_event_info present_generic_events[] = {
10218         {   1, presentCompleteNotify },
10219         {   2, presentIdleNotify },
10220         {   3, presentRedirectNotify },
10221         {   0, NULL },
10222 };
10223
10224 static x11_reply_info present_replies[] = {
10225     { 0, presentQueryVersion_Reply },
10226     { 4, presentQueryCapabilities_Reply },
10227     { 0, NULL }
10228 };
10229
10230 static void dispatch_present(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10231 {
10232     int minor, length;
10233     minor = CARD8(present_extension_minor);
10234     length = REQUEST_LENGTH();
10235
10236     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
10237                           val_to_str(minor, present_extension_minor,
10238                                      "<Unknown opcode %d>"));
10239     switch (minor) {
10240     case 0:
10241         presentQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
10242         break;
10243     case 1:
10244         presentPixmap(tvb, pinfo, offsetp, t, byte_order, length);
10245         break;
10246     case 2:
10247         presentNotifyMSC(tvb, pinfo, offsetp, t, byte_order, length);
10248         break;
10249     case 3:
10250         presentSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
10251         break;
10252     case 4:
10253         presentQueryCapabilities(tvb, pinfo, offsetp, t, byte_order, length);
10254         break;
10255     /* No need for a default case here, since Unknown is printed above,
10256        and UNDECODED() is taken care of by dissect_x11_request */
10257     }
10258 }
10259
10260 static void register_present(void)
10261 {
10262     set_handler("Present", dispatch_present, present_errors, present_events, present_generic_events, present_replies);
10263 }
10264
10265 static void randrQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10266 {
10267     proto_tree_add_item(t, hf_x11_randr_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
10268     *offsetp += 4;
10269     proto_tree_add_item(t, hf_x11_randr_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
10270     *offsetp += 4;
10271 }
10272 static void randrQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10273 {
10274     int sequence_number;
10275
10276     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
10277
10278     REPLY(reply);
10279     UNUSED(1);
10280     sequence_number = VALUE16(tvb, *offsetp);
10281     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10282             "%d (randr-QueryVersion)", sequence_number);
10283     *offsetp += 2;
10284     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10285     *offsetp += 4;
10286     proto_tree_add_item(t, hf_x11_randr_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
10287     *offsetp += 4;
10288     proto_tree_add_item(t, hf_x11_randr_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
10289     *offsetp += 4;
10290     UNUSED(16);
10291 }
10292
10293 static void randrSetScreenConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10294 {
10295     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_window, tvb, *offsetp, 4, byte_order);
10296     *offsetp += 4;
10297     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_timestamp, tvb, *offsetp, 4, byte_order);
10298     *offsetp += 4;
10299     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_config_timestamp, tvb, *offsetp, 4, byte_order);
10300     *offsetp += 4;
10301     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_sizeID, tvb, *offsetp, 2, byte_order);
10302     *offsetp += 2;
10303     {
10304         const int* rotation_bits [] = {
10305         &hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_0,
10306         &hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_90,
10307         &hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_180,
10308         &hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_270,
10309         &hf_x11_randr_SetScreenConfig_rotation_mask_Reflect_X,
10310         &hf_x11_randr_SetScreenConfig_rotation_mask_Reflect_Y,
10311         };
10312         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_SetScreenConfig_rotation, ett_x11_rectangle, rotation_bits, byte_order);
10313     }
10314     *offsetp += 2;
10315     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_rate, tvb, *offsetp, 2, byte_order);
10316     *offsetp += 2;
10317     UNUSED(2);
10318 }
10319 static void randrSetScreenConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10320 {
10321     int sequence_number;
10322
10323     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetScreenConfig");
10324
10325     REPLY(reply);
10326     field8(tvb, offsetp, t, hf_x11_randr_SetScreenConfig_reply_status, byte_order);
10327     sequence_number = VALUE16(tvb, *offsetp);
10328     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10329             "%d (randr-SetScreenConfig)", sequence_number);
10330     *offsetp += 2;
10331     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10332     *offsetp += 4;
10333     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_new_timestamp, tvb, *offsetp, 4, byte_order);
10334     *offsetp += 4;
10335     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
10336     *offsetp += 4;
10337     proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_root, tvb, *offsetp, 4, byte_order);
10338     *offsetp += 4;
10339     field16(tvb, offsetp, t, hf_x11_randr_SetScreenConfig_reply_subpixel_order, byte_order);
10340     UNUSED(10);
10341 }
10342
10343 static void randrSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10344 {
10345     proto_tree_add_item(t, hf_x11_randr_SelectInput_window, tvb, *offsetp, 4, byte_order);
10346     *offsetp += 4;
10347     {
10348         const int* enable_bits [] = {
10349         &hf_x11_randr_SelectInput_enable_mask_ScreenChange,
10350         &hf_x11_randr_SelectInput_enable_mask_CrtcChange,
10351         &hf_x11_randr_SelectInput_enable_mask_OutputChange,
10352         &hf_x11_randr_SelectInput_enable_mask_OutputProperty,
10353         &hf_x11_randr_SelectInput_enable_mask_ProviderChange,
10354         &hf_x11_randr_SelectInput_enable_mask_ProviderProperty,
10355         &hf_x11_randr_SelectInput_enable_mask_ResourceChange,
10356         };
10357         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_SelectInput_enable, ett_x11_rectangle, enable_bits, byte_order);
10358     }
10359     *offsetp += 2;
10360     UNUSED(2);
10361 }
10362
10363 static void randrGetScreenInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10364 {
10365     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_window, tvb, *offsetp, 4, byte_order);
10366     *offsetp += 4;
10367 }
10368 static void randrGetScreenInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10369 {
10370     int sequence_number;
10371     int f_nSizes;
10372     int f_nInfo;
10373
10374     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetScreenInfo");
10375
10376     REPLY(reply);
10377     {
10378         const int* rotations_bits [] = {
10379         &hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_0,
10380         &hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_90,
10381         &hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_180,
10382         &hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_270,
10383         &hf_x11_randr_GetScreenInfo_reply_rotations_mask_Reflect_X,
10384         &hf_x11_randr_GetScreenInfo_reply_rotations_mask_Reflect_Y,
10385         };
10386         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_GetScreenInfo_reply_rotations, ett_x11_rectangle, rotations_bits, byte_order);
10387     }
10388     *offsetp += 1;
10389     sequence_number = VALUE16(tvb, *offsetp);
10390     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10391             "%d (randr-GetScreenInfo)", sequence_number);
10392     *offsetp += 2;
10393     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10394     *offsetp += 4;
10395     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_root, tvb, *offsetp, 4, byte_order);
10396     *offsetp += 4;
10397     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_timestamp, tvb, *offsetp, 4, byte_order);
10398     *offsetp += 4;
10399     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
10400     *offsetp += 4;
10401     f_nSizes = VALUE16(tvb, *offsetp);
10402     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_nSizes, tvb, *offsetp, 2, byte_order);
10403     *offsetp += 2;
10404     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_sizeID, tvb, *offsetp, 2, byte_order);
10405     *offsetp += 2;
10406     {
10407         const int* rotation_bits [] = {
10408         &hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_0,
10409         &hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_90,
10410         &hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_180,
10411         &hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_270,
10412         &hf_x11_randr_GetScreenInfo_reply_rotation_mask_Reflect_X,
10413         &hf_x11_randr_GetScreenInfo_reply_rotation_mask_Reflect_Y,
10414         };
10415         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_GetScreenInfo_reply_rotation, ett_x11_rectangle, rotation_bits, byte_order);
10416     }
10417     *offsetp += 2;
10418     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_rate, tvb, *offsetp, 2, byte_order);
10419     *offsetp += 2;
10420     f_nInfo = VALUE16(tvb, *offsetp);
10421     proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_nInfo, tvb, *offsetp, 2, byte_order);
10422     *offsetp += 2;
10423     UNUSED(2);
10424     struct_randr_ScreenSize(tvb, offsetp, t, byte_order, f_nSizes);
10425     struct_randr_RefreshRates(tvb, offsetp, t, byte_order, (f_nInfo - f_nSizes));
10426 }
10427
10428 static void randrGetScreenSizeRange(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10429 {
10430     proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_window, tvb, *offsetp, 4, byte_order);
10431     *offsetp += 4;
10432 }
10433 static void randrGetScreenSizeRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10434 {
10435     int sequence_number;
10436
10437     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetScreenSizeRange");
10438
10439     REPLY(reply);
10440     UNUSED(1);
10441     sequence_number = VALUE16(tvb, *offsetp);
10442     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10443             "%d (randr-GetScreenSizeRange)", sequence_number);
10444     *offsetp += 2;
10445     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10446     *offsetp += 4;
10447     proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_min_width, tvb, *offsetp, 2, byte_order);
10448     *offsetp += 2;
10449     proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_min_height, tvb, *offsetp, 2, byte_order);
10450     *offsetp += 2;
10451     proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_max_width, tvb, *offsetp, 2, byte_order);
10452     *offsetp += 2;
10453     proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_max_height, tvb, *offsetp, 2, byte_order);
10454     *offsetp += 2;
10455     UNUSED(16);
10456 }
10457
10458 static void randrSetScreenSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10459 {
10460     proto_tree_add_item(t, hf_x11_randr_SetScreenSize_window, tvb, *offsetp, 4, byte_order);
10461     *offsetp += 4;
10462     proto_tree_add_item(t, hf_x11_randr_SetScreenSize_width, tvb, *offsetp, 2, byte_order);
10463     *offsetp += 2;
10464     proto_tree_add_item(t, hf_x11_randr_SetScreenSize_height, tvb, *offsetp, 2, byte_order);
10465     *offsetp += 2;
10466     proto_tree_add_item(t, hf_x11_randr_SetScreenSize_mm_width, tvb, *offsetp, 4, byte_order);
10467     *offsetp += 4;
10468     proto_tree_add_item(t, hf_x11_randr_SetScreenSize_mm_height, tvb, *offsetp, 4, byte_order);
10469     *offsetp += 4;
10470 }
10471
10472 static void randrGetScreenResources(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10473 {
10474     proto_tree_add_item(t, hf_x11_randr_GetScreenResources_window, tvb, *offsetp, 4, byte_order);
10475     *offsetp += 4;
10476 }
10477 static void randrGetScreenResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10478 {
10479     int sequence_number;
10480     int f_num_crtcs;
10481     int f_num_outputs;
10482     int f_num_modes;
10483     int f_names_len;
10484
10485     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetScreenResources");
10486
10487     REPLY(reply);
10488     UNUSED(1);
10489     sequence_number = VALUE16(tvb, *offsetp);
10490     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10491             "%d (randr-GetScreenResources)", sequence_number);
10492     *offsetp += 2;
10493     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10494     *offsetp += 4;
10495     proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_timestamp, tvb, *offsetp, 4, byte_order);
10496     *offsetp += 4;
10497     proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
10498     *offsetp += 4;
10499     f_num_crtcs = VALUE16(tvb, *offsetp);
10500     proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_crtcs, tvb, *offsetp, 2, byte_order);
10501     *offsetp += 2;
10502     f_num_outputs = VALUE16(tvb, *offsetp);
10503     proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_outputs, tvb, *offsetp, 2, byte_order);
10504     *offsetp += 2;
10505     f_num_modes = VALUE16(tvb, *offsetp);
10506     proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_modes, tvb, *offsetp, 2, byte_order);
10507     *offsetp += 2;
10508     f_names_len = VALUE16(tvb, *offsetp);
10509     proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_names_len, tvb, *offsetp, 2, byte_order);
10510     *offsetp += 2;
10511     UNUSED(8);
10512     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_crtcs, hf_x11_randr_GetScreenResources_reply_crtcs_item, f_num_crtcs, byte_order);
10513     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_outputs, hf_x11_randr_GetScreenResources_reply_outputs_item, f_num_outputs, byte_order);
10514     struct_randr_ModeInfo(tvb, offsetp, t, byte_order, f_num_modes);
10515     listOfByte(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_names, f_names_len, byte_order);
10516 }
10517
10518 static void randrGetOutputInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10519 {
10520     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_output, tvb, *offsetp, 4, byte_order);
10521     *offsetp += 4;
10522     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_config_timestamp, tvb, *offsetp, 4, byte_order);
10523     *offsetp += 4;
10524 }
10525 static void randrGetOutputInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10526 {
10527     int sequence_number;
10528     int f_num_crtcs;
10529     int f_num_modes;
10530     int f_num_clones;
10531     int f_name_len;
10532
10533     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetOutputInfo");
10534
10535     REPLY(reply);
10536     field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_status, byte_order);
10537     sequence_number = VALUE16(tvb, *offsetp);
10538     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10539             "%d (randr-GetOutputInfo)", sequence_number);
10540     *offsetp += 2;
10541     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10542     *offsetp += 4;
10543     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_timestamp, tvb, *offsetp, 4, byte_order);
10544     *offsetp += 4;
10545     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_crtc, tvb, *offsetp, 4, byte_order);
10546     *offsetp += 4;
10547     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_mm_width, tvb, *offsetp, 4, byte_order);
10548     *offsetp += 4;
10549     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_mm_height, tvb, *offsetp, 4, byte_order);
10550     *offsetp += 4;
10551     field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_connection, byte_order);
10552     field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_subpixel_order, byte_order);
10553     f_num_crtcs = VALUE16(tvb, *offsetp);
10554     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_crtcs, tvb, *offsetp, 2, byte_order);
10555     *offsetp += 2;
10556     f_num_modes = VALUE16(tvb, *offsetp);
10557     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_modes, tvb, *offsetp, 2, byte_order);
10558     *offsetp += 2;
10559     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_preferred, tvb, *offsetp, 2, byte_order);
10560     *offsetp += 2;
10561     f_num_clones = VALUE16(tvb, *offsetp);
10562     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_clones, tvb, *offsetp, 2, byte_order);
10563     *offsetp += 2;
10564     f_name_len = VALUE16(tvb, *offsetp);
10565     proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_name_len, tvb, *offsetp, 2, byte_order);
10566     *offsetp += 2;
10567     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_crtcs, hf_x11_randr_GetOutputInfo_reply_crtcs_item, f_num_crtcs, byte_order);
10568     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_modes, hf_x11_randr_GetOutputInfo_reply_modes_item, f_num_modes, byte_order);
10569     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_clones, hf_x11_randr_GetOutputInfo_reply_clones_item, f_num_clones, byte_order);
10570     listOfByte(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_name, f_name_len, byte_order);
10571 }
10572
10573 static void randrListOutputProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10574 {
10575     proto_tree_add_item(t, hf_x11_randr_ListOutputProperties_output, tvb, *offsetp, 4, byte_order);
10576     *offsetp += 4;
10577 }
10578 static void randrListOutputProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10579 {
10580     int sequence_number;
10581     int f_num_atoms;
10582
10583     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListOutputProperties");
10584
10585     REPLY(reply);
10586     UNUSED(1);
10587     sequence_number = VALUE16(tvb, *offsetp);
10588     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10589             "%d (randr-ListOutputProperties)", sequence_number);
10590     *offsetp += 2;
10591     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10592     *offsetp += 4;
10593     f_num_atoms = VALUE16(tvb, *offsetp);
10594     proto_tree_add_item(t, hf_x11_randr_ListOutputProperties_reply_num_atoms, tvb, *offsetp, 2, byte_order);
10595     *offsetp += 2;
10596     UNUSED(22);
10597     listOfCard32(tvb, offsetp, t, hf_x11_randr_ListOutputProperties_reply_atoms, hf_x11_randr_ListOutputProperties_reply_atoms_item, f_num_atoms, byte_order);
10598 }
10599
10600 static void randrQueryOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10601 {
10602     proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_output, tvb, *offsetp, 4, byte_order);
10603     *offsetp += 4;
10604     proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_property, tvb, *offsetp, 4, byte_order);
10605     *offsetp += 4;
10606 }
10607 static void randrQueryOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10608 {
10609     int sequence_number;
10610     int f_length;
10611
10612     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryOutputProperty");
10613
10614     REPLY(reply);
10615     UNUSED(1);
10616     sequence_number = VALUE16(tvb, *offsetp);
10617     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10618             "%d (randr-QueryOutputProperty)", sequence_number);
10619     *offsetp += 2;
10620     f_length = VALUE32(tvb, *offsetp);
10621     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10622     *offsetp += 4;
10623     proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_pending, tvb, *offsetp, 1, byte_order);
10624     *offsetp += 1;
10625     proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_range, tvb, *offsetp, 1, byte_order);
10626     *offsetp += 1;
10627     proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_immutable, tvb, *offsetp, 1, byte_order);
10628     *offsetp += 1;
10629     UNUSED(21);
10630     listOfInt32(tvb, offsetp, t, hf_x11_randr_QueryOutputProperty_reply_validValues, hf_x11_randr_QueryOutputProperty_reply_validValues_item, f_length, byte_order);
10631 }
10632
10633 static void randrConfigureOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10634 {
10635     proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_output, tvb, *offsetp, 4, byte_order);
10636     *offsetp += 4;
10637     proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_property, tvb, *offsetp, 4, byte_order);
10638     *offsetp += 4;
10639     proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_pending, tvb, *offsetp, 1, byte_order);
10640     *offsetp += 1;
10641     proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_range, tvb, *offsetp, 1, byte_order);
10642     *offsetp += 1;
10643     UNUSED(2);
10644     listOfInt32(tvb, offsetp, t, hf_x11_randr_ConfigureOutputProperty_values, hf_x11_randr_ConfigureOutputProperty_values_item, (length - 16) / 4, byte_order);
10645 }
10646
10647 static void randrChangeOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10648 {
10649     int f_format;
10650     int f_num_units;
10651     proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_output, tvb, *offsetp, 4, byte_order);
10652     *offsetp += 4;
10653     proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_property, tvb, *offsetp, 4, byte_order);
10654     *offsetp += 4;
10655     proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_type, tvb, *offsetp, 4, byte_order);
10656     *offsetp += 4;
10657     f_format = VALUE8(tvb, *offsetp);
10658     proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_format, tvb, *offsetp, 1, byte_order);
10659     *offsetp += 1;
10660     field8(tvb, offsetp, t, hf_x11_randr_ChangeOutputProperty_mode, byte_order);
10661     UNUSED(2);
10662     f_num_units = VALUE32(tvb, *offsetp);
10663     proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_num_units, tvb, *offsetp, 4, byte_order);
10664     *offsetp += 4;
10665     listOfByte(tvb, offsetp, t, hf_x11_randr_ChangeOutputProperty_data, ((f_num_units * f_format) / 8), byte_order);
10666     length -= ((f_num_units * f_format) / 8) * 1;
10667 }
10668
10669 static void randrDeleteOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10670 {
10671     proto_tree_add_item(t, hf_x11_randr_DeleteOutputProperty_output, tvb, *offsetp, 4, byte_order);
10672     *offsetp += 4;
10673     proto_tree_add_item(t, hf_x11_randr_DeleteOutputProperty_property, tvb, *offsetp, 4, byte_order);
10674     *offsetp += 4;
10675 }
10676
10677 static void randrGetOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10678 {
10679     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_output, tvb, *offsetp, 4, byte_order);
10680     *offsetp += 4;
10681     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_property, tvb, *offsetp, 4, byte_order);
10682     *offsetp += 4;
10683     field32(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_type, byte_order);
10684     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_long_offset, tvb, *offsetp, 4, byte_order);
10685     *offsetp += 4;
10686     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_long_length, tvb, *offsetp, 4, byte_order);
10687     *offsetp += 4;
10688     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_delete, tvb, *offsetp, 1, byte_order);
10689     *offsetp += 1;
10690     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_pending, tvb, *offsetp, 1, byte_order);
10691     *offsetp += 1;
10692     UNUSED(2);
10693 }
10694 static void randrGetOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10695 {
10696     int sequence_number;
10697     int f_format;
10698     int f_num_items;
10699
10700     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetOutputProperty");
10701
10702     REPLY(reply);
10703     f_format = VALUE8(tvb, *offsetp);
10704     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_format, tvb, *offsetp, 1, byte_order);
10705     *offsetp += 1;
10706     sequence_number = VALUE16(tvb, *offsetp);
10707     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10708             "%d (randr-GetOutputProperty)", sequence_number);
10709     *offsetp += 2;
10710     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10711     *offsetp += 4;
10712     field32(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_reply_type, byte_order);
10713     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_bytes_after, tvb, *offsetp, 4, byte_order);
10714     *offsetp += 4;
10715     f_num_items = VALUE32(tvb, *offsetp);
10716     proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_num_items, tvb, *offsetp, 4, byte_order);
10717     *offsetp += 4;
10718     UNUSED(12);
10719     listOfByte(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_reply_data, (f_num_items * (f_format / 8)), byte_order);
10720 }
10721
10722 static void randrCreateMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10723 {
10724     proto_tree_add_item(t, hf_x11_randr_CreateMode_window, tvb, *offsetp, 4, byte_order);
10725     *offsetp += 4;
10726     struct_randr_ModeInfo(tvb, offsetp, t, byte_order, 1);
10727     listOfByte(tvb, offsetp, t, hf_x11_randr_CreateMode_name, (length - 40) / 1, byte_order);
10728 }
10729 static void randrCreateMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10730 {
10731     int sequence_number;
10732
10733     col_append_fstr(pinfo->cinfo, COL_INFO, "-CreateMode");
10734
10735     REPLY(reply);
10736     UNUSED(1);
10737     sequence_number = VALUE16(tvb, *offsetp);
10738     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10739             "%d (randr-CreateMode)", sequence_number);
10740     *offsetp += 2;
10741     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10742     *offsetp += 4;
10743     proto_tree_add_item(t, hf_x11_randr_CreateMode_reply_mode, tvb, *offsetp, 4, byte_order);
10744     *offsetp += 4;
10745     UNUSED(20);
10746 }
10747
10748 static void randrDestroyMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10749 {
10750     proto_tree_add_item(t, hf_x11_randr_DestroyMode_mode, tvb, *offsetp, 4, byte_order);
10751     *offsetp += 4;
10752 }
10753
10754 static void randrAddOutputMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10755 {
10756     proto_tree_add_item(t, hf_x11_randr_AddOutputMode_output, tvb, *offsetp, 4, byte_order);
10757     *offsetp += 4;
10758     proto_tree_add_item(t, hf_x11_randr_AddOutputMode_mode, tvb, *offsetp, 4, byte_order);
10759     *offsetp += 4;
10760 }
10761
10762 static void randrDeleteOutputMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10763 {
10764     proto_tree_add_item(t, hf_x11_randr_DeleteOutputMode_output, tvb, *offsetp, 4, byte_order);
10765     *offsetp += 4;
10766     proto_tree_add_item(t, hf_x11_randr_DeleteOutputMode_mode, tvb, *offsetp, 4, byte_order);
10767     *offsetp += 4;
10768 }
10769
10770 static void randrGetCrtcInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10771 {
10772     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_crtc, tvb, *offsetp, 4, byte_order);
10773     *offsetp += 4;
10774     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_config_timestamp, tvb, *offsetp, 4, byte_order);
10775     *offsetp += 4;
10776 }
10777 static void randrGetCrtcInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10778 {
10779     int sequence_number;
10780     int f_num_outputs;
10781     int f_num_possible_outputs;
10782
10783     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCrtcInfo");
10784
10785     REPLY(reply);
10786     field8(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_status, byte_order);
10787     sequence_number = VALUE16(tvb, *offsetp);
10788     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10789             "%d (randr-GetCrtcInfo)", sequence_number);
10790     *offsetp += 2;
10791     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10792     *offsetp += 4;
10793     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_timestamp, tvb, *offsetp, 4, byte_order);
10794     *offsetp += 4;
10795     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_x, tvb, *offsetp, 2, byte_order);
10796     *offsetp += 2;
10797     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_y, tvb, *offsetp, 2, byte_order);
10798     *offsetp += 2;
10799     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_width, tvb, *offsetp, 2, byte_order);
10800     *offsetp += 2;
10801     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_height, tvb, *offsetp, 2, byte_order);
10802     *offsetp += 2;
10803     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_mode, tvb, *offsetp, 4, byte_order);
10804     *offsetp += 4;
10805     {
10806         const int* rotation_bits [] = {
10807         &hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_0,
10808         &hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_90,
10809         &hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_180,
10810         &hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_270,
10811         &hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Reflect_X,
10812         &hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Reflect_Y,
10813         };
10814         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_GetCrtcInfo_reply_rotation, ett_x11_rectangle, rotation_bits, byte_order);
10815     }
10816     *offsetp += 2;
10817     {
10818         const int* rotations_bits [] = {
10819         &hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_0,
10820         &hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_90,
10821         &hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_180,
10822         &hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_270,
10823         &hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Reflect_X,
10824         &hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Reflect_Y,
10825         };
10826         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_GetCrtcInfo_reply_rotations, ett_x11_rectangle, rotations_bits, byte_order);
10827     }
10828     *offsetp += 2;
10829     f_num_outputs = VALUE16(tvb, *offsetp);
10830     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_num_outputs, tvb, *offsetp, 2, byte_order);
10831     *offsetp += 2;
10832     f_num_possible_outputs = VALUE16(tvb, *offsetp);
10833     proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_num_possible_outputs, tvb, *offsetp, 2, byte_order);
10834     *offsetp += 2;
10835     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_outputs, hf_x11_randr_GetCrtcInfo_reply_outputs_item, f_num_outputs, byte_order);
10836     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_possible, hf_x11_randr_GetCrtcInfo_reply_possible_item, f_num_possible_outputs, byte_order);
10837 }
10838
10839 static void randrSetCrtcConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10840 {
10841     proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_crtc, tvb, *offsetp, 4, byte_order);
10842     *offsetp += 4;
10843     proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_timestamp, tvb, *offsetp, 4, byte_order);
10844     *offsetp += 4;
10845     proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_config_timestamp, tvb, *offsetp, 4, byte_order);
10846     *offsetp += 4;
10847     proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_x, tvb, *offsetp, 2, byte_order);
10848     *offsetp += 2;
10849     proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_y, tvb, *offsetp, 2, byte_order);
10850     *offsetp += 2;
10851     proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_mode, tvb, *offsetp, 4, byte_order);
10852     *offsetp += 4;
10853     {
10854         const int* rotation_bits [] = {
10855         &hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_0,
10856         &hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_90,
10857         &hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_180,
10858         &hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_270,
10859         &hf_x11_randr_SetCrtcConfig_rotation_mask_Reflect_X,
10860         &hf_x11_randr_SetCrtcConfig_rotation_mask_Reflect_Y,
10861         };
10862         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_SetCrtcConfig_rotation, ett_x11_rectangle, rotation_bits, byte_order);
10863     }
10864     *offsetp += 2;
10865     UNUSED(2);
10866     listOfCard32(tvb, offsetp, t, hf_x11_randr_SetCrtcConfig_outputs, hf_x11_randr_SetCrtcConfig_outputs_item, (length - 28) / 4, byte_order);
10867 }
10868 static void randrSetCrtcConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10869 {
10870     int sequence_number;
10871
10872     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetCrtcConfig");
10873
10874     REPLY(reply);
10875     field8(tvb, offsetp, t, hf_x11_randr_SetCrtcConfig_reply_status, byte_order);
10876     sequence_number = VALUE16(tvb, *offsetp);
10877     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10878             "%d (randr-SetCrtcConfig)", sequence_number);
10879     *offsetp += 2;
10880     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10881     *offsetp += 4;
10882     proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_reply_timestamp, tvb, *offsetp, 4, byte_order);
10883     *offsetp += 4;
10884     UNUSED(20);
10885 }
10886
10887 static void randrGetCrtcGammaSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10888 {
10889     proto_tree_add_item(t, hf_x11_randr_GetCrtcGammaSize_crtc, tvb, *offsetp, 4, byte_order);
10890     *offsetp += 4;
10891 }
10892 static void randrGetCrtcGammaSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10893 {
10894     int sequence_number;
10895
10896     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCrtcGammaSize");
10897
10898     REPLY(reply);
10899     UNUSED(1);
10900     sequence_number = VALUE16(tvb, *offsetp);
10901     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10902             "%d (randr-GetCrtcGammaSize)", sequence_number);
10903     *offsetp += 2;
10904     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10905     *offsetp += 4;
10906     proto_tree_add_item(t, hf_x11_randr_GetCrtcGammaSize_reply_size, tvb, *offsetp, 2, byte_order);
10907     *offsetp += 2;
10908     UNUSED(22);
10909 }
10910
10911 static void randrGetCrtcGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10912 {
10913     proto_tree_add_item(t, hf_x11_randr_GetCrtcGamma_crtc, tvb, *offsetp, 4, byte_order);
10914     *offsetp += 4;
10915 }
10916 static void randrGetCrtcGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10917 {
10918     int sequence_number;
10919     int f_size;
10920
10921     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCrtcGamma");
10922
10923     REPLY(reply);
10924     UNUSED(1);
10925     sequence_number = VALUE16(tvb, *offsetp);
10926     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10927             "%d (randr-GetCrtcGamma)", sequence_number);
10928     *offsetp += 2;
10929     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10930     *offsetp += 4;
10931     f_size = VALUE16(tvb, *offsetp);
10932     proto_tree_add_item(t, hf_x11_randr_GetCrtcGamma_reply_size, tvb, *offsetp, 2, byte_order);
10933     *offsetp += 2;
10934     UNUSED(22);
10935     listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_red, hf_x11_randr_GetCrtcGamma_reply_red_item, f_size, byte_order);
10936     listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_green, hf_x11_randr_GetCrtcGamma_reply_green_item, f_size, byte_order);
10937     listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_blue, hf_x11_randr_GetCrtcGamma_reply_blue_item, f_size, byte_order);
10938 }
10939
10940 static void randrSetCrtcGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10941 {
10942     int f_size;
10943     proto_tree_add_item(t, hf_x11_randr_SetCrtcGamma_crtc, tvb, *offsetp, 4, byte_order);
10944     *offsetp += 4;
10945     f_size = VALUE16(tvb, *offsetp);
10946     proto_tree_add_item(t, hf_x11_randr_SetCrtcGamma_size, tvb, *offsetp, 2, byte_order);
10947     *offsetp += 2;
10948     UNUSED(2);
10949     listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_red, hf_x11_randr_SetCrtcGamma_red_item, f_size, byte_order);
10950     length -= f_size * 2;
10951     listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_green, hf_x11_randr_SetCrtcGamma_green_item, f_size, byte_order);
10952     length -= f_size * 2;
10953     listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_blue, hf_x11_randr_SetCrtcGamma_blue_item, f_size, byte_order);
10954     length -= f_size * 2;
10955 }
10956
10957 static void randrGetScreenResourcesCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
10958 {
10959     proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_window, tvb, *offsetp, 4, byte_order);
10960     *offsetp += 4;
10961 }
10962 static void randrGetScreenResourcesCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
10963 {
10964     int sequence_number;
10965     int f_num_crtcs;
10966     int f_num_outputs;
10967     int f_num_modes;
10968     int f_names_len;
10969
10970     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetScreenResourcesCurrent");
10971
10972     REPLY(reply);
10973     UNUSED(1);
10974     sequence_number = VALUE16(tvb, *offsetp);
10975     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
10976             "%d (randr-GetScreenResourcesCurrent)", sequence_number);
10977     *offsetp += 2;
10978     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
10979     *offsetp += 4;
10980     proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_timestamp, tvb, *offsetp, 4, byte_order);
10981     *offsetp += 4;
10982     proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
10983     *offsetp += 4;
10984     f_num_crtcs = VALUE16(tvb, *offsetp);
10985     proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_crtcs, tvb, *offsetp, 2, byte_order);
10986     *offsetp += 2;
10987     f_num_outputs = VALUE16(tvb, *offsetp);
10988     proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_outputs, tvb, *offsetp, 2, byte_order);
10989     *offsetp += 2;
10990     f_num_modes = VALUE16(tvb, *offsetp);
10991     proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_modes, tvb, *offsetp, 2, byte_order);
10992     *offsetp += 2;
10993     f_names_len = VALUE16(tvb, *offsetp);
10994     proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_names_len, tvb, *offsetp, 2, byte_order);
10995     *offsetp += 2;
10996     UNUSED(8);
10997     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_crtcs, hf_x11_randr_GetScreenResourcesCurrent_reply_crtcs_item, f_num_crtcs, byte_order);
10998     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_outputs, hf_x11_randr_GetScreenResourcesCurrent_reply_outputs_item, f_num_outputs, byte_order);
10999     struct_randr_ModeInfo(tvb, offsetp, t, byte_order, f_num_modes);
11000     listOfByte(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_names, f_names_len, byte_order);
11001 }
11002
11003 static void randrSetCrtcTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11004 {
11005     int f_filter_len;
11006     proto_tree_add_item(t, hf_x11_randr_SetCrtcTransform_crtc, tvb, *offsetp, 4, byte_order);
11007     *offsetp += 4;
11008     struct_render_TRANSFORM(tvb, offsetp, t, byte_order, 1);
11009     f_filter_len = VALUE16(tvb, *offsetp);
11010     proto_tree_add_item(t, hf_x11_randr_SetCrtcTransform_filter_len, tvb, *offsetp, 2, byte_order);
11011     *offsetp += 2;
11012     UNUSED(2);
11013     listOfByte(tvb, offsetp, t, hf_x11_randr_SetCrtcTransform_filter_name, f_filter_len, byte_order);
11014     length -= f_filter_len * 1;
11015     if (*offsetp % 4) {
11016         UNUSED(4 - *offsetp % 4);
11017     }
11018     length = ((length + 3) & ~3);
11019     listOfInt32(tvb, offsetp, t, hf_x11_randr_SetCrtcTransform_filter_params, hf_x11_randr_SetCrtcTransform_filter_params_item, (length - 48) / 4, byte_order);
11020 }
11021
11022 static void randrGetCrtcTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11023 {
11024     proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_crtc, tvb, *offsetp, 4, byte_order);
11025     *offsetp += 4;
11026 }
11027 static void randrGetCrtcTransform_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11028 {
11029     int sequence_number;
11030     int f_pending_len;
11031     int f_pending_nparams;
11032     int f_current_len;
11033     int f_current_nparams;
11034
11035     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCrtcTransform");
11036
11037     REPLY(reply);
11038     UNUSED(1);
11039     sequence_number = VALUE16(tvb, *offsetp);
11040     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11041             "%d (randr-GetCrtcTransform)", sequence_number);
11042     *offsetp += 2;
11043     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11044     *offsetp += 4;
11045     struct_render_TRANSFORM(tvb, offsetp, t, byte_order, 1);
11046     proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_has_transforms, tvb, *offsetp, 1, byte_order);
11047     *offsetp += 1;
11048     UNUSED(3);
11049     struct_render_TRANSFORM(tvb, offsetp, t, byte_order, 1);
11050     UNUSED(4);
11051     f_pending_len = VALUE16(tvb, *offsetp);
11052     proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_pending_len, tvb, *offsetp, 2, byte_order);
11053     *offsetp += 2;
11054     f_pending_nparams = VALUE16(tvb, *offsetp);
11055     proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_pending_nparams, tvb, *offsetp, 2, byte_order);
11056     *offsetp += 2;
11057     f_current_len = VALUE16(tvb, *offsetp);
11058     proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_current_len, tvb, *offsetp, 2, byte_order);
11059     *offsetp += 2;
11060     f_current_nparams = VALUE16(tvb, *offsetp);
11061     proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_current_nparams, tvb, *offsetp, 2, byte_order);
11062     *offsetp += 2;
11063     listOfByte(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_pending_filter_name, f_pending_len, byte_order);
11064     if (*offsetp % 4) {
11065         UNUSED(4 - *offsetp % 4);
11066     }
11067     listOfInt32(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_pending_params, hf_x11_randr_GetCrtcTransform_reply_pending_params_item, f_pending_nparams, byte_order);
11068     listOfByte(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_current_filter_name, f_current_len, byte_order);
11069     if (*offsetp % 4) {
11070         UNUSED(4 - *offsetp % 4);
11071     }
11072     listOfInt32(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_current_params, hf_x11_randr_GetCrtcTransform_reply_current_params_item, f_current_nparams, byte_order);
11073 }
11074
11075 static void randrGetPanning(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11076 {
11077     proto_tree_add_item(t, hf_x11_randr_GetPanning_crtc, tvb, *offsetp, 4, byte_order);
11078     *offsetp += 4;
11079 }
11080 static void randrGetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11081 {
11082     int sequence_number;
11083
11084     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPanning");
11085
11086     REPLY(reply);
11087     field8(tvb, offsetp, t, hf_x11_randr_GetPanning_reply_status, byte_order);
11088     sequence_number = VALUE16(tvb, *offsetp);
11089     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11090             "%d (randr-GetPanning)", sequence_number);
11091     *offsetp += 2;
11092     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11093     *offsetp += 4;
11094     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_timestamp, tvb, *offsetp, 4, byte_order);
11095     *offsetp += 4;
11096     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_left, tvb, *offsetp, 2, byte_order);
11097     *offsetp += 2;
11098     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_top, tvb, *offsetp, 2, byte_order);
11099     *offsetp += 2;
11100     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_width, tvb, *offsetp, 2, byte_order);
11101     *offsetp += 2;
11102     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_height, tvb, *offsetp, 2, byte_order);
11103     *offsetp += 2;
11104     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_left, tvb, *offsetp, 2, byte_order);
11105     *offsetp += 2;
11106     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_top, tvb, *offsetp, 2, byte_order);
11107     *offsetp += 2;
11108     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_width, tvb, *offsetp, 2, byte_order);
11109     *offsetp += 2;
11110     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_height, tvb, *offsetp, 2, byte_order);
11111     *offsetp += 2;
11112     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_left, tvb, *offsetp, 2, byte_order);
11113     *offsetp += 2;
11114     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_top, tvb, *offsetp, 2, byte_order);
11115     *offsetp += 2;
11116     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_right, tvb, *offsetp, 2, byte_order);
11117     *offsetp += 2;
11118     proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_bottom, tvb, *offsetp, 2, byte_order);
11119     *offsetp += 2;
11120 }
11121
11122 static void randrSetPanning(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11123 {
11124     proto_tree_add_item(t, hf_x11_randr_SetPanning_crtc, tvb, *offsetp, 4, byte_order);
11125     *offsetp += 4;
11126     proto_tree_add_item(t, hf_x11_randr_SetPanning_timestamp, tvb, *offsetp, 4, byte_order);
11127     *offsetp += 4;
11128     proto_tree_add_item(t, hf_x11_randr_SetPanning_left, tvb, *offsetp, 2, byte_order);
11129     *offsetp += 2;
11130     proto_tree_add_item(t, hf_x11_randr_SetPanning_top, tvb, *offsetp, 2, byte_order);
11131     *offsetp += 2;
11132     proto_tree_add_item(t, hf_x11_randr_SetPanning_width, tvb, *offsetp, 2, byte_order);
11133     *offsetp += 2;
11134     proto_tree_add_item(t, hf_x11_randr_SetPanning_height, tvb, *offsetp, 2, byte_order);
11135     *offsetp += 2;
11136     proto_tree_add_item(t, hf_x11_randr_SetPanning_track_left, tvb, *offsetp, 2, byte_order);
11137     *offsetp += 2;
11138     proto_tree_add_item(t, hf_x11_randr_SetPanning_track_top, tvb, *offsetp, 2, byte_order);
11139     *offsetp += 2;
11140     proto_tree_add_item(t, hf_x11_randr_SetPanning_track_width, tvb, *offsetp, 2, byte_order);
11141     *offsetp += 2;
11142     proto_tree_add_item(t, hf_x11_randr_SetPanning_track_height, tvb, *offsetp, 2, byte_order);
11143     *offsetp += 2;
11144     proto_tree_add_item(t, hf_x11_randr_SetPanning_border_left, tvb, *offsetp, 2, byte_order);
11145     *offsetp += 2;
11146     proto_tree_add_item(t, hf_x11_randr_SetPanning_border_top, tvb, *offsetp, 2, byte_order);
11147     *offsetp += 2;
11148     proto_tree_add_item(t, hf_x11_randr_SetPanning_border_right, tvb, *offsetp, 2, byte_order);
11149     *offsetp += 2;
11150     proto_tree_add_item(t, hf_x11_randr_SetPanning_border_bottom, tvb, *offsetp, 2, byte_order);
11151     *offsetp += 2;
11152 }
11153 static void randrSetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11154 {
11155     int sequence_number;
11156
11157     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetPanning");
11158
11159     REPLY(reply);
11160     field8(tvb, offsetp, t, hf_x11_randr_SetPanning_reply_status, byte_order);
11161     sequence_number = VALUE16(tvb, *offsetp);
11162     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11163             "%d (randr-SetPanning)", sequence_number);
11164     *offsetp += 2;
11165     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11166     *offsetp += 4;
11167     proto_tree_add_item(t, hf_x11_randr_SetPanning_reply_timestamp, tvb, *offsetp, 4, byte_order);
11168     *offsetp += 4;
11169 }
11170
11171 static void randrSetOutputPrimary(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11172 {
11173     proto_tree_add_item(t, hf_x11_randr_SetOutputPrimary_window, tvb, *offsetp, 4, byte_order);
11174     *offsetp += 4;
11175     proto_tree_add_item(t, hf_x11_randr_SetOutputPrimary_output, tvb, *offsetp, 4, byte_order);
11176     *offsetp += 4;
11177 }
11178
11179 static void randrGetOutputPrimary(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11180 {
11181     proto_tree_add_item(t, hf_x11_randr_GetOutputPrimary_window, tvb, *offsetp, 4, byte_order);
11182     *offsetp += 4;
11183 }
11184 static void randrGetOutputPrimary_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11185 {
11186     int sequence_number;
11187
11188     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetOutputPrimary");
11189
11190     REPLY(reply);
11191     UNUSED(1);
11192     sequence_number = VALUE16(tvb, *offsetp);
11193     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11194             "%d (randr-GetOutputPrimary)", sequence_number);
11195     *offsetp += 2;
11196     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11197     *offsetp += 4;
11198     proto_tree_add_item(t, hf_x11_randr_GetOutputPrimary_reply_output, tvb, *offsetp, 4, byte_order);
11199     *offsetp += 4;
11200 }
11201
11202 static void randrGetProviders(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11203 {
11204     proto_tree_add_item(t, hf_x11_randr_GetProviders_window, tvb, *offsetp, 4, byte_order);
11205     *offsetp += 4;
11206 }
11207 static void randrGetProviders_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11208 {
11209     int sequence_number;
11210     int f_num_providers;
11211
11212     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetProviders");
11213
11214     REPLY(reply);
11215     UNUSED(1);
11216     sequence_number = VALUE16(tvb, *offsetp);
11217     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11218             "%d (randr-GetProviders)", sequence_number);
11219     *offsetp += 2;
11220     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11221     *offsetp += 4;
11222     proto_tree_add_item(t, hf_x11_randr_GetProviders_reply_timestamp, tvb, *offsetp, 4, byte_order);
11223     *offsetp += 4;
11224     f_num_providers = VALUE16(tvb, *offsetp);
11225     proto_tree_add_item(t, hf_x11_randr_GetProviders_reply_num_providers, tvb, *offsetp, 2, byte_order);
11226     *offsetp += 2;
11227     UNUSED(18);
11228     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetProviders_reply_providers, hf_x11_randr_GetProviders_reply_providers_item, f_num_providers, byte_order);
11229 }
11230
11231 static void randrGetProviderInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11232 {
11233     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_provider, tvb, *offsetp, 4, byte_order);
11234     *offsetp += 4;
11235     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_config_timestamp, tvb, *offsetp, 4, byte_order);
11236     *offsetp += 4;
11237 }
11238 static void randrGetProviderInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11239 {
11240     int sequence_number;
11241     int f_num_crtcs;
11242     int f_num_outputs;
11243     int f_num_associated_providers;
11244     int f_name_len;
11245
11246     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetProviderInfo");
11247
11248     REPLY(reply);
11249     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_reply_status, tvb, *offsetp, 1, byte_order);
11250     *offsetp += 1;
11251     sequence_number = VALUE16(tvb, *offsetp);
11252     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11253             "%d (randr-GetProviderInfo)", sequence_number);
11254     *offsetp += 2;
11255     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11256     *offsetp += 4;
11257     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_reply_timestamp, tvb, *offsetp, 4, byte_order);
11258     *offsetp += 4;
11259     {
11260         const int* capabilities_bits [] = {
11261         &hf_x11_randr_GetProviderInfo_reply_capabilities_mask_SourceOutput,
11262         &hf_x11_randr_GetProviderInfo_reply_capabilities_mask_SinkOutput,
11263         &hf_x11_randr_GetProviderInfo_reply_capabilities_mask_SourceOffload,
11264         &hf_x11_randr_GetProviderInfo_reply_capabilities_mask_SinkOffload,
11265         };
11266         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_randr_GetProviderInfo_reply_capabilities, ett_x11_rectangle, capabilities_bits, byte_order);
11267     }
11268     *offsetp += 4;
11269     f_num_crtcs = VALUE16(tvb, *offsetp);
11270     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_reply_num_crtcs, tvb, *offsetp, 2, byte_order);
11271     *offsetp += 2;
11272     f_num_outputs = VALUE16(tvb, *offsetp);
11273     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_reply_num_outputs, tvb, *offsetp, 2, byte_order);
11274     *offsetp += 2;
11275     f_num_associated_providers = VALUE16(tvb, *offsetp);
11276     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_reply_num_associated_providers, tvb, *offsetp, 2, byte_order);
11277     *offsetp += 2;
11278     f_name_len = VALUE16(tvb, *offsetp);
11279     proto_tree_add_item(t, hf_x11_randr_GetProviderInfo_reply_name_len, tvb, *offsetp, 2, byte_order);
11280     *offsetp += 2;
11281     UNUSED(8);
11282     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetProviderInfo_reply_crtcs, hf_x11_randr_GetProviderInfo_reply_crtcs_item, f_num_crtcs, byte_order);
11283     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetProviderInfo_reply_outputs, hf_x11_randr_GetProviderInfo_reply_outputs_item, f_num_outputs, byte_order);
11284     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetProviderInfo_reply_associated_providers, hf_x11_randr_GetProviderInfo_reply_associated_providers_item, f_num_associated_providers, byte_order);
11285     listOfCard32(tvb, offsetp, t, hf_x11_randr_GetProviderInfo_reply_associated_capability, hf_x11_randr_GetProviderInfo_reply_associated_capability_item, f_num_associated_providers, byte_order);
11286     listOfByte(tvb, offsetp, t, hf_x11_randr_GetProviderInfo_reply_name, f_name_len, byte_order);
11287 }
11288
11289 static void randrSetProviderOffloadSink(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11290 {
11291     proto_tree_add_item(t, hf_x11_randr_SetProviderOffloadSink_provider, tvb, *offsetp, 4, byte_order);
11292     *offsetp += 4;
11293     proto_tree_add_item(t, hf_x11_randr_SetProviderOffloadSink_sink_provider, tvb, *offsetp, 4, byte_order);
11294     *offsetp += 4;
11295     proto_tree_add_item(t, hf_x11_randr_SetProviderOffloadSink_config_timestamp, tvb, *offsetp, 4, byte_order);
11296     *offsetp += 4;
11297 }
11298
11299 static void randrSetProviderOutputSource(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11300 {
11301     proto_tree_add_item(t, hf_x11_randr_SetProviderOutputSource_provider, tvb, *offsetp, 4, byte_order);
11302     *offsetp += 4;
11303     proto_tree_add_item(t, hf_x11_randr_SetProviderOutputSource_source_provider, tvb, *offsetp, 4, byte_order);
11304     *offsetp += 4;
11305     proto_tree_add_item(t, hf_x11_randr_SetProviderOutputSource_config_timestamp, tvb, *offsetp, 4, byte_order);
11306     *offsetp += 4;
11307 }
11308
11309 static void randrListProviderProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11310 {
11311     proto_tree_add_item(t, hf_x11_randr_ListProviderProperties_provider, tvb, *offsetp, 4, byte_order);
11312     *offsetp += 4;
11313 }
11314 static void randrListProviderProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11315 {
11316     int sequence_number;
11317     int f_num_atoms;
11318
11319     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListProviderProperties");
11320
11321     REPLY(reply);
11322     UNUSED(1);
11323     sequence_number = VALUE16(tvb, *offsetp);
11324     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11325             "%d (randr-ListProviderProperties)", sequence_number);
11326     *offsetp += 2;
11327     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11328     *offsetp += 4;
11329     f_num_atoms = VALUE16(tvb, *offsetp);
11330     proto_tree_add_item(t, hf_x11_randr_ListProviderProperties_reply_num_atoms, tvb, *offsetp, 2, byte_order);
11331     *offsetp += 2;
11332     UNUSED(22);
11333     listOfCard32(tvb, offsetp, t, hf_x11_randr_ListProviderProperties_reply_atoms, hf_x11_randr_ListProviderProperties_reply_atoms_item, f_num_atoms, byte_order);
11334 }
11335
11336 static void randrQueryProviderProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11337 {
11338     proto_tree_add_item(t, hf_x11_randr_QueryProviderProperty_provider, tvb, *offsetp, 4, byte_order);
11339     *offsetp += 4;
11340     proto_tree_add_item(t, hf_x11_randr_QueryProviderProperty_property, tvb, *offsetp, 4, byte_order);
11341     *offsetp += 4;
11342 }
11343 static void randrQueryProviderProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11344 {
11345     int sequence_number;
11346     int f_length;
11347
11348     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryProviderProperty");
11349
11350     REPLY(reply);
11351     UNUSED(1);
11352     sequence_number = VALUE16(tvb, *offsetp);
11353     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11354             "%d (randr-QueryProviderProperty)", sequence_number);
11355     *offsetp += 2;
11356     f_length = VALUE32(tvb, *offsetp);
11357     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11358     *offsetp += 4;
11359     proto_tree_add_item(t, hf_x11_randr_QueryProviderProperty_reply_pending, tvb, *offsetp, 1, byte_order);
11360     *offsetp += 1;
11361     proto_tree_add_item(t, hf_x11_randr_QueryProviderProperty_reply_range, tvb, *offsetp, 1, byte_order);
11362     *offsetp += 1;
11363     proto_tree_add_item(t, hf_x11_randr_QueryProviderProperty_reply_immutable, tvb, *offsetp, 1, byte_order);
11364     *offsetp += 1;
11365     UNUSED(21);
11366     listOfInt32(tvb, offsetp, t, hf_x11_randr_QueryProviderProperty_reply_valid_values, hf_x11_randr_QueryProviderProperty_reply_valid_values_item, f_length, byte_order);
11367 }
11368
11369 static void randrConfigureProviderProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11370 {
11371     proto_tree_add_item(t, hf_x11_randr_ConfigureProviderProperty_provider, tvb, *offsetp, 4, byte_order);
11372     *offsetp += 4;
11373     proto_tree_add_item(t, hf_x11_randr_ConfigureProviderProperty_property, tvb, *offsetp, 4, byte_order);
11374     *offsetp += 4;
11375     proto_tree_add_item(t, hf_x11_randr_ConfigureProviderProperty_pending, tvb, *offsetp, 1, byte_order);
11376     *offsetp += 1;
11377     proto_tree_add_item(t, hf_x11_randr_ConfigureProviderProperty_range, tvb, *offsetp, 1, byte_order);
11378     *offsetp += 1;
11379     UNUSED(2);
11380     listOfInt32(tvb, offsetp, t, hf_x11_randr_ConfigureProviderProperty_values, hf_x11_randr_ConfigureProviderProperty_values_item, (length - 16) / 4, byte_order);
11381 }
11382
11383 static void randrChangeProviderProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11384 {
11385     int f_format;
11386     int f_num_items;
11387     proto_tree_add_item(t, hf_x11_randr_ChangeProviderProperty_provider, tvb, *offsetp, 4, byte_order);
11388     *offsetp += 4;
11389     proto_tree_add_item(t, hf_x11_randr_ChangeProviderProperty_property, tvb, *offsetp, 4, byte_order);
11390     *offsetp += 4;
11391     proto_tree_add_item(t, hf_x11_randr_ChangeProviderProperty_type, tvb, *offsetp, 4, byte_order);
11392     *offsetp += 4;
11393     f_format = VALUE8(tvb, *offsetp);
11394     proto_tree_add_item(t, hf_x11_randr_ChangeProviderProperty_format, tvb, *offsetp, 1, byte_order);
11395     *offsetp += 1;
11396     proto_tree_add_item(t, hf_x11_randr_ChangeProviderProperty_mode, tvb, *offsetp, 1, byte_order);
11397     *offsetp += 1;
11398     UNUSED(2);
11399     f_num_items = VALUE32(tvb, *offsetp);
11400     proto_tree_add_item(t, hf_x11_randr_ChangeProviderProperty_num_items, tvb, *offsetp, 4, byte_order);
11401     *offsetp += 4;
11402     listOfByte(tvb, offsetp, t, hf_x11_randr_ChangeProviderProperty_data, (f_num_items * (f_format / 8)), byte_order);
11403     length -= (f_num_items * (f_format / 8)) * 1;
11404 }
11405
11406 static void randrDeleteProviderProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11407 {
11408     proto_tree_add_item(t, hf_x11_randr_DeleteProviderProperty_provider, tvb, *offsetp, 4, byte_order);
11409     *offsetp += 4;
11410     proto_tree_add_item(t, hf_x11_randr_DeleteProviderProperty_property, tvb, *offsetp, 4, byte_order);
11411     *offsetp += 4;
11412 }
11413
11414 static void randrGetProviderProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11415 {
11416     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_provider, tvb, *offsetp, 4, byte_order);
11417     *offsetp += 4;
11418     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_property, tvb, *offsetp, 4, byte_order);
11419     *offsetp += 4;
11420     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_type, tvb, *offsetp, 4, byte_order);
11421     *offsetp += 4;
11422     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_long_offset, tvb, *offsetp, 4, byte_order);
11423     *offsetp += 4;
11424     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_long_length, tvb, *offsetp, 4, byte_order);
11425     *offsetp += 4;
11426     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_delete, tvb, *offsetp, 1, byte_order);
11427     *offsetp += 1;
11428     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_pending, tvb, *offsetp, 1, byte_order);
11429     *offsetp += 1;
11430     UNUSED(2);
11431 }
11432 static void randrGetProviderProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11433 {
11434     int sequence_number;
11435     int f_format;
11436     int f_num_items;
11437
11438     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetProviderProperty");
11439
11440     REPLY(reply);
11441     f_format = VALUE8(tvb, *offsetp);
11442     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_reply_format, tvb, *offsetp, 1, byte_order);
11443     *offsetp += 1;
11444     sequence_number = VALUE16(tvb, *offsetp);
11445     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11446             "%d (randr-GetProviderProperty)", sequence_number);
11447     *offsetp += 2;
11448     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11449     *offsetp += 4;
11450     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_reply_type, tvb, *offsetp, 4, byte_order);
11451     *offsetp += 4;
11452     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_reply_bytes_after, tvb, *offsetp, 4, byte_order);
11453     *offsetp += 4;
11454     f_num_items = VALUE32(tvb, *offsetp);
11455     proto_tree_add_item(t, hf_x11_randr_GetProviderProperty_reply_num_items, tvb, *offsetp, 4, byte_order);
11456     *offsetp += 4;
11457     UNUSED(12);
11458     listOfByte(tvb, offsetp, t, hf_x11_randr_GetProviderProperty_reply_data, (f_num_items * (f_format / 8)), byte_order);
11459 }
11460
11461 static void struct_randr_NotifyData(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
11462 {
11463     int i;
11464     int base = *offsetp;
11465     for (i = 0; i < count; i++) {
11466         proto_item *item;
11467         proto_tree *t;
11468         item = proto_tree_add_item(root, hf_x11_union_randr_NotifyData, tvb, base, 28, ENC_NA);
11469         t = proto_item_add_subtree(item, ett_x11_rectangle);
11470
11471         *offsetp = base;
11472         struct_randr_CrtcChange(tvb, offsetp, t, byte_order, 1);
11473         *offsetp = base;
11474         struct_randr_OutputChange(tvb, offsetp, t, byte_order, 1);
11475         *offsetp = base;
11476         struct_randr_OutputProperty(tvb, offsetp, t, byte_order, 1);
11477         *offsetp = base;
11478         struct_randr_ProviderChange(tvb, offsetp, t, byte_order, 1);
11479         *offsetp = base;
11480         struct_randr_ProviderProperty(tvb, offsetp, t, byte_order, 1);
11481         *offsetp = base;
11482         struct_randr_ResourceChange(tvb, offsetp, t, byte_order, 1);
11483         base += 28;
11484     }
11485     *offsetp = base;
11486 }
11487
11488 static void randrNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
11489 {
11490     field8(tvb, offsetp, t, hf_x11_randr_Notify_subCode, byte_order);
11491     CARD16(event_sequencenumber);
11492     struct_randr_NotifyData(tvb, offsetp, t, byte_order, 1);
11493 }
11494
11495
11496 static void randrGetMonitors(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11497 {
11498     proto_tree_add_item(t, hf_x11_randr_GetMonitors_window, tvb, *offsetp, 4, byte_order);
11499     *offsetp += 4;
11500     proto_tree_add_item(t, hf_x11_randr_GetMonitors_get_active, tvb, *offsetp, 1, byte_order);
11501     *offsetp += 1;
11502 }
11503 static void randrGetMonitors_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11504 {
11505     int sequence_number;
11506     int f_nMonitors;
11507
11508     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMonitors");
11509
11510     REPLY(reply);
11511     UNUSED(1);
11512     sequence_number = VALUE16(tvb, *offsetp);
11513     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11514             "%d (randr-GetMonitors)", sequence_number);
11515     *offsetp += 2;
11516     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11517     *offsetp += 4;
11518     proto_tree_add_item(t, hf_x11_randr_GetMonitors_reply_timestamp, tvb, *offsetp, 4, byte_order);
11519     *offsetp += 4;
11520     f_nMonitors = VALUE32(tvb, *offsetp);
11521     proto_tree_add_item(t, hf_x11_randr_GetMonitors_reply_nMonitors, tvb, *offsetp, 4, byte_order);
11522     *offsetp += 4;
11523     proto_tree_add_item(t, hf_x11_randr_GetMonitors_reply_nOutputs, tvb, *offsetp, 4, byte_order);
11524     *offsetp += 4;
11525     UNUSED(12);
11526     struct_randr_MonitorInfo(tvb, offsetp, t, byte_order, f_nMonitors);
11527 }
11528
11529 static void randrSetMonitor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11530 {
11531     proto_tree_add_item(t, hf_x11_randr_SetMonitor_window, tvb, *offsetp, 4, byte_order);
11532     *offsetp += 4;
11533     struct_randr_MonitorInfo(tvb, offsetp, t, byte_order, 1);
11534 }
11535
11536 static void randrDeleteMonitor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11537 {
11538     proto_tree_add_item(t, hf_x11_randr_DeleteMonitor_window, tvb, *offsetp, 4, byte_order);
11539     *offsetp += 4;
11540     proto_tree_add_item(t, hf_x11_randr_DeleteMonitor_name, tvb, *offsetp, 4, byte_order);
11541     *offsetp += 4;
11542 }
11543 static const value_string randr_extension_minor[] = {
11544     { 0, "QueryVersion" },
11545     { 2, "SetScreenConfig" },
11546     { 4, "SelectInput" },
11547     { 5, "GetScreenInfo" },
11548     { 6, "GetScreenSizeRange" },
11549     { 7, "SetScreenSize" },
11550     { 8, "GetScreenResources" },
11551     { 9, "GetOutputInfo" },
11552     { 10, "ListOutputProperties" },
11553     { 11, "QueryOutputProperty" },
11554     { 12, "ConfigureOutputProperty" },
11555     { 13, "ChangeOutputProperty" },
11556     { 14, "DeleteOutputProperty" },
11557     { 15, "GetOutputProperty" },
11558     { 16, "CreateMode" },
11559     { 17, "DestroyMode" },
11560     { 18, "AddOutputMode" },
11561     { 19, "DeleteOutputMode" },
11562     { 20, "GetCrtcInfo" },
11563     { 21, "SetCrtcConfig" },
11564     { 22, "GetCrtcGammaSize" },
11565     { 23, "GetCrtcGamma" },
11566     { 24, "SetCrtcGamma" },
11567     { 25, "GetScreenResourcesCurrent" },
11568     { 26, "SetCrtcTransform" },
11569     { 27, "GetCrtcTransform" },
11570     { 28, "GetPanning" },
11571     { 29, "SetPanning" },
11572     { 30, "SetOutputPrimary" },
11573     { 31, "GetOutputPrimary" },
11574     { 32, "GetProviders" },
11575     { 33, "GetProviderInfo" },
11576     { 34, "SetProviderOffloadSink" },
11577     { 35, "SetProviderOutputSource" },
11578     { 36, "ListProviderProperties" },
11579     { 37, "QueryProviderProperty" },
11580     { 38, "ConfigureProviderProperty" },
11581     { 39, "ChangeProviderProperty" },
11582     { 40, "DeleteProviderProperty" },
11583     { 41, "GetProviderProperty" },
11584     { 42, "GetMonitors" },
11585     { 43, "SetMonitor" },
11586     { 44, "DeleteMonitor" },
11587     { 0, NULL }
11588 };
11589 const x11_event_info randr_events[] = {
11590     { "randr-Notify", randrNotify },
11591     { NULL, NULL }
11592 };
11593 static x11_reply_info randr_replies[] = {
11594     { 0, randrQueryVersion_Reply },
11595     { 2, randrSetScreenConfig_Reply },
11596     { 5, randrGetScreenInfo_Reply },
11597     { 6, randrGetScreenSizeRange_Reply },
11598     { 8, randrGetScreenResources_Reply },
11599     { 9, randrGetOutputInfo_Reply },
11600     { 10, randrListOutputProperties_Reply },
11601     { 11, randrQueryOutputProperty_Reply },
11602     { 15, randrGetOutputProperty_Reply },
11603     { 16, randrCreateMode_Reply },
11604     { 20, randrGetCrtcInfo_Reply },
11605     { 21, randrSetCrtcConfig_Reply },
11606     { 22, randrGetCrtcGammaSize_Reply },
11607     { 23, randrGetCrtcGamma_Reply },
11608     { 25, randrGetScreenResourcesCurrent_Reply },
11609     { 27, randrGetCrtcTransform_Reply },
11610     { 28, randrGetPanning_Reply },
11611     { 29, randrSetPanning_Reply },
11612     { 31, randrGetOutputPrimary_Reply },
11613     { 32, randrGetProviders_Reply },
11614     { 33, randrGetProviderInfo_Reply },
11615     { 36, randrListProviderProperties_Reply },
11616     { 37, randrQueryProviderProperty_Reply },
11617     { 41, randrGetProviderProperty_Reply },
11618     { 42, randrGetMonitors_Reply },
11619     { 0, NULL }
11620 };
11621
11622 static void dispatch_randr(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11623 {
11624     int minor, length;
11625     minor = CARD8(randr_extension_minor);
11626     length = REQUEST_LENGTH();
11627
11628     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
11629                           val_to_str(minor, randr_extension_minor,
11630                                      "<Unknown opcode %d>"));
11631     switch (minor) {
11632     case 0:
11633         randrQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
11634         break;
11635     case 2:
11636         randrSetScreenConfig(tvb, pinfo, offsetp, t, byte_order, length);
11637         break;
11638     case 4:
11639         randrSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
11640         break;
11641     case 5:
11642         randrGetScreenInfo(tvb, pinfo, offsetp, t, byte_order, length);
11643         break;
11644     case 6:
11645         randrGetScreenSizeRange(tvb, pinfo, offsetp, t, byte_order, length);
11646         break;
11647     case 7:
11648         randrSetScreenSize(tvb, pinfo, offsetp, t, byte_order, length);
11649         break;
11650     case 8:
11651         randrGetScreenResources(tvb, pinfo, offsetp, t, byte_order, length);
11652         break;
11653     case 9:
11654         randrGetOutputInfo(tvb, pinfo, offsetp, t, byte_order, length);
11655         break;
11656     case 10:
11657         randrListOutputProperties(tvb, pinfo, offsetp, t, byte_order, length);
11658         break;
11659     case 11:
11660         randrQueryOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
11661         break;
11662     case 12:
11663         randrConfigureOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
11664         break;
11665     case 13:
11666         randrChangeOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
11667         break;
11668     case 14:
11669         randrDeleteOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
11670         break;
11671     case 15:
11672         randrGetOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
11673         break;
11674     case 16:
11675         randrCreateMode(tvb, pinfo, offsetp, t, byte_order, length);
11676         break;
11677     case 17:
11678         randrDestroyMode(tvb, pinfo, offsetp, t, byte_order, length);
11679         break;
11680     case 18:
11681         randrAddOutputMode(tvb, pinfo, offsetp, t, byte_order, length);
11682         break;
11683     case 19:
11684         randrDeleteOutputMode(tvb, pinfo, offsetp, t, byte_order, length);
11685         break;
11686     case 20:
11687         randrGetCrtcInfo(tvb, pinfo, offsetp, t, byte_order, length);
11688         break;
11689     case 21:
11690         randrSetCrtcConfig(tvb, pinfo, offsetp, t, byte_order, length);
11691         break;
11692     case 22:
11693         randrGetCrtcGammaSize(tvb, pinfo, offsetp, t, byte_order, length);
11694         break;
11695     case 23:
11696         randrGetCrtcGamma(tvb, pinfo, offsetp, t, byte_order, length);
11697         break;
11698     case 24:
11699         randrSetCrtcGamma(tvb, pinfo, offsetp, t, byte_order, length);
11700         break;
11701     case 25:
11702         randrGetScreenResourcesCurrent(tvb, pinfo, offsetp, t, byte_order, length);
11703         break;
11704     case 26:
11705         randrSetCrtcTransform(tvb, pinfo, offsetp, t, byte_order, length);
11706         break;
11707     case 27:
11708         randrGetCrtcTransform(tvb, pinfo, offsetp, t, byte_order, length);
11709         break;
11710     case 28:
11711         randrGetPanning(tvb, pinfo, offsetp, t, byte_order, length);
11712         break;
11713     case 29:
11714         randrSetPanning(tvb, pinfo, offsetp, t, byte_order, length);
11715         break;
11716     case 30:
11717         randrSetOutputPrimary(tvb, pinfo, offsetp, t, byte_order, length);
11718         break;
11719     case 31:
11720         randrGetOutputPrimary(tvb, pinfo, offsetp, t, byte_order, length);
11721         break;
11722     case 32:
11723         randrGetProviders(tvb, pinfo, offsetp, t, byte_order, length);
11724         break;
11725     case 33:
11726         randrGetProviderInfo(tvb, pinfo, offsetp, t, byte_order, length);
11727         break;
11728     case 34:
11729         randrSetProviderOffloadSink(tvb, pinfo, offsetp, t, byte_order, length);
11730         break;
11731     case 35:
11732         randrSetProviderOutputSource(tvb, pinfo, offsetp, t, byte_order, length);
11733         break;
11734     case 36:
11735         randrListProviderProperties(tvb, pinfo, offsetp, t, byte_order, length);
11736         break;
11737     case 37:
11738         randrQueryProviderProperty(tvb, pinfo, offsetp, t, byte_order, length);
11739         break;
11740     case 38:
11741         randrConfigureProviderProperty(tvb, pinfo, offsetp, t, byte_order, length);
11742         break;
11743     case 39:
11744         randrChangeProviderProperty(tvb, pinfo, offsetp, t, byte_order, length);
11745         break;
11746     case 40:
11747         randrDeleteProviderProperty(tvb, pinfo, offsetp, t, byte_order, length);
11748         break;
11749     case 41:
11750         randrGetProviderProperty(tvb, pinfo, offsetp, t, byte_order, length);
11751         break;
11752     case 42:
11753         randrGetMonitors(tvb, pinfo, offsetp, t, byte_order, length);
11754         break;
11755     case 43:
11756         randrSetMonitor(tvb, pinfo, offsetp, t, byte_order, length);
11757         break;
11758     case 44:
11759         randrDeleteMonitor(tvb, pinfo, offsetp, t, byte_order, length);
11760         break;
11761     /* No need for a default case here, since Unknown is printed above,
11762        and UNDECODED() is taken care of by dissect_x11_request */
11763     }
11764 }
11765
11766 static void register_randr(void)
11767 {
11768     set_handler("RANDR", dispatch_randr, randr_errors, randr_events, NULL, randr_replies);
11769 }
11770
11771 static void struct_record_Range8(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
11772 {
11773     int i;
11774     for (i = 0; i < count; i++) {
11775         proto_item *item;
11776         proto_tree *t;
11777
11778         item = proto_tree_add_item(root, hf_x11_struct_record_Range8, tvb, *offsetp, 2, ENC_NA);
11779         t = proto_item_add_subtree(item, ett_x11_rectangle);
11780         proto_tree_add_item(t, hf_x11_struct_record_Range8_first, tvb, *offsetp, 1, byte_order);
11781         *offsetp += 1;
11782         proto_tree_add_item(t, hf_x11_struct_record_Range8_last, tvb, *offsetp, 1, byte_order);
11783         *offsetp += 1;
11784     }
11785 }
11786
11787 static void struct_record_Range16(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
11788 {
11789     int i;
11790     for (i = 0; i < count; i++) {
11791         proto_item *item;
11792         proto_tree *t;
11793
11794         item = proto_tree_add_item(root, hf_x11_struct_record_Range16, tvb, *offsetp, 4, ENC_NA);
11795         t = proto_item_add_subtree(item, ett_x11_rectangle);
11796         proto_tree_add_item(t, hf_x11_struct_record_Range16_first, tvb, *offsetp, 2, byte_order);
11797         *offsetp += 2;
11798         proto_tree_add_item(t, hf_x11_struct_record_Range16_last, tvb, *offsetp, 2, byte_order);
11799         *offsetp += 2;
11800     }
11801 }
11802
11803 static void struct_record_ExtRange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
11804 {
11805     int i;
11806     for (i = 0; i < count; i++) {
11807         proto_item *item;
11808         proto_tree *t;
11809
11810         item = proto_tree_add_item(root, hf_x11_struct_record_ExtRange, tvb, *offsetp, 6, ENC_NA);
11811         t = proto_item_add_subtree(item, ett_x11_rectangle);
11812         struct_record_Range8(tvb, offsetp, t, byte_order, 1);
11813         struct_record_Range16(tvb, offsetp, t, byte_order, 1);
11814     }
11815 }
11816
11817 static void struct_record_Range(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
11818 {
11819     int i;
11820     for (i = 0; i < count; i++) {
11821         proto_item *item;
11822         proto_tree *t;
11823
11824         item = proto_tree_add_item(root, hf_x11_struct_record_Range, tvb, *offsetp, 24, ENC_NA);
11825         t = proto_item_add_subtree(item, ett_x11_rectangle);
11826         struct_record_Range8(tvb, offsetp, t, byte_order, 1);
11827         struct_record_Range8(tvb, offsetp, t, byte_order, 1);
11828         struct_record_ExtRange(tvb, offsetp, t, byte_order, 1);
11829         struct_record_ExtRange(tvb, offsetp, t, byte_order, 1);
11830         struct_record_Range8(tvb, offsetp, t, byte_order, 1);
11831         struct_record_Range8(tvb, offsetp, t, byte_order, 1);
11832         struct_record_Range8(tvb, offsetp, t, byte_order, 1);
11833         proto_tree_add_item(t, hf_x11_struct_record_Range_client_started, tvb, *offsetp, 1, byte_order);
11834         *offsetp += 1;
11835         proto_tree_add_item(t, hf_x11_struct_record_Range_client_died, tvb, *offsetp, 1, byte_order);
11836         *offsetp += 1;
11837     }
11838 }
11839
11840 static int struct_size_record_ClientInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
11841 {
11842     int size = 0;
11843     int f_num_ranges;
11844     f_num_ranges = VALUE32(tvb, *offsetp + size + 4);
11845     size += f_num_ranges * 24;
11846     return size + 8;
11847 }
11848
11849 static void struct_record_ClientInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
11850 {
11851     int i;
11852     for (i = 0; i < count; i++) {
11853         proto_item *item;
11854         proto_tree *t;
11855         int f_num_ranges;
11856
11857         item = proto_tree_add_item(root, hf_x11_struct_record_ClientInfo, tvb, *offsetp, struct_size_record_ClientInfo(tvb, offsetp, byte_order), ENC_NA);
11858         t = proto_item_add_subtree(item, ett_x11_rectangle);
11859         proto_tree_add_item(t, hf_x11_struct_record_ClientInfo_client_resource, tvb, *offsetp, 4, byte_order);
11860         *offsetp += 4;
11861         f_num_ranges = VALUE32(tvb, *offsetp);
11862         proto_tree_add_item(t, hf_x11_struct_record_ClientInfo_num_ranges, tvb, *offsetp, 4, byte_order);
11863         *offsetp += 4;
11864         struct_record_Range(tvb, offsetp, t, byte_order, f_num_ranges);
11865     }
11866 }
11867
11868 static void recordQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11869 {
11870     proto_tree_add_item(t, hf_x11_record_QueryVersion_major_version, tvb, *offsetp, 2, byte_order);
11871     *offsetp += 2;
11872     proto_tree_add_item(t, hf_x11_record_QueryVersion_minor_version, tvb, *offsetp, 2, byte_order);
11873     *offsetp += 2;
11874 }
11875 static void recordQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11876 {
11877     int sequence_number;
11878
11879     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
11880
11881     REPLY(reply);
11882     UNUSED(1);
11883     sequence_number = VALUE16(tvb, *offsetp);
11884     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11885             "%d (record-QueryVersion)", sequence_number);
11886     *offsetp += 2;
11887     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11888     *offsetp += 4;
11889     proto_tree_add_item(t, hf_x11_record_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
11890     *offsetp += 2;
11891     proto_tree_add_item(t, hf_x11_record_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
11892     *offsetp += 2;
11893 }
11894
11895 static void recordCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11896 {
11897     int f_num_client_specs;
11898     int f_num_ranges;
11899     proto_tree_add_item(t, hf_x11_record_CreateContext_context, tvb, *offsetp, 4, byte_order);
11900     *offsetp += 4;
11901     proto_tree_add_item(t, hf_x11_record_CreateContext_element_header, tvb, *offsetp, 1, byte_order);
11902     *offsetp += 1;
11903     UNUSED(3);
11904     f_num_client_specs = VALUE32(tvb, *offsetp);
11905     proto_tree_add_item(t, hf_x11_record_CreateContext_num_client_specs, tvb, *offsetp, 4, byte_order);
11906     *offsetp += 4;
11907     f_num_ranges = VALUE32(tvb, *offsetp);
11908     proto_tree_add_item(t, hf_x11_record_CreateContext_num_ranges, tvb, *offsetp, 4, byte_order);
11909     *offsetp += 4;
11910     listOfCard32(tvb, offsetp, t, hf_x11_record_CreateContext_client_specs, hf_x11_record_CreateContext_client_specs_item, f_num_client_specs, byte_order);
11911     length -= f_num_client_specs * 4;
11912     struct_record_Range(tvb, offsetp, t, byte_order, f_num_ranges);
11913     length -= f_num_ranges * 24;
11914 }
11915
11916 static void recordRegisterClients(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11917 {
11918     int f_num_client_specs;
11919     int f_num_ranges;
11920     proto_tree_add_item(t, hf_x11_record_RegisterClients_context, tvb, *offsetp, 4, byte_order);
11921     *offsetp += 4;
11922     proto_tree_add_item(t, hf_x11_record_RegisterClients_element_header, tvb, *offsetp, 1, byte_order);
11923     *offsetp += 1;
11924     UNUSED(3);
11925     f_num_client_specs = VALUE32(tvb, *offsetp);
11926     proto_tree_add_item(t, hf_x11_record_RegisterClients_num_client_specs, tvb, *offsetp, 4, byte_order);
11927     *offsetp += 4;
11928     f_num_ranges = VALUE32(tvb, *offsetp);
11929     proto_tree_add_item(t, hf_x11_record_RegisterClients_num_ranges, tvb, *offsetp, 4, byte_order);
11930     *offsetp += 4;
11931     listOfCard32(tvb, offsetp, t, hf_x11_record_RegisterClients_client_specs, hf_x11_record_RegisterClients_client_specs_item, f_num_client_specs, byte_order);
11932     length -= f_num_client_specs * 4;
11933     struct_record_Range(tvb, offsetp, t, byte_order, f_num_ranges);
11934     length -= f_num_ranges * 24;
11935 }
11936
11937 static void recordUnregisterClients(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11938 {
11939     int f_num_client_specs;
11940     proto_tree_add_item(t, hf_x11_record_UnregisterClients_context, tvb, *offsetp, 4, byte_order);
11941     *offsetp += 4;
11942     f_num_client_specs = VALUE32(tvb, *offsetp);
11943     proto_tree_add_item(t, hf_x11_record_UnregisterClients_num_client_specs, tvb, *offsetp, 4, byte_order);
11944     *offsetp += 4;
11945     listOfCard32(tvb, offsetp, t, hf_x11_record_UnregisterClients_client_specs, hf_x11_record_UnregisterClients_client_specs_item, f_num_client_specs, byte_order);
11946     length -= f_num_client_specs * 4;
11947 }
11948
11949 static void recordGetContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11950 {
11951     proto_tree_add_item(t, hf_x11_record_GetContext_context, tvb, *offsetp, 4, byte_order);
11952     *offsetp += 4;
11953 }
11954 static void recordGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11955 {
11956     int sequence_number;
11957     int f_num_intercepted_clients;
11958
11959     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetContext");
11960
11961     REPLY(reply);
11962     proto_tree_add_item(t, hf_x11_record_GetContext_reply_enabled, tvb, *offsetp, 1, byte_order);
11963     *offsetp += 1;
11964     sequence_number = VALUE16(tvb, *offsetp);
11965     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11966             "%d (record-GetContext)", sequence_number);
11967     *offsetp += 2;
11968     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
11969     *offsetp += 4;
11970     proto_tree_add_item(t, hf_x11_record_GetContext_reply_element_header, tvb, *offsetp, 1, byte_order);
11971     *offsetp += 1;
11972     UNUSED(3);
11973     f_num_intercepted_clients = VALUE32(tvb, *offsetp);
11974     proto_tree_add_item(t, hf_x11_record_GetContext_reply_num_intercepted_clients, tvb, *offsetp, 4, byte_order);
11975     *offsetp += 4;
11976     UNUSED(16);
11977     struct_record_ClientInfo(tvb, offsetp, t, byte_order, f_num_intercepted_clients);
11978 }
11979
11980 static void recordEnableContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
11981 {
11982     proto_tree_add_item(t, hf_x11_record_EnableContext_context, tvb, *offsetp, 4, byte_order);
11983     *offsetp += 4;
11984 }
11985 static void recordEnableContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
11986 {
11987     int sequence_number;
11988     int f_length;
11989
11990     col_append_fstr(pinfo->cinfo, COL_INFO, "-EnableContext");
11991
11992     REPLY(reply);
11993     proto_tree_add_item(t, hf_x11_record_EnableContext_reply_category, tvb, *offsetp, 1, byte_order);
11994     *offsetp += 1;
11995     sequence_number = VALUE16(tvb, *offsetp);
11996     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
11997             "%d (record-EnableContext)", sequence_number);
11998     *offsetp += 2;
11999     f_length = VALUE32(tvb, *offsetp);
12000     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
12001     *offsetp += 4;
12002     proto_tree_add_item(t, hf_x11_record_EnableContext_reply_element_header, tvb, *offsetp, 1, byte_order);
12003     *offsetp += 1;
12004     proto_tree_add_item(t, hf_x11_record_EnableContext_reply_client_swapped, tvb, *offsetp, 1, byte_order);
12005     *offsetp += 1;
12006     UNUSED(2);
12007     proto_tree_add_item(t, hf_x11_record_EnableContext_reply_xid_base, tvb, *offsetp, 4, byte_order);
12008     *offsetp += 4;
12009     proto_tree_add_item(t, hf_x11_record_EnableContext_reply_server_time, tvb, *offsetp, 4, byte_order);
12010     *offsetp += 4;
12011     proto_tree_add_item(t, hf_x11_record_EnableContext_reply_rec_sequence_num, tvb, *offsetp, 4, byte_order);
12012     *offsetp += 4;
12013     UNUSED(8);
12014     listOfByte(tvb, offsetp, t, hf_x11_record_EnableContext_reply_data, (f_length * 4), byte_order);
12015 }
12016
12017 static void recordDisableContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12018 {
12019     proto_tree_add_item(t, hf_x11_record_DisableContext_context, tvb, *offsetp, 4, byte_order);
12020     *offsetp += 4;
12021 }
12022
12023 static void recordFreeContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12024 {
12025     proto_tree_add_item(t, hf_x11_record_FreeContext_context, tvb, *offsetp, 4, byte_order);
12026     *offsetp += 4;
12027 }
12028 static const value_string record_extension_minor[] = {
12029     { 0, "QueryVersion" },
12030     { 1, "CreateContext" },
12031     { 2, "RegisterClients" },
12032     { 3, "UnregisterClients" },
12033     { 4, "GetContext" },
12034     { 5, "EnableContext" },
12035     { 6, "DisableContext" },
12036     { 7, "FreeContext" },
12037     { 0, NULL }
12038 };
12039 const x11_event_info record_events[] = {
12040     { NULL, NULL }
12041 };
12042 static x11_reply_info record_replies[] = {
12043     { 0, recordQueryVersion_Reply },
12044     { 4, recordGetContext_Reply },
12045     { 5, recordEnableContext_Reply },
12046     { 0, NULL }
12047 };
12048
12049 static void dispatch_record(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
12050 {
12051     int minor, length;
12052     minor = CARD8(record_extension_minor);
12053     length = REQUEST_LENGTH();
12054
12055     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
12056                           val_to_str(minor, record_extension_minor,
12057                                      "<Unknown opcode %d>"));
12058     switch (minor) {
12059     case 0:
12060         recordQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
12061         break;
12062     case 1:
12063         recordCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
12064         break;
12065     case 2:
12066         recordRegisterClients(tvb, pinfo, offsetp, t, byte_order, length);
12067         break;
12068     case 3:
12069         recordUnregisterClients(tvb, pinfo, offsetp, t, byte_order, length);
12070         break;
12071     case 4:
12072         recordGetContext(tvb, pinfo, offsetp, t, byte_order, length);
12073         break;
12074     case 5:
12075         recordEnableContext(tvb, pinfo, offsetp, t, byte_order, length);
12076         break;
12077     case 6:
12078         recordDisableContext(tvb, pinfo, offsetp, t, byte_order, length);
12079         break;
12080     case 7:
12081         recordFreeContext(tvb, pinfo, offsetp, t, byte_order, length);
12082         break;
12083     /* No need for a default case here, since Unknown is printed above,
12084        and UNDECODED() is taken care of by dissect_x11_request */
12085     }
12086 }
12087
12088 static void register_record(void)
12089 {
12090     set_handler("RECORD", dispatch_record, record_errors, record_events, NULL, record_replies);
12091 }
12092
12093 static void renderQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12094 {
12095     proto_tree_add_item(t, hf_x11_render_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
12096     *offsetp += 4;
12097     proto_tree_add_item(t, hf_x11_render_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
12098     *offsetp += 4;
12099 }
12100 static void renderQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
12101 {
12102     int sequence_number;
12103
12104     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
12105
12106     REPLY(reply);
12107     UNUSED(1);
12108     sequence_number = VALUE16(tvb, *offsetp);
12109     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
12110             "%d (render-QueryVersion)", sequence_number);
12111     *offsetp += 2;
12112     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
12113     *offsetp += 4;
12114     proto_tree_add_item(t, hf_x11_render_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
12115     *offsetp += 4;
12116     proto_tree_add_item(t, hf_x11_render_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
12117     *offsetp += 4;
12118     UNUSED(16);
12119 }
12120
12121 static void renderQueryPictFormats(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
12122 {
12123 }
12124 static void renderQueryPictFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
12125 {
12126     int sequence_number;
12127     int f_num_formats;
12128     int f_num_screens;
12129     int f_num_subpixel;
12130
12131     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryPictFormats");
12132
12133     REPLY(reply);
12134     UNUSED(1);
12135     sequence_number = VALUE16(tvb, *offsetp);
12136     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
12137             "%d (render-QueryPictFormats)", sequence_number);
12138     *offsetp += 2;
12139     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
12140     *offsetp += 4;
12141     f_num_formats = VALUE32(tvb, *offsetp);
12142     proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_formats, tvb, *offsetp, 4, byte_order);
12143     *offsetp += 4;
12144     f_num_screens = VALUE32(tvb, *offsetp);
12145     proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_screens, tvb, *offsetp, 4, byte_order);
12146     *offsetp += 4;
12147     proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_depths, tvb, *offsetp, 4, byte_order);
12148     *offsetp += 4;
12149     proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_visuals, tvb, *offsetp, 4, byte_order);
12150     *offsetp += 4;
12151     f_num_subpixel = VALUE32(tvb, *offsetp);
12152     proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_subpixel, tvb, *offsetp, 4, byte_order);
12153     *offsetp += 4;
12154     UNUSED(4);
12155     struct_render_PICTFORMINFO(tvb, offsetp, t, byte_order, f_num_formats);
12156     struct_render_PICTSCREEN(tvb, offsetp, t, byte_order, f_num_screens);
12157     listOfCard32(tvb, offsetp, t, hf_x11_render_QueryPictFormats_reply_subpixels, hf_x11_render_QueryPictFormats_reply_subpixels_item, f_num_subpixel, byte_order);
12158 }
12159
12160 static void renderQueryPictIndexValues(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12161 {
12162     proto_tree_add_item(t, hf_x11_render_QueryPictIndexValues_format, tvb, *offsetp, 4, byte_order);
12163     *offsetp += 4;
12164 }
12165 static void renderQueryPictIndexValues_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
12166 {
12167     int sequence_number;
12168     int f_num_values;
12169
12170     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryPictIndexValues");
12171
12172     REPLY(reply);
12173     UNUSED(1);
12174     sequence_number = VALUE16(tvb, *offsetp);
12175     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
12176             "%d (render-QueryPictIndexValues)", sequence_number);
12177     *offsetp += 2;
12178     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
12179     *offsetp += 4;
12180     f_num_values = VALUE32(tvb, *offsetp);
12181     proto_tree_add_item(t, hf_x11_render_QueryPictIndexValues_reply_num_values, tvb, *offsetp, 4, byte_order);
12182     *offsetp += 4;
12183     UNUSED(20);
12184     struct_render_INDEXVALUE(tvb, offsetp, t, byte_order, f_num_values);
12185 }
12186
12187 static void renderCreatePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12188 {
12189     int f_value_mask;
12190     proto_tree_add_item(t, hf_x11_render_CreatePicture_pid, tvb, *offsetp, 4, byte_order);
12191     *offsetp += 4;
12192     proto_tree_add_item(t, hf_x11_render_CreatePicture_drawable, tvb, *offsetp, 4, byte_order);
12193     *offsetp += 4;
12194     proto_tree_add_item(t, hf_x11_render_CreatePicture_format, tvb, *offsetp, 4, byte_order);
12195     *offsetp += 4;
12196     f_value_mask = VALUE32(tvb, *offsetp);
12197     {
12198         const int* value_mask_bits [] = {
12199         &hf_x11_render_CreatePicture_value_mask_mask_Repeat,
12200         &hf_x11_render_CreatePicture_value_mask_mask_AlphaMap,
12201         &hf_x11_render_CreatePicture_value_mask_mask_AlphaXOrigin,
12202         &hf_x11_render_CreatePicture_value_mask_mask_AlphaYOrigin,
12203         &hf_x11_render_CreatePicture_value_mask_mask_ClipXOrigin,
12204         &hf_x11_render_CreatePicture_value_mask_mask_ClipYOrigin,
12205         &hf_x11_render_CreatePicture_value_mask_mask_ClipMask,
12206         &hf_x11_render_CreatePicture_value_mask_mask_GraphicsExposure,
12207         &hf_x11_render_CreatePicture_value_mask_mask_SubwindowMode,
12208         &hf_x11_render_CreatePicture_value_mask_mask_PolyEdge,
12209         &hf_x11_render_CreatePicture_value_mask_mask_PolyMode,
12210         &hf_x11_render_CreatePicture_value_mask_mask_Dither,
12211         &hf_x11_render_CreatePicture_value_mask_mask_ComponentAlpha,
12212         };
12213         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_render_CreatePicture_value_mask, ett_x11_rectangle, value_mask_bits, byte_order);
12214     }
12215     *offsetp += 4;
12216     if (f_value_mask & (1U << 0)) {
12217         field32(tvb, offsetp, t, hf_x11_render_CreatePicture_Repeat_repeat, byte_order);
12218     }
12219     if (f_value_mask & (1U << 1)) {
12220         proto_tree_add_item(t, hf_x11_render_CreatePicture_AlphaMap_alphamap, tvb, *offsetp, 4, byte_order);
12221         *offsetp += 4;
12222     }
12223     if (f_value_mask & (1U << 2)) {
12224         proto_tree_add_item(t, hf_x11_render_CreatePicture_AlphaXOrigin_alphaxorigin, tvb, *offsetp, 4, byte_order);
12225         *offsetp += 4;
12226     }
12227     if (f_value_mask & (1U << 3)) {
12228         proto_tree_add_item(t, hf_x11_render_CreatePicture_AlphaYOrigin_alphayorigin, tvb, *offsetp, 4, byte_order);
12229         *offsetp += 4;
12230     }
12231     if (f_value_mask & (1U << 4)) {
12232         proto_tree_add_item(t, hf_x11_render_CreatePicture_ClipXOrigin_clipxorigin, tvb, *offsetp, 4, byte_order);
12233         *offsetp += 4;
12234     }
12235     if (f_value_mask & (1U << 5)) {
12236         proto_tree_add_item(t, hf_x11_render_CreatePicture_ClipYOrigin_clipyorigin, tvb, *offsetp, 4, byte_order);
12237         *offsetp += 4;
12238     }
12239     if (f_value_mask & (1U << 6)) {
12240         proto_tree_add_item(t, hf_x11_render_CreatePicture_ClipMask_clipmask, tvb, *offsetp, 4, byte_order);
12241         *offsetp += 4;
12242     }
12243     if (f_value_mask & (1U << 7)) {
12244         proto_tree_add_item(t, hf_x11_render_CreatePicture_GraphicsExposure_graphicsexposure, tvb, *offsetp, 4, byte_order);
12245         *offsetp += 4;
12246     }
12247     if (f_value_mask & (1U << 8)) {
12248         field32(tvb, offsetp, t, hf_x11_render_CreatePicture_SubwindowMode_subwindowmode, byte_order);
12249     }
12250     if (f_value_mask & (1U << 9)) {
12251         field32(tvb, offsetp, t, hf_x11_render_CreatePicture_PolyEdge_polyedge, byte_order);
12252     }
12253     if (f_value_mask & (1U << 10)) {
12254         field32(tvb, offsetp, t, hf_x11_render_CreatePicture_PolyMode_polymode, byte_order);
12255     }
12256     if (f_value_mask & (1U << 11)) {
12257         proto_tree_add_item(t, hf_x11_render_CreatePicture_Dither_dither, tvb, *offsetp, 4, byte_order);
12258         *offsetp += 4;
12259     }
12260     if (f_value_mask & (1U << 12)) {
12261         proto_tree_add_item(t, hf_x11_render_CreatePicture_ComponentAlpha_componentalpha, tvb, *offsetp, 4, byte_order);
12262         *offsetp += 4;
12263     }
12264 }
12265
12266 static void renderChangePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12267 {
12268     int f_value_mask;
12269     proto_tree_add_item(t, hf_x11_render_ChangePicture_picture, tvb, *offsetp, 4, byte_order);
12270     *offsetp += 4;
12271     f_value_mask = VALUE32(tvb, *offsetp);
12272     {
12273         const int* value_mask_bits [] = {
12274         &hf_x11_render_ChangePicture_value_mask_mask_Repeat,
12275         &hf_x11_render_ChangePicture_value_mask_mask_AlphaMap,
12276         &hf_x11_render_ChangePicture_value_mask_mask_AlphaXOrigin,
12277         &hf_x11_render_ChangePicture_value_mask_mask_AlphaYOrigin,
12278         &hf_x11_render_ChangePicture_value_mask_mask_ClipXOrigin,
12279         &hf_x11_render_ChangePicture_value_mask_mask_ClipYOrigin,
12280         &hf_x11_render_ChangePicture_value_mask_mask_ClipMask,
12281         &hf_x11_render_ChangePicture_value_mask_mask_GraphicsExposure,
12282         &hf_x11_render_ChangePicture_value_mask_mask_SubwindowMode,
12283         &hf_x11_render_ChangePicture_value_mask_mask_PolyEdge,
12284         &hf_x11_render_ChangePicture_value_mask_mask_PolyMode,
12285         &hf_x11_render_ChangePicture_value_mask_mask_Dither,
12286         &hf_x11_render_ChangePicture_value_mask_mask_ComponentAlpha,
12287         };
12288         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_render_ChangePicture_value_mask, ett_x11_rectangle, value_mask_bits, byte_order);
12289     }
12290     *offsetp += 4;
12291     if (f_value_mask & (1U << 0)) {
12292         field32(tvb, offsetp, t, hf_x11_render_ChangePicture_Repeat_repeat, byte_order);
12293     }
12294     if (f_value_mask & (1U << 1)) {
12295         proto_tree_add_item(t, hf_x11_render_ChangePicture_AlphaMap_alphamap, tvb, *offsetp, 4, byte_order);
12296         *offsetp += 4;
12297     }
12298     if (f_value_mask & (1U << 2)) {
12299         proto_tree_add_item(t, hf_x11_render_ChangePicture_AlphaXOrigin_alphaxorigin, tvb, *offsetp, 4, byte_order);
12300         *offsetp += 4;
12301     }
12302     if (f_value_mask & (1U << 3)) {
12303         proto_tree_add_item(t, hf_x11_render_ChangePicture_AlphaYOrigin_alphayorigin, tvb, *offsetp, 4, byte_order);
12304         *offsetp += 4;
12305     }
12306     if (f_value_mask & (1U << 4)) {
12307         proto_tree_add_item(t, hf_x11_render_ChangePicture_ClipXOrigin_clipxorigin, tvb, *offsetp, 4, byte_order);
12308         *offsetp += 4;
12309     }
12310     if (f_value_mask & (1U << 5)) {
12311         proto_tree_add_item(t, hf_x11_render_ChangePicture_ClipYOrigin_clipyorigin, tvb, *offsetp, 4, byte_order);
12312         *offsetp += 4;
12313     }
12314     if (f_value_mask & (1U << 6)) {
12315         proto_tree_add_item(t, hf_x11_render_ChangePicture_ClipMask_clipmask, tvb, *offsetp, 4, byte_order);
12316         *offsetp += 4;
12317     }
12318     if (f_value_mask & (1U << 7)) {
12319         proto_tree_add_item(t, hf_x11_render_ChangePicture_GraphicsExposure_graphicsexposure, tvb, *offsetp, 4, byte_order);
12320         *offsetp += 4;
12321     }
12322     if (f_value_mask & (1U << 8)) {
12323         field32(tvb, offsetp, t, hf_x11_render_ChangePicture_SubwindowMode_subwindowmode, byte_order);
12324     }
12325     if (f_value_mask & (1U << 9)) {
12326         field32(tvb, offsetp, t, hf_x11_render_ChangePicture_PolyEdge_polyedge, byte_order);
12327     }
12328     if (f_value_mask & (1U << 10)) {
12329         field32(tvb, offsetp, t, hf_x11_render_ChangePicture_PolyMode_polymode, byte_order);
12330     }
12331     if (f_value_mask & (1U << 11)) {
12332         proto_tree_add_item(t, hf_x11_render_ChangePicture_Dither_dither, tvb, *offsetp, 4, byte_order);
12333         *offsetp += 4;
12334     }
12335     if (f_value_mask & (1U << 12)) {
12336         proto_tree_add_item(t, hf_x11_render_ChangePicture_ComponentAlpha_componentalpha, tvb, *offsetp, 4, byte_order);
12337         *offsetp += 4;
12338     }
12339 }
12340
12341 static void renderSetPictureClipRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12342 {
12343     proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_picture, tvb, *offsetp, 4, byte_order);
12344     *offsetp += 4;
12345     proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_clip_x_origin, tvb, *offsetp, 2, byte_order);
12346     *offsetp += 2;
12347     proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_clip_y_origin, tvb, *offsetp, 2, byte_order);
12348     *offsetp += 2;
12349     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, (length - 12) / 8);
12350 }
12351
12352 static void renderFreePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12353 {
12354     proto_tree_add_item(t, hf_x11_render_FreePicture_picture, tvb, *offsetp, 4, byte_order);
12355     *offsetp += 4;
12356 }
12357
12358 static void renderComposite(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12359 {
12360     field8(tvb, offsetp, t, hf_x11_render_Composite_op, byte_order);
12361     UNUSED(3);
12362     proto_tree_add_item(t, hf_x11_render_Composite_src, tvb, *offsetp, 4, byte_order);
12363     *offsetp += 4;
12364     field32(tvb, offsetp, t, hf_x11_render_Composite_mask, byte_order);
12365     proto_tree_add_item(t, hf_x11_render_Composite_dst, tvb, *offsetp, 4, byte_order);
12366     *offsetp += 4;
12367     proto_tree_add_item(t, hf_x11_render_Composite_src_x, tvb, *offsetp, 2, byte_order);
12368     *offsetp += 2;
12369     proto_tree_add_item(t, hf_x11_render_Composite_src_y, tvb, *offsetp, 2, byte_order);
12370     *offsetp += 2;
12371     proto_tree_add_item(t, hf_x11_render_Composite_mask_x, tvb, *offsetp, 2, byte_order);
12372     *offsetp += 2;
12373     proto_tree_add_item(t, hf_x11_render_Composite_mask_y, tvb, *offsetp, 2, byte_order);
12374     *offsetp += 2;
12375     proto_tree_add_item(t, hf_x11_render_Composite_dst_x, tvb, *offsetp, 2, byte_order);
12376     *offsetp += 2;
12377     proto_tree_add_item(t, hf_x11_render_Composite_dst_y, tvb, *offsetp, 2, byte_order);
12378     *offsetp += 2;
12379     proto_tree_add_item(t, hf_x11_render_Composite_width, tvb, *offsetp, 2, byte_order);
12380     *offsetp += 2;
12381     proto_tree_add_item(t, hf_x11_render_Composite_height, tvb, *offsetp, 2, byte_order);
12382     *offsetp += 2;
12383 }
12384
12385 static void renderTrapezoids(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12386 {
12387     field8(tvb, offsetp, t, hf_x11_render_Trapezoids_op, byte_order);
12388     UNUSED(3);
12389     proto_tree_add_item(t, hf_x11_render_Trapezoids_src, tvb, *offsetp, 4, byte_order);
12390     *offsetp += 4;
12391     proto_tree_add_item(t, hf_x11_render_Trapezoids_dst, tvb, *offsetp, 4, byte_order);
12392     *offsetp += 4;
12393     proto_tree_add_item(t, hf_x11_render_Trapezoids_mask_format, tvb, *offsetp, 4, byte_order);
12394     *offsetp += 4;
12395     proto_tree_add_item(t, hf_x11_render_Trapezoids_src_x, tvb, *offsetp, 2, byte_order);
12396     *offsetp += 2;
12397     proto_tree_add_item(t, hf_x11_render_Trapezoids_src_y, tvb, *offsetp, 2, byte_order);
12398     *offsetp += 2;
12399     struct_render_TRAPEZOID(tvb, offsetp, t, byte_order, (length - 24) / 40);
12400 }
12401
12402 static void renderTriangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12403 {
12404     field8(tvb, offsetp, t, hf_x11_render_Triangles_op, byte_order);
12405     UNUSED(3);
12406     proto_tree_add_item(t, hf_x11_render_Triangles_src, tvb, *offsetp, 4, byte_order);
12407     *offsetp += 4;
12408     proto_tree_add_item(t, hf_x11_render_Triangles_dst, tvb, *offsetp, 4, byte_order);
12409     *offsetp += 4;
12410     proto_tree_add_item(t, hf_x11_render_Triangles_mask_format, tvb, *offsetp, 4, byte_order);
12411     *offsetp += 4;
12412     proto_tree_add_item(t, hf_x11_render_Triangles_src_x, tvb, *offsetp, 2, byte_order);
12413     *offsetp += 2;
12414     proto_tree_add_item(t, hf_x11_render_Triangles_src_y, tvb, *offsetp, 2, byte_order);
12415     *offsetp += 2;
12416     struct_render_TRIANGLE(tvb, offsetp, t, byte_order, (length - 24) / 24);
12417 }
12418
12419 static void renderTriStrip(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12420 {
12421     field8(tvb, offsetp, t, hf_x11_render_TriStrip_op, byte_order);
12422     UNUSED(3);
12423     proto_tree_add_item(t, hf_x11_render_TriStrip_src, tvb, *offsetp, 4, byte_order);
12424     *offsetp += 4;
12425     proto_tree_add_item(t, hf_x11_render_TriStrip_dst, tvb, *offsetp, 4, byte_order);
12426     *offsetp += 4;
12427     proto_tree_add_item(t, hf_x11_render_TriStrip_mask_format, tvb, *offsetp, 4, byte_order);
12428     *offsetp += 4;
12429     proto_tree_add_item(t, hf_x11_render_TriStrip_src_x, tvb, *offsetp, 2, byte_order);
12430     *offsetp += 2;
12431     proto_tree_add_item(t, hf_x11_render_TriStrip_src_y, tvb, *offsetp, 2, byte_order);
12432     *offsetp += 2;
12433     struct_render_POINTFIX(tvb, offsetp, t, byte_order, (length - 24) / 8);
12434 }
12435
12436 static void renderTriFan(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12437 {
12438     field8(tvb, offsetp, t, hf_x11_render_TriFan_op, byte_order);
12439     UNUSED(3);
12440     proto_tree_add_item(t, hf_x11_render_TriFan_src, tvb, *offsetp, 4, byte_order);
12441     *offsetp += 4;
12442     proto_tree_add_item(t, hf_x11_render_TriFan_dst, tvb, *offsetp, 4, byte_order);
12443     *offsetp += 4;
12444     proto_tree_add_item(t, hf_x11_render_TriFan_mask_format, tvb, *offsetp, 4, byte_order);
12445     *offsetp += 4;
12446     proto_tree_add_item(t, hf_x11_render_TriFan_src_x, tvb, *offsetp, 2, byte_order);
12447     *offsetp += 2;
12448     proto_tree_add_item(t, hf_x11_render_TriFan_src_y, tvb, *offsetp, 2, byte_order);
12449     *offsetp += 2;
12450     struct_render_POINTFIX(tvb, offsetp, t, byte_order, (length - 24) / 8);
12451 }
12452
12453 static void renderCreateGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12454 {
12455     proto_tree_add_item(t, hf_x11_render_CreateGlyphSet_gsid, tvb, *offsetp, 4, byte_order);
12456     *offsetp += 4;
12457     proto_tree_add_item(t, hf_x11_render_CreateGlyphSet_format, tvb, *offsetp, 4, byte_order);
12458     *offsetp += 4;
12459 }
12460
12461 static void renderReferenceGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12462 {
12463     proto_tree_add_item(t, hf_x11_render_ReferenceGlyphSet_gsid, tvb, *offsetp, 4, byte_order);
12464     *offsetp += 4;
12465     proto_tree_add_item(t, hf_x11_render_ReferenceGlyphSet_existing, tvb, *offsetp, 4, byte_order);
12466     *offsetp += 4;
12467 }
12468
12469 static void renderFreeGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12470 {
12471     proto_tree_add_item(t, hf_x11_render_FreeGlyphSet_glyphset, tvb, *offsetp, 4, byte_order);
12472     *offsetp += 4;
12473 }
12474
12475 static void renderAddGlyphs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12476 {
12477     int f_glyphs_len;
12478     proto_tree_add_item(t, hf_x11_render_AddGlyphs_glyphset, tvb, *offsetp, 4, byte_order);
12479     *offsetp += 4;
12480     f_glyphs_len = VALUE32(tvb, *offsetp);
12481     proto_tree_add_item(t, hf_x11_render_AddGlyphs_glyphs_len, tvb, *offsetp, 4, byte_order);
12482     *offsetp += 4;
12483     listOfCard32(tvb, offsetp, t, hf_x11_render_AddGlyphs_glyphids, hf_x11_render_AddGlyphs_glyphids_item, f_glyphs_len, byte_order);
12484     length -= f_glyphs_len * 4;
12485     struct_render_GLYPHINFO(tvb, offsetp, t, byte_order, f_glyphs_len);
12486     length -= f_glyphs_len * 12;
12487     listOfByte(tvb, offsetp, t, hf_x11_render_AddGlyphs_data, (length - 12) / 1, byte_order);
12488 }
12489
12490 static void renderFreeGlyphs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12491 {
12492     proto_tree_add_item(t, hf_x11_render_FreeGlyphs_glyphset, tvb, *offsetp, 4, byte_order);
12493     *offsetp += 4;
12494     listOfCard32(tvb, offsetp, t, hf_x11_render_FreeGlyphs_glyphs, hf_x11_render_FreeGlyphs_glyphs_item, (length - 8) / 4, byte_order);
12495 }
12496
12497 static void renderCompositeGlyphs8(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12498 {
12499     field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs8_op, byte_order);
12500     UNUSED(3);
12501     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src, tvb, *offsetp, 4, byte_order);
12502     *offsetp += 4;
12503     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_dst, tvb, *offsetp, 4, byte_order);
12504     *offsetp += 4;
12505     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_mask_format, tvb, *offsetp, 4, byte_order);
12506     *offsetp += 4;
12507     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_glyphset, tvb, *offsetp, 4, byte_order);
12508     *offsetp += 4;
12509     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src_x, tvb, *offsetp, 2, byte_order);
12510     *offsetp += 2;
12511     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src_y, tvb, *offsetp, 2, byte_order);
12512     *offsetp += 2;
12513     listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs8_glyphcmds, (length - 28) / 1, byte_order);
12514 }
12515
12516 static void renderCompositeGlyphs16(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12517 {
12518     field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs16_op, byte_order);
12519     UNUSED(3);
12520     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src, tvb, *offsetp, 4, byte_order);
12521     *offsetp += 4;
12522     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_dst, tvb, *offsetp, 4, byte_order);
12523     *offsetp += 4;
12524     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_mask_format, tvb, *offsetp, 4, byte_order);
12525     *offsetp += 4;
12526     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_glyphset, tvb, *offsetp, 4, byte_order);
12527     *offsetp += 4;
12528     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src_x, tvb, *offsetp, 2, byte_order);
12529     *offsetp += 2;
12530     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src_y, tvb, *offsetp, 2, byte_order);
12531     *offsetp += 2;
12532     listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs16_glyphcmds, (length - 28) / 1, byte_order);
12533 }
12534
12535 static void renderCompositeGlyphs32(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12536 {
12537     field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs32_op, byte_order);
12538     UNUSED(3);
12539     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src, tvb, *offsetp, 4, byte_order);
12540     *offsetp += 4;
12541     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_dst, tvb, *offsetp, 4, byte_order);
12542     *offsetp += 4;
12543     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_mask_format, tvb, *offsetp, 4, byte_order);
12544     *offsetp += 4;
12545     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_glyphset, tvb, *offsetp, 4, byte_order);
12546     *offsetp += 4;
12547     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src_x, tvb, *offsetp, 2, byte_order);
12548     *offsetp += 2;
12549     proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src_y, tvb, *offsetp, 2, byte_order);
12550     *offsetp += 2;
12551     listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs32_glyphcmds, (length - 28) / 1, byte_order);
12552 }
12553
12554 static void renderFillRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12555 {
12556     field8(tvb, offsetp, t, hf_x11_render_FillRectangles_op, byte_order);
12557     UNUSED(3);
12558     proto_tree_add_item(t, hf_x11_render_FillRectangles_dst, tvb, *offsetp, 4, byte_order);
12559     *offsetp += 4;
12560     struct_render_COLOR(tvb, offsetp, t, byte_order, 1);
12561     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, (length - 20) / 8);
12562 }
12563
12564 static void renderCreateCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12565 {
12566     proto_tree_add_item(t, hf_x11_render_CreateCursor_cid, tvb, *offsetp, 4, byte_order);
12567     *offsetp += 4;
12568     proto_tree_add_item(t, hf_x11_render_CreateCursor_source, tvb, *offsetp, 4, byte_order);
12569     *offsetp += 4;
12570     proto_tree_add_item(t, hf_x11_render_CreateCursor_x, tvb, *offsetp, 2, byte_order);
12571     *offsetp += 2;
12572     proto_tree_add_item(t, hf_x11_render_CreateCursor_y, tvb, *offsetp, 2, byte_order);
12573     *offsetp += 2;
12574 }
12575
12576 static void renderSetPictureTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12577 {
12578     proto_tree_add_item(t, hf_x11_render_SetPictureTransform_picture, tvb, *offsetp, 4, byte_order);
12579     *offsetp += 4;
12580     struct_render_TRANSFORM(tvb, offsetp, t, byte_order, 1);
12581 }
12582
12583 static void renderQueryFilters(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12584 {
12585     proto_tree_add_item(t, hf_x11_render_QueryFilters_drawable, tvb, *offsetp, 4, byte_order);
12586     *offsetp += 4;
12587 }
12588 static void renderQueryFilters_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
12589 {
12590     int sequence_number;
12591     int f_num_aliases;
12592     int f_num_filters;
12593
12594     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryFilters");
12595
12596     REPLY(reply);
12597     UNUSED(1);
12598     sequence_number = VALUE16(tvb, *offsetp);
12599     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
12600             "%d (render-QueryFilters)", sequence_number);
12601     *offsetp += 2;
12602     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
12603     *offsetp += 4;
12604     f_num_aliases = VALUE32(tvb, *offsetp);
12605     proto_tree_add_item(t, hf_x11_render_QueryFilters_reply_num_aliases, tvb, *offsetp, 4, byte_order);
12606     *offsetp += 4;
12607     f_num_filters = VALUE32(tvb, *offsetp);
12608     proto_tree_add_item(t, hf_x11_render_QueryFilters_reply_num_filters, tvb, *offsetp, 4, byte_order);
12609     *offsetp += 4;
12610     UNUSED(16);
12611     listOfCard16(tvb, offsetp, t, hf_x11_render_QueryFilters_reply_aliases, hf_x11_render_QueryFilters_reply_aliases_item, f_num_aliases, byte_order);
12612     struct_xproto_STR(tvb, offsetp, t, byte_order, f_num_filters);
12613 }
12614
12615 static void renderSetPictureFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12616 {
12617     int f_filter_len;
12618     proto_tree_add_item(t, hf_x11_render_SetPictureFilter_picture, tvb, *offsetp, 4, byte_order);
12619     *offsetp += 4;
12620     f_filter_len = VALUE16(tvb, *offsetp);
12621     proto_tree_add_item(t, hf_x11_render_SetPictureFilter_filter_len, tvb, *offsetp, 2, byte_order);
12622     *offsetp += 2;
12623     UNUSED(2);
12624     listOfByte(tvb, offsetp, t, hf_x11_render_SetPictureFilter_filter, f_filter_len, byte_order);
12625     length -= f_filter_len * 1;
12626     if (*offsetp % 4) {
12627         UNUSED(4 - *offsetp % 4);
12628     }
12629     length = ((length + 3) & ~3);
12630     listOfInt32(tvb, offsetp, t, hf_x11_render_SetPictureFilter_values, hf_x11_render_SetPictureFilter_values_item, (length - 12) / 4, byte_order);
12631 }
12632
12633 static void renderCreateAnimCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12634 {
12635     proto_tree_add_item(t, hf_x11_render_CreateAnimCursor_cid, tvb, *offsetp, 4, byte_order);
12636     *offsetp += 4;
12637     struct_render_ANIMCURSORELT(tvb, offsetp, t, byte_order, (length - 8) / 8);
12638 }
12639
12640 static void renderAddTraps(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12641 {
12642     proto_tree_add_item(t, hf_x11_render_AddTraps_picture, tvb, *offsetp, 4, byte_order);
12643     *offsetp += 4;
12644     proto_tree_add_item(t, hf_x11_render_AddTraps_x_off, tvb, *offsetp, 2, byte_order);
12645     *offsetp += 2;
12646     proto_tree_add_item(t, hf_x11_render_AddTraps_y_off, tvb, *offsetp, 2, byte_order);
12647     *offsetp += 2;
12648     struct_render_TRAP(tvb, offsetp, t, byte_order, (length - 12) / 24);
12649 }
12650
12651 static void renderCreateSolidFill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12652 {
12653     proto_tree_add_item(t, hf_x11_render_CreateSolidFill_picture, tvb, *offsetp, 4, byte_order);
12654     *offsetp += 4;
12655     struct_render_COLOR(tvb, offsetp, t, byte_order, 1);
12656 }
12657
12658 static void renderCreateLinearGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12659 {
12660     int f_num_stops;
12661     proto_tree_add_item(t, hf_x11_render_CreateLinearGradient_picture, tvb, *offsetp, 4, byte_order);
12662     *offsetp += 4;
12663     struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
12664     struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
12665     f_num_stops = VALUE32(tvb, *offsetp);
12666     proto_tree_add_item(t, hf_x11_render_CreateLinearGradient_num_stops, tvb, *offsetp, 4, byte_order);
12667     *offsetp += 4;
12668     listOfInt32(tvb, offsetp, t, hf_x11_render_CreateLinearGradient_stops, hf_x11_render_CreateLinearGradient_stops_item, f_num_stops, byte_order);
12669     length -= f_num_stops * 4;
12670     struct_render_COLOR(tvb, offsetp, t, byte_order, f_num_stops);
12671     length -= f_num_stops * 8;
12672 }
12673
12674 static void renderCreateRadialGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12675 {
12676     int f_num_stops;
12677     proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_picture, tvb, *offsetp, 4, byte_order);
12678     *offsetp += 4;
12679     struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
12680     struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
12681     proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_inner_radius, tvb, *offsetp, 4, byte_order);
12682     *offsetp += 4;
12683     proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_outer_radius, tvb, *offsetp, 4, byte_order);
12684     *offsetp += 4;
12685     f_num_stops = VALUE32(tvb, *offsetp);
12686     proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_num_stops, tvb, *offsetp, 4, byte_order);
12687     *offsetp += 4;
12688     listOfInt32(tvb, offsetp, t, hf_x11_render_CreateRadialGradient_stops, hf_x11_render_CreateRadialGradient_stops_item, f_num_stops, byte_order);
12689     length -= f_num_stops * 4;
12690     struct_render_COLOR(tvb, offsetp, t, byte_order, f_num_stops);
12691     length -= f_num_stops * 8;
12692 }
12693
12694 static void renderCreateConicalGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
12695 {
12696     int f_num_stops;
12697     proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_picture, tvb, *offsetp, 4, byte_order);
12698     *offsetp += 4;
12699     struct_render_POINTFIX(tvb, offsetp, t, byte_order, 1);
12700     proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_angle, tvb, *offsetp, 4, byte_order);
12701     *offsetp += 4;
12702     f_num_stops = VALUE32(tvb, *offsetp);
12703     proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_num_stops, tvb, *offsetp, 4, byte_order);
12704     *offsetp += 4;
12705     listOfInt32(tvb, offsetp, t, hf_x11_render_CreateConicalGradient_stops, hf_x11_render_CreateConicalGradient_stops_item, f_num_stops, byte_order);
12706     length -= f_num_stops * 4;
12707     struct_render_COLOR(tvb, offsetp, t, byte_order, f_num_stops);
12708     length -= f_num_stops * 8;
12709 }
12710 static const value_string render_extension_minor[] = {
12711     { 0, "QueryVersion" },
12712     { 1, "QueryPictFormats" },
12713     { 2, "QueryPictIndexValues" },
12714     { 4, "CreatePicture" },
12715     { 5, "ChangePicture" },
12716     { 6, "SetPictureClipRectangles" },
12717     { 7, "FreePicture" },
12718     { 8, "Composite" },
12719     { 10, "Trapezoids" },
12720     { 11, "Triangles" },
12721     { 12, "TriStrip" },
12722     { 13, "TriFan" },
12723     { 17, "CreateGlyphSet" },
12724     { 18, "ReferenceGlyphSet" },
12725     { 19, "FreeGlyphSet" },
12726     { 20, "AddGlyphs" },
12727     { 22, "FreeGlyphs" },
12728     { 23, "CompositeGlyphs8" },
12729     { 24, "CompositeGlyphs16" },
12730     { 25, "CompositeGlyphs32" },
12731     { 26, "FillRectangles" },
12732     { 27, "CreateCursor" },
12733     { 28, "SetPictureTransform" },
12734     { 29, "QueryFilters" },
12735     { 30, "SetPictureFilter" },
12736     { 31, "CreateAnimCursor" },
12737     { 32, "AddTraps" },
12738     { 33, "CreateSolidFill" },
12739     { 34, "CreateLinearGradient" },
12740     { 35, "CreateRadialGradient" },
12741     { 36, "CreateConicalGradient" },
12742     { 0, NULL }
12743 };
12744 const x11_event_info render_events[] = {
12745     { NULL, NULL }
12746 };
12747 static x11_reply_info render_replies[] = {
12748     { 0, renderQueryVersion_Reply },
12749     { 1, renderQueryPictFormats_Reply },
12750     { 2, renderQueryPictIndexValues_Reply },
12751     { 29, renderQueryFilters_Reply },
12752     { 0, NULL }
12753 };
12754
12755 static void dispatch_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
12756 {
12757     int minor, length;
12758     minor = CARD8(render_extension_minor);
12759     length = REQUEST_LENGTH();
12760
12761     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
12762                           val_to_str(minor, render_extension_minor,
12763                                      "<Unknown opcode %d>"));
12764     switch (minor) {
12765     case 0:
12766         renderQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
12767         break;
12768     case 1:
12769         renderQueryPictFormats(tvb, pinfo, offsetp, t, byte_order, length);
12770         break;
12771     case 2:
12772         renderQueryPictIndexValues(tvb, pinfo, offsetp, t, byte_order, length);
12773         break;
12774     case 4:
12775         renderCreatePicture(tvb, pinfo, offsetp, t, byte_order, length);
12776         break;
12777     case 5:
12778         renderChangePicture(tvb, pinfo, offsetp, t, byte_order, length);
12779         break;
12780     case 6:
12781         renderSetPictureClipRectangles(tvb, pinfo, offsetp, t, byte_order, length);
12782         break;
12783     case 7:
12784         renderFreePicture(tvb, pinfo, offsetp, t, byte_order, length);
12785         break;
12786     case 8:
12787         renderComposite(tvb, pinfo, offsetp, t, byte_order, length);
12788         break;
12789     case 10:
12790         renderTrapezoids(tvb, pinfo, offsetp, t, byte_order, length);
12791         break;
12792     case 11:
12793         renderTriangles(tvb, pinfo, offsetp, t, byte_order, length);
12794         break;
12795     case 12:
12796         renderTriStrip(tvb, pinfo, offsetp, t, byte_order, length);
12797         break;
12798     case 13:
12799         renderTriFan(tvb, pinfo, offsetp, t, byte_order, length);
12800         break;
12801     case 17:
12802         renderCreateGlyphSet(tvb, pinfo, offsetp, t, byte_order, length);
12803         break;
12804     case 18:
12805         renderReferenceGlyphSet(tvb, pinfo, offsetp, t, byte_order, length);
12806         break;
12807     case 19:
12808         renderFreeGlyphSet(tvb, pinfo, offsetp, t, byte_order, length);
12809         break;
12810     case 20:
12811         renderAddGlyphs(tvb, pinfo, offsetp, t, byte_order, length);
12812         break;
12813     case 22:
12814         renderFreeGlyphs(tvb, pinfo, offsetp, t, byte_order, length);
12815         break;
12816     case 23:
12817         renderCompositeGlyphs8(tvb, pinfo, offsetp, t, byte_order, length);
12818         break;
12819     case 24:
12820         renderCompositeGlyphs16(tvb, pinfo, offsetp, t, byte_order, length);
12821         break;
12822     case 25:
12823         renderCompositeGlyphs32(tvb, pinfo, offsetp, t, byte_order, length);
12824         break;
12825     case 26:
12826         renderFillRectangles(tvb, pinfo, offsetp, t, byte_order, length);
12827         break;
12828     case 27:
12829         renderCreateCursor(tvb, pinfo, offsetp, t, byte_order, length);
12830         break;
12831     case 28:
12832         renderSetPictureTransform(tvb, pinfo, offsetp, t, byte_order, length);
12833         break;
12834     case 29:
12835         renderQueryFilters(tvb, pinfo, offsetp, t, byte_order, length);
12836         break;
12837     case 30:
12838         renderSetPictureFilter(tvb, pinfo, offsetp, t, byte_order, length);
12839         break;
12840     case 31:
12841         renderCreateAnimCursor(tvb, pinfo, offsetp, t, byte_order, length);
12842         break;
12843     case 32:
12844         renderAddTraps(tvb, pinfo, offsetp, t, byte_order, length);
12845         break;
12846     case 33:
12847         renderCreateSolidFill(tvb, pinfo, offsetp, t, byte_order, length);
12848         break;
12849     case 34:
12850         renderCreateLinearGradient(tvb, pinfo, offsetp, t, byte_order, length);
12851         break;
12852     case 35:
12853         renderCreateRadialGradient(tvb, pinfo, offsetp, t, byte_order, length);
12854         break;
12855     case 36:
12856         renderCreateConicalGradient(tvb, pinfo, offsetp, t, byte_order, length);
12857         break;
12858     /* No need for a default case here, since Unknown is printed above,
12859        and UNDECODED() is taken care of by dissect_x11_request */
12860     }
12861 }
12862
12863 static void register_render(void)
12864 {
12865     set_handler("RENDER", dispatch_render, render_errors, render_events, NULL, render_replies);
12866 }
12867
12868 static void struct_res_Client(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
12869 {
12870     int i;
12871     for (i = 0; i < count; i++) {
12872         proto_item *item;
12873         proto_tree *t;
12874
12875         item = proto_tree_add_item(root, hf_x11_struct_res_Client, tvb, *offsetp, 8, ENC_NA);
12876         t = proto_item_add_subtree(item, ett_x11_rectangle);
12877         proto_tree_add_item(t, hf_x11_struct_res_Client_resource_base, tvb, *offsetp, 4, byte_order);
12878         *offsetp += 4;
12879         proto_tree_add_item(t, hf_x11_struct_res_Client_resource_mask, tvb, *offsetp, 4, byte_order);
12880         *offsetp += 4;
12881     }
12882 }
12883
12884 static void struct_res_Type(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
12885 {
12886     int i;
12887     for (i = 0; i < count; i++) {
12888         proto_item *item;
12889         proto_tree *t;
12890
12891         item = proto_tree_add_item(root, hf_x11_struct_res_Type, tvb, *offsetp, 8, ENC_NA);
12892         t = proto_item_add_subtree(item, ett_x11_rectangle);
12893         proto_tree_add_item(t, hf_x11_struct_res_Type_resource_type, tvb, *offsetp, 4, byte_order);
12894         *offsetp += 4;
12895         proto_tree_add_item(t, hf_x11_struct_res_Type_count, tvb, *offsetp, 4, byte_order);
12896         *offsetp += 4;
12897     }
12898 }
12899
12900 static void struct_res_ClientIdSpec(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
12901 {
12902     int i;
12903     for (i = 0; i < count; i++) {
12904         proto_item *item;
12905         proto_tree *t;
12906
12907         item = proto_tree_add_item(root, hf_x11_struct_res_ClientIdSpec, tvb, *offsetp, 8, ENC_NA);
12908         t = proto_item_add_subtree(item, ett_x11_rectangle);
12909         proto_tree_add_item(t, hf_x11_struct_res_ClientIdSpec_client, tvb, *offsetp, 4, byte_order);
12910         *offsetp += 4;
12911         {
12912             const int* mask_bits [] = {
12913                 &hf_x11_struct_res_ClientIdSpec_mask_mask_ClientXID,
12914                 &hf_x11_struct_res_ClientIdSpec_mask_mask_LocalClientPID,
12915             };
12916             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_res_ClientIdSpec_mask, ett_x11_rectangle, mask_bits, byte_order);
12917         }
12918         *offsetp += 4;
12919     }
12920 }
12921
12922 static int struct_size_res_ClientIdValue(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
12923 {
12924     int size = 0;
12925     int f_length;
12926     f_length = VALUE32(tvb, *offsetp + size + 8);
12927     size += (f_length / 4) * 4;
12928     return size + 12;
12929 }
12930
12931 static void struct_res_ClientIdValue(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
12932 {
12933     int i;
12934     for (i = 0; i < count; i++) {
12935         proto_item *item;
12936         proto_tree *t;
12937         int f_length;
12938
12939         item = proto_tree_add_item(root, hf_x11_struct_res_ClientIdValue, tvb, *offsetp, struct_size_res_ClientIdValue(tvb, offsetp, byte_order), ENC_NA);
12940         t = proto_item_add_subtree(item, ett_x11_rectangle);
12941         struct_res_ClientIdSpec(tvb, offsetp, t, byte_order, 1);
12942         f_length = VALUE32(tvb, *offsetp);
12943         proto_tree_add_item(t, hf_x11_struct_res_ClientIdValue_length, tvb, *offsetp, 4, byte_order);
12944         *offsetp += 4;
12945         listOfCard32(tvb, offsetp, t, hf_x11_struct_res_ClientIdValue_value, hf_x11_struct_res_ClientIdValue_value_item, (f_length / 4), byte_order);
12946     }
12947 }
12948
12949 static void struct_res_ResourceIdSpec(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
12950 {
12951     int i;
12952     for (i = 0; i < count; i++) {
12953         proto_item *item;
12954         proto_tree *t;
12955
12956         item = proto_tree_add_item(root, hf_x11_struct_res_ResourceIdSpec, tvb, *offsetp, 8, ENC_NA);
12957         t = proto_item_add_subtree(item, ett_x11_rectangle);
12958         proto_tree_add_item(t, hf_x11_struct_res_ResourceIdSpec_resource, tvb, *offsetp, 4, byte_order);
12959         *offsetp += 4;
12960         proto_tree_add_item(t, hf_x11_struct_res_ResourceIdSpec_type, tvb, *offsetp, 4, byte_order);
12961         *offsetp += 4;
12962     }
12963 }
12964
12965 static void struct_res_ResourceSizeSpec(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
12966 {
12967     int i;
12968     for (i = 0; i < count; i++) {
12969         proto_item *item;
12970         proto_tree *t;
12971
12972         item = proto_tree_add_item(root, hf_x11_struct_res_ResourceSizeSpec, tvb, *offsetp, 20, ENC_NA);
12973         t = proto_item_add_subtree(item, ett_x11_rectangle);
12974         struct_res_ResourceIdSpec(tvb, offsetp, t, byte_order, 1);
12975         proto_tree_add_item(t, hf_x11_struct_res_ResourceSizeSpec_bytes, tvb, *offsetp, 4, byte_order);
12976         *offsetp += 4;
12977         proto_tree_add_item(t, hf_x11_struct_res_ResourceSizeSpec_ref_count, tvb, *offsetp, 4, byte_order);
12978         *offsetp += 4;
12979         proto_tree_add_item(t, hf_x11_struct_res_ResourceSizeSpec_use_count, tvb, *offsetp, 4, byte_order);
12980         *offsetp += 4;
12981     }
12982 }
12983
12984 static int struct_size_res_ResourceSizeValue(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
12985 {
12986     int size = 0;
12987     int f_num_cross_references;
12988     f_num_cross_references = VALUE32(tvb, *offsetp + size + 20);
12989     size += f_num_cross_references * 20;
12990     return size + 24;
12991 }
12992
12993 static void struct_res_ResourceSizeValue(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
12994 {
12995     int i;
12996     for (i = 0; i < count; i++) {
12997         proto_item *item;
12998         proto_tree *t;
12999         int f_num_cross_references;
13000
13001         item = proto_tree_add_item(root, hf_x11_struct_res_ResourceSizeValue, tvb, *offsetp, struct_size_res_ResourceSizeValue(tvb, offsetp, byte_order), ENC_NA);
13002         t = proto_item_add_subtree(item, ett_x11_rectangle);
13003         struct_res_ResourceSizeSpec(tvb, offsetp, t, byte_order, 1);
13004         f_num_cross_references = VALUE32(tvb, *offsetp);
13005         proto_tree_add_item(t, hf_x11_struct_res_ResourceSizeValue_num_cross_references, tvb, *offsetp, 4, byte_order);
13006         *offsetp += 4;
13007         struct_res_ResourceSizeSpec(tvb, offsetp, t, byte_order, f_num_cross_references);
13008     }
13009 }
13010
13011 static void resQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13012 {
13013     proto_tree_add_item(t, hf_x11_res_QueryVersion_client_major, tvb, *offsetp, 1, byte_order);
13014     *offsetp += 1;
13015     proto_tree_add_item(t, hf_x11_res_QueryVersion_client_minor, tvb, *offsetp, 1, byte_order);
13016     *offsetp += 1;
13017 }
13018 static void resQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13019 {
13020     int sequence_number;
13021
13022     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
13023
13024     REPLY(reply);
13025     UNUSED(1);
13026     sequence_number = VALUE16(tvb, *offsetp);
13027     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13028             "%d (res-QueryVersion)", sequence_number);
13029     *offsetp += 2;
13030     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13031     *offsetp += 4;
13032     proto_tree_add_item(t, hf_x11_res_QueryVersion_reply_server_major, tvb, *offsetp, 2, byte_order);
13033     *offsetp += 2;
13034     proto_tree_add_item(t, hf_x11_res_QueryVersion_reply_server_minor, tvb, *offsetp, 2, byte_order);
13035     *offsetp += 2;
13036 }
13037
13038 static void resQueryClients(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
13039 {
13040 }
13041 static void resQueryClients_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13042 {
13043     int sequence_number;
13044     int f_num_clients;
13045
13046     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryClients");
13047
13048     REPLY(reply);
13049     UNUSED(1);
13050     sequence_number = VALUE16(tvb, *offsetp);
13051     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13052             "%d (res-QueryClients)", sequence_number);
13053     *offsetp += 2;
13054     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13055     *offsetp += 4;
13056     f_num_clients = VALUE32(tvb, *offsetp);
13057     proto_tree_add_item(t, hf_x11_res_QueryClients_reply_num_clients, tvb, *offsetp, 4, byte_order);
13058     *offsetp += 4;
13059     UNUSED(20);
13060     struct_res_Client(tvb, offsetp, t, byte_order, f_num_clients);
13061 }
13062
13063 static void resQueryClientResources(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13064 {
13065     proto_tree_add_item(t, hf_x11_res_QueryClientResources_xid, tvb, *offsetp, 4, byte_order);
13066     *offsetp += 4;
13067 }
13068 static void resQueryClientResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13069 {
13070     int sequence_number;
13071     int f_num_types;
13072
13073     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryClientResources");
13074
13075     REPLY(reply);
13076     UNUSED(1);
13077     sequence_number = VALUE16(tvb, *offsetp);
13078     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13079             "%d (res-QueryClientResources)", sequence_number);
13080     *offsetp += 2;
13081     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13082     *offsetp += 4;
13083     f_num_types = VALUE32(tvb, *offsetp);
13084     proto_tree_add_item(t, hf_x11_res_QueryClientResources_reply_num_types, tvb, *offsetp, 4, byte_order);
13085     *offsetp += 4;
13086     UNUSED(20);
13087     struct_res_Type(tvb, offsetp, t, byte_order, f_num_types);
13088 }
13089
13090 static void resQueryClientPixmapBytes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13091 {
13092     proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_xid, tvb, *offsetp, 4, byte_order);
13093     *offsetp += 4;
13094 }
13095 static void resQueryClientPixmapBytes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13096 {
13097     int sequence_number;
13098
13099     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryClientPixmapBytes");
13100
13101     REPLY(reply);
13102     UNUSED(1);
13103     sequence_number = VALUE16(tvb, *offsetp);
13104     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13105             "%d (res-QueryClientPixmapBytes)", sequence_number);
13106     *offsetp += 2;
13107     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13108     *offsetp += 4;
13109     proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_reply_bytes, tvb, *offsetp, 4, byte_order);
13110     *offsetp += 4;
13111     proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_reply_bytes_overflow, tvb, *offsetp, 4, byte_order);
13112     *offsetp += 4;
13113 }
13114
13115 static void resQueryClientIds(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13116 {
13117     int f_num_specs;
13118     f_num_specs = VALUE32(tvb, *offsetp);
13119     proto_tree_add_item(t, hf_x11_res_QueryClientIds_num_specs, tvb, *offsetp, 4, byte_order);
13120     *offsetp += 4;
13121     struct_res_ClientIdSpec(tvb, offsetp, t, byte_order, f_num_specs);
13122     length -= f_num_specs * 8;
13123 }
13124 static void resQueryClientIds_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13125 {
13126     int sequence_number;
13127     int f_num_ids;
13128
13129     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryClientIds");
13130
13131     REPLY(reply);
13132     UNUSED(1);
13133     sequence_number = VALUE16(tvb, *offsetp);
13134     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13135             "%d (res-QueryClientIds)", sequence_number);
13136     *offsetp += 2;
13137     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13138     *offsetp += 4;
13139     f_num_ids = VALUE32(tvb, *offsetp);
13140     proto_tree_add_item(t, hf_x11_res_QueryClientIds_reply_num_ids, tvb, *offsetp, 4, byte_order);
13141     *offsetp += 4;
13142     UNUSED(20);
13143     struct_res_ClientIdValue(tvb, offsetp, t, byte_order, f_num_ids);
13144 }
13145
13146 static void resQueryResourceBytes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13147 {
13148     int f_num_specs;
13149     proto_tree_add_item(t, hf_x11_res_QueryResourceBytes_client, tvb, *offsetp, 4, byte_order);
13150     *offsetp += 4;
13151     f_num_specs = VALUE32(tvb, *offsetp);
13152     proto_tree_add_item(t, hf_x11_res_QueryResourceBytes_num_specs, tvb, *offsetp, 4, byte_order);
13153     *offsetp += 4;
13154     struct_res_ResourceIdSpec(tvb, offsetp, t, byte_order, f_num_specs);
13155     length -= f_num_specs * 8;
13156 }
13157 static void resQueryResourceBytes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13158 {
13159     int sequence_number;
13160     int f_num_sizes;
13161
13162     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryResourceBytes");
13163
13164     REPLY(reply);
13165     UNUSED(1);
13166     sequence_number = VALUE16(tvb, *offsetp);
13167     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13168             "%d (res-QueryResourceBytes)", sequence_number);
13169     *offsetp += 2;
13170     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13171     *offsetp += 4;
13172     f_num_sizes = VALUE32(tvb, *offsetp);
13173     proto_tree_add_item(t, hf_x11_res_QueryResourceBytes_reply_num_sizes, tvb, *offsetp, 4, byte_order);
13174     *offsetp += 4;
13175     UNUSED(20);
13176     struct_res_ResourceSizeValue(tvb, offsetp, t, byte_order, f_num_sizes);
13177 }
13178 static const value_string res_extension_minor[] = {
13179     { 0, "QueryVersion" },
13180     { 1, "QueryClients" },
13181     { 2, "QueryClientResources" },
13182     { 3, "QueryClientPixmapBytes" },
13183     { 4, "QueryClientIds" },
13184     { 5, "QueryResourceBytes" },
13185     { 0, NULL }
13186 };
13187 const x11_event_info res_events[] = {
13188     { NULL, NULL }
13189 };
13190 static x11_reply_info res_replies[] = {
13191     { 0, resQueryVersion_Reply },
13192     { 1, resQueryClients_Reply },
13193     { 2, resQueryClientResources_Reply },
13194     { 3, resQueryClientPixmapBytes_Reply },
13195     { 4, resQueryClientIds_Reply },
13196     { 5, resQueryResourceBytes_Reply },
13197     { 0, NULL }
13198 };
13199
13200 static void dispatch_res(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13201 {
13202     int minor, length;
13203     minor = CARD8(res_extension_minor);
13204     length = REQUEST_LENGTH();
13205
13206     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
13207                           val_to_str(minor, res_extension_minor,
13208                                      "<Unknown opcode %d>"));
13209     switch (minor) {
13210     case 0:
13211         resQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
13212         break;
13213     case 1:
13214         resQueryClients(tvb, pinfo, offsetp, t, byte_order, length);
13215         break;
13216     case 2:
13217         resQueryClientResources(tvb, pinfo, offsetp, t, byte_order, length);
13218         break;
13219     case 3:
13220         resQueryClientPixmapBytes(tvb, pinfo, offsetp, t, byte_order, length);
13221         break;
13222     case 4:
13223         resQueryClientIds(tvb, pinfo, offsetp, t, byte_order, length);
13224         break;
13225     case 5:
13226         resQueryResourceBytes(tvb, pinfo, offsetp, t, byte_order, length);
13227         break;
13228     /* No need for a default case here, since Unknown is printed above,
13229        and UNDECODED() is taken care of by dissect_x11_request */
13230     }
13231 }
13232
13233 static void register_res(void)
13234 {
13235     set_handler("X-Resource", dispatch_res, res_errors, res_events, NULL, res_replies);
13236 }
13237
13238 static void screensaverQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13239 {
13240     proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_client_major_version, tvb, *offsetp, 1, byte_order);
13241     *offsetp += 1;
13242     proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_client_minor_version, tvb, *offsetp, 1, byte_order);
13243     *offsetp += 1;
13244     UNUSED(2);
13245 }
13246 static void screensaverQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13247 {
13248     int sequence_number;
13249
13250     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
13251
13252     REPLY(reply);
13253     UNUSED(1);
13254     sequence_number = VALUE16(tvb, *offsetp);
13255     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13256             "%d (screensaver-QueryVersion)", sequence_number);
13257     *offsetp += 2;
13258     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13259     *offsetp += 4;
13260     proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
13261     *offsetp += 2;
13262     proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
13263     *offsetp += 2;
13264     UNUSED(20);
13265 }
13266
13267 static void screensaverQueryInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13268 {
13269     proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_drawable, tvb, *offsetp, 4, byte_order);
13270     *offsetp += 4;
13271 }
13272 static void screensaverQueryInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13273 {
13274     int sequence_number;
13275
13276     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryInfo");
13277
13278     REPLY(reply);
13279     proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_state, tvb, *offsetp, 1, byte_order);
13280     *offsetp += 1;
13281     sequence_number = VALUE16(tvb, *offsetp);
13282     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13283             "%d (screensaver-QueryInfo)", sequence_number);
13284     *offsetp += 2;
13285     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13286     *offsetp += 4;
13287     proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_saver_window, tvb, *offsetp, 4, byte_order);
13288     *offsetp += 4;
13289     proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_ms_until_server, tvb, *offsetp, 4, byte_order);
13290     *offsetp += 4;
13291     proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_ms_since_user_input, tvb, *offsetp, 4, byte_order);
13292     *offsetp += 4;
13293     proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_event_mask, tvb, *offsetp, 4, byte_order);
13294     *offsetp += 4;
13295     field8(tvb, offsetp, t, hf_x11_screensaver_QueryInfo_reply_kind, byte_order);
13296     UNUSED(7);
13297 }
13298
13299 static void screensaverSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13300 {
13301     proto_tree_add_item(t, hf_x11_screensaver_SelectInput_drawable, tvb, *offsetp, 4, byte_order);
13302     *offsetp += 4;
13303     {
13304         const int* event_mask_bits [] = {
13305         &hf_x11_screensaver_SelectInput_event_mask_mask_NotifyMask,
13306         &hf_x11_screensaver_SelectInput_event_mask_mask_CycleMask,
13307         };
13308         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_screensaver_SelectInput_event_mask, ett_x11_rectangle, event_mask_bits, byte_order);
13309     }
13310     *offsetp += 4;
13311 }
13312
13313 static void screensaverSetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13314 {
13315     int f_value_mask;
13316     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_drawable, tvb, *offsetp, 4, byte_order);
13317     *offsetp += 4;
13318     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_x, tvb, *offsetp, 2, byte_order);
13319     *offsetp += 2;
13320     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_y, tvb, *offsetp, 2, byte_order);
13321     *offsetp += 2;
13322     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_width, tvb, *offsetp, 2, byte_order);
13323     *offsetp += 2;
13324     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_height, tvb, *offsetp, 2, byte_order);
13325     *offsetp += 2;
13326     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_border_width, tvb, *offsetp, 2, byte_order);
13327     *offsetp += 2;
13328     field8(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_class, byte_order);
13329     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_depth, tvb, *offsetp, 1, byte_order);
13330     *offsetp += 1;
13331     proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_visual, tvb, *offsetp, 4, byte_order);
13332     *offsetp += 4;
13333     f_value_mask = VALUE32(tvb, *offsetp);
13334     {
13335         const int* value_mask_bits [] = {
13336         &hf_x11_screensaver_SetAttributes_value_mask_mask_BackPixmap,
13337         &hf_x11_screensaver_SetAttributes_value_mask_mask_BackPixel,
13338         &hf_x11_screensaver_SetAttributes_value_mask_mask_BorderPixmap,
13339         &hf_x11_screensaver_SetAttributes_value_mask_mask_BorderPixel,
13340         &hf_x11_screensaver_SetAttributes_value_mask_mask_BitGravity,
13341         &hf_x11_screensaver_SetAttributes_value_mask_mask_WinGravity,
13342         &hf_x11_screensaver_SetAttributes_value_mask_mask_BackingStore,
13343         &hf_x11_screensaver_SetAttributes_value_mask_mask_BackingPlanes,
13344         &hf_x11_screensaver_SetAttributes_value_mask_mask_BackingPixel,
13345         &hf_x11_screensaver_SetAttributes_value_mask_mask_OverrideRedirect,
13346         &hf_x11_screensaver_SetAttributes_value_mask_mask_SaveUnder,
13347         &hf_x11_screensaver_SetAttributes_value_mask_mask_EventMask,
13348         &hf_x11_screensaver_SetAttributes_value_mask_mask_DontPropagate,
13349         &hf_x11_screensaver_SetAttributes_value_mask_mask_Colormap,
13350         &hf_x11_screensaver_SetAttributes_value_mask_mask_Cursor,
13351         };
13352         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_screensaver_SetAttributes_value_mask, ett_x11_rectangle, value_mask_bits, byte_order);
13353     }
13354     *offsetp += 4;
13355     if (f_value_mask & (1U << 0)) {
13356         field32(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_BackPixmap_background_pixmap, byte_order);
13357     }
13358     if (f_value_mask & (1U << 1)) {
13359         proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_BackPixel_background_pixel, tvb, *offsetp, 4, byte_order);
13360         *offsetp += 4;
13361     }
13362     if (f_value_mask & (1U << 2)) {
13363         field32(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_BorderPixmap_border_pixmap, byte_order);
13364     }
13365     if (f_value_mask & (1U << 3)) {
13366         proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_BorderPixel_border_pixel, tvb, *offsetp, 4, byte_order);
13367         *offsetp += 4;
13368     }
13369     if (f_value_mask & (1U << 4)) {
13370         field32(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_BitGravity_bit_gravity, byte_order);
13371     }
13372     if (f_value_mask & (1U << 5)) {
13373         field32(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_WinGravity_win_gravity, byte_order);
13374     }
13375     if (f_value_mask & (1U << 6)) {
13376         field32(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_BackingStore_backing_store, byte_order);
13377     }
13378     if (f_value_mask & (1U << 7)) {
13379         proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_BackingPlanes_backing_planes, tvb, *offsetp, 4, byte_order);
13380         *offsetp += 4;
13381     }
13382     if (f_value_mask & (1U << 8)) {
13383         proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_BackingPixel_backing_pixel, tvb, *offsetp, 4, byte_order);
13384         *offsetp += 4;
13385     }
13386     if (f_value_mask & (1U << 9)) {
13387         proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_OverrideRedirect_override_redirect, tvb, *offsetp, 4, byte_order);
13388         *offsetp += 4;
13389     }
13390     if (f_value_mask & (1U << 10)) {
13391         proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_SaveUnder_save_under, tvb, *offsetp, 4, byte_order);
13392         *offsetp += 4;
13393     }
13394     if (f_value_mask & (1U << 11)) {
13395         {
13396             const int* event_mask_bits [] = {
13397                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_KeyPress,
13398                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_KeyRelease,
13399                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_ButtonPress,
13400                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_ButtonRelease,
13401                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_EnterWindow,
13402                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_LeaveWindow,
13403                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_PointerMotion,
13404                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_PointerMotionHint,
13405                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_Button1Motion,
13406                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_Button2Motion,
13407                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_Button3Motion,
13408                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_Button4Motion,
13409                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_Button5Motion,
13410                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_ButtonMotion,
13411                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_KeymapState,
13412                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_Exposure,
13413                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_VisibilityChange,
13414                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_StructureNotify,
13415                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_ResizeRedirect,
13416                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_SubstructureNotify,
13417                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_SubstructureRedirect,
13418                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_FocusChange,
13419                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_PropertyChange,
13420                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_ColorMapChange,
13421                 &hf_x11_screensaver_SetAttributes_EventMask_event_mask_mask_OwnerGrabButton,
13422             };
13423             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_screensaver_SetAttributes_EventMask_event_mask, ett_x11_rectangle, event_mask_bits, byte_order);
13424         }
13425         *offsetp += 4;
13426     }
13427     if (f_value_mask & (1U << 12)) {
13428         {
13429             const int* do_not_propogate_mask_bits [] = {
13430                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_KeyPress,
13431                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_KeyRelease,
13432                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_ButtonPress,
13433                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_ButtonRelease,
13434                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_EnterWindow,
13435                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_LeaveWindow,
13436                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_PointerMotion,
13437                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_PointerMotionHint,
13438                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_Button1Motion,
13439                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_Button2Motion,
13440                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_Button3Motion,
13441                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_Button4Motion,
13442                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_Button5Motion,
13443                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_ButtonMotion,
13444                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_KeymapState,
13445                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_Exposure,
13446                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_VisibilityChange,
13447                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_StructureNotify,
13448                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_ResizeRedirect,
13449                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_SubstructureNotify,
13450                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_SubstructureRedirect,
13451                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_FocusChange,
13452                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_PropertyChange,
13453                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_ColorMapChange,
13454                 &hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask_mask_OwnerGrabButton,
13455             };
13456             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_screensaver_SetAttributes_DontPropagate_do_not_propogate_mask, ett_x11_rectangle, do_not_propogate_mask_bits, byte_order);
13457         }
13458         *offsetp += 4;
13459     }
13460     if (f_value_mask & (1U << 13)) {
13461         field32(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_Colormap_colormap, byte_order);
13462     }
13463     if (f_value_mask & (1U << 14)) {
13464         field32(tvb, offsetp, t, hf_x11_screensaver_SetAttributes_Cursor_cursor, byte_order);
13465     }
13466 }
13467
13468 static void screensaverUnsetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13469 {
13470     proto_tree_add_item(t, hf_x11_screensaver_UnsetAttributes_drawable, tvb, *offsetp, 4, byte_order);
13471     *offsetp += 4;
13472 }
13473
13474 static void screensaverSuspend(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13475 {
13476     proto_tree_add_item(t, hf_x11_screensaver_Suspend_suspend, tvb, *offsetp, 1, byte_order);
13477     *offsetp += 1;
13478     UNUSED(3);
13479 }
13480 static const value_string screensaver_extension_minor[] = {
13481     { 0, "QueryVersion" },
13482     { 1, "QueryInfo" },
13483     { 2, "SelectInput" },
13484     { 3, "SetAttributes" },
13485     { 4, "UnsetAttributes" },
13486     { 5, "Suspend" },
13487     { 0, NULL }
13488 };
13489 const x11_event_info screensaver_events[] = {
13490     { NULL, NULL }
13491 };
13492 static x11_reply_info screensaver_replies[] = {
13493     { 0, screensaverQueryVersion_Reply },
13494     { 1, screensaverQueryInfo_Reply },
13495     { 0, NULL }
13496 };
13497
13498 static void dispatch_screensaver(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13499 {
13500     int minor, length;
13501     minor = CARD8(screensaver_extension_minor);
13502     length = REQUEST_LENGTH();
13503
13504     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
13505                           val_to_str(minor, screensaver_extension_minor,
13506                                      "<Unknown opcode %d>"));
13507     switch (minor) {
13508     case 0:
13509         screensaverQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
13510         break;
13511     case 1:
13512         screensaverQueryInfo(tvb, pinfo, offsetp, t, byte_order, length);
13513         break;
13514     case 2:
13515         screensaverSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
13516         break;
13517     case 3:
13518         screensaverSetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
13519         break;
13520     case 4:
13521         screensaverUnsetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
13522         break;
13523     case 5:
13524         screensaverSuspend(tvb, pinfo, offsetp, t, byte_order, length);
13525         break;
13526     /* No need for a default case here, since Unknown is printed above,
13527        and UNDECODED() is taken care of by dissect_x11_request */
13528     }
13529 }
13530
13531 static void register_screensaver(void)
13532 {
13533     set_handler("MIT-SCREEN-SAVER", dispatch_screensaver, screensaver_errors, screensaver_events, NULL, screensaver_replies);
13534 }
13535
13536 static void shapeQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
13537 {
13538 }
13539 static void shapeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13540 {
13541     int sequence_number;
13542
13543     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
13544
13545     REPLY(reply);
13546     UNUSED(1);
13547     sequence_number = VALUE16(tvb, *offsetp);
13548     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13549             "%d (shape-QueryVersion)", sequence_number);
13550     *offsetp += 2;
13551     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13552     *offsetp += 4;
13553     proto_tree_add_item(t, hf_x11_shape_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
13554     *offsetp += 2;
13555     proto_tree_add_item(t, hf_x11_shape_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
13556     *offsetp += 2;
13557 }
13558
13559 static void shapeRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13560 {
13561     field8(tvb, offsetp, t, hf_x11_shape_Rectangles_operation, byte_order);
13562     field8(tvb, offsetp, t, hf_x11_shape_Rectangles_destination_kind, byte_order);
13563     field8(tvb, offsetp, t, hf_x11_shape_Rectangles_ordering, byte_order);
13564     UNUSED(1);
13565     proto_tree_add_item(t, hf_x11_shape_Rectangles_destination_window, tvb, *offsetp, 4, byte_order);
13566     *offsetp += 4;
13567     proto_tree_add_item(t, hf_x11_shape_Rectangles_x_offset, tvb, *offsetp, 2, byte_order);
13568     *offsetp += 2;
13569     proto_tree_add_item(t, hf_x11_shape_Rectangles_y_offset, tvb, *offsetp, 2, byte_order);
13570     *offsetp += 2;
13571     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, (length - 16) / 8);
13572 }
13573
13574 static void shapeMask(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13575 {
13576     field8(tvb, offsetp, t, hf_x11_shape_Mask_operation, byte_order);
13577     field8(tvb, offsetp, t, hf_x11_shape_Mask_destination_kind, byte_order);
13578     UNUSED(2);
13579     proto_tree_add_item(t, hf_x11_shape_Mask_destination_window, tvb, *offsetp, 4, byte_order);
13580     *offsetp += 4;
13581     proto_tree_add_item(t, hf_x11_shape_Mask_x_offset, tvb, *offsetp, 2, byte_order);
13582     *offsetp += 2;
13583     proto_tree_add_item(t, hf_x11_shape_Mask_y_offset, tvb, *offsetp, 2, byte_order);
13584     *offsetp += 2;
13585     field32(tvb, offsetp, t, hf_x11_shape_Mask_source_bitmap, byte_order);
13586 }
13587
13588 static void shapeCombine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13589 {
13590     field8(tvb, offsetp, t, hf_x11_shape_Combine_operation, byte_order);
13591     field8(tvb, offsetp, t, hf_x11_shape_Combine_destination_kind, byte_order);
13592     field8(tvb, offsetp, t, hf_x11_shape_Combine_source_kind, byte_order);
13593     UNUSED(1);
13594     proto_tree_add_item(t, hf_x11_shape_Combine_destination_window, tvb, *offsetp, 4, byte_order);
13595     *offsetp += 4;
13596     proto_tree_add_item(t, hf_x11_shape_Combine_x_offset, tvb, *offsetp, 2, byte_order);
13597     *offsetp += 2;
13598     proto_tree_add_item(t, hf_x11_shape_Combine_y_offset, tvb, *offsetp, 2, byte_order);
13599     *offsetp += 2;
13600     proto_tree_add_item(t, hf_x11_shape_Combine_source_window, tvb, *offsetp, 4, byte_order);
13601     *offsetp += 4;
13602 }
13603
13604 static void shapeOffset(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13605 {
13606     field8(tvb, offsetp, t, hf_x11_shape_Offset_destination_kind, byte_order);
13607     UNUSED(3);
13608     proto_tree_add_item(t, hf_x11_shape_Offset_destination_window, tvb, *offsetp, 4, byte_order);
13609     *offsetp += 4;
13610     proto_tree_add_item(t, hf_x11_shape_Offset_x_offset, tvb, *offsetp, 2, byte_order);
13611     *offsetp += 2;
13612     proto_tree_add_item(t, hf_x11_shape_Offset_y_offset, tvb, *offsetp, 2, byte_order);
13613     *offsetp += 2;
13614 }
13615
13616 static void shapeQueryExtents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13617 {
13618     proto_tree_add_item(t, hf_x11_shape_QueryExtents_destination_window, tvb, *offsetp, 4, byte_order);
13619     *offsetp += 4;
13620 }
13621 static void shapeQueryExtents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13622 {
13623     int sequence_number;
13624
13625     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryExtents");
13626
13627     REPLY(reply);
13628     UNUSED(1);
13629     sequence_number = VALUE16(tvb, *offsetp);
13630     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13631             "%d (shape-QueryExtents)", sequence_number);
13632     *offsetp += 2;
13633     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13634     *offsetp += 4;
13635     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shaped, tvb, *offsetp, 1, byte_order);
13636     *offsetp += 1;
13637     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shaped, tvb, *offsetp, 1, byte_order);
13638     *offsetp += 1;
13639     UNUSED(2);
13640     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_x, tvb, *offsetp, 2, byte_order);
13641     *offsetp += 2;
13642     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_y, tvb, *offsetp, 2, byte_order);
13643     *offsetp += 2;
13644     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_width, tvb, *offsetp, 2, byte_order);
13645     *offsetp += 2;
13646     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_height, tvb, *offsetp, 2, byte_order);
13647     *offsetp += 2;
13648     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_x, tvb, *offsetp, 2, byte_order);
13649     *offsetp += 2;
13650     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_y, tvb, *offsetp, 2, byte_order);
13651     *offsetp += 2;
13652     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_width, tvb, *offsetp, 2, byte_order);
13653     *offsetp += 2;
13654     proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_height, tvb, *offsetp, 2, byte_order);
13655     *offsetp += 2;
13656 }
13657
13658 static void shapeSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13659 {
13660     proto_tree_add_item(t, hf_x11_shape_SelectInput_destination_window, tvb, *offsetp, 4, byte_order);
13661     *offsetp += 4;
13662     proto_tree_add_item(t, hf_x11_shape_SelectInput_enable, tvb, *offsetp, 1, byte_order);
13663     *offsetp += 1;
13664     UNUSED(3);
13665 }
13666
13667 static void shapeInputSelected(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13668 {
13669     proto_tree_add_item(t, hf_x11_shape_InputSelected_destination_window, tvb, *offsetp, 4, byte_order);
13670     *offsetp += 4;
13671 }
13672 static void shapeInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13673 {
13674     int sequence_number;
13675
13676     col_append_fstr(pinfo->cinfo, COL_INFO, "-InputSelected");
13677
13678     REPLY(reply);
13679     proto_tree_add_item(t, hf_x11_shape_InputSelected_reply_enabled, tvb, *offsetp, 1, byte_order);
13680     *offsetp += 1;
13681     sequence_number = VALUE16(tvb, *offsetp);
13682     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13683             "%d (shape-InputSelected)", sequence_number);
13684     *offsetp += 2;
13685     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13686     *offsetp += 4;
13687 }
13688
13689 static void shapeGetRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13690 {
13691     proto_tree_add_item(t, hf_x11_shape_GetRectangles_window, tvb, *offsetp, 4, byte_order);
13692     *offsetp += 4;
13693     field8(tvb, offsetp, t, hf_x11_shape_GetRectangles_source_kind, byte_order);
13694     UNUSED(3);
13695 }
13696 static void shapeGetRectangles_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13697 {
13698     int sequence_number;
13699     int f_rectangles_len;
13700
13701     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetRectangles");
13702
13703     REPLY(reply);
13704     field8(tvb, offsetp, t, hf_x11_shape_GetRectangles_reply_ordering, byte_order);
13705     sequence_number = VALUE16(tvb, *offsetp);
13706     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13707             "%d (shape-GetRectangles)", sequence_number);
13708     *offsetp += 2;
13709     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13710     *offsetp += 4;
13711     f_rectangles_len = VALUE32(tvb, *offsetp);
13712     proto_tree_add_item(t, hf_x11_shape_GetRectangles_reply_rectangles_len, tvb, *offsetp, 4, byte_order);
13713     *offsetp += 4;
13714     UNUSED(20);
13715     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, f_rectangles_len);
13716 }
13717 static const value_string shape_extension_minor[] = {
13718     { 0, "QueryVersion" },
13719     { 1, "Rectangles" },
13720     { 2, "Mask" },
13721     { 3, "Combine" },
13722     { 4, "Offset" },
13723     { 5, "QueryExtents" },
13724     { 6, "SelectInput" },
13725     { 7, "InputSelected" },
13726     { 8, "GetRectangles" },
13727     { 0, NULL }
13728 };
13729 const x11_event_info shape_events[] = {
13730     { NULL, NULL }
13731 };
13732 static x11_reply_info shape_replies[] = {
13733     { 0, shapeQueryVersion_Reply },
13734     { 5, shapeQueryExtents_Reply },
13735     { 7, shapeInputSelected_Reply },
13736     { 8, shapeGetRectangles_Reply },
13737     { 0, NULL }
13738 };
13739
13740 static void dispatch_shape(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13741 {
13742     int minor, length;
13743     minor = CARD8(shape_extension_minor);
13744     length = REQUEST_LENGTH();
13745
13746     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
13747                           val_to_str(minor, shape_extension_minor,
13748                                      "<Unknown opcode %d>"));
13749     switch (minor) {
13750     case 0:
13751         shapeQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
13752         break;
13753     case 1:
13754         shapeRectangles(tvb, pinfo, offsetp, t, byte_order, length);
13755         break;
13756     case 2:
13757         shapeMask(tvb, pinfo, offsetp, t, byte_order, length);
13758         break;
13759     case 3:
13760         shapeCombine(tvb, pinfo, offsetp, t, byte_order, length);
13761         break;
13762     case 4:
13763         shapeOffset(tvb, pinfo, offsetp, t, byte_order, length);
13764         break;
13765     case 5:
13766         shapeQueryExtents(tvb, pinfo, offsetp, t, byte_order, length);
13767         break;
13768     case 6:
13769         shapeSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
13770         break;
13771     case 7:
13772         shapeInputSelected(tvb, pinfo, offsetp, t, byte_order, length);
13773         break;
13774     case 8:
13775         shapeGetRectangles(tvb, pinfo, offsetp, t, byte_order, length);
13776         break;
13777     /* No need for a default case here, since Unknown is printed above,
13778        and UNDECODED() is taken care of by dissect_x11_request */
13779     }
13780 }
13781
13782 static void register_shape(void)
13783 {
13784     set_handler("SHAPE", dispatch_shape, shape_errors, shape_events, NULL, shape_replies);
13785 }
13786
13787 static void shmQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
13788 {
13789 }
13790 static void shmQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13791 {
13792     int sequence_number;
13793
13794     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
13795
13796     REPLY(reply);
13797     proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_shared_pixmaps, tvb, *offsetp, 1, byte_order);
13798     *offsetp += 1;
13799     sequence_number = VALUE16(tvb, *offsetp);
13800     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13801             "%d (shm-QueryVersion)", sequence_number);
13802     *offsetp += 2;
13803     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13804     *offsetp += 4;
13805     proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
13806     *offsetp += 2;
13807     proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
13808     *offsetp += 2;
13809     proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_uid, tvb, *offsetp, 2, byte_order);
13810     *offsetp += 2;
13811     proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_gid, tvb, *offsetp, 2, byte_order);
13812     *offsetp += 2;
13813     proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_pixmap_format, tvb, *offsetp, 1, byte_order);
13814     *offsetp += 1;
13815     UNUSED(15);
13816 }
13817
13818 static void shmAttach(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13819 {
13820     proto_tree_add_item(t, hf_x11_shm_Attach_shmseg, tvb, *offsetp, 4, byte_order);
13821     *offsetp += 4;
13822     proto_tree_add_item(t, hf_x11_shm_Attach_shmid, tvb, *offsetp, 4, byte_order);
13823     *offsetp += 4;
13824     proto_tree_add_item(t, hf_x11_shm_Attach_read_only, tvb, *offsetp, 1, byte_order);
13825     *offsetp += 1;
13826     UNUSED(3);
13827 }
13828
13829 static void shmDetach(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13830 {
13831     proto_tree_add_item(t, hf_x11_shm_Detach_shmseg, tvb, *offsetp, 4, byte_order);
13832     *offsetp += 4;
13833 }
13834
13835 static void shmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13836 {
13837     proto_tree_add_item(t, hf_x11_shm_PutImage_drawable, tvb, *offsetp, 4, byte_order);
13838     *offsetp += 4;
13839     proto_tree_add_item(t, hf_x11_shm_PutImage_gc, tvb, *offsetp, 4, byte_order);
13840     *offsetp += 4;
13841     proto_tree_add_item(t, hf_x11_shm_PutImage_total_width, tvb, *offsetp, 2, byte_order);
13842     *offsetp += 2;
13843     proto_tree_add_item(t, hf_x11_shm_PutImage_total_height, tvb, *offsetp, 2, byte_order);
13844     *offsetp += 2;
13845     proto_tree_add_item(t, hf_x11_shm_PutImage_src_x, tvb, *offsetp, 2, byte_order);
13846     *offsetp += 2;
13847     proto_tree_add_item(t, hf_x11_shm_PutImage_src_y, tvb, *offsetp, 2, byte_order);
13848     *offsetp += 2;
13849     proto_tree_add_item(t, hf_x11_shm_PutImage_src_width, tvb, *offsetp, 2, byte_order);
13850     *offsetp += 2;
13851     proto_tree_add_item(t, hf_x11_shm_PutImage_src_height, tvb, *offsetp, 2, byte_order);
13852     *offsetp += 2;
13853     proto_tree_add_item(t, hf_x11_shm_PutImage_dst_x, tvb, *offsetp, 2, byte_order);
13854     *offsetp += 2;
13855     proto_tree_add_item(t, hf_x11_shm_PutImage_dst_y, tvb, *offsetp, 2, byte_order);
13856     *offsetp += 2;
13857     proto_tree_add_item(t, hf_x11_shm_PutImage_depth, tvb, *offsetp, 1, byte_order);
13858     *offsetp += 1;
13859     proto_tree_add_item(t, hf_x11_shm_PutImage_format, tvb, *offsetp, 1, byte_order);
13860     *offsetp += 1;
13861     proto_tree_add_item(t, hf_x11_shm_PutImage_send_event, tvb, *offsetp, 1, byte_order);
13862     *offsetp += 1;
13863     UNUSED(1);
13864     proto_tree_add_item(t, hf_x11_shm_PutImage_shmseg, tvb, *offsetp, 4, byte_order);
13865     *offsetp += 4;
13866     proto_tree_add_item(t, hf_x11_shm_PutImage_offset, tvb, *offsetp, 4, byte_order);
13867     *offsetp += 4;
13868 }
13869
13870 static void shmGetImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13871 {
13872     proto_tree_add_item(t, hf_x11_shm_GetImage_drawable, tvb, *offsetp, 4, byte_order);
13873     *offsetp += 4;
13874     proto_tree_add_item(t, hf_x11_shm_GetImage_x, tvb, *offsetp, 2, byte_order);
13875     *offsetp += 2;
13876     proto_tree_add_item(t, hf_x11_shm_GetImage_y, tvb, *offsetp, 2, byte_order);
13877     *offsetp += 2;
13878     proto_tree_add_item(t, hf_x11_shm_GetImage_width, tvb, *offsetp, 2, byte_order);
13879     *offsetp += 2;
13880     proto_tree_add_item(t, hf_x11_shm_GetImage_height, tvb, *offsetp, 2, byte_order);
13881     *offsetp += 2;
13882     proto_tree_add_item(t, hf_x11_shm_GetImage_plane_mask, tvb, *offsetp, 4, byte_order);
13883     *offsetp += 4;
13884     proto_tree_add_item(t, hf_x11_shm_GetImage_format, tvb, *offsetp, 1, byte_order);
13885     *offsetp += 1;
13886     UNUSED(3);
13887     proto_tree_add_item(t, hf_x11_shm_GetImage_shmseg, tvb, *offsetp, 4, byte_order);
13888     *offsetp += 4;
13889     proto_tree_add_item(t, hf_x11_shm_GetImage_offset, tvb, *offsetp, 4, byte_order);
13890     *offsetp += 4;
13891 }
13892 static void shmGetImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13893 {
13894     int sequence_number;
13895
13896     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetImage");
13897
13898     REPLY(reply);
13899     proto_tree_add_item(t, hf_x11_shm_GetImage_reply_depth, tvb, *offsetp, 1, byte_order);
13900     *offsetp += 1;
13901     sequence_number = VALUE16(tvb, *offsetp);
13902     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13903             "%d (shm-GetImage)", sequence_number);
13904     *offsetp += 2;
13905     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13906     *offsetp += 4;
13907     proto_tree_add_item(t, hf_x11_shm_GetImage_reply_visual, tvb, *offsetp, 4, byte_order);
13908     *offsetp += 4;
13909     proto_tree_add_item(t, hf_x11_shm_GetImage_reply_size, tvb, *offsetp, 4, byte_order);
13910     *offsetp += 4;
13911 }
13912
13913 static void shmCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13914 {
13915     proto_tree_add_item(t, hf_x11_shm_CreatePixmap_pid, tvb, *offsetp, 4, byte_order);
13916     *offsetp += 4;
13917     proto_tree_add_item(t, hf_x11_shm_CreatePixmap_drawable, tvb, *offsetp, 4, byte_order);
13918     *offsetp += 4;
13919     proto_tree_add_item(t, hf_x11_shm_CreatePixmap_width, tvb, *offsetp, 2, byte_order);
13920     *offsetp += 2;
13921     proto_tree_add_item(t, hf_x11_shm_CreatePixmap_height, tvb, *offsetp, 2, byte_order);
13922     *offsetp += 2;
13923     proto_tree_add_item(t, hf_x11_shm_CreatePixmap_depth, tvb, *offsetp, 1, byte_order);
13924     *offsetp += 1;
13925     UNUSED(3);
13926     proto_tree_add_item(t, hf_x11_shm_CreatePixmap_shmseg, tvb, *offsetp, 4, byte_order);
13927     *offsetp += 4;
13928     proto_tree_add_item(t, hf_x11_shm_CreatePixmap_offset, tvb, *offsetp, 4, byte_order);
13929     *offsetp += 4;
13930 }
13931
13932 static void shmAttachFd(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13933 {
13934     proto_tree_add_item(t, hf_x11_shm_AttachFd_shmseg, tvb, *offsetp, 4, byte_order);
13935     *offsetp += 4;
13936     proto_tree_add_item(t, hf_x11_shm_AttachFd_read_only, tvb, *offsetp, 1, byte_order);
13937     *offsetp += 1;
13938     UNUSED(3);
13939 }
13940
13941 static void shmCreateSegment(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
13942 {
13943     proto_tree_add_item(t, hf_x11_shm_CreateSegment_shmseg, tvb, *offsetp, 4, byte_order);
13944     *offsetp += 4;
13945     proto_tree_add_item(t, hf_x11_shm_CreateSegment_size, tvb, *offsetp, 4, byte_order);
13946     *offsetp += 4;
13947     proto_tree_add_item(t, hf_x11_shm_CreateSegment_read_only, tvb, *offsetp, 1, byte_order);
13948     *offsetp += 1;
13949     UNUSED(3);
13950 }
13951 static void shmCreateSegment_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13952 {
13953     int sequence_number;
13954
13955     col_append_fstr(pinfo->cinfo, COL_INFO, "-CreateSegment");
13956
13957     REPLY(reply);
13958     proto_tree_add_item(t, hf_x11_shm_CreateSegment_reply_nfd, tvb, *offsetp, 1, byte_order);
13959     *offsetp += 1;
13960     sequence_number = VALUE16(tvb, *offsetp);
13961     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
13962             "%d (shm-CreateSegment)", sequence_number);
13963     *offsetp += 2;
13964     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
13965     *offsetp += 4;
13966     UNUSED(24);
13967 }
13968 static const value_string shm_extension_minor[] = {
13969     { 0, "QueryVersion" },
13970     { 1, "Attach" },
13971     { 2, "Detach" },
13972     { 3, "PutImage" },
13973     { 4, "GetImage" },
13974     { 5, "CreatePixmap" },
13975     { 6, "AttachFd" },
13976     { 7, "CreateSegment" },
13977     { 0, NULL }
13978 };
13979 const x11_event_info shm_events[] = {
13980     { NULL, NULL }
13981 };
13982 static x11_reply_info shm_replies[] = {
13983     { 0, shmQueryVersion_Reply },
13984     { 4, shmGetImage_Reply },
13985     { 7, shmCreateSegment_Reply },
13986     { 0, NULL }
13987 };
13988
13989 static void dispatch_shm(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
13990 {
13991     int minor, length;
13992     minor = CARD8(shm_extension_minor);
13993     length = REQUEST_LENGTH();
13994
13995     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
13996                           val_to_str(minor, shm_extension_minor,
13997                                      "<Unknown opcode %d>"));
13998     switch (minor) {
13999     case 0:
14000         shmQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
14001         break;
14002     case 1:
14003         shmAttach(tvb, pinfo, offsetp, t, byte_order, length);
14004         break;
14005     case 2:
14006         shmDetach(tvb, pinfo, offsetp, t, byte_order, length);
14007         break;
14008     case 3:
14009         shmPutImage(tvb, pinfo, offsetp, t, byte_order, length);
14010         break;
14011     case 4:
14012         shmGetImage(tvb, pinfo, offsetp, t, byte_order, length);
14013         break;
14014     case 5:
14015         shmCreatePixmap(tvb, pinfo, offsetp, t, byte_order, length);
14016         break;
14017     case 6:
14018         shmAttachFd(tvb, pinfo, offsetp, t, byte_order, length);
14019         break;
14020     case 7:
14021         shmCreateSegment(tvb, pinfo, offsetp, t, byte_order, length);
14022         break;
14023     /* No need for a default case here, since Unknown is printed above,
14024        and UNDECODED() is taken care of by dissect_x11_request */
14025     }
14026 }
14027
14028 static void register_shm(void)
14029 {
14030     set_handler("MIT-SHM", dispatch_shm, shm_errors, shm_events, NULL, shm_replies);
14031 }
14032
14033 static void syncInitialize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14034 {
14035     proto_tree_add_item(t, hf_x11_sync_Initialize_desired_major_version, tvb, *offsetp, 1, byte_order);
14036     *offsetp += 1;
14037     proto_tree_add_item(t, hf_x11_sync_Initialize_desired_minor_version, tvb, *offsetp, 1, byte_order);
14038     *offsetp += 1;
14039 }
14040 static void syncInitialize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14041 {
14042     int sequence_number;
14043
14044     col_append_fstr(pinfo->cinfo, COL_INFO, "-Initialize");
14045
14046     REPLY(reply);
14047     UNUSED(1);
14048     sequence_number = VALUE16(tvb, *offsetp);
14049     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14050             "%d (sync-Initialize)", sequence_number);
14051     *offsetp += 2;
14052     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14053     *offsetp += 4;
14054     proto_tree_add_item(t, hf_x11_sync_Initialize_reply_major_version, tvb, *offsetp, 1, byte_order);
14055     *offsetp += 1;
14056     proto_tree_add_item(t, hf_x11_sync_Initialize_reply_minor_version, tvb, *offsetp, 1, byte_order);
14057     *offsetp += 1;
14058     UNUSED(22);
14059 }
14060
14061 static void syncListSystemCounters(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
14062 {
14063 }
14064 static void syncListSystemCounters_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14065 {
14066     int sequence_number;
14067     int f_counters_len;
14068
14069     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListSystemCounters");
14070
14071     REPLY(reply);
14072     UNUSED(1);
14073     sequence_number = VALUE16(tvb, *offsetp);
14074     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14075             "%d (sync-ListSystemCounters)", sequence_number);
14076     *offsetp += 2;
14077     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14078     *offsetp += 4;
14079     f_counters_len = VALUE32(tvb, *offsetp);
14080     proto_tree_add_item(t, hf_x11_sync_ListSystemCounters_reply_counters_len, tvb, *offsetp, 4, byte_order);
14081     *offsetp += 4;
14082     UNUSED(20);
14083     struct_sync_SYSTEMCOUNTER(tvb, offsetp, t, byte_order, f_counters_len);
14084 }
14085
14086 static void syncCreateCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14087 {
14088     proto_tree_add_item(t, hf_x11_sync_CreateCounter_id, tvb, *offsetp, 4, byte_order);
14089     *offsetp += 4;
14090     struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14091 }
14092
14093 static void syncDestroyCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14094 {
14095     proto_tree_add_item(t, hf_x11_sync_DestroyCounter_counter, tvb, *offsetp, 4, byte_order);
14096     *offsetp += 4;
14097 }
14098
14099 static void syncQueryCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14100 {
14101     proto_tree_add_item(t, hf_x11_sync_QueryCounter_counter, tvb, *offsetp, 4, byte_order);
14102     *offsetp += 4;
14103 }
14104 static void syncQueryCounter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14105 {
14106     int sequence_number;
14107
14108     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryCounter");
14109
14110     REPLY(reply);
14111     UNUSED(1);
14112     sequence_number = VALUE16(tvb, *offsetp);
14113     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14114             "%d (sync-QueryCounter)", sequence_number);
14115     *offsetp += 2;
14116     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14117     *offsetp += 4;
14118     struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14119 }
14120
14121 static void syncAwait(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14122 {
14123     struct_sync_WAITCONDITION(tvb, offsetp, t, byte_order, (length - 4) / 28);
14124 }
14125
14126 static void syncChangeCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14127 {
14128     proto_tree_add_item(t, hf_x11_sync_ChangeCounter_counter, tvb, *offsetp, 4, byte_order);
14129     *offsetp += 4;
14130     struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14131 }
14132
14133 static void syncSetCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14134 {
14135     proto_tree_add_item(t, hf_x11_sync_SetCounter_counter, tvb, *offsetp, 4, byte_order);
14136     *offsetp += 4;
14137     struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14138 }
14139
14140 static void syncCreateAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14141 {
14142     int f_value_mask;
14143     proto_tree_add_item(t, hf_x11_sync_CreateAlarm_id, tvb, *offsetp, 4, byte_order);
14144     *offsetp += 4;
14145     f_value_mask = VALUE32(tvb, *offsetp);
14146     {
14147         const int* value_mask_bits [] = {
14148         &hf_x11_sync_CreateAlarm_value_mask_mask_Counter,
14149         &hf_x11_sync_CreateAlarm_value_mask_mask_ValueType,
14150         &hf_x11_sync_CreateAlarm_value_mask_mask_Value,
14151         &hf_x11_sync_CreateAlarm_value_mask_mask_TestType,
14152         &hf_x11_sync_CreateAlarm_value_mask_mask_Delta,
14153         &hf_x11_sync_CreateAlarm_value_mask_mask_Events,
14154         };
14155         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_sync_CreateAlarm_value_mask, ett_x11_rectangle, value_mask_bits, byte_order);
14156     }
14157     *offsetp += 4;
14158     if (f_value_mask & (1U << 0)) {
14159         proto_tree_add_item(t, hf_x11_sync_CreateAlarm_Counter_counter, tvb, *offsetp, 4, byte_order);
14160         *offsetp += 4;
14161     }
14162     if (f_value_mask & (1U << 1)) {
14163         field32(tvb, offsetp, t, hf_x11_sync_CreateAlarm_ValueType_valueType, byte_order);
14164     }
14165     if (f_value_mask & (1U << 2)) {
14166         struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14167     }
14168     if (f_value_mask & (1U << 3)) {
14169         field32(tvb, offsetp, t, hf_x11_sync_CreateAlarm_TestType_testType, byte_order);
14170     }
14171     if (f_value_mask & (1U << 4)) {
14172         struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14173     }
14174     if (f_value_mask & (1U << 5)) {
14175         proto_tree_add_item(t, hf_x11_sync_CreateAlarm_Events_events, tvb, *offsetp, 4, byte_order);
14176         *offsetp += 4;
14177     }
14178 }
14179
14180 static void syncChangeAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14181 {
14182     int f_value_mask;
14183     proto_tree_add_item(t, hf_x11_sync_ChangeAlarm_id, tvb, *offsetp, 4, byte_order);
14184     *offsetp += 4;
14185     f_value_mask = VALUE32(tvb, *offsetp);
14186     {
14187         const int* value_mask_bits [] = {
14188         &hf_x11_sync_ChangeAlarm_value_mask_mask_Counter,
14189         &hf_x11_sync_ChangeAlarm_value_mask_mask_ValueType,
14190         &hf_x11_sync_ChangeAlarm_value_mask_mask_Value,
14191         &hf_x11_sync_ChangeAlarm_value_mask_mask_TestType,
14192         &hf_x11_sync_ChangeAlarm_value_mask_mask_Delta,
14193         &hf_x11_sync_ChangeAlarm_value_mask_mask_Events,
14194         };
14195         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_sync_ChangeAlarm_value_mask, ett_x11_rectangle, value_mask_bits, byte_order);
14196     }
14197     *offsetp += 4;
14198     if (f_value_mask & (1U << 0)) {
14199         proto_tree_add_item(t, hf_x11_sync_ChangeAlarm_Counter_counter, tvb, *offsetp, 4, byte_order);
14200         *offsetp += 4;
14201     }
14202     if (f_value_mask & (1U << 1)) {
14203         field32(tvb, offsetp, t, hf_x11_sync_ChangeAlarm_ValueType_valueType, byte_order);
14204     }
14205     if (f_value_mask & (1U << 2)) {
14206         struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14207     }
14208     if (f_value_mask & (1U << 3)) {
14209         field32(tvb, offsetp, t, hf_x11_sync_ChangeAlarm_TestType_testType, byte_order);
14210     }
14211     if (f_value_mask & (1U << 4)) {
14212         struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14213     }
14214     if (f_value_mask & (1U << 5)) {
14215         proto_tree_add_item(t, hf_x11_sync_ChangeAlarm_Events_events, tvb, *offsetp, 4, byte_order);
14216         *offsetp += 4;
14217     }
14218 }
14219
14220 static void syncDestroyAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14221 {
14222     proto_tree_add_item(t, hf_x11_sync_DestroyAlarm_alarm, tvb, *offsetp, 4, byte_order);
14223     *offsetp += 4;
14224 }
14225
14226 static void syncQueryAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14227 {
14228     proto_tree_add_item(t, hf_x11_sync_QueryAlarm_alarm, tvb, *offsetp, 4, byte_order);
14229     *offsetp += 4;
14230 }
14231 static void syncQueryAlarm_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14232 {
14233     int sequence_number;
14234
14235     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryAlarm");
14236
14237     REPLY(reply);
14238     UNUSED(1);
14239     sequence_number = VALUE16(tvb, *offsetp);
14240     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14241             "%d (sync-QueryAlarm)", sequence_number);
14242     *offsetp += 2;
14243     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14244     *offsetp += 4;
14245     struct_sync_TRIGGER(tvb, offsetp, t, byte_order, 1);
14246     struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14247     proto_tree_add_item(t, hf_x11_sync_QueryAlarm_reply_events, tvb, *offsetp, 1, byte_order);
14248     *offsetp += 1;
14249     field8(tvb, offsetp, t, hf_x11_sync_QueryAlarm_reply_state, byte_order);
14250     UNUSED(2);
14251 }
14252
14253 static void syncSetPriority(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14254 {
14255     proto_tree_add_item(t, hf_x11_sync_SetPriority_id, tvb, *offsetp, 4, byte_order);
14256     *offsetp += 4;
14257     proto_tree_add_item(t, hf_x11_sync_SetPriority_priority, tvb, *offsetp, 4, byte_order);
14258     *offsetp += 4;
14259 }
14260
14261 static void syncGetPriority(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14262 {
14263     proto_tree_add_item(t, hf_x11_sync_GetPriority_id, tvb, *offsetp, 4, byte_order);
14264     *offsetp += 4;
14265 }
14266 static void syncGetPriority_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14267 {
14268     int sequence_number;
14269
14270     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPriority");
14271
14272     REPLY(reply);
14273     UNUSED(1);
14274     sequence_number = VALUE16(tvb, *offsetp);
14275     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14276             "%d (sync-GetPriority)", sequence_number);
14277     *offsetp += 2;
14278     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14279     *offsetp += 4;
14280     proto_tree_add_item(t, hf_x11_sync_GetPriority_reply_priority, tvb, *offsetp, 4, byte_order);
14281     *offsetp += 4;
14282 }
14283
14284 static void syncCreateFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14285 {
14286     proto_tree_add_item(t, hf_x11_sync_CreateFence_drawable, tvb, *offsetp, 4, byte_order);
14287     *offsetp += 4;
14288     proto_tree_add_item(t, hf_x11_sync_CreateFence_fence, tvb, *offsetp, 4, byte_order);
14289     *offsetp += 4;
14290     proto_tree_add_item(t, hf_x11_sync_CreateFence_initially_triggered, tvb, *offsetp, 1, byte_order);
14291     *offsetp += 1;
14292 }
14293
14294 static void syncTriggerFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14295 {
14296     proto_tree_add_item(t, hf_x11_sync_TriggerFence_fence, tvb, *offsetp, 4, byte_order);
14297     *offsetp += 4;
14298 }
14299
14300 static void syncResetFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14301 {
14302     proto_tree_add_item(t, hf_x11_sync_ResetFence_fence, tvb, *offsetp, 4, byte_order);
14303     *offsetp += 4;
14304 }
14305
14306 static void syncDestroyFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14307 {
14308     proto_tree_add_item(t, hf_x11_sync_DestroyFence_fence, tvb, *offsetp, 4, byte_order);
14309     *offsetp += 4;
14310 }
14311
14312 static void syncQueryFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14313 {
14314     proto_tree_add_item(t, hf_x11_sync_QueryFence_fence, tvb, *offsetp, 4, byte_order);
14315     *offsetp += 4;
14316 }
14317 static void syncQueryFence_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14318 {
14319     int sequence_number;
14320
14321     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryFence");
14322
14323     REPLY(reply);
14324     UNUSED(1);
14325     sequence_number = VALUE16(tvb, *offsetp);
14326     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14327             "%d (sync-QueryFence)", sequence_number);
14328     *offsetp += 2;
14329     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14330     *offsetp += 4;
14331     proto_tree_add_item(t, hf_x11_sync_QueryFence_reply_triggered, tvb, *offsetp, 1, byte_order);
14332     *offsetp += 1;
14333     UNUSED(23);
14334 }
14335
14336 static void syncAwaitFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14337 {
14338     listOfCard32(tvb, offsetp, t, hf_x11_sync_AwaitFence_fence_list, hf_x11_sync_AwaitFence_fence_list_item, (length - 4) / 4, byte_order);
14339 }
14340
14341 static void syncAlarmNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
14342 {
14343     proto_tree_add_item(t, hf_x11_sync_AlarmNotify_kind, tvb, *offsetp, 1, byte_order);
14344     *offsetp += 1;
14345     CARD16(event_sequencenumber);
14346     proto_tree_add_item(t, hf_x11_sync_AlarmNotify_alarm, tvb, *offsetp, 4, byte_order);
14347     *offsetp += 4;
14348     struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14349     struct_sync_INT64(tvb, offsetp, t, byte_order, 1);
14350     proto_tree_add_item(t, hf_x11_sync_AlarmNotify_timestamp, tvb, *offsetp, 4, byte_order);
14351     *offsetp += 4;
14352     field8(tvb, offsetp, t, hf_x11_sync_AlarmNotify_state, byte_order);
14353     UNUSED(3);
14354 }
14355
14356 static const value_string sync_extension_minor[] = {
14357     { 0, "Initialize" },
14358     { 1, "ListSystemCounters" },
14359     { 2, "CreateCounter" },
14360     { 3, "SetCounter" },
14361     { 4, "ChangeCounter" },
14362     { 5, "QueryCounter" },
14363     { 6, "DestroyCounter" },
14364     { 7, "Await" },
14365     { 8, "CreateAlarm" },
14366     { 9, "ChangeAlarm" },
14367     { 10, "QueryAlarm" },
14368     { 11, "DestroyAlarm" },
14369     { 12, "SetPriority" },
14370     { 13, "GetPriority" },
14371     { 14, "CreateFence" },
14372     { 15, "TriggerFence" },
14373     { 16, "ResetFence" },
14374     { 17, "DestroyFence" },
14375     { 18, "QueryFence" },
14376     { 19, "AwaitFence" },
14377     { 0, NULL }
14378 };
14379 const x11_event_info sync_events[] = {
14380     { "sync-AlarmNotify", syncAlarmNotify },
14381     { NULL, NULL }
14382 };
14383 static x11_reply_info sync_replies[] = {
14384     { 0, syncInitialize_Reply },
14385     { 1, syncListSystemCounters_Reply },
14386     { 5, syncQueryCounter_Reply },
14387     { 10, syncQueryAlarm_Reply },
14388     { 13, syncGetPriority_Reply },
14389     { 18, syncQueryFence_Reply },
14390     { 0, NULL }
14391 };
14392
14393 static void dispatch_sync(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14394 {
14395     int minor, length;
14396     minor = CARD8(sync_extension_minor);
14397     length = REQUEST_LENGTH();
14398
14399     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
14400                           val_to_str(minor, sync_extension_minor,
14401                                      "<Unknown opcode %d>"));
14402     switch (minor) {
14403     case 0:
14404         syncInitialize(tvb, pinfo, offsetp, t, byte_order, length);
14405         break;
14406     case 1:
14407         syncListSystemCounters(tvb, pinfo, offsetp, t, byte_order, length);
14408         break;
14409     case 2:
14410         syncCreateCounter(tvb, pinfo, offsetp, t, byte_order, length);
14411         break;
14412     case 3:
14413         syncSetCounter(tvb, pinfo, offsetp, t, byte_order, length);
14414         break;
14415     case 4:
14416         syncChangeCounter(tvb, pinfo, offsetp, t, byte_order, length);
14417         break;
14418     case 5:
14419         syncQueryCounter(tvb, pinfo, offsetp, t, byte_order, length);
14420         break;
14421     case 6:
14422         syncDestroyCounter(tvb, pinfo, offsetp, t, byte_order, length);
14423         break;
14424     case 7:
14425         syncAwait(tvb, pinfo, offsetp, t, byte_order, length);
14426         break;
14427     case 8:
14428         syncCreateAlarm(tvb, pinfo, offsetp, t, byte_order, length);
14429         break;
14430     case 9:
14431         syncChangeAlarm(tvb, pinfo, offsetp, t, byte_order, length);
14432         break;
14433     case 10:
14434         syncQueryAlarm(tvb, pinfo, offsetp, t, byte_order, length);
14435         break;
14436     case 11:
14437         syncDestroyAlarm(tvb, pinfo, offsetp, t, byte_order, length);
14438         break;
14439     case 12:
14440         syncSetPriority(tvb, pinfo, offsetp, t, byte_order, length);
14441         break;
14442     case 13:
14443         syncGetPriority(tvb, pinfo, offsetp, t, byte_order, length);
14444         break;
14445     case 14:
14446         syncCreateFence(tvb, pinfo, offsetp, t, byte_order, length);
14447         break;
14448     case 15:
14449         syncTriggerFence(tvb, pinfo, offsetp, t, byte_order, length);
14450         break;
14451     case 16:
14452         syncResetFence(tvb, pinfo, offsetp, t, byte_order, length);
14453         break;
14454     case 17:
14455         syncDestroyFence(tvb, pinfo, offsetp, t, byte_order, length);
14456         break;
14457     case 18:
14458         syncQueryFence(tvb, pinfo, offsetp, t, byte_order, length);
14459         break;
14460     case 19:
14461         syncAwaitFence(tvb, pinfo, offsetp, t, byte_order, length);
14462         break;
14463     /* No need for a default case here, since Unknown is printed above,
14464        and UNDECODED() is taken care of by dissect_x11_request */
14465     }
14466 }
14467
14468 static void register_sync(void)
14469 {
14470     set_handler("SYNC", dispatch_sync, sync_errors, sync_events, NULL, sync_replies);
14471 }
14472
14473 static void xc_miscGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14474 {
14475     proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_client_major_version, tvb, *offsetp, 2, byte_order);
14476     *offsetp += 2;
14477     proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
14478     *offsetp += 2;
14479 }
14480 static void xc_miscGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14481 {
14482     int sequence_number;
14483
14484     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetVersion");
14485
14486     REPLY(reply);
14487     UNUSED(1);
14488     sequence_number = VALUE16(tvb, *offsetp);
14489     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14490             "%d (xc_misc-GetVersion)", sequence_number);
14491     *offsetp += 2;
14492     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14493     *offsetp += 4;
14494     proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
14495     *offsetp += 2;
14496     proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
14497     *offsetp += 2;
14498 }
14499
14500 static void xc_miscGetXIDRange(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
14501 {
14502 }
14503 static void xc_miscGetXIDRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14504 {
14505     int sequence_number;
14506
14507     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetXIDRange");
14508
14509     REPLY(reply);
14510     UNUSED(1);
14511     sequence_number = VALUE16(tvb, *offsetp);
14512     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14513             "%d (xc_misc-GetXIDRange)", sequence_number);
14514     *offsetp += 2;
14515     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14516     *offsetp += 4;
14517     proto_tree_add_item(t, hf_x11_xc_misc_GetXIDRange_reply_start_id, tvb, *offsetp, 4, byte_order);
14518     *offsetp += 4;
14519     proto_tree_add_item(t, hf_x11_xc_misc_GetXIDRange_reply_count, tvb, *offsetp, 4, byte_order);
14520     *offsetp += 4;
14521 }
14522
14523 static void xc_miscGetXIDList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14524 {
14525     proto_tree_add_item(t, hf_x11_xc_misc_GetXIDList_count, tvb, *offsetp, 4, byte_order);
14526     *offsetp += 4;
14527 }
14528 static void xc_miscGetXIDList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14529 {
14530     int sequence_number;
14531     int f_ids_len;
14532
14533     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetXIDList");
14534
14535     REPLY(reply);
14536     UNUSED(1);
14537     sequence_number = VALUE16(tvb, *offsetp);
14538     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14539             "%d (xc_misc-GetXIDList)", sequence_number);
14540     *offsetp += 2;
14541     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14542     *offsetp += 4;
14543     f_ids_len = VALUE32(tvb, *offsetp);
14544     proto_tree_add_item(t, hf_x11_xc_misc_GetXIDList_reply_ids_len, tvb, *offsetp, 4, byte_order);
14545     *offsetp += 4;
14546     UNUSED(20);
14547     listOfCard32(tvb, offsetp, t, hf_x11_xc_misc_GetXIDList_reply_ids, hf_x11_xc_misc_GetXIDList_reply_ids_item, f_ids_len, byte_order);
14548 }
14549 static const value_string xc_misc_extension_minor[] = {
14550     { 0, "GetVersion" },
14551     { 1, "GetXIDRange" },
14552     { 2, "GetXIDList" },
14553     { 0, NULL }
14554 };
14555 const x11_event_info xc_misc_events[] = {
14556     { NULL, NULL }
14557 };
14558 static x11_reply_info xc_misc_replies[] = {
14559     { 0, xc_miscGetVersion_Reply },
14560     { 1, xc_miscGetXIDRange_Reply },
14561     { 2, xc_miscGetXIDList_Reply },
14562     { 0, NULL }
14563 };
14564
14565 static void dispatch_xc_misc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14566 {
14567     int minor, length;
14568     minor = CARD8(xc_misc_extension_minor);
14569     length = REQUEST_LENGTH();
14570
14571     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
14572                           val_to_str(minor, xc_misc_extension_minor,
14573                                      "<Unknown opcode %d>"));
14574     switch (minor) {
14575     case 0:
14576         xc_miscGetVersion(tvb, pinfo, offsetp, t, byte_order, length);
14577         break;
14578     case 1:
14579         xc_miscGetXIDRange(tvb, pinfo, offsetp, t, byte_order, length);
14580         break;
14581     case 2:
14582         xc_miscGetXIDList(tvb, pinfo, offsetp, t, byte_order, length);
14583         break;
14584     /* No need for a default case here, since Unknown is printed above,
14585        and UNDECODED() is taken care of by dissect_x11_request */
14586     }
14587 }
14588
14589 static void register_xc_misc(void)
14590 {
14591     set_handler("XC-MISC", dispatch_xc_misc, xc_misc_errors, xc_misc_events, NULL, xc_misc_replies);
14592 }
14593
14594 static void xevieQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14595 {
14596     proto_tree_add_item(t, hf_x11_xevie_QueryVersion_client_major_version, tvb, *offsetp, 2, byte_order);
14597     *offsetp += 2;
14598     proto_tree_add_item(t, hf_x11_xevie_QueryVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
14599     *offsetp += 2;
14600 }
14601 static void xevieQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14602 {
14603     int sequence_number;
14604
14605     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
14606
14607     REPLY(reply);
14608     UNUSED(1);
14609     sequence_number = VALUE16(tvb, *offsetp);
14610     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14611             "%d (xevie-QueryVersion)", sequence_number);
14612     *offsetp += 2;
14613     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14614     *offsetp += 4;
14615     proto_tree_add_item(t, hf_x11_xevie_QueryVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
14616     *offsetp += 2;
14617     proto_tree_add_item(t, hf_x11_xevie_QueryVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
14618     *offsetp += 2;
14619     UNUSED(20);
14620 }
14621
14622 static void xevieStart(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14623 {
14624     proto_tree_add_item(t, hf_x11_xevie_Start_screen, tvb, *offsetp, 4, byte_order);
14625     *offsetp += 4;
14626 }
14627 static void xevieStart_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14628 {
14629     int sequence_number;
14630
14631     col_append_fstr(pinfo->cinfo, COL_INFO, "-Start");
14632
14633     REPLY(reply);
14634     UNUSED(1);
14635     sequence_number = VALUE16(tvb, *offsetp);
14636     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14637             "%d (xevie-Start)", sequence_number);
14638     *offsetp += 2;
14639     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14640     *offsetp += 4;
14641     UNUSED(24);
14642 }
14643
14644 static void xevieEnd(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14645 {
14646     proto_tree_add_item(t, hf_x11_xevie_End_cmap, tvb, *offsetp, 4, byte_order);
14647     *offsetp += 4;
14648 }
14649 static void xevieEnd_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14650 {
14651     int sequence_number;
14652
14653     col_append_fstr(pinfo->cinfo, COL_INFO, "-End");
14654
14655     REPLY(reply);
14656     UNUSED(1);
14657     sequence_number = VALUE16(tvb, *offsetp);
14658     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14659             "%d (xevie-End)", sequence_number);
14660     *offsetp += 2;
14661     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14662     *offsetp += 4;
14663     UNUSED(24);
14664 }
14665
14666 static void struct_xevie_Event(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
14667 {
14668     int i;
14669     for (i = 0; i < count; i++) {
14670         proto_item *item;
14671         proto_tree *t;
14672
14673         item = proto_tree_add_item(root, hf_x11_struct_xevie_Event, tvb, *offsetp, 32, ENC_NA);
14674         t = proto_item_add_subtree(item, ett_x11_rectangle);
14675         UNUSED(32);
14676     }
14677 }
14678
14679 static void xevieSend(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14680 {
14681     struct_xevie_Event(tvb, offsetp, t, byte_order, 1);
14682     proto_tree_add_item(t, hf_x11_xevie_Send_data_type, tvb, *offsetp, 4, byte_order);
14683     *offsetp += 4;
14684     UNUSED(64);
14685 }
14686 static void xevieSend_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14687 {
14688     int sequence_number;
14689
14690     col_append_fstr(pinfo->cinfo, COL_INFO, "-Send");
14691
14692     REPLY(reply);
14693     UNUSED(1);
14694     sequence_number = VALUE16(tvb, *offsetp);
14695     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14696             "%d (xevie-Send)", sequence_number);
14697     *offsetp += 2;
14698     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14699     *offsetp += 4;
14700     UNUSED(24);
14701 }
14702
14703 static void xevieSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14704 {
14705     proto_tree_add_item(t, hf_x11_xevie_SelectInput_event_mask, tvb, *offsetp, 4, byte_order);
14706     *offsetp += 4;
14707 }
14708 static void xevieSelectInput_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14709 {
14710     int sequence_number;
14711
14712     col_append_fstr(pinfo->cinfo, COL_INFO, "-SelectInput");
14713
14714     REPLY(reply);
14715     UNUSED(1);
14716     sequence_number = VALUE16(tvb, *offsetp);
14717     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14718             "%d (xevie-SelectInput)", sequence_number);
14719     *offsetp += 2;
14720     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14721     *offsetp += 4;
14722     UNUSED(24);
14723 }
14724 static const value_string xevie_extension_minor[] = {
14725     { 0, "QueryVersion" },
14726     { 1, "Start" },
14727     { 2, "End" },
14728     { 3, "Send" },
14729     { 4, "SelectInput" },
14730     { 0, NULL }
14731 };
14732 const x11_event_info xevie_events[] = {
14733     { NULL, NULL }
14734 };
14735 static x11_reply_info xevie_replies[] = {
14736     { 0, xevieQueryVersion_Reply },
14737     { 1, xevieStart_Reply },
14738     { 2, xevieEnd_Reply },
14739     { 3, xevieSend_Reply },
14740     { 4, xevieSelectInput_Reply },
14741     { 0, NULL }
14742 };
14743
14744 static void dispatch_xevie(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14745 {
14746     int minor, length;
14747     minor = CARD8(xevie_extension_minor);
14748     length = REQUEST_LENGTH();
14749
14750     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
14751                           val_to_str(minor, xevie_extension_minor,
14752                                      "<Unknown opcode %d>"));
14753     switch (minor) {
14754     case 0:
14755         xevieQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
14756         break;
14757     case 1:
14758         xevieStart(tvb, pinfo, offsetp, t, byte_order, length);
14759         break;
14760     case 2:
14761         xevieEnd(tvb, pinfo, offsetp, t, byte_order, length);
14762         break;
14763     case 3:
14764         xevieSend(tvb, pinfo, offsetp, t, byte_order, length);
14765         break;
14766     case 4:
14767         xevieSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
14768         break;
14769     /* No need for a default case here, since Unknown is printed above,
14770        and UNDECODED() is taken care of by dissect_x11_request */
14771     }
14772 }
14773
14774 static void register_xevie(void)
14775 {
14776     set_handler("XEVIE", dispatch_xevie, xevie_errors, xevie_events, NULL, xevie_replies);
14777 }
14778
14779 static void struct_xf86dri_DrmClipRect(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
14780 {
14781     int i;
14782     for (i = 0; i < count; i++) {
14783         proto_item *item;
14784         proto_tree *t;
14785
14786         item = proto_tree_add_item(root, hf_x11_struct_xf86dri_DrmClipRect, tvb, *offsetp, 8, ENC_NA);
14787         t = proto_item_add_subtree(item, ett_x11_rectangle);
14788         proto_tree_add_item(t, hf_x11_struct_xf86dri_DrmClipRect_x1, tvb, *offsetp, 2, byte_order);
14789         *offsetp += 2;
14790         proto_tree_add_item(t, hf_x11_struct_xf86dri_DrmClipRect_y1, tvb, *offsetp, 2, byte_order);
14791         *offsetp += 2;
14792         proto_tree_add_item(t, hf_x11_struct_xf86dri_DrmClipRect_x2, tvb, *offsetp, 2, byte_order);
14793         *offsetp += 2;
14794         proto_tree_add_item(t, hf_x11_struct_xf86dri_DrmClipRect_x3, tvb, *offsetp, 2, byte_order);
14795         *offsetp += 2;
14796     }
14797 }
14798
14799 static void xf86driQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
14800 {
14801 }
14802 static void xf86driQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14803 {
14804     int sequence_number;
14805
14806     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
14807
14808     REPLY(reply);
14809     UNUSED(1);
14810     sequence_number = VALUE16(tvb, *offsetp);
14811     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14812             "%d (xf86dri-QueryVersion)", sequence_number);
14813     *offsetp += 2;
14814     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14815     *offsetp += 4;
14816     proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_major_version, tvb, *offsetp, 2, byte_order);
14817     *offsetp += 2;
14818     proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_minor_version, tvb, *offsetp, 2, byte_order);
14819     *offsetp += 2;
14820     proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_minor_patch, tvb, *offsetp, 4, byte_order);
14821     *offsetp += 4;
14822 }
14823
14824 static void xf86driQueryDirectRenderingCapable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14825 {
14826     proto_tree_add_item(t, hf_x11_xf86dri_QueryDirectRenderingCapable_screen, tvb, *offsetp, 4, byte_order);
14827     *offsetp += 4;
14828 }
14829 static void xf86driQueryDirectRenderingCapable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14830 {
14831     int sequence_number;
14832
14833     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryDirectRenderingCapable");
14834
14835     REPLY(reply);
14836     UNUSED(1);
14837     sequence_number = VALUE16(tvb, *offsetp);
14838     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14839             "%d (xf86dri-QueryDirectRenderingCapable)", sequence_number);
14840     *offsetp += 2;
14841     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14842     *offsetp += 4;
14843     proto_tree_add_item(t, hf_x11_xf86dri_QueryDirectRenderingCapable_reply_is_capable, tvb, *offsetp, 1, byte_order);
14844     *offsetp += 1;
14845 }
14846
14847 static void xf86driOpenConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14848 {
14849     proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_screen, tvb, *offsetp, 4, byte_order);
14850     *offsetp += 4;
14851 }
14852 static void xf86driOpenConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14853 {
14854     int sequence_number;
14855     int f_bus_id_len;
14856
14857     col_append_fstr(pinfo->cinfo, COL_INFO, "-OpenConnection");
14858
14859     REPLY(reply);
14860     UNUSED(1);
14861     sequence_number = VALUE16(tvb, *offsetp);
14862     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14863             "%d (xf86dri-OpenConnection)", sequence_number);
14864     *offsetp += 2;
14865     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14866     *offsetp += 4;
14867     proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_sarea_handle_low, tvb, *offsetp, 4, byte_order);
14868     *offsetp += 4;
14869     proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_sarea_handle_high, tvb, *offsetp, 4, byte_order);
14870     *offsetp += 4;
14871     f_bus_id_len = VALUE32(tvb, *offsetp);
14872     proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_bus_id_len, tvb, *offsetp, 4, byte_order);
14873     *offsetp += 4;
14874     UNUSED(12);
14875     listOfByte(tvb, offsetp, t, hf_x11_xf86dri_OpenConnection_reply_bus_id, f_bus_id_len, byte_order);
14876 }
14877
14878 static void xf86driCloseConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14879 {
14880     proto_tree_add_item(t, hf_x11_xf86dri_CloseConnection_screen, tvb, *offsetp, 4, byte_order);
14881     *offsetp += 4;
14882 }
14883
14884 static void xf86driGetClientDriverName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14885 {
14886     proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_screen, tvb, *offsetp, 4, byte_order);
14887     *offsetp += 4;
14888 }
14889 static void xf86driGetClientDriverName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14890 {
14891     int sequence_number;
14892     int f_client_driver_name_len;
14893
14894     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetClientDriverName");
14895
14896     REPLY(reply);
14897     UNUSED(1);
14898     sequence_number = VALUE16(tvb, *offsetp);
14899     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14900             "%d (xf86dri-GetClientDriverName)", sequence_number);
14901     *offsetp += 2;
14902     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14903     *offsetp += 4;
14904     proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_major_version, tvb, *offsetp, 4, byte_order);
14905     *offsetp += 4;
14906     proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_minor_version, tvb, *offsetp, 4, byte_order);
14907     *offsetp += 4;
14908     proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_patch_version, tvb, *offsetp, 4, byte_order);
14909     *offsetp += 4;
14910     f_client_driver_name_len = VALUE32(tvb, *offsetp);
14911     proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_name_len, tvb, *offsetp, 4, byte_order);
14912     *offsetp += 4;
14913     UNUSED(8);
14914     listOfByte(tvb, offsetp, t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_name, f_client_driver_name_len, byte_order);
14915 }
14916
14917 static void xf86driCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14918 {
14919     proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_screen, tvb, *offsetp, 4, byte_order);
14920     *offsetp += 4;
14921     proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_visual, tvb, *offsetp, 4, byte_order);
14922     *offsetp += 4;
14923     proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_context, tvb, *offsetp, 4, byte_order);
14924     *offsetp += 4;
14925 }
14926 static void xf86driCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14927 {
14928     int sequence_number;
14929
14930     col_append_fstr(pinfo->cinfo, COL_INFO, "-CreateContext");
14931
14932     REPLY(reply);
14933     UNUSED(1);
14934     sequence_number = VALUE16(tvb, *offsetp);
14935     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14936             "%d (xf86dri-CreateContext)", sequence_number);
14937     *offsetp += 2;
14938     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14939     *offsetp += 4;
14940     proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_reply_hw_context, tvb, *offsetp, 4, byte_order);
14941     *offsetp += 4;
14942 }
14943
14944 static void xf86driDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14945 {
14946     proto_tree_add_item(t, hf_x11_xf86dri_DestroyContext_screen, tvb, *offsetp, 4, byte_order);
14947     *offsetp += 4;
14948     proto_tree_add_item(t, hf_x11_xf86dri_DestroyContext_context, tvb, *offsetp, 4, byte_order);
14949     *offsetp += 4;
14950 }
14951
14952 static void xf86driCreateDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14953 {
14954     proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_screen, tvb, *offsetp, 4, byte_order);
14955     *offsetp += 4;
14956     proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_drawable, tvb, *offsetp, 4, byte_order);
14957     *offsetp += 4;
14958 }
14959 static void xf86driCreateDrawable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14960 {
14961     int sequence_number;
14962
14963     col_append_fstr(pinfo->cinfo, COL_INFO, "-CreateDrawable");
14964
14965     REPLY(reply);
14966     UNUSED(1);
14967     sequence_number = VALUE16(tvb, *offsetp);
14968     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
14969             "%d (xf86dri-CreateDrawable)", sequence_number);
14970     *offsetp += 2;
14971     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
14972     *offsetp += 4;
14973     proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_reply_hw_drawable_handle, tvb, *offsetp, 4, byte_order);
14974     *offsetp += 4;
14975 }
14976
14977 static void xf86driDestroyDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14978 {
14979     proto_tree_add_item(t, hf_x11_xf86dri_DestroyDrawable_screen, tvb, *offsetp, 4, byte_order);
14980     *offsetp += 4;
14981     proto_tree_add_item(t, hf_x11_xf86dri_DestroyDrawable_drawable, tvb, *offsetp, 4, byte_order);
14982     *offsetp += 4;
14983 }
14984
14985 static void xf86driGetDrawableInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
14986 {
14987     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_screen, tvb, *offsetp, 4, byte_order);
14988     *offsetp += 4;
14989     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_drawable, tvb, *offsetp, 4, byte_order);
14990     *offsetp += 4;
14991 }
14992 static void xf86driGetDrawableInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
14993 {
14994     int sequence_number;
14995     int f_num_clip_rects;
14996     int f_num_back_clip_rects;
14997
14998     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDrawableInfo");
14999
15000     REPLY(reply);
15001     UNUSED(1);
15002     sequence_number = VALUE16(tvb, *offsetp);
15003     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15004             "%d (xf86dri-GetDrawableInfo)", sequence_number);
15005     *offsetp += 2;
15006     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15007     *offsetp += 4;
15008     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_table_index, tvb, *offsetp, 4, byte_order);
15009     *offsetp += 4;
15010     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_table_stamp, tvb, *offsetp, 4, byte_order);
15011     *offsetp += 4;
15012     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_origin_X, tvb, *offsetp, 2, byte_order);
15013     *offsetp += 2;
15014     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_origin_Y, tvb, *offsetp, 2, byte_order);
15015     *offsetp += 2;
15016     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_size_W, tvb, *offsetp, 2, byte_order);
15017     *offsetp += 2;
15018     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_size_H, tvb, *offsetp, 2, byte_order);
15019     *offsetp += 2;
15020     f_num_clip_rects = VALUE32(tvb, *offsetp);
15021     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_num_clip_rects, tvb, *offsetp, 4, byte_order);
15022     *offsetp += 4;
15023     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_back_x, tvb, *offsetp, 2, byte_order);
15024     *offsetp += 2;
15025     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_back_y, tvb, *offsetp, 2, byte_order);
15026     *offsetp += 2;
15027     f_num_back_clip_rects = VALUE32(tvb, *offsetp);
15028     proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_num_back_clip_rects, tvb, *offsetp, 4, byte_order);
15029     *offsetp += 4;
15030     struct_xf86dri_DrmClipRect(tvb, offsetp, t, byte_order, f_num_clip_rects);
15031     struct_xf86dri_DrmClipRect(tvb, offsetp, t, byte_order, f_num_back_clip_rects);
15032 }
15033
15034 static void xf86driGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15035 {
15036     proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_screen, tvb, *offsetp, 4, byte_order);
15037     *offsetp += 4;
15038 }
15039 static void xf86driGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15040 {
15041     int sequence_number;
15042     int f_device_private_size;
15043
15044     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceInfo");
15045
15046     REPLY(reply);
15047     UNUSED(1);
15048     sequence_number = VALUE16(tvb, *offsetp);
15049     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15050             "%d (xf86dri-GetDeviceInfo)", sequence_number);
15051     *offsetp += 2;
15052     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15053     *offsetp += 4;
15054     proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_handle_low, tvb, *offsetp, 4, byte_order);
15055     *offsetp += 4;
15056     proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_handle_high, tvb, *offsetp, 4, byte_order);
15057     *offsetp += 4;
15058     proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_origin_offset, tvb, *offsetp, 4, byte_order);
15059     *offsetp += 4;
15060     proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_size, tvb, *offsetp, 4, byte_order);
15061     *offsetp += 4;
15062     proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_stride, tvb, *offsetp, 4, byte_order);
15063     *offsetp += 4;
15064     f_device_private_size = VALUE32(tvb, *offsetp);
15065     proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_device_private_size, tvb, *offsetp, 4, byte_order);
15066     *offsetp += 4;
15067     listOfCard32(tvb, offsetp, t, hf_x11_xf86dri_GetDeviceInfo_reply_device_private, hf_x11_xf86dri_GetDeviceInfo_reply_device_private_item, f_device_private_size, byte_order);
15068 }
15069
15070 static void xf86driAuthConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15071 {
15072     proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_screen, tvb, *offsetp, 4, byte_order);
15073     *offsetp += 4;
15074     proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_magic, tvb, *offsetp, 4, byte_order);
15075     *offsetp += 4;
15076 }
15077 static void xf86driAuthConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15078 {
15079     int sequence_number;
15080
15081     col_append_fstr(pinfo->cinfo, COL_INFO, "-AuthConnection");
15082
15083     REPLY(reply);
15084     UNUSED(1);
15085     sequence_number = VALUE16(tvb, *offsetp);
15086     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15087             "%d (xf86dri-AuthConnection)", sequence_number);
15088     *offsetp += 2;
15089     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15090     *offsetp += 4;
15091     proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_reply_authenticated, tvb, *offsetp, 4, byte_order);
15092     *offsetp += 4;
15093 }
15094 static const value_string xf86dri_extension_minor[] = {
15095     { 0, "QueryVersion" },
15096     { 1, "QueryDirectRenderingCapable" },
15097     { 2, "OpenConnection" },
15098     { 3, "CloseConnection" },
15099     { 4, "GetClientDriverName" },
15100     { 5, "CreateContext" },
15101     { 6, "DestroyContext" },
15102     { 7, "CreateDrawable" },
15103     { 8, "DestroyDrawable" },
15104     { 9, "GetDrawableInfo" },
15105     { 10, "GetDeviceInfo" },
15106     { 11, "AuthConnection" },
15107     { 0, NULL }
15108 };
15109 const x11_event_info xf86dri_events[] = {
15110     { NULL, NULL }
15111 };
15112 static x11_reply_info xf86dri_replies[] = {
15113     { 0, xf86driQueryVersion_Reply },
15114     { 1, xf86driQueryDirectRenderingCapable_Reply },
15115     { 2, xf86driOpenConnection_Reply },
15116     { 4, xf86driGetClientDriverName_Reply },
15117     { 5, xf86driCreateContext_Reply },
15118     { 7, xf86driCreateDrawable_Reply },
15119     { 9, xf86driGetDrawableInfo_Reply },
15120     { 10, xf86driGetDeviceInfo_Reply },
15121     { 11, xf86driAuthConnection_Reply },
15122     { 0, NULL }
15123 };
15124
15125 static void dispatch_xf86dri(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15126 {
15127     int minor, length;
15128     minor = CARD8(xf86dri_extension_minor);
15129     length = REQUEST_LENGTH();
15130
15131     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
15132                           val_to_str(minor, xf86dri_extension_minor,
15133                                      "<Unknown opcode %d>"));
15134     switch (minor) {
15135     case 0:
15136         xf86driQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
15137         break;
15138     case 1:
15139         xf86driQueryDirectRenderingCapable(tvb, pinfo, offsetp, t, byte_order, length);
15140         break;
15141     case 2:
15142         xf86driOpenConnection(tvb, pinfo, offsetp, t, byte_order, length);
15143         break;
15144     case 3:
15145         xf86driCloseConnection(tvb, pinfo, offsetp, t, byte_order, length);
15146         break;
15147     case 4:
15148         xf86driGetClientDriverName(tvb, pinfo, offsetp, t, byte_order, length);
15149         break;
15150     case 5:
15151         xf86driCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
15152         break;
15153     case 6:
15154         xf86driDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
15155         break;
15156     case 7:
15157         xf86driCreateDrawable(tvb, pinfo, offsetp, t, byte_order, length);
15158         break;
15159     case 8:
15160         xf86driDestroyDrawable(tvb, pinfo, offsetp, t, byte_order, length);
15161         break;
15162     case 9:
15163         xf86driGetDrawableInfo(tvb, pinfo, offsetp, t, byte_order, length);
15164         break;
15165     case 10:
15166         xf86driGetDeviceInfo(tvb, pinfo, offsetp, t, byte_order, length);
15167         break;
15168     case 11:
15169         xf86driAuthConnection(tvb, pinfo, offsetp, t, byte_order, length);
15170         break;
15171     /* No need for a default case here, since Unknown is printed above,
15172        and UNDECODED() is taken care of by dissect_x11_request */
15173     }
15174 }
15175
15176 static void register_xf86dri(void)
15177 {
15178     set_handler("XFree86-DRI", dispatch_xf86dri, xf86dri_errors, xf86dri_events, NULL, xf86dri_replies);
15179 }
15180
15181 static void struct_xf86vidmode_ModeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
15182 {
15183     int i;
15184     for (i = 0; i < count; i++) {
15185         proto_item *item;
15186         proto_tree *t;
15187
15188         item = proto_tree_add_item(root, hf_x11_struct_xf86vidmode_ModeInfo, tvb, *offsetp, 48, ENC_NA);
15189         t = proto_item_add_subtree(item, ett_x11_rectangle);
15190         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_dotclock, tvb, *offsetp, 4, byte_order);
15191         *offsetp += 4;
15192         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_hdisplay, tvb, *offsetp, 2, byte_order);
15193         *offsetp += 2;
15194         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_hsyncstart, tvb, *offsetp, 2, byte_order);
15195         *offsetp += 2;
15196         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_hsyncend, tvb, *offsetp, 2, byte_order);
15197         *offsetp += 2;
15198         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_htotal, tvb, *offsetp, 2, byte_order);
15199         *offsetp += 2;
15200         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_hskew, tvb, *offsetp, 4, byte_order);
15201         *offsetp += 4;
15202         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_vdisplay, tvb, *offsetp, 2, byte_order);
15203         *offsetp += 2;
15204         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_vsyncstart, tvb, *offsetp, 2, byte_order);
15205         *offsetp += 2;
15206         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_vsyncend, tvb, *offsetp, 2, byte_order);
15207         *offsetp += 2;
15208         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_vtotal, tvb, *offsetp, 2, byte_order);
15209         *offsetp += 2;
15210         UNUSED(4);
15211         {
15212             const int* flags_bits [] = {
15213                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Positive_HSync,
15214                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Negative_HSync,
15215                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Positive_VSync,
15216                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Negative_VSync,
15217                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Interlace,
15218                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Composite_Sync,
15219                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Positive_CSync,
15220                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Negative_CSync,
15221                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_HSkew,
15222                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Broadcast,
15223                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Pixmux,
15224                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Double_Clock,
15225                 &hf_x11_struct_xf86vidmode_ModeInfo_flags_mask_Half_Clock,
15226             };
15227             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xf86vidmode_ModeInfo_flags, ett_x11_rectangle, flags_bits, byte_order);
15228         }
15229         *offsetp += 4;
15230         UNUSED(12);
15231         proto_tree_add_item(t, hf_x11_struct_xf86vidmode_ModeInfo_privsize, tvb, *offsetp, 4, byte_order);
15232         *offsetp += 4;
15233     }
15234 }
15235
15236 static void xf86vidmodeQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
15237 {
15238 }
15239 static void xf86vidmodeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15240 {
15241     int sequence_number;
15242
15243     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
15244
15245     REPLY(reply);
15246     UNUSED(1);
15247     sequence_number = VALUE16(tvb, *offsetp);
15248     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15249             "%d (xf86vidmode-QueryVersion)", sequence_number);
15250     *offsetp += 2;
15251     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15252     *offsetp += 4;
15253     proto_tree_add_item(t, hf_x11_xf86vidmode_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
15254     *offsetp += 2;
15255     proto_tree_add_item(t, hf_x11_xf86vidmode_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
15256     *offsetp += 2;
15257 }
15258
15259 static void xf86vidmodeGetModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15260 {
15261     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_screen, tvb, *offsetp, 2, byte_order);
15262     *offsetp += 2;
15263     UNUSED(2);
15264 }
15265 static void xf86vidmodeGetModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15266 {
15267     int sequence_number;
15268     int f_privsize;
15269
15270     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetModeLine");
15271
15272     REPLY(reply);
15273     UNUSED(1);
15274     sequence_number = VALUE16(tvb, *offsetp);
15275     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15276             "%d (xf86vidmode-GetModeLine)", sequence_number);
15277     *offsetp += 2;
15278     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15279     *offsetp += 4;
15280     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_dotclock, tvb, *offsetp, 4, byte_order);
15281     *offsetp += 4;
15282     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hdisplay, tvb, *offsetp, 2, byte_order);
15283     *offsetp += 2;
15284     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hsyncstart, tvb, *offsetp, 2, byte_order);
15285     *offsetp += 2;
15286     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hsyncend, tvb, *offsetp, 2, byte_order);
15287     *offsetp += 2;
15288     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_htotal, tvb, *offsetp, 2, byte_order);
15289     *offsetp += 2;
15290     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hskew, tvb, *offsetp, 2, byte_order);
15291     *offsetp += 2;
15292     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vdisplay, tvb, *offsetp, 2, byte_order);
15293     *offsetp += 2;
15294     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vsyncstart, tvb, *offsetp, 2, byte_order);
15295     *offsetp += 2;
15296     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vsyncend, tvb, *offsetp, 2, byte_order);
15297     *offsetp += 2;
15298     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vtotal, tvb, *offsetp, 2, byte_order);
15299     *offsetp += 2;
15300     UNUSED(2);
15301     {
15302         const int* flags_bits [] = {
15303         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_HSync,
15304         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_HSync,
15305         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_VSync,
15306         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_VSync,
15307         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Interlace,
15308         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Composite_Sync,
15309         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_CSync,
15310         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_CSync,
15311         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HSkew,
15312         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Broadcast,
15313         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Pixmux,
15314         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Double_Clock,
15315         &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Half_Clock,
15316         };
15317         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_GetModeLine_reply_flags, ett_x11_rectangle, flags_bits, byte_order);
15318     }
15319     *offsetp += 4;
15320     UNUSED(12);
15321     f_privsize = VALUE32(tvb, *offsetp);
15322     proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_privsize, tvb, *offsetp, 4, byte_order);
15323     *offsetp += 4;
15324     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetModeLine_reply_private, f_privsize, byte_order);
15325 }
15326
15327 static void xf86vidmodeModModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15328 {
15329     int f_privsize;
15330     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_screen, tvb, *offsetp, 4, byte_order);
15331     *offsetp += 4;
15332     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
15333     *offsetp += 2;
15334     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
15335     *offsetp += 2;
15336     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
15337     *offsetp += 2;
15338     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_htotal, tvb, *offsetp, 2, byte_order);
15339     *offsetp += 2;
15340     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hskew, tvb, *offsetp, 2, byte_order);
15341     *offsetp += 2;
15342     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
15343     *offsetp += 2;
15344     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
15345     *offsetp += 2;
15346     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
15347     *offsetp += 2;
15348     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vtotal, tvb, *offsetp, 2, byte_order);
15349     *offsetp += 2;
15350     UNUSED(2);
15351     {
15352         const int* flags_bits [] = {
15353         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_HSync,
15354         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_HSync,
15355         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_VSync,
15356         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_VSync,
15357         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Interlace,
15358         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Composite_Sync,
15359         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_CSync,
15360         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_CSync,
15361         &hf_x11_xf86vidmode_ModModeLine_flags_mask_HSkew,
15362         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Broadcast,
15363         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Pixmux,
15364         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Double_Clock,
15365         &hf_x11_xf86vidmode_ModModeLine_flags_mask_Half_Clock,
15366         };
15367         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_ModModeLine_flags, ett_x11_rectangle, flags_bits, byte_order);
15368     }
15369     *offsetp += 4;
15370     UNUSED(12);
15371     f_privsize = VALUE32(tvb, *offsetp);
15372     proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_privsize, tvb, *offsetp, 4, byte_order);
15373     *offsetp += 4;
15374     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_ModModeLine_private, f_privsize, byte_order);
15375     length -= f_privsize * 1;
15376 }
15377
15378 static void xf86vidmodeSwitchMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15379 {
15380     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchMode_screen, tvb, *offsetp, 2, byte_order);
15381     *offsetp += 2;
15382     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchMode_zoom, tvb, *offsetp, 2, byte_order);
15383     *offsetp += 2;
15384 }
15385
15386 static void xf86vidmodeGetMonitor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15387 {
15388     proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_screen, tvb, *offsetp, 2, byte_order);
15389     *offsetp += 2;
15390     UNUSED(2);
15391 }
15392 static void xf86vidmodeGetMonitor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15393 {
15394     int sequence_number;
15395     int f_vendor_length;
15396     int f_model_length;
15397     int f_num_hsync;
15398     int f_num_vsync;
15399
15400     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMonitor");
15401
15402     REPLY(reply);
15403     UNUSED(1);
15404     sequence_number = VALUE16(tvb, *offsetp);
15405     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15406             "%d (xf86vidmode-GetMonitor)", sequence_number);
15407     *offsetp += 2;
15408     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15409     *offsetp += 4;
15410     f_vendor_length = VALUE8(tvb, *offsetp);
15411     proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_vendor_length, tvb, *offsetp, 1, byte_order);
15412     *offsetp += 1;
15413     f_model_length = VALUE8(tvb, *offsetp);
15414     proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_model_length, tvb, *offsetp, 1, byte_order);
15415     *offsetp += 1;
15416     f_num_hsync = VALUE8(tvb, *offsetp);
15417     proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_num_hsync, tvb, *offsetp, 1, byte_order);
15418     *offsetp += 1;
15419     f_num_vsync = VALUE8(tvb, *offsetp);
15420     proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_num_vsync, tvb, *offsetp, 1, byte_order);
15421     *offsetp += 1;
15422     UNUSED(20);
15423     listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_hsync, hf_x11_xf86vidmode_GetMonitor_reply_hsync_item, f_num_hsync, byte_order);
15424     listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_vsync, hf_x11_xf86vidmode_GetMonitor_reply_vsync_item, f_num_vsync, byte_order);
15425     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_vendor, f_vendor_length, byte_order);
15426     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_alignment_pad, (((f_vendor_length + 3) & (~3)) - f_vendor_length), byte_order);
15427     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_model, f_model_length, byte_order);
15428 }
15429
15430 static void xf86vidmodeLockModeSwitch(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15431 {
15432     proto_tree_add_item(t, hf_x11_xf86vidmode_LockModeSwitch_screen, tvb, *offsetp, 2, byte_order);
15433     *offsetp += 2;
15434     proto_tree_add_item(t, hf_x11_xf86vidmode_LockModeSwitch_lock, tvb, *offsetp, 2, byte_order);
15435     *offsetp += 2;
15436 }
15437
15438 static void xf86vidmodeGetAllModeLines(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15439 {
15440     proto_tree_add_item(t, hf_x11_xf86vidmode_GetAllModeLines_screen, tvb, *offsetp, 2, byte_order);
15441     *offsetp += 2;
15442     UNUSED(2);
15443 }
15444 static void xf86vidmodeGetAllModeLines_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15445 {
15446     int sequence_number;
15447     int f_modecount;
15448
15449     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetAllModeLines");
15450
15451     REPLY(reply);
15452     UNUSED(1);
15453     sequence_number = VALUE16(tvb, *offsetp);
15454     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15455             "%d (xf86vidmode-GetAllModeLines)", sequence_number);
15456     *offsetp += 2;
15457     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15458     *offsetp += 4;
15459     f_modecount = VALUE32(tvb, *offsetp);
15460     proto_tree_add_item(t, hf_x11_xf86vidmode_GetAllModeLines_reply_modecount, tvb, *offsetp, 4, byte_order);
15461     *offsetp += 4;
15462     UNUSED(20);
15463     struct_xf86vidmode_ModeInfo(tvb, offsetp, t, byte_order, f_modecount);
15464 }
15465
15466 static void xf86vidmodeAddModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15467 {
15468     int f_privsize;
15469     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_screen, tvb, *offsetp, 4, byte_order);
15470     *offsetp += 4;
15471     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_dotclock, tvb, *offsetp, 4, byte_order);
15472     *offsetp += 4;
15473     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
15474     *offsetp += 2;
15475     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
15476     *offsetp += 2;
15477     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
15478     *offsetp += 2;
15479     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_htotal, tvb, *offsetp, 2, byte_order);
15480     *offsetp += 2;
15481     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hskew, tvb, *offsetp, 2, byte_order);
15482     *offsetp += 2;
15483     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
15484     *offsetp += 2;
15485     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
15486     *offsetp += 2;
15487     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
15488     *offsetp += 2;
15489     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vtotal, tvb, *offsetp, 2, byte_order);
15490     *offsetp += 2;
15491     UNUSED(2);
15492     {
15493         const int* flags_bits [] = {
15494         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_HSync,
15495         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_HSync,
15496         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_VSync,
15497         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_VSync,
15498         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Interlace,
15499         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Composite_Sync,
15500         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_CSync,
15501         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_CSync,
15502         &hf_x11_xf86vidmode_AddModeLine_flags_mask_HSkew,
15503         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Broadcast,
15504         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Pixmux,
15505         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Double_Clock,
15506         &hf_x11_xf86vidmode_AddModeLine_flags_mask_Half_Clock,
15507         };
15508         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_AddModeLine_flags, ett_x11_rectangle, flags_bits, byte_order);
15509     }
15510     *offsetp += 4;
15511     UNUSED(12);
15512     f_privsize = VALUE32(tvb, *offsetp);
15513     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_privsize, tvb, *offsetp, 4, byte_order);
15514     *offsetp += 4;
15515     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_dotclock, tvb, *offsetp, 4, byte_order);
15516     *offsetp += 4;
15517     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hdisplay, tvb, *offsetp, 2, byte_order);
15518     *offsetp += 2;
15519     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hsyncstart, tvb, *offsetp, 2, byte_order);
15520     *offsetp += 2;
15521     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hsyncend, tvb, *offsetp, 2, byte_order);
15522     *offsetp += 2;
15523     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_htotal, tvb, *offsetp, 2, byte_order);
15524     *offsetp += 2;
15525     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hskew, tvb, *offsetp, 2, byte_order);
15526     *offsetp += 2;
15527     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vdisplay, tvb, *offsetp, 2, byte_order);
15528     *offsetp += 2;
15529     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vsyncstart, tvb, *offsetp, 2, byte_order);
15530     *offsetp += 2;
15531     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vsyncend, tvb, *offsetp, 2, byte_order);
15532     *offsetp += 2;
15533     proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vtotal, tvb, *offsetp, 2, byte_order);
15534     *offsetp += 2;
15535     UNUSED(2);
15536     {
15537         const int* after_flags_bits [] = {
15538         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_HSync,
15539         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_HSync,
15540         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_VSync,
15541         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_VSync,
15542         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Interlace,
15543         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Composite_Sync,
15544         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_CSync,
15545         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_CSync,
15546         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HSkew,
15547         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Broadcast,
15548         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Pixmux,
15549         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Double_Clock,
15550         &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Half_Clock,
15551         };
15552         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_AddModeLine_after_flags, ett_x11_rectangle, after_flags_bits, byte_order);
15553     }
15554     *offsetp += 4;
15555     UNUSED(12);
15556     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_AddModeLine_private, f_privsize, byte_order);
15557     length -= f_privsize * 1;
15558 }
15559
15560 static void xf86vidmodeDeleteModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15561 {
15562     int f_privsize;
15563     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_screen, tvb, *offsetp, 4, byte_order);
15564     *offsetp += 4;
15565     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_dotclock, tvb, *offsetp, 4, byte_order);
15566     *offsetp += 4;
15567     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
15568     *offsetp += 2;
15569     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
15570     *offsetp += 2;
15571     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
15572     *offsetp += 2;
15573     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_htotal, tvb, *offsetp, 2, byte_order);
15574     *offsetp += 2;
15575     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hskew, tvb, *offsetp, 2, byte_order);
15576     *offsetp += 2;
15577     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
15578     *offsetp += 2;
15579     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
15580     *offsetp += 2;
15581     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
15582     *offsetp += 2;
15583     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vtotal, tvb, *offsetp, 2, byte_order);
15584     *offsetp += 2;
15585     UNUSED(2);
15586     {
15587         const int* flags_bits [] = {
15588         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_HSync,
15589         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_HSync,
15590         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_VSync,
15591         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_VSync,
15592         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Interlace,
15593         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Composite_Sync,
15594         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_CSync,
15595         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_CSync,
15596         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HSkew,
15597         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Broadcast,
15598         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Pixmux,
15599         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Double_Clock,
15600         &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Half_Clock,
15601         };
15602         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_DeleteModeLine_flags, ett_x11_rectangle, flags_bits, byte_order);
15603     }
15604     *offsetp += 4;
15605     UNUSED(12);
15606     f_privsize = VALUE32(tvb, *offsetp);
15607     proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_privsize, tvb, *offsetp, 4, byte_order);
15608     *offsetp += 4;
15609     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_DeleteModeLine_private, f_privsize, byte_order);
15610     length -= f_privsize * 1;
15611 }
15612
15613 static void xf86vidmodeValidateModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15614 {
15615     int f_privsize;
15616     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_screen, tvb, *offsetp, 4, byte_order);
15617     *offsetp += 4;
15618     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_dotclock, tvb, *offsetp, 4, byte_order);
15619     *offsetp += 4;
15620     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
15621     *offsetp += 2;
15622     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
15623     *offsetp += 2;
15624     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
15625     *offsetp += 2;
15626     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_htotal, tvb, *offsetp, 2, byte_order);
15627     *offsetp += 2;
15628     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hskew, tvb, *offsetp, 2, byte_order);
15629     *offsetp += 2;
15630     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
15631     *offsetp += 2;
15632     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
15633     *offsetp += 2;
15634     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
15635     *offsetp += 2;
15636     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vtotal, tvb, *offsetp, 2, byte_order);
15637     *offsetp += 2;
15638     UNUSED(2);
15639     {
15640         const int* flags_bits [] = {
15641         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_HSync,
15642         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_HSync,
15643         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_VSync,
15644         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_VSync,
15645         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Interlace,
15646         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Composite_Sync,
15647         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_CSync,
15648         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_CSync,
15649         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HSkew,
15650         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Broadcast,
15651         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Pixmux,
15652         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Double_Clock,
15653         &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Half_Clock,
15654         };
15655         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_ValidateModeLine_flags, ett_x11_rectangle, flags_bits, byte_order);
15656     }
15657     *offsetp += 4;
15658     UNUSED(12);
15659     f_privsize = VALUE32(tvb, *offsetp);
15660     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_privsize, tvb, *offsetp, 4, byte_order);
15661     *offsetp += 4;
15662     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_ValidateModeLine_private, f_privsize, byte_order);
15663     length -= f_privsize * 1;
15664 }
15665 static void xf86vidmodeValidateModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15666 {
15667     int sequence_number;
15668
15669     col_append_fstr(pinfo->cinfo, COL_INFO, "-ValidateModeLine");
15670
15671     REPLY(reply);
15672     UNUSED(1);
15673     sequence_number = VALUE16(tvb, *offsetp);
15674     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15675             "%d (xf86vidmode-ValidateModeLine)", sequence_number);
15676     *offsetp += 2;
15677     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15678     *offsetp += 4;
15679     proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_reply_status, tvb, *offsetp, 4, byte_order);
15680     *offsetp += 4;
15681     UNUSED(20);
15682 }
15683
15684 static void xf86vidmodeSwitchToMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15685 {
15686     int f_privsize;
15687     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_screen, tvb, *offsetp, 4, byte_order);
15688     *offsetp += 4;
15689     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_dotclock, tvb, *offsetp, 4, byte_order);
15690     *offsetp += 4;
15691     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hdisplay, tvb, *offsetp, 2, byte_order);
15692     *offsetp += 2;
15693     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hsyncstart, tvb, *offsetp, 2, byte_order);
15694     *offsetp += 2;
15695     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hsyncend, tvb, *offsetp, 2, byte_order);
15696     *offsetp += 2;
15697     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_htotal, tvb, *offsetp, 2, byte_order);
15698     *offsetp += 2;
15699     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hskew, tvb, *offsetp, 2, byte_order);
15700     *offsetp += 2;
15701     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vdisplay, tvb, *offsetp, 2, byte_order);
15702     *offsetp += 2;
15703     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vsyncstart, tvb, *offsetp, 2, byte_order);
15704     *offsetp += 2;
15705     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vsyncend, tvb, *offsetp, 2, byte_order);
15706     *offsetp += 2;
15707     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vtotal, tvb, *offsetp, 2, byte_order);
15708     *offsetp += 2;
15709     UNUSED(2);
15710     {
15711         const int* flags_bits [] = {
15712         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_HSync,
15713         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_HSync,
15714         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_VSync,
15715         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_VSync,
15716         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Interlace,
15717         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Composite_Sync,
15718         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_CSync,
15719         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_CSync,
15720         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_HSkew,
15721         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Broadcast,
15722         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Pixmux,
15723         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Double_Clock,
15724         &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Half_Clock,
15725         };
15726         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_SwitchToMode_flags, ett_x11_rectangle, flags_bits, byte_order);
15727     }
15728     *offsetp += 4;
15729     UNUSED(12);
15730     f_privsize = VALUE32(tvb, *offsetp);
15731     proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_privsize, tvb, *offsetp, 4, byte_order);
15732     *offsetp += 4;
15733     listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_SwitchToMode_private, f_privsize, byte_order);
15734     length -= f_privsize * 1;
15735 }
15736
15737 static void xf86vidmodeGetViewPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15738 {
15739     proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_screen, tvb, *offsetp, 2, byte_order);
15740     *offsetp += 2;
15741     UNUSED(2);
15742 }
15743 static void xf86vidmodeGetViewPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15744 {
15745     int sequence_number;
15746
15747     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetViewPort");
15748
15749     REPLY(reply);
15750     UNUSED(1);
15751     sequence_number = VALUE16(tvb, *offsetp);
15752     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15753             "%d (xf86vidmode-GetViewPort)", sequence_number);
15754     *offsetp += 2;
15755     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15756     *offsetp += 4;
15757     proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_reply_x, tvb, *offsetp, 4, byte_order);
15758     *offsetp += 4;
15759     proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_reply_y, tvb, *offsetp, 4, byte_order);
15760     *offsetp += 4;
15761     UNUSED(16);
15762 }
15763
15764 static void xf86vidmodeSetViewPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15765 {
15766     proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_screen, tvb, *offsetp, 2, byte_order);
15767     *offsetp += 2;
15768     UNUSED(2);
15769     proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_x, tvb, *offsetp, 4, byte_order);
15770     *offsetp += 4;
15771     proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_y, tvb, *offsetp, 4, byte_order);
15772     *offsetp += 4;
15773 }
15774
15775 static void xf86vidmodeGetDotClocks(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15776 {
15777     proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_screen, tvb, *offsetp, 2, byte_order);
15778     *offsetp += 2;
15779     UNUSED(2);
15780 }
15781 static void xf86vidmodeGetDotClocks_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15782 {
15783     int sequence_number;
15784     int f_flags;
15785     int f_clocks;
15786
15787     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDotClocks");
15788
15789     REPLY(reply);
15790     UNUSED(1);
15791     sequence_number = VALUE16(tvb, *offsetp);
15792     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15793             "%d (xf86vidmode-GetDotClocks)", sequence_number);
15794     *offsetp += 2;
15795     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15796     *offsetp += 4;
15797     f_flags = VALUE32(tvb, *offsetp);
15798     {
15799         const int* flags_bits [] = {
15800         &hf_x11_xf86vidmode_GetDotClocks_reply_flags_mask_Programable,
15801         };
15802         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_GetDotClocks_reply_flags, ett_x11_rectangle, flags_bits, byte_order);
15803     }
15804     *offsetp += 4;
15805     f_clocks = VALUE32(tvb, *offsetp);
15806     proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_clocks, tvb, *offsetp, 4, byte_order);
15807     *offsetp += 4;
15808     proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_maxclocks, tvb, *offsetp, 4, byte_order);
15809     *offsetp += 4;
15810     UNUSED(12);
15811     listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetDotClocks_reply_clock, hf_x11_xf86vidmode_GetDotClocks_reply_clock_item, ((1 - (f_flags & 1)) * f_clocks), byte_order);
15812 }
15813
15814 static void xf86vidmodeSetClientVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15815 {
15816     proto_tree_add_item(t, hf_x11_xf86vidmode_SetClientVersion_major, tvb, *offsetp, 2, byte_order);
15817     *offsetp += 2;
15818     proto_tree_add_item(t, hf_x11_xf86vidmode_SetClientVersion_minor, tvb, *offsetp, 2, byte_order);
15819     *offsetp += 2;
15820 }
15821
15822 static void xf86vidmodeSetGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15823 {
15824     proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_screen, tvb, *offsetp, 2, byte_order);
15825     *offsetp += 2;
15826     UNUSED(2);
15827     proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_red, tvb, *offsetp, 4, byte_order);
15828     *offsetp += 4;
15829     proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_green, tvb, *offsetp, 4, byte_order);
15830     *offsetp += 4;
15831     proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_blue, tvb, *offsetp, 4, byte_order);
15832     *offsetp += 4;
15833     UNUSED(12);
15834 }
15835
15836 static void xf86vidmodeGetGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15837 {
15838     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_screen, tvb, *offsetp, 2, byte_order);
15839     *offsetp += 2;
15840     UNUSED(26);
15841 }
15842 static void xf86vidmodeGetGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15843 {
15844     int sequence_number;
15845
15846     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetGamma");
15847
15848     REPLY(reply);
15849     UNUSED(1);
15850     sequence_number = VALUE16(tvb, *offsetp);
15851     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15852             "%d (xf86vidmode-GetGamma)", sequence_number);
15853     *offsetp += 2;
15854     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15855     *offsetp += 4;
15856     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_red, tvb, *offsetp, 4, byte_order);
15857     *offsetp += 4;
15858     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_green, tvb, *offsetp, 4, byte_order);
15859     *offsetp += 4;
15860     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_blue, tvb, *offsetp, 4, byte_order);
15861     *offsetp += 4;
15862     UNUSED(12);
15863 }
15864
15865 static void xf86vidmodeGetGammaRamp(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15866 {
15867     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_screen, tvb, *offsetp, 2, byte_order);
15868     *offsetp += 2;
15869     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_size, tvb, *offsetp, 2, byte_order);
15870     *offsetp += 2;
15871 }
15872 static void xf86vidmodeGetGammaRamp_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15873 {
15874     int sequence_number;
15875     int f_size;
15876
15877     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetGammaRamp");
15878
15879     REPLY(reply);
15880     UNUSED(1);
15881     sequence_number = VALUE16(tvb, *offsetp);
15882     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15883             "%d (xf86vidmode-GetGammaRamp)", sequence_number);
15884     *offsetp += 2;
15885     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15886     *offsetp += 4;
15887     f_size = VALUE16(tvb, *offsetp);
15888     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_reply_size, tvb, *offsetp, 2, byte_order);
15889     *offsetp += 2;
15890     UNUSED(22);
15891     listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_red, hf_x11_xf86vidmode_GetGammaRamp_reply_red_item, ((f_size + 1) & (~1)), byte_order);
15892     listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_green, hf_x11_xf86vidmode_GetGammaRamp_reply_green_item, ((f_size + 1) & (~1)), byte_order);
15893     listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_blue, hf_x11_xf86vidmode_GetGammaRamp_reply_blue_item, ((f_size + 1) & (~1)), byte_order);
15894 }
15895
15896 static void xf86vidmodeSetGammaRamp(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15897 {
15898     int f_size;
15899     proto_tree_add_item(t, hf_x11_xf86vidmode_SetGammaRamp_screen, tvb, *offsetp, 2, byte_order);
15900     *offsetp += 2;
15901     f_size = VALUE16(tvb, *offsetp);
15902     proto_tree_add_item(t, hf_x11_xf86vidmode_SetGammaRamp_size, tvb, *offsetp, 2, byte_order);
15903     *offsetp += 2;
15904     listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_red, hf_x11_xf86vidmode_SetGammaRamp_red_item, ((f_size + 1) & (~1)), byte_order);
15905     length -= ((f_size + 1) & (~1)) * 2;
15906     listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_green, hf_x11_xf86vidmode_SetGammaRamp_green_item, ((f_size + 1) & (~1)), byte_order);
15907     length -= ((f_size + 1) & (~1)) * 2;
15908     listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_blue, hf_x11_xf86vidmode_SetGammaRamp_blue_item, ((f_size + 1) & (~1)), byte_order);
15909     length -= ((f_size + 1) & (~1)) * 2;
15910 }
15911
15912 static void xf86vidmodeGetGammaRampSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15913 {
15914     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRampSize_screen, tvb, *offsetp, 2, byte_order);
15915     *offsetp += 2;
15916     UNUSED(2);
15917 }
15918 static void xf86vidmodeGetGammaRampSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15919 {
15920     int sequence_number;
15921
15922     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetGammaRampSize");
15923
15924     REPLY(reply);
15925     UNUSED(1);
15926     sequence_number = VALUE16(tvb, *offsetp);
15927     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15928             "%d (xf86vidmode-GetGammaRampSize)", sequence_number);
15929     *offsetp += 2;
15930     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15931     *offsetp += 4;
15932     proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRampSize_reply_size, tvb, *offsetp, 2, byte_order);
15933     *offsetp += 2;
15934     UNUSED(22);
15935 }
15936
15937 static void xf86vidmodeGetPermissions(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
15938 {
15939     proto_tree_add_item(t, hf_x11_xf86vidmode_GetPermissions_screen, tvb, *offsetp, 2, byte_order);
15940     *offsetp += 2;
15941     UNUSED(2);
15942 }
15943 static void xf86vidmodeGetPermissions_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
15944 {
15945     int sequence_number;
15946
15947     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPermissions");
15948
15949     REPLY(reply);
15950     UNUSED(1);
15951     sequence_number = VALUE16(tvb, *offsetp);
15952     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
15953             "%d (xf86vidmode-GetPermissions)", sequence_number);
15954     *offsetp += 2;
15955     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
15956     *offsetp += 4;
15957     {
15958         const int* permissions_bits [] = {
15959         &hf_x11_xf86vidmode_GetPermissions_reply_permissions_mask_Read,
15960         &hf_x11_xf86vidmode_GetPermissions_reply_permissions_mask_Write,
15961         };
15962         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xf86vidmode_GetPermissions_reply_permissions, ett_x11_rectangle, permissions_bits, byte_order);
15963     }
15964     *offsetp += 4;
15965     UNUSED(20);
15966 }
15967 static const value_string xf86vidmode_extension_minor[] = {
15968     { 0, "QueryVersion" },
15969     { 1, "GetModeLine" },
15970     { 2, "ModModeLine" },
15971     { 3, "SwitchMode" },
15972     { 4, "GetMonitor" },
15973     { 5, "LockModeSwitch" },
15974     { 6, "GetAllModeLines" },
15975     { 7, "AddModeLine" },
15976     { 8, "DeleteModeLine" },
15977     { 9, "ValidateModeLine" },
15978     { 10, "SwitchToMode" },
15979     { 11, "GetViewPort" },
15980     { 12, "SetViewPort" },
15981     { 13, "GetDotClocks" },
15982     { 14, "SetClientVersion" },
15983     { 15, "SetGamma" },
15984     { 16, "GetGamma" },
15985     { 17, "GetGammaRamp" },
15986     { 18, "SetGammaRamp" },
15987     { 19, "GetGammaRampSize" },
15988     { 20, "GetPermissions" },
15989     { 0, NULL }
15990 };
15991 const x11_event_info xf86vidmode_events[] = {
15992     { NULL, NULL }
15993 };
15994 static x11_reply_info xf86vidmode_replies[] = {
15995     { 0, xf86vidmodeQueryVersion_Reply },
15996     { 1, xf86vidmodeGetModeLine_Reply },
15997     { 4, xf86vidmodeGetMonitor_Reply },
15998     { 6, xf86vidmodeGetAllModeLines_Reply },
15999     { 9, xf86vidmodeValidateModeLine_Reply },
16000     { 11, xf86vidmodeGetViewPort_Reply },
16001     { 13, xf86vidmodeGetDotClocks_Reply },
16002     { 16, xf86vidmodeGetGamma_Reply },
16003     { 17, xf86vidmodeGetGammaRamp_Reply },
16004     { 19, xf86vidmodeGetGammaRampSize_Reply },
16005     { 20, xf86vidmodeGetPermissions_Reply },
16006     { 0, NULL }
16007 };
16008
16009 static void dispatch_xf86vidmode(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16010 {
16011     int minor, length;
16012     minor = CARD8(xf86vidmode_extension_minor);
16013     length = REQUEST_LENGTH();
16014
16015     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
16016                           val_to_str(minor, xf86vidmode_extension_minor,
16017                                      "<Unknown opcode %d>"));
16018     switch (minor) {
16019     case 0:
16020         xf86vidmodeQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
16021         break;
16022     case 1:
16023         xf86vidmodeGetModeLine(tvb, pinfo, offsetp, t, byte_order, length);
16024         break;
16025     case 2:
16026         xf86vidmodeModModeLine(tvb, pinfo, offsetp, t, byte_order, length);
16027         break;
16028     case 3:
16029         xf86vidmodeSwitchMode(tvb, pinfo, offsetp, t, byte_order, length);
16030         break;
16031     case 4:
16032         xf86vidmodeGetMonitor(tvb, pinfo, offsetp, t, byte_order, length);
16033         break;
16034     case 5:
16035         xf86vidmodeLockModeSwitch(tvb, pinfo, offsetp, t, byte_order, length);
16036         break;
16037     case 6:
16038         xf86vidmodeGetAllModeLines(tvb, pinfo, offsetp, t, byte_order, length);
16039         break;
16040     case 7:
16041         xf86vidmodeAddModeLine(tvb, pinfo, offsetp, t, byte_order, length);
16042         break;
16043     case 8:
16044         xf86vidmodeDeleteModeLine(tvb, pinfo, offsetp, t, byte_order, length);
16045         break;
16046     case 9:
16047         xf86vidmodeValidateModeLine(tvb, pinfo, offsetp, t, byte_order, length);
16048         break;
16049     case 10:
16050         xf86vidmodeSwitchToMode(tvb, pinfo, offsetp, t, byte_order, length);
16051         break;
16052     case 11:
16053         xf86vidmodeGetViewPort(tvb, pinfo, offsetp, t, byte_order, length);
16054         break;
16055     case 12:
16056         xf86vidmodeSetViewPort(tvb, pinfo, offsetp, t, byte_order, length);
16057         break;
16058     case 13:
16059         xf86vidmodeGetDotClocks(tvb, pinfo, offsetp, t, byte_order, length);
16060         break;
16061     case 14:
16062         xf86vidmodeSetClientVersion(tvb, pinfo, offsetp, t, byte_order, length);
16063         break;
16064     case 15:
16065         xf86vidmodeSetGamma(tvb, pinfo, offsetp, t, byte_order, length);
16066         break;
16067     case 16:
16068         xf86vidmodeGetGamma(tvb, pinfo, offsetp, t, byte_order, length);
16069         break;
16070     case 17:
16071         xf86vidmodeGetGammaRamp(tvb, pinfo, offsetp, t, byte_order, length);
16072         break;
16073     case 18:
16074         xf86vidmodeSetGammaRamp(tvb, pinfo, offsetp, t, byte_order, length);
16075         break;
16076     case 19:
16077         xf86vidmodeGetGammaRampSize(tvb, pinfo, offsetp, t, byte_order, length);
16078         break;
16079     case 20:
16080         xf86vidmodeGetPermissions(tvb, pinfo, offsetp, t, byte_order, length);
16081         break;
16082     /* No need for a default case here, since Unknown is printed above,
16083        and UNDECODED() is taken care of by dissect_x11_request */
16084     }
16085 }
16086
16087 static void register_xf86vidmode(void)
16088 {
16089     set_handler("XFree86-VidModeExtension", dispatch_xf86vidmode, xf86vidmode_errors, xf86vidmode_events, NULL, xf86vidmode_replies);
16090 }
16091
16092 static void xfixesQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16093 {
16094     proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
16095     *offsetp += 4;
16096     proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
16097     *offsetp += 4;
16098 }
16099 static void xfixesQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16100 {
16101     int sequence_number;
16102
16103     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
16104
16105     REPLY(reply);
16106     UNUSED(1);
16107     sequence_number = VALUE16(tvb, *offsetp);
16108     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16109             "%d (xfixes-QueryVersion)", sequence_number);
16110     *offsetp += 2;
16111     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16112     *offsetp += 4;
16113     proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
16114     *offsetp += 4;
16115     proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
16116     *offsetp += 4;
16117     UNUSED(16);
16118 }
16119
16120 static void xfixesChangeSaveSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16121 {
16122     field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_mode, byte_order);
16123     field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_target, byte_order);
16124     field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_map, byte_order);
16125     UNUSED(1);
16126     proto_tree_add_item(t, hf_x11_xfixes_ChangeSaveSet_window, tvb, *offsetp, 4, byte_order);
16127     *offsetp += 4;
16128 }
16129
16130 static void xfixesSelectSelectionInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16131 {
16132     proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_window, tvb, *offsetp, 4, byte_order);
16133     *offsetp += 4;
16134     proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_selection, tvb, *offsetp, 4, byte_order);
16135     *offsetp += 4;
16136     {
16137         const int* event_mask_bits [] = {
16138         &hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SetSelectionOwner,
16139         &hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionWindowDestroy,
16140         &hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionClientClose,
16141         };
16142         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xfixes_SelectSelectionInput_event_mask, ett_x11_rectangle, event_mask_bits, byte_order);
16143     }
16144     *offsetp += 4;
16145 }
16146
16147 static void xfixesCursorNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
16148 {
16149     field8(tvb, offsetp, t, hf_x11_xfixes_CursorNotify_subtype, byte_order);
16150     CARD16(event_sequencenumber);
16151     proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_window, tvb, *offsetp, 4, byte_order);
16152     *offsetp += 4;
16153     proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_cursor_serial, tvb, *offsetp, 4, byte_order);
16154     *offsetp += 4;
16155     proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_timestamp, tvb, *offsetp, 4, byte_order);
16156     *offsetp += 4;
16157     field32(tvb, offsetp, t, hf_x11_xfixes_CursorNotify_name, byte_order);
16158     UNUSED(12);
16159 }
16160
16161
16162 static void xfixesSelectCursorInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16163 {
16164     proto_tree_add_item(t, hf_x11_xfixes_SelectCursorInput_window, tvb, *offsetp, 4, byte_order);
16165     *offsetp += 4;
16166     {
16167         const int* event_mask_bits [] = {
16168         &hf_x11_xfixes_SelectCursorInput_event_mask_mask_DisplayCursor,
16169         };
16170         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xfixes_SelectCursorInput_event_mask, ett_x11_rectangle, event_mask_bits, byte_order);
16171     }
16172     *offsetp += 4;
16173 }
16174
16175 static void xfixesGetCursorImage(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
16176 {
16177 }
16178 static void xfixesGetCursorImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16179 {
16180     int sequence_number;
16181     int f_width;
16182     int f_height;
16183
16184     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCursorImage");
16185
16186     REPLY(reply);
16187     UNUSED(1);
16188     sequence_number = VALUE16(tvb, *offsetp);
16189     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16190             "%d (xfixes-GetCursorImage)", sequence_number);
16191     *offsetp += 2;
16192     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16193     *offsetp += 4;
16194     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_x, tvb, *offsetp, 2, byte_order);
16195     *offsetp += 2;
16196     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_y, tvb, *offsetp, 2, byte_order);
16197     *offsetp += 2;
16198     f_width = VALUE16(tvb, *offsetp);
16199     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_width, tvb, *offsetp, 2, byte_order);
16200     *offsetp += 2;
16201     f_height = VALUE16(tvb, *offsetp);
16202     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_height, tvb, *offsetp, 2, byte_order);
16203     *offsetp += 2;
16204     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_xhot, tvb, *offsetp, 2, byte_order);
16205     *offsetp += 2;
16206     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_yhot, tvb, *offsetp, 2, byte_order);
16207     *offsetp += 2;
16208     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_cursor_serial, tvb, *offsetp, 4, byte_order);
16209     *offsetp += 4;
16210     UNUSED(8);
16211     listOfCard32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImage_reply_cursor_image, hf_x11_xfixes_GetCursorImage_reply_cursor_image_item, (f_width * f_height), byte_order);
16212 }
16213
16214 static void xfixesCreateRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16215 {
16216     proto_tree_add_item(t, hf_x11_xfixes_CreateRegion_region, tvb, *offsetp, 4, byte_order);
16217     *offsetp += 4;
16218     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, (length - 8) / 8);
16219 }
16220
16221 static void xfixesCreateRegionFromBitmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16222 {
16223     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromBitmap_region, tvb, *offsetp, 4, byte_order);
16224     *offsetp += 4;
16225     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromBitmap_bitmap, tvb, *offsetp, 4, byte_order);
16226     *offsetp += 4;
16227 }
16228
16229 static void xfixesCreateRegionFromWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16230 {
16231     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromWindow_region, tvb, *offsetp, 4, byte_order);
16232     *offsetp += 4;
16233     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromWindow_window, tvb, *offsetp, 4, byte_order);
16234     *offsetp += 4;
16235     field8(tvb, offsetp, t, hf_x11_xfixes_CreateRegionFromWindow_kind, byte_order);
16236     UNUSED(3);
16237 }
16238
16239 static void xfixesCreateRegionFromGC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16240 {
16241     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromGC_region, tvb, *offsetp, 4, byte_order);
16242     *offsetp += 4;
16243     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromGC_gc, tvb, *offsetp, 4, byte_order);
16244     *offsetp += 4;
16245 }
16246
16247 static void xfixesCreateRegionFromPicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16248 {
16249     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromPicture_region, tvb, *offsetp, 4, byte_order);
16250     *offsetp += 4;
16251     proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromPicture_picture, tvb, *offsetp, 4, byte_order);
16252     *offsetp += 4;
16253 }
16254
16255 static void xfixesDestroyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16256 {
16257     proto_tree_add_item(t, hf_x11_xfixes_DestroyRegion_region, tvb, *offsetp, 4, byte_order);
16258     *offsetp += 4;
16259 }
16260
16261 static void xfixesSetRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16262 {
16263     proto_tree_add_item(t, hf_x11_xfixes_SetRegion_region, tvb, *offsetp, 4, byte_order);
16264     *offsetp += 4;
16265     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, (length - 8) / 8);
16266 }
16267
16268 static void xfixesCopyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16269 {
16270     proto_tree_add_item(t, hf_x11_xfixes_CopyRegion_source, tvb, *offsetp, 4, byte_order);
16271     *offsetp += 4;
16272     proto_tree_add_item(t, hf_x11_xfixes_CopyRegion_destination, tvb, *offsetp, 4, byte_order);
16273     *offsetp += 4;
16274 }
16275
16276 static void xfixesUnionRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16277 {
16278     proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_source1, tvb, *offsetp, 4, byte_order);
16279     *offsetp += 4;
16280     proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_source2, tvb, *offsetp, 4, byte_order);
16281     *offsetp += 4;
16282     proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_destination, tvb, *offsetp, 4, byte_order);
16283     *offsetp += 4;
16284 }
16285
16286 static void xfixesIntersectRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16287 {
16288     proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_source1, tvb, *offsetp, 4, byte_order);
16289     *offsetp += 4;
16290     proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_source2, tvb, *offsetp, 4, byte_order);
16291     *offsetp += 4;
16292     proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_destination, tvb, *offsetp, 4, byte_order);
16293     *offsetp += 4;
16294 }
16295
16296 static void xfixesSubtractRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16297 {
16298     proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_source1, tvb, *offsetp, 4, byte_order);
16299     *offsetp += 4;
16300     proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_source2, tvb, *offsetp, 4, byte_order);
16301     *offsetp += 4;
16302     proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_destination, tvb, *offsetp, 4, byte_order);
16303     *offsetp += 4;
16304 }
16305
16306 static void xfixesInvertRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16307 {
16308     proto_tree_add_item(t, hf_x11_xfixes_InvertRegion_source, tvb, *offsetp, 4, byte_order);
16309     *offsetp += 4;
16310     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, 1);
16311     proto_tree_add_item(t, hf_x11_xfixes_InvertRegion_destination, tvb, *offsetp, 4, byte_order);
16312     *offsetp += 4;
16313 }
16314
16315 static void xfixesTranslateRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16316 {
16317     proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_region, tvb, *offsetp, 4, byte_order);
16318     *offsetp += 4;
16319     proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_dx, tvb, *offsetp, 2, byte_order);
16320     *offsetp += 2;
16321     proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_dy, tvb, *offsetp, 2, byte_order);
16322     *offsetp += 2;
16323 }
16324
16325 static void xfixesRegionExtents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16326 {
16327     proto_tree_add_item(t, hf_x11_xfixes_RegionExtents_source, tvb, *offsetp, 4, byte_order);
16328     *offsetp += 4;
16329     proto_tree_add_item(t, hf_x11_xfixes_RegionExtents_destination, tvb, *offsetp, 4, byte_order);
16330     *offsetp += 4;
16331 }
16332
16333 static void xfixesFetchRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16334 {
16335     proto_tree_add_item(t, hf_x11_xfixes_FetchRegion_region, tvb, *offsetp, 4, byte_order);
16336     *offsetp += 4;
16337 }
16338 static void xfixesFetchRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16339 {
16340     int sequence_number;
16341     int f_length;
16342
16343     col_append_fstr(pinfo->cinfo, COL_INFO, "-FetchRegion");
16344
16345     REPLY(reply);
16346     UNUSED(1);
16347     sequence_number = VALUE16(tvb, *offsetp);
16348     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16349             "%d (xfixes-FetchRegion)", sequence_number);
16350     *offsetp += 2;
16351     f_length = VALUE32(tvb, *offsetp);
16352     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16353     *offsetp += 4;
16354     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, 1);
16355     UNUSED(16);
16356     struct_xproto_RECTANGLE(tvb, offsetp, t, byte_order, (f_length / 2));
16357 }
16358
16359 static void xfixesSetGCClipRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16360 {
16361     proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_gc, tvb, *offsetp, 4, byte_order);
16362     *offsetp += 4;
16363     field32(tvb, offsetp, t, hf_x11_xfixes_SetGCClipRegion_region, byte_order);
16364     proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_x_origin, tvb, *offsetp, 2, byte_order);
16365     *offsetp += 2;
16366     proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_y_origin, tvb, *offsetp, 2, byte_order);
16367     *offsetp += 2;
16368 }
16369
16370 static void xfixesSetWindowShapeRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16371 {
16372     proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_dest, tvb, *offsetp, 4, byte_order);
16373     *offsetp += 4;
16374     field8(tvb, offsetp, t, hf_x11_xfixes_SetWindowShapeRegion_dest_kind, byte_order);
16375     UNUSED(3);
16376     proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_x_offset, tvb, *offsetp, 2, byte_order);
16377     *offsetp += 2;
16378     proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_y_offset, tvb, *offsetp, 2, byte_order);
16379     *offsetp += 2;
16380     field32(tvb, offsetp, t, hf_x11_xfixes_SetWindowShapeRegion_region, byte_order);
16381 }
16382
16383 static void xfixesSetPictureClipRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16384 {
16385     proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_picture, tvb, *offsetp, 4, byte_order);
16386     *offsetp += 4;
16387     field32(tvb, offsetp, t, hf_x11_xfixes_SetPictureClipRegion_region, byte_order);
16388     proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_x_origin, tvb, *offsetp, 2, byte_order);
16389     *offsetp += 2;
16390     proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_y_origin, tvb, *offsetp, 2, byte_order);
16391     *offsetp += 2;
16392 }
16393
16394 static void xfixesSetCursorName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16395 {
16396     int f_nbytes;
16397     proto_tree_add_item(t, hf_x11_xfixes_SetCursorName_cursor, tvb, *offsetp, 4, byte_order);
16398     *offsetp += 4;
16399     f_nbytes = VALUE16(tvb, *offsetp);
16400     proto_tree_add_item(t, hf_x11_xfixes_SetCursorName_nbytes, tvb, *offsetp, 2, byte_order);
16401     *offsetp += 2;
16402     UNUSED(2);
16403     listOfByte(tvb, offsetp, t, hf_x11_xfixes_SetCursorName_name, f_nbytes, byte_order);
16404     length -= f_nbytes * 1;
16405 }
16406
16407 static void xfixesGetCursorName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16408 {
16409     proto_tree_add_item(t, hf_x11_xfixes_GetCursorName_cursor, tvb, *offsetp, 4, byte_order);
16410     *offsetp += 4;
16411 }
16412 static void xfixesGetCursorName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16413 {
16414     int sequence_number;
16415     int f_nbytes;
16416
16417     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCursorName");
16418
16419     REPLY(reply);
16420     UNUSED(1);
16421     sequence_number = VALUE16(tvb, *offsetp);
16422     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16423             "%d (xfixes-GetCursorName)", sequence_number);
16424     *offsetp += 2;
16425     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16426     *offsetp += 4;
16427     field32(tvb, offsetp, t, hf_x11_xfixes_GetCursorName_reply_atom, byte_order);
16428     f_nbytes = VALUE16(tvb, *offsetp);
16429     proto_tree_add_item(t, hf_x11_xfixes_GetCursorName_reply_nbytes, tvb, *offsetp, 2, byte_order);
16430     *offsetp += 2;
16431     UNUSED(18);
16432     listOfByte(tvb, offsetp, t, hf_x11_xfixes_GetCursorName_reply_name, f_nbytes, byte_order);
16433 }
16434
16435 static void xfixesGetCursorImageAndName(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
16436 {
16437 }
16438 static void xfixesGetCursorImageAndName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16439 {
16440     int sequence_number;
16441     int f_width;
16442     int f_height;
16443     int f_nbytes;
16444
16445     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCursorImageAndName");
16446
16447     REPLY(reply);
16448     UNUSED(1);
16449     sequence_number = VALUE16(tvb, *offsetp);
16450     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16451             "%d (xfixes-GetCursorImageAndName)", sequence_number);
16452     *offsetp += 2;
16453     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16454     *offsetp += 4;
16455     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_x, tvb, *offsetp, 2, byte_order);
16456     *offsetp += 2;
16457     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_y, tvb, *offsetp, 2, byte_order);
16458     *offsetp += 2;
16459     f_width = VALUE16(tvb, *offsetp);
16460     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_width, tvb, *offsetp, 2, byte_order);
16461     *offsetp += 2;
16462     f_height = VALUE16(tvb, *offsetp);
16463     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_height, tvb, *offsetp, 2, byte_order);
16464     *offsetp += 2;
16465     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_xhot, tvb, *offsetp, 2, byte_order);
16466     *offsetp += 2;
16467     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_yhot, tvb, *offsetp, 2, byte_order);
16468     *offsetp += 2;
16469     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_serial, tvb, *offsetp, 4, byte_order);
16470     *offsetp += 4;
16471     field32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_atom, byte_order);
16472     f_nbytes = VALUE16(tvb, *offsetp);
16473     proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_nbytes, tvb, *offsetp, 2, byte_order);
16474     *offsetp += 2;
16475     UNUSED(2);
16476     listOfCard32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_image, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_image_item, (f_width * f_height), byte_order);
16477     listOfByte(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_name, f_nbytes, byte_order);
16478 }
16479
16480 static void xfixesChangeCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16481 {
16482     proto_tree_add_item(t, hf_x11_xfixes_ChangeCursor_source, tvb, *offsetp, 4, byte_order);
16483     *offsetp += 4;
16484     proto_tree_add_item(t, hf_x11_xfixes_ChangeCursor_destination, tvb, *offsetp, 4, byte_order);
16485     *offsetp += 4;
16486 }
16487
16488 static void xfixesChangeCursorByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16489 {
16490     int f_nbytes;
16491     proto_tree_add_item(t, hf_x11_xfixes_ChangeCursorByName_src, tvb, *offsetp, 4, byte_order);
16492     *offsetp += 4;
16493     f_nbytes = VALUE16(tvb, *offsetp);
16494     proto_tree_add_item(t, hf_x11_xfixes_ChangeCursorByName_nbytes, tvb, *offsetp, 2, byte_order);
16495     *offsetp += 2;
16496     UNUSED(2);
16497     listOfByte(tvb, offsetp, t, hf_x11_xfixes_ChangeCursorByName_name, f_nbytes, byte_order);
16498     length -= f_nbytes * 1;
16499 }
16500
16501 static void xfixesExpandRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16502 {
16503     proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_source, tvb, *offsetp, 4, byte_order);
16504     *offsetp += 4;
16505     proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_destination, tvb, *offsetp, 4, byte_order);
16506     *offsetp += 4;
16507     proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_left, tvb, *offsetp, 2, byte_order);
16508     *offsetp += 2;
16509     proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_right, tvb, *offsetp, 2, byte_order);
16510     *offsetp += 2;
16511     proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_top, tvb, *offsetp, 2, byte_order);
16512     *offsetp += 2;
16513     proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_bottom, tvb, *offsetp, 2, byte_order);
16514     *offsetp += 2;
16515 }
16516
16517 static void xfixesHideCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16518 {
16519     proto_tree_add_item(t, hf_x11_xfixes_HideCursor_window, tvb, *offsetp, 4, byte_order);
16520     *offsetp += 4;
16521 }
16522
16523 static void xfixesShowCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16524 {
16525     proto_tree_add_item(t, hf_x11_xfixes_ShowCursor_window, tvb, *offsetp, 4, byte_order);
16526     *offsetp += 4;
16527 }
16528
16529 static void xfixesCreatePointerBarrier(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16530 {
16531     int f_num_devices;
16532     proto_tree_add_item(t, hf_x11_xfixes_CreatePointerBarrier_barrier, tvb, *offsetp, 4, byte_order);
16533     *offsetp += 4;
16534     proto_tree_add_item(t, hf_x11_xfixes_CreatePointerBarrier_window, tvb, *offsetp, 4, byte_order);
16535     *offsetp += 4;
16536     proto_tree_add_item(t, hf_x11_xfixes_CreatePointerBarrier_x1, tvb, *offsetp, 2, byte_order);
16537     *offsetp += 2;
16538     proto_tree_add_item(t, hf_x11_xfixes_CreatePointerBarrier_y1, tvb, *offsetp, 2, byte_order);
16539     *offsetp += 2;
16540     proto_tree_add_item(t, hf_x11_xfixes_CreatePointerBarrier_x2, tvb, *offsetp, 2, byte_order);
16541     *offsetp += 2;
16542     proto_tree_add_item(t, hf_x11_xfixes_CreatePointerBarrier_y2, tvb, *offsetp, 2, byte_order);
16543     *offsetp += 2;
16544     {
16545         const int* directions_bits [] = {
16546         &hf_x11_xfixes_CreatePointerBarrier_directions_mask_PositiveX,
16547         &hf_x11_xfixes_CreatePointerBarrier_directions_mask_PositiveY,
16548         &hf_x11_xfixes_CreatePointerBarrier_directions_mask_NegativeX,
16549         &hf_x11_xfixes_CreatePointerBarrier_directions_mask_NegativeY,
16550         };
16551         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xfixes_CreatePointerBarrier_directions, ett_x11_rectangle, directions_bits, byte_order);
16552     }
16553     *offsetp += 4;
16554     UNUSED(2);
16555     f_num_devices = VALUE16(tvb, *offsetp);
16556     proto_tree_add_item(t, hf_x11_xfixes_CreatePointerBarrier_num_devices, tvb, *offsetp, 2, byte_order);
16557     *offsetp += 2;
16558     listOfCard16(tvb, offsetp, t, hf_x11_xfixes_CreatePointerBarrier_devices, hf_x11_xfixes_CreatePointerBarrier_devices_item, f_num_devices, byte_order);
16559     length -= f_num_devices * 2;
16560 }
16561
16562 static void xfixesDeletePointerBarrier(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16563 {
16564     proto_tree_add_item(t, hf_x11_xfixes_DeletePointerBarrier_barrier, tvb, *offsetp, 4, byte_order);
16565     *offsetp += 4;
16566 }
16567 static const value_string xfixes_extension_minor[] = {
16568     { 0, "QueryVersion" },
16569     { 1, "ChangeSaveSet" },
16570     { 2, "SelectSelectionInput" },
16571     { 3, "SelectCursorInput" },
16572     { 4, "GetCursorImage" },
16573     { 5, "CreateRegion" },
16574     { 6, "CreateRegionFromBitmap" },
16575     { 7, "CreateRegionFromWindow" },
16576     { 8, "CreateRegionFromGC" },
16577     { 9, "CreateRegionFromPicture" },
16578     { 10, "DestroyRegion" },
16579     { 11, "SetRegion" },
16580     { 12, "CopyRegion" },
16581     { 13, "UnionRegion" },
16582     { 14, "IntersectRegion" },
16583     { 15, "SubtractRegion" },
16584     { 16, "InvertRegion" },
16585     { 17, "TranslateRegion" },
16586     { 18, "RegionExtents" },
16587     { 19, "FetchRegion" },
16588     { 20, "SetGCClipRegion" },
16589     { 21, "SetWindowShapeRegion" },
16590     { 22, "SetPictureClipRegion" },
16591     { 23, "SetCursorName" },
16592     { 24, "GetCursorName" },
16593     { 25, "GetCursorImageAndName" },
16594     { 26, "ChangeCursor" },
16595     { 27, "ChangeCursorByName" },
16596     { 28, "ExpandRegion" },
16597     { 29, "HideCursor" },
16598     { 30, "ShowCursor" },
16599     { 31, "CreatePointerBarrier" },
16600     { 32, "DeletePointerBarrier" },
16601     { 0, NULL }
16602 };
16603 const x11_event_info xfixes_events[] = {
16604     { "xfixes-CursorNotify", xfixesCursorNotify },
16605     { NULL, NULL }
16606 };
16607 static x11_reply_info xfixes_replies[] = {
16608     { 0, xfixesQueryVersion_Reply },
16609     { 4, xfixesGetCursorImage_Reply },
16610     { 19, xfixesFetchRegion_Reply },
16611     { 24, xfixesGetCursorName_Reply },
16612     { 25, xfixesGetCursorImageAndName_Reply },
16613     { 0, NULL }
16614 };
16615
16616 static void dispatch_xfixes(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16617 {
16618     int minor, length;
16619     minor = CARD8(xfixes_extension_minor);
16620     length = REQUEST_LENGTH();
16621
16622     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
16623                           val_to_str(minor, xfixes_extension_minor,
16624                                      "<Unknown opcode %d>"));
16625     switch (minor) {
16626     case 0:
16627         xfixesQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
16628         break;
16629     case 1:
16630         xfixesChangeSaveSet(tvb, pinfo, offsetp, t, byte_order, length);
16631         break;
16632     case 2:
16633         xfixesSelectSelectionInput(tvb, pinfo, offsetp, t, byte_order, length);
16634         break;
16635     case 3:
16636         xfixesSelectCursorInput(tvb, pinfo, offsetp, t, byte_order, length);
16637         break;
16638     case 4:
16639         xfixesGetCursorImage(tvb, pinfo, offsetp, t, byte_order, length);
16640         break;
16641     case 5:
16642         xfixesCreateRegion(tvb, pinfo, offsetp, t, byte_order, length);
16643         break;
16644     case 6:
16645         xfixesCreateRegionFromBitmap(tvb, pinfo, offsetp, t, byte_order, length);
16646         break;
16647     case 7:
16648         xfixesCreateRegionFromWindow(tvb, pinfo, offsetp, t, byte_order, length);
16649         break;
16650     case 8:
16651         xfixesCreateRegionFromGC(tvb, pinfo, offsetp, t, byte_order, length);
16652         break;
16653     case 9:
16654         xfixesCreateRegionFromPicture(tvb, pinfo, offsetp, t, byte_order, length);
16655         break;
16656     case 10:
16657         xfixesDestroyRegion(tvb, pinfo, offsetp, t, byte_order, length);
16658         break;
16659     case 11:
16660         xfixesSetRegion(tvb, pinfo, offsetp, t, byte_order, length);
16661         break;
16662     case 12:
16663         xfixesCopyRegion(tvb, pinfo, offsetp, t, byte_order, length);
16664         break;
16665     case 13:
16666         xfixesUnionRegion(tvb, pinfo, offsetp, t, byte_order, length);
16667         break;
16668     case 14:
16669         xfixesIntersectRegion(tvb, pinfo, offsetp, t, byte_order, length);
16670         break;
16671     case 15:
16672         xfixesSubtractRegion(tvb, pinfo, offsetp, t, byte_order, length);
16673         break;
16674     case 16:
16675         xfixesInvertRegion(tvb, pinfo, offsetp, t, byte_order, length);
16676         break;
16677     case 17:
16678         xfixesTranslateRegion(tvb, pinfo, offsetp, t, byte_order, length);
16679         break;
16680     case 18:
16681         xfixesRegionExtents(tvb, pinfo, offsetp, t, byte_order, length);
16682         break;
16683     case 19:
16684         xfixesFetchRegion(tvb, pinfo, offsetp, t, byte_order, length);
16685         break;
16686     case 20:
16687         xfixesSetGCClipRegion(tvb, pinfo, offsetp, t, byte_order, length);
16688         break;
16689     case 21:
16690         xfixesSetWindowShapeRegion(tvb, pinfo, offsetp, t, byte_order, length);
16691         break;
16692     case 22:
16693         xfixesSetPictureClipRegion(tvb, pinfo, offsetp, t, byte_order, length);
16694         break;
16695     case 23:
16696         xfixesSetCursorName(tvb, pinfo, offsetp, t, byte_order, length);
16697         break;
16698     case 24:
16699         xfixesGetCursorName(tvb, pinfo, offsetp, t, byte_order, length);
16700         break;
16701     case 25:
16702         xfixesGetCursorImageAndName(tvb, pinfo, offsetp, t, byte_order, length);
16703         break;
16704     case 26:
16705         xfixesChangeCursor(tvb, pinfo, offsetp, t, byte_order, length);
16706         break;
16707     case 27:
16708         xfixesChangeCursorByName(tvb, pinfo, offsetp, t, byte_order, length);
16709         break;
16710     case 28:
16711         xfixesExpandRegion(tvb, pinfo, offsetp, t, byte_order, length);
16712         break;
16713     case 29:
16714         xfixesHideCursor(tvb, pinfo, offsetp, t, byte_order, length);
16715         break;
16716     case 30:
16717         xfixesShowCursor(tvb, pinfo, offsetp, t, byte_order, length);
16718         break;
16719     case 31:
16720         xfixesCreatePointerBarrier(tvb, pinfo, offsetp, t, byte_order, length);
16721         break;
16722     case 32:
16723         xfixesDeletePointerBarrier(tvb, pinfo, offsetp, t, byte_order, length);
16724         break;
16725     /* No need for a default case here, since Unknown is printed above,
16726        and UNDECODED() is taken care of by dissect_x11_request */
16727     }
16728 }
16729
16730 static void register_xfixes(void)
16731 {
16732     set_handler("XFIXES", dispatch_xfixes, xfixes_errors, xfixes_events, NULL, xfixes_replies);
16733 }
16734
16735 static void struct_xinerama_ScreenInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
16736 {
16737     int i;
16738     for (i = 0; i < count; i++) {
16739         proto_item *item;
16740         proto_tree *t;
16741
16742         item = proto_tree_add_item(root, hf_x11_struct_xinerama_ScreenInfo, tvb, *offsetp, 8, ENC_NA);
16743         t = proto_item_add_subtree(item, ett_x11_rectangle);
16744         proto_tree_add_item(t, hf_x11_struct_xinerama_ScreenInfo_x_org, tvb, *offsetp, 2, byte_order);
16745         *offsetp += 2;
16746         proto_tree_add_item(t, hf_x11_struct_xinerama_ScreenInfo_y_org, tvb, *offsetp, 2, byte_order);
16747         *offsetp += 2;
16748         proto_tree_add_item(t, hf_x11_struct_xinerama_ScreenInfo_width, tvb, *offsetp, 2, byte_order);
16749         *offsetp += 2;
16750         proto_tree_add_item(t, hf_x11_struct_xinerama_ScreenInfo_height, tvb, *offsetp, 2, byte_order);
16751         *offsetp += 2;
16752     }
16753 }
16754
16755 static void xineramaQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16756 {
16757     proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_major, tvb, *offsetp, 1, byte_order);
16758     *offsetp += 1;
16759     proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_minor, tvb, *offsetp, 1, byte_order);
16760     *offsetp += 1;
16761 }
16762 static void xineramaQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16763 {
16764     int sequence_number;
16765
16766     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
16767
16768     REPLY(reply);
16769     UNUSED(1);
16770     sequence_number = VALUE16(tvb, *offsetp);
16771     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16772             "%d (xinerama-QueryVersion)", sequence_number);
16773     *offsetp += 2;
16774     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16775     *offsetp += 4;
16776     proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_reply_major, tvb, *offsetp, 2, byte_order);
16777     *offsetp += 2;
16778     proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_reply_minor, tvb, *offsetp, 2, byte_order);
16779     *offsetp += 2;
16780 }
16781
16782 static void xineramaGetState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16783 {
16784     proto_tree_add_item(t, hf_x11_xinerama_GetState_window, tvb, *offsetp, 4, byte_order);
16785     *offsetp += 4;
16786 }
16787 static void xineramaGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16788 {
16789     int sequence_number;
16790
16791     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetState");
16792
16793     REPLY(reply);
16794     proto_tree_add_item(t, hf_x11_xinerama_GetState_reply_state, tvb, *offsetp, 1, ENC_NA);
16795     *offsetp += 1;
16796     sequence_number = VALUE16(tvb, *offsetp);
16797     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16798             "%d (xinerama-GetState)", sequence_number);
16799     *offsetp += 2;
16800     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16801     *offsetp += 4;
16802     proto_tree_add_item(t, hf_x11_xinerama_GetState_reply_window, tvb, *offsetp, 4, byte_order);
16803     *offsetp += 4;
16804 }
16805
16806 static void xineramaGetScreenCount(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16807 {
16808     proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_window, tvb, *offsetp, 4, byte_order);
16809     *offsetp += 4;
16810 }
16811 static void xineramaGetScreenCount_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16812 {
16813     int sequence_number;
16814
16815     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetScreenCount");
16816
16817     REPLY(reply);
16818     proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_reply_screen_count, tvb, *offsetp, 1, ENC_NA);
16819     *offsetp += 1;
16820     sequence_number = VALUE16(tvb, *offsetp);
16821     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16822             "%d (xinerama-GetScreenCount)", sequence_number);
16823     *offsetp += 2;
16824     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16825     *offsetp += 4;
16826     proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_reply_window, tvb, *offsetp, 4, byte_order);
16827     *offsetp += 4;
16828 }
16829
16830 static void xineramaGetScreenSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16831 {
16832     proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_window, tvb, *offsetp, 4, byte_order);
16833     *offsetp += 4;
16834     proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_screen, tvb, *offsetp, 4, byte_order);
16835     *offsetp += 4;
16836 }
16837 static void xineramaGetScreenSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16838 {
16839     int sequence_number;
16840
16841     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetScreenSize");
16842
16843     REPLY(reply);
16844     UNUSED(1);
16845     sequence_number = VALUE16(tvb, *offsetp);
16846     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16847             "%d (xinerama-GetScreenSize)", sequence_number);
16848     *offsetp += 2;
16849     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16850     *offsetp += 4;
16851     proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_width, tvb, *offsetp, 4, byte_order);
16852     *offsetp += 4;
16853     proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_height, tvb, *offsetp, 4, byte_order);
16854     *offsetp += 4;
16855     proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_window, tvb, *offsetp, 4, byte_order);
16856     *offsetp += 4;
16857     proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_screen, tvb, *offsetp, 4, byte_order);
16858     *offsetp += 4;
16859 }
16860
16861 static void xineramaIsActive(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
16862 {
16863 }
16864 static void xineramaIsActive_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16865 {
16866     int sequence_number;
16867
16868     col_append_fstr(pinfo->cinfo, COL_INFO, "-IsActive");
16869
16870     REPLY(reply);
16871     UNUSED(1);
16872     sequence_number = VALUE16(tvb, *offsetp);
16873     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16874             "%d (xinerama-IsActive)", sequence_number);
16875     *offsetp += 2;
16876     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16877     *offsetp += 4;
16878     proto_tree_add_item(t, hf_x11_xinerama_IsActive_reply_state, tvb, *offsetp, 4, byte_order);
16879     *offsetp += 4;
16880 }
16881
16882 static void xineramaQueryScreens(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
16883 {
16884 }
16885 static void xineramaQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16886 {
16887     int sequence_number;
16888     int f_number;
16889
16890     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryScreens");
16891
16892     REPLY(reply);
16893     UNUSED(1);
16894     sequence_number = VALUE16(tvb, *offsetp);
16895     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
16896             "%d (xinerama-QueryScreens)", sequence_number);
16897     *offsetp += 2;
16898     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
16899     *offsetp += 4;
16900     f_number = VALUE32(tvb, *offsetp);
16901     proto_tree_add_item(t, hf_x11_xinerama_QueryScreens_reply_number, tvb, *offsetp, 4, byte_order);
16902     *offsetp += 4;
16903     UNUSED(20);
16904     struct_xinerama_ScreenInfo(tvb, offsetp, t, byte_order, f_number);
16905 }
16906 static const value_string xinerama_extension_minor[] = {
16907     { 0, "QueryVersion" },
16908     { 1, "GetState" },
16909     { 2, "GetScreenCount" },
16910     { 3, "GetScreenSize" },
16911     { 4, "IsActive" },
16912     { 5, "QueryScreens" },
16913     { 0, NULL }
16914 };
16915 const x11_event_info xinerama_events[] = {
16916     { NULL, NULL }
16917 };
16918 static x11_reply_info xinerama_replies[] = {
16919     { 0, xineramaQueryVersion_Reply },
16920     { 1, xineramaGetState_Reply },
16921     { 2, xineramaGetScreenCount_Reply },
16922     { 3, xineramaGetScreenSize_Reply },
16923     { 4, xineramaIsActive_Reply },
16924     { 5, xineramaQueryScreens_Reply },
16925     { 0, NULL }
16926 };
16927
16928 static void dispatch_xinerama(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16929 {
16930     int minor, length;
16931     minor = CARD8(xinerama_extension_minor);
16932     length = REQUEST_LENGTH();
16933
16934     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
16935                           val_to_str(minor, xinerama_extension_minor,
16936                                      "<Unknown opcode %d>"));
16937     switch (minor) {
16938     case 0:
16939         xineramaQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
16940         break;
16941     case 1:
16942         xineramaGetState(tvb, pinfo, offsetp, t, byte_order, length);
16943         break;
16944     case 2:
16945         xineramaGetScreenCount(tvb, pinfo, offsetp, t, byte_order, length);
16946         break;
16947     case 3:
16948         xineramaGetScreenSize(tvb, pinfo, offsetp, t, byte_order, length);
16949         break;
16950     case 4:
16951         xineramaIsActive(tvb, pinfo, offsetp, t, byte_order, length);
16952         break;
16953     case 5:
16954         xineramaQueryScreens(tvb, pinfo, offsetp, t, byte_order, length);
16955         break;
16956     /* No need for a default case here, since Unknown is printed above,
16957        and UNDECODED() is taken care of by dissect_x11_request */
16958     }
16959 }
16960
16961 static void register_xinerama(void)
16962 {
16963     set_handler("XINERAMA", dispatch_xinerama, xinerama_errors, xinerama_events, NULL, xinerama_replies);
16964 }
16965
16966 static void struct_xinput_FP3232(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
16967 {
16968     int i;
16969     for (i = 0; i < count; i++) {
16970         proto_item *item;
16971         proto_tree *t;
16972
16973         item = proto_tree_add_item(root, hf_x11_struct_xinput_FP3232, tvb, *offsetp, 8, ENC_NA);
16974         t = proto_item_add_subtree(item, ett_x11_rectangle);
16975         proto_tree_add_item(t, hf_x11_struct_xinput_FP3232_integral, tvb, *offsetp, 4, byte_order);
16976         *offsetp += 4;
16977         proto_tree_add_item(t, hf_x11_struct_xinput_FP3232_frac, tvb, *offsetp, 4, byte_order);
16978         *offsetp += 4;
16979     }
16980 }
16981
16982 static void xinputGetExtensionVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
16983 {
16984     int f_name_len;
16985     f_name_len = VALUE16(tvb, *offsetp);
16986     proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_name_len, tvb, *offsetp, 2, byte_order);
16987     *offsetp += 2;
16988     UNUSED(2);
16989     listOfByte(tvb, offsetp, t, hf_x11_xinput_GetExtensionVersion_name, f_name_len, byte_order);
16990     length -= f_name_len * 1;
16991 }
16992 static void xinputGetExtensionVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
16993 {
16994     int sequence_number;
16995
16996     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetExtensionVersion");
16997
16998     REPLY(reply);
16999     proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17000     *offsetp += 1;
17001     sequence_number = VALUE16(tvb, *offsetp);
17002     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17003             "%d (xinput-GetExtensionVersion)", sequence_number);
17004     *offsetp += 2;
17005     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17006     *offsetp += 4;
17007     proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_server_major, tvb, *offsetp, 2, byte_order);
17008     *offsetp += 2;
17009     proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_server_minor, tvb, *offsetp, 2, byte_order);
17010     *offsetp += 2;
17011     proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_present, tvb, *offsetp, 1, byte_order);
17012     *offsetp += 1;
17013     UNUSED(19);
17014 }
17015
17016 static void struct_xinput_DeviceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
17017 {
17018     int i;
17019     for (i = 0; i < count; i++) {
17020         proto_item *item;
17021         proto_tree *t;
17022
17023         item = proto_tree_add_item(root, hf_x11_struct_xinput_DeviceInfo, tvb, *offsetp, 8, ENC_NA);
17024         t = proto_item_add_subtree(item, ett_x11_rectangle);
17025         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceInfo_device_type, tvb, *offsetp, 4, byte_order);
17026         *offsetp += 4;
17027         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceInfo_device_id, tvb, *offsetp, 1, byte_order);
17028         *offsetp += 1;
17029         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceInfo_num_class_info, tvb, *offsetp, 1, byte_order);
17030         *offsetp += 1;
17031         field8(tvb, offsetp, t, hf_x11_struct_xinput_DeviceInfo_device_use, byte_order);
17032         UNUSED(1);
17033     }
17034 }
17035
17036 static void struct_xinput_AxisInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
17037 {
17038     int i;
17039     for (i = 0; i < count; i++) {
17040         proto_item *item;
17041         proto_tree *t;
17042
17043         item = proto_tree_add_item(root, hf_x11_struct_xinput_AxisInfo, tvb, *offsetp, 12, ENC_NA);
17044         t = proto_item_add_subtree(item, ett_x11_rectangle);
17045         proto_tree_add_item(t, hf_x11_struct_xinput_AxisInfo_resolution, tvb, *offsetp, 4, byte_order);
17046         *offsetp += 4;
17047         proto_tree_add_item(t, hf_x11_struct_xinput_AxisInfo_minimum, tvb, *offsetp, 4, byte_order);
17048         *offsetp += 4;
17049         proto_tree_add_item(t, hf_x11_struct_xinput_AxisInfo_maximum, tvb, *offsetp, 4, byte_order);
17050         *offsetp += 4;
17051     }
17052 }
17053
17054 static int struct_size_xinput_InputInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
17055 {
17056     int size = 0;
17057     return size + 2;
17058 }
17059
17060 static void struct_xinput_InputInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
17061 {
17062     int i;
17063     for (i = 0; i < count; i++) {
17064         proto_item *item;
17065         proto_tree *t;
17066         int f_class_id;
17067
17068         item = proto_tree_add_item(root, hf_x11_struct_xinput_InputInfo, tvb, *offsetp, struct_size_xinput_InputInfo(tvb, offsetp, byte_order), ENC_NA);
17069         t = proto_item_add_subtree(item, ett_x11_rectangle);
17070         f_class_id = field8(tvb, offsetp, t, hf_x11_struct_xinput_InputInfo_class_id, byte_order);
17071         proto_tree_add_item(t, hf_x11_struct_xinput_InputInfo_len, tvb, *offsetp, 1, byte_order);
17072         *offsetp += 1;
17073         if (f_class_id == 0) {
17074             proto_tree_add_item(t, hf_x11_struct_xinput_InputInfo_Key_min_keycode, tvb, *offsetp, 1, byte_order);
17075             *offsetp += 1;
17076             proto_tree_add_item(t, hf_x11_struct_xinput_InputInfo_Key_max_keycode, tvb, *offsetp, 1, byte_order);
17077             *offsetp += 1;
17078             proto_tree_add_item(t, hf_x11_struct_xinput_InputInfo_Key_num_keys, tvb, *offsetp, 2, byte_order);
17079             *offsetp += 2;
17080             UNUSED(2);
17081         }
17082         if (f_class_id == 1) {
17083             proto_tree_add_item(t, hf_x11_struct_xinput_InputInfo_Button_num_buttons, tvb, *offsetp, 2, byte_order);
17084             *offsetp += 2;
17085         }
17086         if (f_class_id == 2) {
17087             int f_axes_len;
17088             f_axes_len = VALUE8(tvb, *offsetp);
17089             proto_tree_add_item(t, hf_x11_struct_xinput_InputInfo_Valuator_axes_len, tvb, *offsetp, 1, byte_order);
17090             *offsetp += 1;
17091             field8(tvb, offsetp, t, hf_x11_struct_xinput_InputInfo_Valuator_mode, byte_order);
17092             proto_tree_add_item(t, hf_x11_struct_xinput_InputInfo_Valuator_motion_size, tvb, *offsetp, 4, byte_order);
17093             *offsetp += 4;
17094             struct_xinput_AxisInfo(tvb, offsetp, t, byte_order, f_axes_len);
17095         }
17096     }
17097 }
17098
17099 static void xinputListInputDevices(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
17100 {
17101 }
17102 static void xinputListInputDevices_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17103 {
17104     int sequence_number;
17105     int f_devices_len;
17106     int sumof_devices = 0;
17107
17108     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListInputDevices");
17109
17110     REPLY(reply);
17111     proto_tree_add_item(t, hf_x11_xinput_ListInputDevices_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17112     *offsetp += 1;
17113     sequence_number = VALUE16(tvb, *offsetp);
17114     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17115             "%d (xinput-ListInputDevices)", sequence_number);
17116     *offsetp += 2;
17117     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17118     *offsetp += 4;
17119     f_devices_len = VALUE8(tvb, *offsetp);
17120     proto_tree_add_item(t, hf_x11_xinput_ListInputDevices_reply_devices_len, tvb, *offsetp, 1, byte_order);
17121     *offsetp += 1;
17122     UNUSED(23);
17123     struct_xinput_DeviceInfo(tvb, offsetp, t, byte_order, f_devices_len);
17124     struct_xinput_InputInfo(tvb, offsetp, t, byte_order, sumof_devices);
17125     struct_xproto_STR(tvb, offsetp, t, byte_order, f_devices_len);
17126     if (*offsetp % 4) {
17127         UNUSED(4 - *offsetp % 4);
17128     }
17129 }
17130
17131 static void struct_xinput_InputClassInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
17132 {
17133     int i;
17134     for (i = 0; i < count; i++) {
17135         proto_item *item;
17136         proto_tree *t;
17137
17138         item = proto_tree_add_item(root, hf_x11_struct_xinput_InputClassInfo, tvb, *offsetp, 2, ENC_NA);
17139         t = proto_item_add_subtree(item, ett_x11_rectangle);
17140         field8(tvb, offsetp, t, hf_x11_struct_xinput_InputClassInfo_class_id, byte_order);
17141         proto_tree_add_item(t, hf_x11_struct_xinput_InputClassInfo_event_type_base, tvb, *offsetp, 1, byte_order);
17142         *offsetp += 1;
17143     }
17144 }
17145
17146 static void xinputOpenDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17147 {
17148     proto_tree_add_item(t, hf_x11_xinput_OpenDevice_device_id, tvb, *offsetp, 1, byte_order);
17149     *offsetp += 1;
17150     UNUSED(3);
17151 }
17152 static void xinputOpenDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17153 {
17154     int sequence_number;
17155     int f_num_classes;
17156
17157     col_append_fstr(pinfo->cinfo, COL_INFO, "-OpenDevice");
17158
17159     REPLY(reply);
17160     proto_tree_add_item(t, hf_x11_xinput_OpenDevice_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17161     *offsetp += 1;
17162     sequence_number = VALUE16(tvb, *offsetp);
17163     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17164             "%d (xinput-OpenDevice)", sequence_number);
17165     *offsetp += 2;
17166     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17167     *offsetp += 4;
17168     f_num_classes = VALUE8(tvb, *offsetp);
17169     proto_tree_add_item(t, hf_x11_xinput_OpenDevice_reply_num_classes, tvb, *offsetp, 1, byte_order);
17170     *offsetp += 1;
17171     UNUSED(23);
17172     struct_xinput_InputClassInfo(tvb, offsetp, t, byte_order, f_num_classes);
17173     if (*offsetp % 4) {
17174         UNUSED(4 - *offsetp % 4);
17175     }
17176 }
17177
17178 static void xinputCloseDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17179 {
17180     proto_tree_add_item(t, hf_x11_xinput_CloseDevice_device_id, tvb, *offsetp, 1, byte_order);
17181     *offsetp += 1;
17182     UNUSED(3);
17183 }
17184
17185 static void xinputSetDeviceMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17186 {
17187     proto_tree_add_item(t, hf_x11_xinput_SetDeviceMode_device_id, tvb, *offsetp, 1, byte_order);
17188     *offsetp += 1;
17189     field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceMode_mode, byte_order);
17190     UNUSED(2);
17191 }
17192 static void xinputSetDeviceMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17193 {
17194     int sequence_number;
17195
17196     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetDeviceMode");
17197
17198     REPLY(reply);
17199     proto_tree_add_item(t, hf_x11_xinput_SetDeviceMode_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17200     *offsetp += 1;
17201     sequence_number = VALUE16(tvb, *offsetp);
17202     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17203             "%d (xinput-SetDeviceMode)", sequence_number);
17204     *offsetp += 2;
17205     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17206     *offsetp += 4;
17207     field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceMode_reply_status, byte_order);
17208     UNUSED(23);
17209 }
17210
17211 static void xinputSelectExtensionEvent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17212 {
17213     int f_num_classes;
17214     proto_tree_add_item(t, hf_x11_xinput_SelectExtensionEvent_window, tvb, *offsetp, 4, byte_order);
17215     *offsetp += 4;
17216     f_num_classes = VALUE16(tvb, *offsetp);
17217     proto_tree_add_item(t, hf_x11_xinput_SelectExtensionEvent_num_classes, tvb, *offsetp, 2, byte_order);
17218     *offsetp += 2;
17219     UNUSED(2);
17220     listOfCard32(tvb, offsetp, t, hf_x11_xinput_SelectExtensionEvent_classes, hf_x11_xinput_SelectExtensionEvent_classes_item, f_num_classes, byte_order);
17221     length -= f_num_classes * 4;
17222 }
17223
17224 static void xinputGetSelectedExtensionEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17225 {
17226     proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_window, tvb, *offsetp, 4, byte_order);
17227     *offsetp += 4;
17228 }
17229 static void xinputGetSelectedExtensionEvents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17230 {
17231     int sequence_number;
17232     int f_num_this_classes;
17233     int f_num_all_classes;
17234
17235     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetSelectedExtensionEvents");
17236
17237     REPLY(reply);
17238     proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17239     *offsetp += 1;
17240     sequence_number = VALUE16(tvb, *offsetp);
17241     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17242             "%d (xinput-GetSelectedExtensionEvents)", sequence_number);
17243     *offsetp += 2;
17244     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17245     *offsetp += 4;
17246     f_num_this_classes = VALUE16(tvb, *offsetp);
17247     proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_reply_num_this_classes, tvb, *offsetp, 2, byte_order);
17248     *offsetp += 2;
17249     f_num_all_classes = VALUE16(tvb, *offsetp);
17250     proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_reply_num_all_classes, tvb, *offsetp, 2, byte_order);
17251     *offsetp += 2;
17252     UNUSED(20);
17253     listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetSelectedExtensionEvents_reply_this_classes, hf_x11_xinput_GetSelectedExtensionEvents_reply_this_classes_item, f_num_this_classes, byte_order);
17254     listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetSelectedExtensionEvents_reply_all_classes, hf_x11_xinput_GetSelectedExtensionEvents_reply_all_classes_item, f_num_all_classes, byte_order);
17255 }
17256
17257 static void xinputChangeDeviceDontPropagateList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17258 {
17259     int f_num_classes;
17260     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceDontPropagateList_window, tvb, *offsetp, 4, byte_order);
17261     *offsetp += 4;
17262     f_num_classes = VALUE16(tvb, *offsetp);
17263     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceDontPropagateList_num_classes, tvb, *offsetp, 2, byte_order);
17264     *offsetp += 2;
17265     field8(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceDontPropagateList_mode, byte_order);
17266     UNUSED(1);
17267     listOfCard32(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceDontPropagateList_classes, hf_x11_xinput_ChangeDeviceDontPropagateList_classes_item, f_num_classes, byte_order);
17268     length -= f_num_classes * 4;
17269 }
17270
17271 static void xinputGetDeviceDontPropagateList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17272 {
17273     proto_tree_add_item(t, hf_x11_xinput_GetDeviceDontPropagateList_window, tvb, *offsetp, 4, byte_order);
17274     *offsetp += 4;
17275 }
17276 static void xinputGetDeviceDontPropagateList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17277 {
17278     int sequence_number;
17279     int f_num_classes;
17280
17281     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceDontPropagateList");
17282
17283     REPLY(reply);
17284     proto_tree_add_item(t, hf_x11_xinput_GetDeviceDontPropagateList_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17285     *offsetp += 1;
17286     sequence_number = VALUE16(tvb, *offsetp);
17287     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17288             "%d (xinput-GetDeviceDontPropagateList)", sequence_number);
17289     *offsetp += 2;
17290     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17291     *offsetp += 4;
17292     f_num_classes = VALUE16(tvb, *offsetp);
17293     proto_tree_add_item(t, hf_x11_xinput_GetDeviceDontPropagateList_reply_num_classes, tvb, *offsetp, 2, byte_order);
17294     *offsetp += 2;
17295     UNUSED(22);
17296     listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetDeviceDontPropagateList_reply_classes, hf_x11_xinput_GetDeviceDontPropagateList_reply_classes_item, f_num_classes, byte_order);
17297 }
17298
17299 static int struct_size_xinput_DeviceTimeCoord(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_, int p_num_axes)
17300 {
17301     int size = 0;
17302     size += p_num_axes * 4;
17303     return size + 4;
17304 }
17305
17306 static void struct_xinput_DeviceTimeCoord(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count, int p_num_axes)
17307 {
17308     int i;
17309     for (i = 0; i < count; i++) {
17310         proto_item *item;
17311         proto_tree *t;
17312
17313         item = proto_tree_add_item(root, hf_x11_struct_xinput_DeviceTimeCoord, tvb, *offsetp, struct_size_xinput_DeviceTimeCoord(tvb, offsetp, byte_order, p_num_axes), ENC_NA);
17314         t = proto_item_add_subtree(item, ett_x11_rectangle);
17315         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceTimeCoord_time, tvb, *offsetp, 4, byte_order);
17316         *offsetp += 4;
17317         listOfInt32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceTimeCoord_axisvalues, hf_x11_struct_xinput_DeviceTimeCoord_axisvalues_item, p_num_axes, byte_order);
17318     }
17319 }
17320
17321 static void xinputGetDeviceMotionEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17322 {
17323     proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_start, tvb, *offsetp, 4, byte_order);
17324     *offsetp += 4;
17325     field32(tvb, offsetp, t, hf_x11_xinput_GetDeviceMotionEvents_stop, byte_order);
17326     proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_device_id, tvb, *offsetp, 1, byte_order);
17327     *offsetp += 1;
17328     UNUSED(3);
17329 }
17330 static void xinputGetDeviceMotionEvents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17331 {
17332     int sequence_number;
17333     int f_num_events;
17334     int f_num_axes;
17335
17336     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceMotionEvents");
17337
17338     REPLY(reply);
17339     proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17340     *offsetp += 1;
17341     sequence_number = VALUE16(tvb, *offsetp);
17342     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17343             "%d (xinput-GetDeviceMotionEvents)", sequence_number);
17344     *offsetp += 2;
17345     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17346     *offsetp += 4;
17347     f_num_events = VALUE32(tvb, *offsetp);
17348     proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_reply_num_events, tvb, *offsetp, 4, byte_order);
17349     *offsetp += 4;
17350     f_num_axes = VALUE8(tvb, *offsetp);
17351     proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_reply_num_axes, tvb, *offsetp, 1, byte_order);
17352     *offsetp += 1;
17353     field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceMotionEvents_reply_device_mode, byte_order);
17354     UNUSED(18);
17355     struct_xinput_DeviceTimeCoord(tvb, offsetp, t, byte_order, f_num_events, f_num_axes);
17356 }
17357
17358 static void xinputChangeKeyboardDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17359 {
17360     proto_tree_add_item(t, hf_x11_xinput_ChangeKeyboardDevice_device_id, tvb, *offsetp, 1, byte_order);
17361     *offsetp += 1;
17362     UNUSED(3);
17363 }
17364 static void xinputChangeKeyboardDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17365 {
17366     int sequence_number;
17367
17368     col_append_fstr(pinfo->cinfo, COL_INFO, "-ChangeKeyboardDevice");
17369
17370     REPLY(reply);
17371     proto_tree_add_item(t, hf_x11_xinput_ChangeKeyboardDevice_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17372     *offsetp += 1;
17373     sequence_number = VALUE16(tvb, *offsetp);
17374     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17375             "%d (xinput-ChangeKeyboardDevice)", sequence_number);
17376     *offsetp += 2;
17377     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17378     *offsetp += 4;
17379     field8(tvb, offsetp, t, hf_x11_xinput_ChangeKeyboardDevice_reply_status, byte_order);
17380     UNUSED(23);
17381 }
17382
17383 static void xinputChangePointerDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17384 {
17385     proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_x_axis, tvb, *offsetp, 1, byte_order);
17386     *offsetp += 1;
17387     proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_y_axis, tvb, *offsetp, 1, byte_order);
17388     *offsetp += 1;
17389     proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_device_id, tvb, *offsetp, 1, byte_order);
17390     *offsetp += 1;
17391     UNUSED(1);
17392 }
17393 static void xinputChangePointerDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17394 {
17395     int sequence_number;
17396
17397     col_append_fstr(pinfo->cinfo, COL_INFO, "-ChangePointerDevice");
17398
17399     REPLY(reply);
17400     proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17401     *offsetp += 1;
17402     sequence_number = VALUE16(tvb, *offsetp);
17403     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17404             "%d (xinput-ChangePointerDevice)", sequence_number);
17405     *offsetp += 2;
17406     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17407     *offsetp += 4;
17408     field8(tvb, offsetp, t, hf_x11_xinput_ChangePointerDevice_reply_status, byte_order);
17409     UNUSED(23);
17410 }
17411
17412 static void xinputGrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17413 {
17414     int f_num_classes;
17415     proto_tree_add_item(t, hf_x11_xinput_GrabDevice_grab_window, tvb, *offsetp, 4, byte_order);
17416     *offsetp += 4;
17417     field32(tvb, offsetp, t, hf_x11_xinput_GrabDevice_time, byte_order);
17418     f_num_classes = VALUE16(tvb, *offsetp);
17419     proto_tree_add_item(t, hf_x11_xinput_GrabDevice_num_classes, tvb, *offsetp, 2, byte_order);
17420     *offsetp += 2;
17421     field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_this_device_mode, byte_order);
17422     field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_other_device_mode, byte_order);
17423     proto_tree_add_item(t, hf_x11_xinput_GrabDevice_owner_events, tvb, *offsetp, 1, byte_order);
17424     *offsetp += 1;
17425     proto_tree_add_item(t, hf_x11_xinput_GrabDevice_device_id, tvb, *offsetp, 1, byte_order);
17426     *offsetp += 1;
17427     UNUSED(2);
17428     listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDevice_classes, hf_x11_xinput_GrabDevice_classes_item, f_num_classes, byte_order);
17429     length -= f_num_classes * 4;
17430 }
17431 static void xinputGrabDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17432 {
17433     int sequence_number;
17434
17435     col_append_fstr(pinfo->cinfo, COL_INFO, "-GrabDevice");
17436
17437     REPLY(reply);
17438     proto_tree_add_item(t, hf_x11_xinput_GrabDevice_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17439     *offsetp += 1;
17440     sequence_number = VALUE16(tvb, *offsetp);
17441     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17442             "%d (xinput-GrabDevice)", sequence_number);
17443     *offsetp += 2;
17444     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17445     *offsetp += 4;
17446     field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_reply_status, byte_order);
17447     UNUSED(23);
17448 }
17449
17450 static void xinputUngrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17451 {
17452     field32(tvb, offsetp, t, hf_x11_xinput_UngrabDevice_time, byte_order);
17453     proto_tree_add_item(t, hf_x11_xinput_UngrabDevice_device_id, tvb, *offsetp, 1, byte_order);
17454     *offsetp += 1;
17455     UNUSED(3);
17456 }
17457
17458 static void xinputGrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17459 {
17460     int f_num_classes;
17461     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_grab_window, tvb, *offsetp, 4, byte_order);
17462     *offsetp += 4;
17463     f_num_classes = VALUE16(tvb, *offsetp);
17464     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_num_classes, tvb, *offsetp, 2, byte_order);
17465     *offsetp += 2;
17466     {
17467         const int* modifiers_bits [] = {
17468         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_Shift,
17469         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_Lock,
17470         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_Control,
17471         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_1,
17472         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_2,
17473         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_3,
17474         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_4,
17475         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_5,
17476         &hf_x11_xinput_GrabDeviceKey_modifiers_mask_Any,
17477         };
17478         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_GrabDeviceKey_modifiers, ett_x11_rectangle, modifiers_bits, byte_order);
17479     }
17480     *offsetp += 2;
17481     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_modifier_device, byte_order);
17482     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_grabbed_device, tvb, *offsetp, 1, byte_order);
17483     *offsetp += 1;
17484     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_key, byte_order);
17485     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_this_device_mode, byte_order);
17486     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_other_device_mode, byte_order);
17487     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_owner_events, tvb, *offsetp, 1, byte_order);
17488     *offsetp += 1;
17489     UNUSED(2);
17490     listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_classes, hf_x11_xinput_GrabDeviceKey_classes_item, f_num_classes, byte_order);
17491     length -= f_num_classes * 4;
17492 }
17493
17494 static void xinputUngrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17495 {
17496     proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_grabWindow, tvb, *offsetp, 4, byte_order);
17497     *offsetp += 4;
17498     {
17499         const int* modifiers_bits [] = {
17500         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Shift,
17501         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Lock,
17502         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Control,
17503         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_1,
17504         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_2,
17505         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_3,
17506         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_4,
17507         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_5,
17508         &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Any,
17509         };
17510         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_UngrabDeviceKey_modifiers, ett_x11_rectangle, modifiers_bits, byte_order);
17511     }
17512     *offsetp += 2;
17513     field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceKey_modifier_device, byte_order);
17514     field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceKey_key, byte_order);
17515     proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_grabbed_device, tvb, *offsetp, 1, byte_order);
17516     *offsetp += 1;
17517 }
17518
17519 static void xinputGrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17520 {
17521     int f_num_classes;
17522     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_grab_window, tvb, *offsetp, 4, byte_order);
17523     *offsetp += 4;
17524     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_grabbed_device, tvb, *offsetp, 1, byte_order);
17525     *offsetp += 1;
17526     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_modifier_device, byte_order);
17527     f_num_classes = VALUE16(tvb, *offsetp);
17528     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_num_classes, tvb, *offsetp, 2, byte_order);
17529     *offsetp += 2;
17530     {
17531         const int* modifiers_bits [] = {
17532         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_Shift,
17533         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_Lock,
17534         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_Control,
17535         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_1,
17536         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_2,
17537         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_3,
17538         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_4,
17539         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_5,
17540         &hf_x11_xinput_GrabDeviceButton_modifiers_mask_Any,
17541         };
17542         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_GrabDeviceButton_modifiers, ett_x11_rectangle, modifiers_bits, byte_order);
17543     }
17544     *offsetp += 2;
17545     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_this_device_mode, byte_order);
17546     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_other_device_mode, byte_order);
17547     field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_button, byte_order);
17548     proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_owner_events, tvb, *offsetp, 1, byte_order);
17549     *offsetp += 1;
17550     UNUSED(2);
17551     listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_classes, hf_x11_xinput_GrabDeviceButton_classes_item, f_num_classes, byte_order);
17552     length -= f_num_classes * 4;
17553 }
17554
17555 static void xinputUngrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17556 {
17557     proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_grab_window, tvb, *offsetp, 4, byte_order);
17558     *offsetp += 4;
17559     {
17560         const int* modifiers_bits [] = {
17561         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Shift,
17562         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Lock,
17563         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Control,
17564         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_1,
17565         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_2,
17566         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_3,
17567         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_4,
17568         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_5,
17569         &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Any,
17570         };
17571         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_UngrabDeviceButton_modifiers, ett_x11_rectangle, modifiers_bits, byte_order);
17572     }
17573     *offsetp += 2;
17574     field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceButton_modifier_device, byte_order);
17575     field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceButton_button, byte_order);
17576     proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_grabbed_device, tvb, *offsetp, 1, byte_order);
17577     *offsetp += 1;
17578     UNUSED(3);
17579 }
17580
17581 static void xinputAllowDeviceEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17582 {
17583     field32(tvb, offsetp, t, hf_x11_xinput_AllowDeviceEvents_time, byte_order);
17584     field8(tvb, offsetp, t, hf_x11_xinput_AllowDeviceEvents_mode, byte_order);
17585     proto_tree_add_item(t, hf_x11_xinput_AllowDeviceEvents_device_id, tvb, *offsetp, 1, byte_order);
17586     *offsetp += 1;
17587     UNUSED(2);
17588 }
17589
17590 static void xinputGetDeviceFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17591 {
17592     proto_tree_add_item(t, hf_x11_xinput_GetDeviceFocus_device_id, tvb, *offsetp, 1, byte_order);
17593     *offsetp += 1;
17594     UNUSED(3);
17595 }
17596 static void xinputGetDeviceFocus_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17597 {
17598     int sequence_number;
17599
17600     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceFocus");
17601
17602     REPLY(reply);
17603     proto_tree_add_item(t, hf_x11_xinput_GetDeviceFocus_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17604     *offsetp += 1;
17605     sequence_number = VALUE16(tvb, *offsetp);
17606     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17607             "%d (xinput-GetDeviceFocus)", sequence_number);
17608     *offsetp += 2;
17609     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17610     *offsetp += 4;
17611     field32(tvb, offsetp, t, hf_x11_xinput_GetDeviceFocus_reply_focus, byte_order);
17612     proto_tree_add_item(t, hf_x11_xinput_GetDeviceFocus_reply_time, tvb, *offsetp, 4, byte_order);
17613     *offsetp += 4;
17614     field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceFocus_reply_revert_to, byte_order);
17615     UNUSED(15);
17616 }
17617
17618 static void xinputSetDeviceFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17619 {
17620     field32(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_focus, byte_order);
17621     field32(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_time, byte_order);
17622     field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_revert_to, byte_order);
17623     proto_tree_add_item(t, hf_x11_xinput_SetDeviceFocus_device_id, tvb, *offsetp, 1, byte_order);
17624     *offsetp += 1;
17625     UNUSED(2);
17626 }
17627
17628 static int struct_size_xinput_FeedbackState(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
17629 {
17630     int size = 0;
17631     return size + 4;
17632 }
17633
17634 static void struct_xinput_FeedbackState(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
17635 {
17636     int i;
17637     for (i = 0; i < count; i++) {
17638         proto_item *item;
17639         proto_tree *t;
17640         int f_class_id;
17641
17642         item = proto_tree_add_item(root, hf_x11_struct_xinput_FeedbackState, tvb, *offsetp, struct_size_xinput_FeedbackState(tvb, offsetp, byte_order), ENC_NA);
17643         t = proto_item_add_subtree(item, ett_x11_rectangle);
17644         f_class_id = field8(tvb, offsetp, t, hf_x11_struct_xinput_FeedbackState_class_id, byte_order);
17645         proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_feedback_id, tvb, *offsetp, 1, byte_order);
17646         *offsetp += 1;
17647         proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_len, tvb, *offsetp, 2, byte_order);
17648         *offsetp += 2;
17649         if (f_class_id == 0) {
17650             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Keyboard_pitch, tvb, *offsetp, 2, byte_order);
17651             *offsetp += 2;
17652             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Keyboard_duration, tvb, *offsetp, 2, byte_order);
17653             *offsetp += 2;
17654             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Keyboard_led_mask, tvb, *offsetp, 4, byte_order);
17655             *offsetp += 4;
17656             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Keyboard_led_values, tvb, *offsetp, 4, byte_order);
17657             *offsetp += 4;
17658             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Keyboard_global_auto_repeat, tvb, *offsetp, 1, byte_order);
17659             *offsetp += 1;
17660             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Keyboard_click, tvb, *offsetp, 1, byte_order);
17661             *offsetp += 1;
17662             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Keyboard_percent, tvb, *offsetp, 1, byte_order);
17663             *offsetp += 1;
17664             UNUSED(1);
17665             listOfByte(tvb, offsetp, t, hf_x11_struct_xinput_FeedbackState_Keyboard_auto_repeats, 32, byte_order);
17666         }
17667         if (f_class_id == 1) {
17668             UNUSED(2);
17669             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Pointer_accel_num, tvb, *offsetp, 2, byte_order);
17670             *offsetp += 2;
17671             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Pointer_accel_denom, tvb, *offsetp, 2, byte_order);
17672             *offsetp += 2;
17673             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Pointer_threshold, tvb, *offsetp, 2, byte_order);
17674             *offsetp += 2;
17675         }
17676         if (f_class_id == 2) {
17677             int f_num_keysyms;
17678             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_String_max_symbols, tvb, *offsetp, 2, byte_order);
17679             *offsetp += 2;
17680             f_num_keysyms = VALUE16(tvb, *offsetp);
17681             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_String_num_keysyms, tvb, *offsetp, 2, byte_order);
17682             *offsetp += 2;
17683             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_FeedbackState_String_keysyms, hf_x11_struct_xinput_FeedbackState_String_keysyms_item, f_num_keysyms, byte_order);
17684         }
17685         if (f_class_id == 3) {
17686             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Integer_resolution, tvb, *offsetp, 4, byte_order);
17687             *offsetp += 4;
17688             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Integer_min_value, tvb, *offsetp, 4, byte_order);
17689             *offsetp += 4;
17690             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Integer_max_value, tvb, *offsetp, 4, byte_order);
17691             *offsetp += 4;
17692         }
17693         if (f_class_id == 4) {
17694             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Led_led_mask, tvb, *offsetp, 4, byte_order);
17695             *offsetp += 4;
17696             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Led_led_values, tvb, *offsetp, 4, byte_order);
17697             *offsetp += 4;
17698         }
17699         if (f_class_id == 5) {
17700             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Bell_percent, tvb, *offsetp, 1, byte_order);
17701             *offsetp += 1;
17702             UNUSED(3);
17703             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Bell_pitch, tvb, *offsetp, 2, byte_order);
17704             *offsetp += 2;
17705             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackState_Bell_duration, tvb, *offsetp, 2, byte_order);
17706             *offsetp += 2;
17707         }
17708     }
17709 }
17710
17711 static void xinputGetFeedbackControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17712 {
17713     proto_tree_add_item(t, hf_x11_xinput_GetFeedbackControl_device_id, tvb, *offsetp, 1, byte_order);
17714     *offsetp += 1;
17715     UNUSED(3);
17716 }
17717 static void xinputGetFeedbackControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17718 {
17719     int sequence_number;
17720     int f_num_feedbacks;
17721
17722     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetFeedbackControl");
17723
17724     REPLY(reply);
17725     proto_tree_add_item(t, hf_x11_xinput_GetFeedbackControl_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17726     *offsetp += 1;
17727     sequence_number = VALUE16(tvb, *offsetp);
17728     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17729             "%d (xinput-GetFeedbackControl)", sequence_number);
17730     *offsetp += 2;
17731     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17732     *offsetp += 4;
17733     f_num_feedbacks = VALUE16(tvb, *offsetp);
17734     proto_tree_add_item(t, hf_x11_xinput_GetFeedbackControl_reply_num_feedbacks, tvb, *offsetp, 2, byte_order);
17735     *offsetp += 2;
17736     UNUSED(22);
17737     struct_xinput_FeedbackState(tvb, offsetp, t, byte_order, f_num_feedbacks);
17738 }
17739
17740 static int struct_size_xinput_FeedbackCtl(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
17741 {
17742     int size = 0;
17743     return size + 4;
17744 }
17745
17746 static void struct_xinput_FeedbackCtl(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
17747 {
17748     int i;
17749     for (i = 0; i < count; i++) {
17750         proto_item *item;
17751         proto_tree *t;
17752         int f_class_id;
17753
17754         item = proto_tree_add_item(root, hf_x11_struct_xinput_FeedbackCtl, tvb, *offsetp, struct_size_xinput_FeedbackCtl(tvb, offsetp, byte_order), ENC_NA);
17755         t = proto_item_add_subtree(item, ett_x11_rectangle);
17756         f_class_id = field8(tvb, offsetp, t, hf_x11_struct_xinput_FeedbackCtl_class_id, byte_order);
17757         proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_feedback_id, tvb, *offsetp, 1, byte_order);
17758         *offsetp += 1;
17759         proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_len, tvb, *offsetp, 2, byte_order);
17760         *offsetp += 2;
17761         if (f_class_id == 0) {
17762             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_key, tvb, *offsetp, 1, byte_order);
17763             *offsetp += 1;
17764             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_auto_repeat_mode, tvb, *offsetp, 1, byte_order);
17765             *offsetp += 1;
17766             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_key_click_percent, tvb, *offsetp, 1, byte_order);
17767             *offsetp += 1;
17768             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_bell_percent, tvb, *offsetp, 1, byte_order);
17769             *offsetp += 1;
17770             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_bell_pitch, tvb, *offsetp, 2, byte_order);
17771             *offsetp += 2;
17772             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_bell_duration, tvb, *offsetp, 2, byte_order);
17773             *offsetp += 2;
17774             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_led_mask, tvb, *offsetp, 4, byte_order);
17775             *offsetp += 4;
17776             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Keyboard_led_values, tvb, *offsetp, 4, byte_order);
17777             *offsetp += 4;
17778         }
17779         if (f_class_id == 1) {
17780             UNUSED(2);
17781             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Pointer_num, tvb, *offsetp, 2, byte_order);
17782             *offsetp += 2;
17783             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Pointer_denom, tvb, *offsetp, 2, byte_order);
17784             *offsetp += 2;
17785             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Pointer_threshold, tvb, *offsetp, 2, byte_order);
17786             *offsetp += 2;
17787         }
17788         if (f_class_id == 2) {
17789             int f_num_keysyms;
17790             UNUSED(2);
17791             f_num_keysyms = VALUE16(tvb, *offsetp);
17792             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_String_num_keysyms, tvb, *offsetp, 2, byte_order);
17793             *offsetp += 2;
17794             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_FeedbackCtl_String_keysyms, hf_x11_struct_xinput_FeedbackCtl_String_keysyms_item, f_num_keysyms, byte_order);
17795         }
17796         if (f_class_id == 3) {
17797             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Integer_int_to_display, tvb, *offsetp, 4, byte_order);
17798             *offsetp += 4;
17799         }
17800         if (f_class_id == 4) {
17801             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Led_led_mask, tvb, *offsetp, 4, byte_order);
17802             *offsetp += 4;
17803             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Led_led_values, tvb, *offsetp, 4, byte_order);
17804             *offsetp += 4;
17805         }
17806         if (f_class_id == 5) {
17807             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Bell_percent, tvb, *offsetp, 1, byte_order);
17808             *offsetp += 1;
17809             UNUSED(3);
17810             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Bell_pitch, tvb, *offsetp, 2, byte_order);
17811             *offsetp += 2;
17812             proto_tree_add_item(t, hf_x11_struct_xinput_FeedbackCtl_Bell_duration, tvb, *offsetp, 2, byte_order);
17813             *offsetp += 2;
17814         }
17815     }
17816 }
17817
17818 static void xinputChangeFeedbackControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17819 {
17820     {
17821         const int* mask_bits [] = {
17822         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_AccelNum,
17823         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_AccelDenom,
17824         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_Threshold,
17825         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_Duration,
17826         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_Led,
17827         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_LedMode,
17828         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_Key,
17829         &hf_x11_xinput_ChangeFeedbackControl_mask_mask_AutoRepeatMode,
17830         };
17831         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_ChangeFeedbackControl_mask, ett_x11_rectangle, mask_bits, byte_order);
17832     }
17833     *offsetp += 4;
17834     proto_tree_add_item(t, hf_x11_xinput_ChangeFeedbackControl_device_id, tvb, *offsetp, 1, byte_order);
17835     *offsetp += 1;
17836     proto_tree_add_item(t, hf_x11_xinput_ChangeFeedbackControl_feedback_id, tvb, *offsetp, 1, byte_order);
17837     *offsetp += 1;
17838     UNUSED(2);
17839     struct_xinput_FeedbackCtl(tvb, offsetp, t, byte_order, 1);
17840 }
17841
17842 static void xinputGetDeviceKeyMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17843 {
17844     proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_device_id, tvb, *offsetp, 1, byte_order);
17845     *offsetp += 1;
17846     proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_first_keycode, tvb, *offsetp, 1, byte_order);
17847     *offsetp += 1;
17848     proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_count, tvb, *offsetp, 1, byte_order);
17849     *offsetp += 1;
17850     UNUSED(1);
17851 }
17852 static void xinputGetDeviceKeyMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17853 {
17854     int sequence_number;
17855     int f_length;
17856
17857     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceKeyMapping");
17858
17859     REPLY(reply);
17860     proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17861     *offsetp += 1;
17862     sequence_number = VALUE16(tvb, *offsetp);
17863     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17864             "%d (xinput-GetDeviceKeyMapping)", sequence_number);
17865     *offsetp += 2;
17866     f_length = VALUE32(tvb, *offsetp);
17867     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17868     *offsetp += 4;
17869     proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms_per_keycode, tvb, *offsetp, 1, byte_order);
17870     *offsetp += 1;
17871     UNUSED(23);
17872     listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms_item, f_length, byte_order);
17873 }
17874
17875 static void xinputChangeDeviceKeyMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17876 {
17877     int f_keysyms_per_keycode;
17878     int f_keycode_count;
17879     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_device_id, tvb, *offsetp, 1, byte_order);
17880     *offsetp += 1;
17881     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_first_keycode, tvb, *offsetp, 1, byte_order);
17882     *offsetp += 1;
17883     f_keysyms_per_keycode = VALUE8(tvb, *offsetp);
17884     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms_per_keycode, tvb, *offsetp, 1, byte_order);
17885     *offsetp += 1;
17886     f_keycode_count = VALUE8(tvb, *offsetp);
17887     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_keycode_count, tvb, *offsetp, 1, byte_order);
17888     *offsetp += 1;
17889     listOfCard32(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms_item, (f_keycode_count * f_keysyms_per_keycode), byte_order);
17890     length -= (f_keycode_count * f_keysyms_per_keycode) * 4;
17891 }
17892
17893 static void xinputGetDeviceModifierMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17894 {
17895     proto_tree_add_item(t, hf_x11_xinput_GetDeviceModifierMapping_device_id, tvb, *offsetp, 1, byte_order);
17896     *offsetp += 1;
17897     UNUSED(3);
17898 }
17899 static void xinputGetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17900 {
17901     int sequence_number;
17902     int f_keycodes_per_modifier;
17903
17904     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceModifierMapping");
17905
17906     REPLY(reply);
17907     proto_tree_add_item(t, hf_x11_xinput_GetDeviceModifierMapping_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17908     *offsetp += 1;
17909     sequence_number = VALUE16(tvb, *offsetp);
17910     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17911             "%d (xinput-GetDeviceModifierMapping)", sequence_number);
17912     *offsetp += 2;
17913     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17914     *offsetp += 4;
17915     f_keycodes_per_modifier = VALUE8(tvb, *offsetp);
17916     proto_tree_add_item(t, hf_x11_xinput_GetDeviceModifierMapping_reply_keycodes_per_modifier, tvb, *offsetp, 1, byte_order);
17917     *offsetp += 1;
17918     UNUSED(23);
17919     listOfByte(tvb, offsetp, t, hf_x11_xinput_GetDeviceModifierMapping_reply_keymaps, (f_keycodes_per_modifier * 8), byte_order);
17920 }
17921
17922 static void xinputSetDeviceModifierMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17923 {
17924     int f_keycodes_per_modifier;
17925     proto_tree_add_item(t, hf_x11_xinput_SetDeviceModifierMapping_device_id, tvb, *offsetp, 1, byte_order);
17926     *offsetp += 1;
17927     f_keycodes_per_modifier = VALUE8(tvb, *offsetp);
17928     proto_tree_add_item(t, hf_x11_xinput_SetDeviceModifierMapping_keycodes_per_modifier, tvb, *offsetp, 1, byte_order);
17929     *offsetp += 1;
17930     UNUSED(2);
17931     listOfByte(tvb, offsetp, t, hf_x11_xinput_SetDeviceModifierMapping_keymaps, (f_keycodes_per_modifier * 8), byte_order);
17932     length -= (f_keycodes_per_modifier * 8) * 1;
17933 }
17934 static void xinputSetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17935 {
17936     int sequence_number;
17937
17938     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetDeviceModifierMapping");
17939
17940     REPLY(reply);
17941     proto_tree_add_item(t, hf_x11_xinput_SetDeviceModifierMapping_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17942     *offsetp += 1;
17943     sequence_number = VALUE16(tvb, *offsetp);
17944     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17945             "%d (xinput-SetDeviceModifierMapping)", sequence_number);
17946     *offsetp += 2;
17947     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17948     *offsetp += 4;
17949     field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceModifierMapping_reply_status, byte_order);
17950     UNUSED(23);
17951 }
17952
17953 static void xinputGetDeviceButtonMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17954 {
17955     proto_tree_add_item(t, hf_x11_xinput_GetDeviceButtonMapping_device_id, tvb, *offsetp, 1, byte_order);
17956     *offsetp += 1;
17957     UNUSED(3);
17958 }
17959 static void xinputGetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17960 {
17961     int sequence_number;
17962     int f_map_size;
17963
17964     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceButtonMapping");
17965
17966     REPLY(reply);
17967     proto_tree_add_item(t, hf_x11_xinput_GetDeviceButtonMapping_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
17968     *offsetp += 1;
17969     sequence_number = VALUE16(tvb, *offsetp);
17970     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
17971             "%d (xinput-GetDeviceButtonMapping)", sequence_number);
17972     *offsetp += 2;
17973     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
17974     *offsetp += 4;
17975     f_map_size = VALUE8(tvb, *offsetp);
17976     proto_tree_add_item(t, hf_x11_xinput_GetDeviceButtonMapping_reply_map_size, tvb, *offsetp, 1, byte_order);
17977     *offsetp += 1;
17978     UNUSED(23);
17979     listOfByte(tvb, offsetp, t, hf_x11_xinput_GetDeviceButtonMapping_reply_map, f_map_size, byte_order);
17980     if (*offsetp % 4) {
17981         UNUSED(4 - *offsetp % 4);
17982     }
17983 }
17984
17985 static void xinputSetDeviceButtonMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
17986 {
17987     int f_map_size;
17988     proto_tree_add_item(t, hf_x11_xinput_SetDeviceButtonMapping_device_id, tvb, *offsetp, 1, byte_order);
17989     *offsetp += 1;
17990     f_map_size = VALUE8(tvb, *offsetp);
17991     proto_tree_add_item(t, hf_x11_xinput_SetDeviceButtonMapping_map_size, tvb, *offsetp, 1, byte_order);
17992     *offsetp += 1;
17993     UNUSED(2);
17994     listOfByte(tvb, offsetp, t, hf_x11_xinput_SetDeviceButtonMapping_map, f_map_size, byte_order);
17995     length -= f_map_size * 1;
17996 }
17997 static void xinputSetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
17998 {
17999     int sequence_number;
18000
18001     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetDeviceButtonMapping");
18002
18003     REPLY(reply);
18004     proto_tree_add_item(t, hf_x11_xinput_SetDeviceButtonMapping_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
18005     *offsetp += 1;
18006     sequence_number = VALUE16(tvb, *offsetp);
18007     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18008             "%d (xinput-SetDeviceButtonMapping)", sequence_number);
18009     *offsetp += 2;
18010     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18011     *offsetp += 4;
18012     field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceButtonMapping_reply_status, byte_order);
18013     UNUSED(23);
18014 }
18015
18016 static int struct_size_xinput_InputState(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
18017 {
18018     int size = 0;
18019     return size + 2;
18020 }
18021
18022 static void struct_xinput_InputState(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18023 {
18024     int i;
18025     for (i = 0; i < count; i++) {
18026         proto_item *item;
18027         proto_tree *t;
18028         int f_class_id;
18029
18030         item = proto_tree_add_item(root, hf_x11_struct_xinput_InputState, tvb, *offsetp, struct_size_xinput_InputState(tvb, offsetp, byte_order), ENC_NA);
18031         t = proto_item_add_subtree(item, ett_x11_rectangle);
18032         f_class_id = field8(tvb, offsetp, t, hf_x11_struct_xinput_InputState_class_id, byte_order);
18033         proto_tree_add_item(t, hf_x11_struct_xinput_InputState_len, tvb, *offsetp, 1, byte_order);
18034         *offsetp += 1;
18035         if (f_class_id == 0) {
18036             proto_tree_add_item(t, hf_x11_struct_xinput_InputState_Key_num_keys, tvb, *offsetp, 1, byte_order);
18037             *offsetp += 1;
18038             UNUSED(1);
18039             listOfByte(tvb, offsetp, t, hf_x11_struct_xinput_InputState_Key_keys, 32, byte_order);
18040         }
18041         if (f_class_id == 1) {
18042             proto_tree_add_item(t, hf_x11_struct_xinput_InputState_Button_num_buttons, tvb, *offsetp, 1, byte_order);
18043             *offsetp += 1;
18044             UNUSED(1);
18045             listOfByte(tvb, offsetp, t, hf_x11_struct_xinput_InputState_Button_buttons, 32, byte_order);
18046         }
18047         if (f_class_id == 2) {
18048             int f_num_valuators;
18049             f_num_valuators = VALUE8(tvb, *offsetp);
18050             proto_tree_add_item(t, hf_x11_struct_xinput_InputState_Valuator_num_valuators, tvb, *offsetp, 1, byte_order);
18051             *offsetp += 1;
18052             {
18053                 const int* mode_bits [] = {
18054                         &hf_x11_struct_xinput_InputState_Valuator_mode_mask_DeviceModeAbsolute,
18055                         &hf_x11_struct_xinput_InputState_Valuator_mode_mask_OutOfProximity,
18056                 };
18057                 proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xinput_InputState_Valuator_mode, ett_x11_rectangle, mode_bits, byte_order);
18058             }
18059             *offsetp += 1;
18060             listOfInt32(tvb, offsetp, t, hf_x11_struct_xinput_InputState_Valuator_valuators, hf_x11_struct_xinput_InputState_Valuator_valuators_item, f_num_valuators, byte_order);
18061         }
18062     }
18063 }
18064
18065 static void xinputQueryDeviceState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18066 {
18067     proto_tree_add_item(t, hf_x11_xinput_QueryDeviceState_device_id, tvb, *offsetp, 1, byte_order);
18068     *offsetp += 1;
18069     UNUSED(3);
18070 }
18071 static void xinputQueryDeviceState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18072 {
18073     int sequence_number;
18074     int f_num_classes;
18075
18076     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryDeviceState");
18077
18078     REPLY(reply);
18079     proto_tree_add_item(t, hf_x11_xinput_QueryDeviceState_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
18080     *offsetp += 1;
18081     sequence_number = VALUE16(tvb, *offsetp);
18082     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18083             "%d (xinput-QueryDeviceState)", sequence_number);
18084     *offsetp += 2;
18085     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18086     *offsetp += 4;
18087     f_num_classes = VALUE8(tvb, *offsetp);
18088     proto_tree_add_item(t, hf_x11_xinput_QueryDeviceState_reply_num_classes, tvb, *offsetp, 1, byte_order);
18089     *offsetp += 1;
18090     UNUSED(23);
18091     struct_xinput_InputState(tvb, offsetp, t, byte_order, f_num_classes);
18092 }
18093
18094 static void xinputDeviceBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18095 {
18096     proto_tree_add_item(t, hf_x11_xinput_DeviceBell_device_id, tvb, *offsetp, 1, byte_order);
18097     *offsetp += 1;
18098     proto_tree_add_item(t, hf_x11_xinput_DeviceBell_feedback_id, tvb, *offsetp, 1, byte_order);
18099     *offsetp += 1;
18100     proto_tree_add_item(t, hf_x11_xinput_DeviceBell_feedback_class, tvb, *offsetp, 1, byte_order);
18101     *offsetp += 1;
18102     proto_tree_add_item(t, hf_x11_xinput_DeviceBell_percent, tvb, *offsetp, 1, byte_order);
18103     *offsetp += 1;
18104 }
18105
18106 static void xinputSetDeviceValuators(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18107 {
18108     int f_num_valuators;
18109     proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_device_id, tvb, *offsetp, 1, byte_order);
18110     *offsetp += 1;
18111     proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_first_valuator, tvb, *offsetp, 1, byte_order);
18112     *offsetp += 1;
18113     f_num_valuators = VALUE8(tvb, *offsetp);
18114     proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_num_valuators, tvb, *offsetp, 1, byte_order);
18115     *offsetp += 1;
18116     UNUSED(1);
18117     listOfInt32(tvb, offsetp, t, hf_x11_xinput_SetDeviceValuators_valuators, hf_x11_xinput_SetDeviceValuators_valuators_item, f_num_valuators, byte_order);
18118     length -= f_num_valuators * 4;
18119 }
18120 static void xinputSetDeviceValuators_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18121 {
18122     int sequence_number;
18123
18124     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetDeviceValuators");
18125
18126     REPLY(reply);
18127     proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
18128     *offsetp += 1;
18129     sequence_number = VALUE16(tvb, *offsetp);
18130     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18131             "%d (xinput-SetDeviceValuators)", sequence_number);
18132     *offsetp += 2;
18133     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18134     *offsetp += 4;
18135     field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceValuators_reply_status, byte_order);
18136     UNUSED(23);
18137 }
18138
18139 static int struct_size_xinput_DeviceState(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
18140 {
18141     int size = 0;
18142     return size + 4;
18143 }
18144
18145 static void struct_xinput_DeviceState(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18146 {
18147     int i;
18148     for (i = 0; i < count; i++) {
18149         proto_item *item;
18150         proto_tree *t;
18151         int f_control_id;
18152
18153         item = proto_tree_add_item(root, hf_x11_struct_xinput_DeviceState, tvb, *offsetp, struct_size_xinput_DeviceState(tvb, offsetp, byte_order), ENC_NA);
18154         t = proto_item_add_subtree(item, ett_x11_rectangle);
18155         f_control_id = field16(tvb, offsetp, t, hf_x11_struct_xinput_DeviceState_control_id, byte_order);
18156         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_len, tvb, *offsetp, 2, byte_order);
18157         *offsetp += 2;
18158         if (f_control_id == 1) {
18159             int f_num_valuators;
18160             f_num_valuators = VALUE32(tvb, *offsetp);
18161             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_resolution_num_valuators, tvb, *offsetp, 4, byte_order);
18162             *offsetp += 4;
18163             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceState_resolution_resolution_values, hf_x11_struct_xinput_DeviceState_resolution_resolution_values_item, f_num_valuators, byte_order);
18164             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceState_resolution_resolution_min, hf_x11_struct_xinput_DeviceState_resolution_resolution_min_item, f_num_valuators, byte_order);
18165             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceState_resolution_resolution_max, hf_x11_struct_xinput_DeviceState_resolution_resolution_max_item, f_num_valuators, byte_order);
18166         }
18167         if (f_control_id == 2) {
18168             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_min_x, tvb, *offsetp, 4, byte_order);
18169             *offsetp += 4;
18170             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_max_x, tvb, *offsetp, 4, byte_order);
18171             *offsetp += 4;
18172             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_min_y, tvb, *offsetp, 4, byte_order);
18173             *offsetp += 4;
18174             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_max_y, tvb, *offsetp, 4, byte_order);
18175             *offsetp += 4;
18176             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_flip_x, tvb, *offsetp, 4, byte_order);
18177             *offsetp += 4;
18178             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_flip_y, tvb, *offsetp, 4, byte_order);
18179             *offsetp += 4;
18180             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_rotation, tvb, *offsetp, 4, byte_order);
18181             *offsetp += 4;
18182             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_calib_button_threshold, tvb, *offsetp, 4, byte_order);
18183             *offsetp += 4;
18184         }
18185         if (f_control_id == 3) {
18186             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_core_status, tvb, *offsetp, 1, byte_order);
18187             *offsetp += 1;
18188             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_core_iscore, tvb, *offsetp, 1, byte_order);
18189             *offsetp += 1;
18190             UNUSED(2);
18191         }
18192         if (f_control_id == 4) {
18193             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_enable_enable, tvb, *offsetp, 1, byte_order);
18194             *offsetp += 1;
18195             UNUSED(3);
18196         }
18197         if (f_control_id == 5) {
18198             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_area_offset_x, tvb, *offsetp, 4, byte_order);
18199             *offsetp += 4;
18200             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_area_offset_y, tvb, *offsetp, 4, byte_order);
18201             *offsetp += 4;
18202             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_area_width, tvb, *offsetp, 4, byte_order);
18203             *offsetp += 4;
18204             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_area_height, tvb, *offsetp, 4, byte_order);
18205             *offsetp += 4;
18206             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_area_screen, tvb, *offsetp, 4, byte_order);
18207             *offsetp += 4;
18208             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceState_abs_area_following, tvb, *offsetp, 4, byte_order);
18209             *offsetp += 4;
18210         }
18211     }
18212 }
18213
18214 static void xinputGetDeviceControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18215 {
18216     field16(tvb, offsetp, t, hf_x11_xinput_GetDeviceControl_control_id, byte_order);
18217     proto_tree_add_item(t, hf_x11_xinput_GetDeviceControl_device_id, tvb, *offsetp, 1, byte_order);
18218     *offsetp += 1;
18219     UNUSED(1);
18220 }
18221 static void xinputGetDeviceControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18222 {
18223     int sequence_number;
18224
18225     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceControl");
18226
18227     REPLY(reply);
18228     proto_tree_add_item(t, hf_x11_xinput_GetDeviceControl_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
18229     *offsetp += 1;
18230     sequence_number = VALUE16(tvb, *offsetp);
18231     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18232             "%d (xinput-GetDeviceControl)", sequence_number);
18233     *offsetp += 2;
18234     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18235     *offsetp += 4;
18236     field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceControl_reply_status, byte_order);
18237     UNUSED(23);
18238     struct_xinput_DeviceState(tvb, offsetp, t, byte_order, 1);
18239 }
18240
18241 static int struct_size_xinput_DeviceCtl(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
18242 {
18243     int size = 0;
18244     return size + 4;
18245 }
18246
18247 static void struct_xinput_DeviceCtl(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18248 {
18249     int i;
18250     for (i = 0; i < count; i++) {
18251         proto_item *item;
18252         proto_tree *t;
18253         int f_control_id;
18254
18255         item = proto_tree_add_item(root, hf_x11_struct_xinput_DeviceCtl, tvb, *offsetp, struct_size_xinput_DeviceCtl(tvb, offsetp, byte_order), ENC_NA);
18256         t = proto_item_add_subtree(item, ett_x11_rectangle);
18257         f_control_id = field16(tvb, offsetp, t, hf_x11_struct_xinput_DeviceCtl_control_id, byte_order);
18258         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_len, tvb, *offsetp, 2, byte_order);
18259         *offsetp += 2;
18260         if (f_control_id == 1) {
18261             int f_num_valuators;
18262             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_resolution_first_valuator, tvb, *offsetp, 1, byte_order);
18263             *offsetp += 1;
18264             f_num_valuators = VALUE8(tvb, *offsetp);
18265             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_resolution_num_valuators, tvb, *offsetp, 1, byte_order);
18266             *offsetp += 1;
18267             UNUSED(2);
18268             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceCtl_resolution_resolution_values, hf_x11_struct_xinput_DeviceCtl_resolution_resolution_values_item, f_num_valuators, byte_order);
18269         }
18270         if (f_control_id == 2) {
18271             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_min_x, tvb, *offsetp, 4, byte_order);
18272             *offsetp += 4;
18273             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_max_x, tvb, *offsetp, 4, byte_order);
18274             *offsetp += 4;
18275             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_min_y, tvb, *offsetp, 4, byte_order);
18276             *offsetp += 4;
18277             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_max_y, tvb, *offsetp, 4, byte_order);
18278             *offsetp += 4;
18279             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_flip_x, tvb, *offsetp, 4, byte_order);
18280             *offsetp += 4;
18281             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_flip_y, tvb, *offsetp, 4, byte_order);
18282             *offsetp += 4;
18283             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_rotation, tvb, *offsetp, 4, byte_order);
18284             *offsetp += 4;
18285             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_calib_button_threshold, tvb, *offsetp, 4, byte_order);
18286             *offsetp += 4;
18287         }
18288         if (f_control_id == 3) {
18289             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_core_status, tvb, *offsetp, 1, byte_order);
18290             *offsetp += 1;
18291             UNUSED(3);
18292         }
18293         if (f_control_id == 4) {
18294             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_enable_enable, tvb, *offsetp, 1, byte_order);
18295             *offsetp += 1;
18296             UNUSED(3);
18297         }
18298         if (f_control_id == 5) {
18299             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_area_offset_x, tvb, *offsetp, 4, byte_order);
18300             *offsetp += 4;
18301             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_area_offset_y, tvb, *offsetp, 4, byte_order);
18302             *offsetp += 4;
18303             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_area_width, tvb, *offsetp, 4, byte_order);
18304             *offsetp += 4;
18305             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_area_height, tvb, *offsetp, 4, byte_order);
18306             *offsetp += 4;
18307             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_area_screen, tvb, *offsetp, 4, byte_order);
18308             *offsetp += 4;
18309             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceCtl_abs_area_following, tvb, *offsetp, 4, byte_order);
18310             *offsetp += 4;
18311         }
18312     }
18313 }
18314
18315 static void xinputChangeDeviceControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18316 {
18317     field16(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceControl_control_id, byte_order);
18318     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceControl_device_id, tvb, *offsetp, 1, byte_order);
18319     *offsetp += 1;
18320     UNUSED(1);
18321     struct_xinput_DeviceCtl(tvb, offsetp, t, byte_order, 1);
18322 }
18323 static void xinputChangeDeviceControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18324 {
18325     int sequence_number;
18326
18327     col_append_fstr(pinfo->cinfo, COL_INFO, "-ChangeDeviceControl");
18328
18329     REPLY(reply);
18330     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceControl_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
18331     *offsetp += 1;
18332     sequence_number = VALUE16(tvb, *offsetp);
18333     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18334             "%d (xinput-ChangeDeviceControl)", sequence_number);
18335     *offsetp += 2;
18336     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18337     *offsetp += 4;
18338     field8(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceControl_reply_status, byte_order);
18339     UNUSED(23);
18340 }
18341
18342 static void xinputListDeviceProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18343 {
18344     proto_tree_add_item(t, hf_x11_xinput_ListDeviceProperties_device_id, tvb, *offsetp, 1, byte_order);
18345     *offsetp += 1;
18346     UNUSED(3);
18347 }
18348 static void xinputListDeviceProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18349 {
18350     int sequence_number;
18351     int f_num_atoms;
18352
18353     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListDeviceProperties");
18354
18355     REPLY(reply);
18356     proto_tree_add_item(t, hf_x11_xinput_ListDeviceProperties_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
18357     *offsetp += 1;
18358     sequence_number = VALUE16(tvb, *offsetp);
18359     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18360             "%d (xinput-ListDeviceProperties)", sequence_number);
18361     *offsetp += 2;
18362     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18363     *offsetp += 4;
18364     f_num_atoms = VALUE16(tvb, *offsetp);
18365     proto_tree_add_item(t, hf_x11_xinput_ListDeviceProperties_reply_num_atoms, tvb, *offsetp, 2, byte_order);
18366     *offsetp += 2;
18367     UNUSED(22);
18368     listOfCard32(tvb, offsetp, t, hf_x11_xinput_ListDeviceProperties_reply_atoms, hf_x11_xinput_ListDeviceProperties_reply_atoms_item, f_num_atoms, byte_order);
18369 }
18370
18371 static void xinputChangeDeviceProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18372 {
18373     int f_format;
18374     int f_num_items;
18375     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceProperty_property, tvb, *offsetp, 4, byte_order);
18376     *offsetp += 4;
18377     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceProperty_type, tvb, *offsetp, 4, byte_order);
18378     *offsetp += 4;
18379     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceProperty_device_id, tvb, *offsetp, 1, byte_order);
18380     *offsetp += 1;
18381     f_format = field8(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceProperty_format, byte_order);
18382     field8(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceProperty_mode, byte_order);
18383     UNUSED(1);
18384     f_num_items = VALUE32(tvb, *offsetp);
18385     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceProperty_num_items, tvb, *offsetp, 4, byte_order);
18386     *offsetp += 4;
18387     if (f_format == 8) {
18388         listOfByte(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceProperty_8Bits_data8, f_num_items, byte_order);
18389         length -= f_num_items * 1;
18390         if (*offsetp % 4) {
18391             UNUSED(4 - *offsetp % 4);
18392         }
18393         length = ((length + 3) & ~3);
18394     }
18395     if (f_format == 16) {
18396         listOfCard16(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceProperty_16Bits_data16, hf_x11_xinput_ChangeDeviceProperty_16Bits_data16_item, f_num_items, byte_order);
18397         length -= f_num_items * 2;
18398         if (*offsetp % 4) {
18399             UNUSED(4 - *offsetp % 4);
18400         }
18401         length = ((length + 3) & ~3);
18402     }
18403     if (f_format == 32) {
18404         listOfCard32(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceProperty_32Bits_data32, hf_x11_xinput_ChangeDeviceProperty_32Bits_data32_item, f_num_items, byte_order);
18405         length -= f_num_items * 4;
18406     }
18407 }
18408
18409 static void xinputDeleteDeviceProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18410 {
18411     proto_tree_add_item(t, hf_x11_xinput_DeleteDeviceProperty_property, tvb, *offsetp, 4, byte_order);
18412     *offsetp += 4;
18413     proto_tree_add_item(t, hf_x11_xinput_DeleteDeviceProperty_device_id, tvb, *offsetp, 1, byte_order);
18414     *offsetp += 1;
18415     UNUSED(3);
18416 }
18417
18418 static void xinputGetDeviceProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18419 {
18420     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_property, tvb, *offsetp, 4, byte_order);
18421     *offsetp += 4;
18422     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_type, tvb, *offsetp, 4, byte_order);
18423     *offsetp += 4;
18424     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_offset, tvb, *offsetp, 4, byte_order);
18425     *offsetp += 4;
18426     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_len, tvb, *offsetp, 4, byte_order);
18427     *offsetp += 4;
18428     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_device_id, tvb, *offsetp, 1, byte_order);
18429     *offsetp += 1;
18430     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_delete, tvb, *offsetp, 1, byte_order);
18431     *offsetp += 1;
18432     UNUSED(2);
18433 }
18434 static void xinputGetDeviceProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18435 {
18436     int sequence_number;
18437     int f_num_items;
18438     int f_format;
18439
18440     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceProperty");
18441
18442     REPLY(reply);
18443     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_reply_xi_reply_type, tvb, *offsetp, 1, byte_order);
18444     *offsetp += 1;
18445     sequence_number = VALUE16(tvb, *offsetp);
18446     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18447             "%d (xinput-GetDeviceProperty)", sequence_number);
18448     *offsetp += 2;
18449     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18450     *offsetp += 4;
18451     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_reply_type, tvb, *offsetp, 4, byte_order);
18452     *offsetp += 4;
18453     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_reply_bytes_after, tvb, *offsetp, 4, byte_order);
18454     *offsetp += 4;
18455     f_num_items = VALUE32(tvb, *offsetp);
18456     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_reply_num_items, tvb, *offsetp, 4, byte_order);
18457     *offsetp += 4;
18458     f_format = field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceProperty_reply_format, byte_order);
18459     proto_tree_add_item(t, hf_x11_xinput_GetDeviceProperty_reply_device_id, tvb, *offsetp, 1, byte_order);
18460     *offsetp += 1;
18461     UNUSED(10);
18462     if (f_format == 8) {
18463         listOfByte(tvb, offsetp, t, hf_x11_xinput_GetDeviceProperty_reply_8Bits_data8, f_num_items, byte_order);
18464         if (*offsetp % 4) {
18465             UNUSED(4 - *offsetp % 4);
18466         }
18467     }
18468     if (f_format == 16) {
18469         listOfCard16(tvb, offsetp, t, hf_x11_xinput_GetDeviceProperty_reply_16Bits_data16, hf_x11_xinput_GetDeviceProperty_reply_16Bits_data16_item, f_num_items, byte_order);
18470         if (*offsetp % 4) {
18471             UNUSED(4 - *offsetp % 4);
18472         }
18473     }
18474     if (f_format == 32) {
18475         listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetDeviceProperty_reply_32Bits_data32, hf_x11_xinput_GetDeviceProperty_reply_32Bits_data32_item, f_num_items, byte_order);
18476     }
18477 }
18478
18479 static void struct_xinput_GroupInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18480 {
18481     int i;
18482     for (i = 0; i < count; i++) {
18483         proto_item *item;
18484         proto_tree *t;
18485
18486         item = proto_tree_add_item(root, hf_x11_struct_xinput_GroupInfo, tvb, *offsetp, 4, ENC_NA);
18487         t = proto_item_add_subtree(item, ett_x11_rectangle);
18488         proto_tree_add_item(t, hf_x11_struct_xinput_GroupInfo_base, tvb, *offsetp, 1, byte_order);
18489         *offsetp += 1;
18490         proto_tree_add_item(t, hf_x11_struct_xinput_GroupInfo_latched, tvb, *offsetp, 1, byte_order);
18491         *offsetp += 1;
18492         proto_tree_add_item(t, hf_x11_struct_xinput_GroupInfo_locked, tvb, *offsetp, 1, byte_order);
18493         *offsetp += 1;
18494         proto_tree_add_item(t, hf_x11_struct_xinput_GroupInfo_effective, tvb, *offsetp, 1, byte_order);
18495         *offsetp += 1;
18496     }
18497 }
18498
18499 static void struct_xinput_ModifierInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18500 {
18501     int i;
18502     for (i = 0; i < count; i++) {
18503         proto_item *item;
18504         proto_tree *t;
18505
18506         item = proto_tree_add_item(root, hf_x11_struct_xinput_ModifierInfo, tvb, *offsetp, 16, ENC_NA);
18507         t = proto_item_add_subtree(item, ett_x11_rectangle);
18508         proto_tree_add_item(t, hf_x11_struct_xinput_ModifierInfo_base, tvb, *offsetp, 4, byte_order);
18509         *offsetp += 4;
18510         proto_tree_add_item(t, hf_x11_struct_xinput_ModifierInfo_latched, tvb, *offsetp, 4, byte_order);
18511         *offsetp += 4;
18512         proto_tree_add_item(t, hf_x11_struct_xinput_ModifierInfo_locked, tvb, *offsetp, 4, byte_order);
18513         *offsetp += 4;
18514         proto_tree_add_item(t, hf_x11_struct_xinput_ModifierInfo_effective, tvb, *offsetp, 4, byte_order);
18515         *offsetp += 4;
18516     }
18517 }
18518
18519 static void xinputXIQueryPointer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18520 {
18521     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_window, tvb, *offsetp, 4, byte_order);
18522     *offsetp += 4;
18523     field16(tvb, offsetp, t, hf_x11_xinput_XIQueryPointer_deviceid, byte_order);
18524     UNUSED(2);
18525 }
18526 static void xinputXIQueryPointer_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18527 {
18528     int sequence_number;
18529     int f_buttons_len;
18530
18531     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIQueryPointer");
18532
18533     REPLY(reply);
18534     UNUSED(1);
18535     sequence_number = VALUE16(tvb, *offsetp);
18536     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18537             "%d (xinput-XIQueryPointer)", sequence_number);
18538     *offsetp += 2;
18539     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18540     *offsetp += 4;
18541     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_root, tvb, *offsetp, 4, byte_order);
18542     *offsetp += 4;
18543     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_child, tvb, *offsetp, 4, byte_order);
18544     *offsetp += 4;
18545     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_root_x, tvb, *offsetp, 4, byte_order);
18546     *offsetp += 4;
18547     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_root_y, tvb, *offsetp, 4, byte_order);
18548     *offsetp += 4;
18549     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_win_x, tvb, *offsetp, 4, byte_order);
18550     *offsetp += 4;
18551     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_win_y, tvb, *offsetp, 4, byte_order);
18552     *offsetp += 4;
18553     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_same_screen, tvb, *offsetp, 1, byte_order);
18554     *offsetp += 1;
18555     UNUSED(1);
18556     f_buttons_len = VALUE16(tvb, *offsetp);
18557     proto_tree_add_item(t, hf_x11_xinput_XIQueryPointer_reply_buttons_len, tvb, *offsetp, 2, byte_order);
18558     *offsetp += 2;
18559     struct_xinput_ModifierInfo(tvb, offsetp, t, byte_order, 1);
18560     struct_xinput_GroupInfo(tvb, offsetp, t, byte_order, 1);
18561     listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIQueryPointer_reply_buttons, hf_x11_xinput_XIQueryPointer_reply_buttons_item, f_buttons_len, byte_order);
18562 }
18563
18564 static void xinputXIWarpPointer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18565 {
18566     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_src_win, tvb, *offsetp, 4, byte_order);
18567     *offsetp += 4;
18568     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_dst_win, tvb, *offsetp, 4, byte_order);
18569     *offsetp += 4;
18570     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_src_x, tvb, *offsetp, 4, byte_order);
18571     *offsetp += 4;
18572     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_src_y, tvb, *offsetp, 4, byte_order);
18573     *offsetp += 4;
18574     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_src_width, tvb, *offsetp, 2, byte_order);
18575     *offsetp += 2;
18576     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_src_height, tvb, *offsetp, 2, byte_order);
18577     *offsetp += 2;
18578     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_dst_x, tvb, *offsetp, 4, byte_order);
18579     *offsetp += 4;
18580     proto_tree_add_item(t, hf_x11_xinput_XIWarpPointer_dst_y, tvb, *offsetp, 4, byte_order);
18581     *offsetp += 4;
18582     field16(tvb, offsetp, t, hf_x11_xinput_XIWarpPointer_deviceid, byte_order);
18583     UNUSED(2);
18584 }
18585
18586 static void xinputXIChangeCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18587 {
18588     proto_tree_add_item(t, hf_x11_xinput_XIChangeCursor_window, tvb, *offsetp, 4, byte_order);
18589     *offsetp += 4;
18590     proto_tree_add_item(t, hf_x11_xinput_XIChangeCursor_cursor, tvb, *offsetp, 4, byte_order);
18591     *offsetp += 4;
18592     field16(tvb, offsetp, t, hf_x11_xinput_XIChangeCursor_deviceid, byte_order);
18593     UNUSED(2);
18594 }
18595
18596 static int struct_size_xinput_HierarchyChange(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
18597 {
18598     int size = 0;
18599     return size + 4;
18600 }
18601
18602 static void struct_xinput_HierarchyChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18603 {
18604     int i;
18605     for (i = 0; i < count; i++) {
18606         proto_item *item;
18607         proto_tree *t;
18608         int f_type;
18609
18610         item = proto_tree_add_item(root, hf_x11_struct_xinput_HierarchyChange, tvb, *offsetp, struct_size_xinput_HierarchyChange(tvb, offsetp, byte_order), ENC_NA);
18611         t = proto_item_add_subtree(item, ett_x11_rectangle);
18612         f_type = field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_type, byte_order);
18613         proto_tree_add_item(t, hf_x11_struct_xinput_HierarchyChange_len, tvb, *offsetp, 2, byte_order);
18614         *offsetp += 2;
18615         if (f_type == 1) {
18616             int f_name_len;
18617             f_name_len = VALUE16(tvb, *offsetp);
18618             proto_tree_add_item(t, hf_x11_struct_xinput_HierarchyChange_AddMaster_name_len, tvb, *offsetp, 2, byte_order);
18619             *offsetp += 2;
18620             proto_tree_add_item(t, hf_x11_struct_xinput_HierarchyChange_AddMaster_send_core, tvb, *offsetp, 1, byte_order);
18621             *offsetp += 1;
18622             proto_tree_add_item(t, hf_x11_struct_xinput_HierarchyChange_AddMaster_enable, tvb, *offsetp, 1, byte_order);
18623             *offsetp += 1;
18624             listOfByte(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_AddMaster_name, f_name_len, byte_order);
18625             if (*offsetp % 4) {
18626                 UNUSED(4 - *offsetp % 4);
18627             }
18628         }
18629         if (f_type == 2) {
18630             field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_RemoveMaster_deviceid, byte_order);
18631             field8(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_RemoveMaster_return_mode, byte_order);
18632             UNUSED(1);
18633             field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_RemoveMaster_return_pointer, byte_order);
18634             field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_RemoveMaster_return_keyboard, byte_order);
18635         }
18636         if (f_type == 3) {
18637             field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_AttachSlave_deviceid, byte_order);
18638             field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_AttachSlave_master, byte_order);
18639         }
18640         if (f_type == 4) {
18641             field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyChange_DetachSlave_deviceid, byte_order);
18642             UNUSED(2);
18643         }
18644     }
18645 }
18646
18647 static void xinputXIChangeHierarchy(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18648 {
18649     int f_num_changes;
18650     f_num_changes = VALUE8(tvb, *offsetp);
18651     proto_tree_add_item(t, hf_x11_xinput_XIChangeHierarchy_num_changes, tvb, *offsetp, 1, byte_order);
18652     *offsetp += 1;
18653     UNUSED(3);
18654     struct_xinput_HierarchyChange(tvb, offsetp, t, byte_order, f_num_changes);
18655     length -= f_num_changes * 0;
18656 }
18657
18658 static void xinputXISetClientPointer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18659 {
18660     proto_tree_add_item(t, hf_x11_xinput_XISetClientPointer_window, tvb, *offsetp, 4, byte_order);
18661     *offsetp += 4;
18662     field16(tvb, offsetp, t, hf_x11_xinput_XISetClientPointer_deviceid, byte_order);
18663     UNUSED(2);
18664 }
18665
18666 static void xinputXIGetClientPointer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18667 {
18668     proto_tree_add_item(t, hf_x11_xinput_XIGetClientPointer_window, tvb, *offsetp, 4, byte_order);
18669     *offsetp += 4;
18670 }
18671 static void xinputXIGetClientPointer_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18672 {
18673     int sequence_number;
18674
18675     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIGetClientPointer");
18676
18677     REPLY(reply);
18678     UNUSED(1);
18679     sequence_number = VALUE16(tvb, *offsetp);
18680     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18681             "%d (xinput-XIGetClientPointer)", sequence_number);
18682     *offsetp += 2;
18683     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18684     *offsetp += 4;
18685     proto_tree_add_item(t, hf_x11_xinput_XIGetClientPointer_reply_set, tvb, *offsetp, 1, byte_order);
18686     *offsetp += 1;
18687     UNUSED(1);
18688     field16(tvb, offsetp, t, hf_x11_xinput_XIGetClientPointer_reply_deviceid, byte_order);
18689     UNUSED(20);
18690 }
18691
18692 static int struct_size_xinput_EventMask(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
18693 {
18694     int size = 0;
18695     int f_mask_len;
18696     f_mask_len = VALUE16(tvb, *offsetp + size + 2);
18697     size += f_mask_len * 4;
18698     return size + 4;
18699 }
18700
18701 static void struct_xinput_EventMask(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18702 {
18703     int i;
18704     for (i = 0; i < count; i++) {
18705         proto_item *item;
18706         proto_tree *t;
18707         int f_mask_len;
18708
18709         item = proto_tree_add_item(root, hf_x11_struct_xinput_EventMask, tvb, *offsetp, struct_size_xinput_EventMask(tvb, offsetp, byte_order), ENC_NA);
18710         t = proto_item_add_subtree(item, ett_x11_rectangle);
18711         field16(tvb, offsetp, t, hf_x11_struct_xinput_EventMask_deviceid, byte_order);
18712         f_mask_len = VALUE16(tvb, *offsetp);
18713         proto_tree_add_item(t, hf_x11_struct_xinput_EventMask_mask_len, tvb, *offsetp, 2, byte_order);
18714         *offsetp += 2;
18715         listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_EventMask_mask, hf_x11_struct_xinput_EventMask_mask_item, f_mask_len, byte_order);
18716     }
18717 }
18718
18719 static void xinputXISelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18720 {
18721     int f_num_mask;
18722     proto_tree_add_item(t, hf_x11_xinput_XISelectEvents_window, tvb, *offsetp, 4, byte_order);
18723     *offsetp += 4;
18724     f_num_mask = VALUE16(tvb, *offsetp);
18725     proto_tree_add_item(t, hf_x11_xinput_XISelectEvents_num_mask, tvb, *offsetp, 2, byte_order);
18726     *offsetp += 2;
18727     UNUSED(2);
18728     struct_xinput_EventMask(tvb, offsetp, t, byte_order, f_num_mask);
18729     length -= f_num_mask * 0;
18730 }
18731
18732 static void xinputXIQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18733 {
18734     proto_tree_add_item(t, hf_x11_xinput_XIQueryVersion_major_version, tvb, *offsetp, 2, byte_order);
18735     *offsetp += 2;
18736     proto_tree_add_item(t, hf_x11_xinput_XIQueryVersion_minor_version, tvb, *offsetp, 2, byte_order);
18737     *offsetp += 2;
18738 }
18739 static void xinputXIQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18740 {
18741     int sequence_number;
18742
18743     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIQueryVersion");
18744
18745     REPLY(reply);
18746     UNUSED(1);
18747     sequence_number = VALUE16(tvb, *offsetp);
18748     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18749             "%d (xinput-XIQueryVersion)", sequence_number);
18750     *offsetp += 2;
18751     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18752     *offsetp += 4;
18753     proto_tree_add_item(t, hf_x11_xinput_XIQueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
18754     *offsetp += 2;
18755     proto_tree_add_item(t, hf_x11_xinput_XIQueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
18756     *offsetp += 2;
18757     UNUSED(20);
18758 }
18759
18760 static int struct_size_xinput_DeviceClass(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
18761 {
18762     int size = 0;
18763     return size + 6;
18764 }
18765
18766 static void struct_xinput_DeviceClass(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18767 {
18768     int i;
18769     for (i = 0; i < count; i++) {
18770         proto_item *item;
18771         proto_tree *t;
18772         int f_type;
18773
18774         item = proto_tree_add_item(root, hf_x11_struct_xinput_DeviceClass, tvb, *offsetp, struct_size_xinput_DeviceClass(tvb, offsetp, byte_order), ENC_NA);
18775         t = proto_item_add_subtree(item, ett_x11_rectangle);
18776         f_type = field16(tvb, offsetp, t, hf_x11_struct_xinput_DeviceClass_type, byte_order);
18777         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_len, tvb, *offsetp, 2, byte_order);
18778         *offsetp += 2;
18779         proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_sourceid, tvb, *offsetp, 2, byte_order);
18780         *offsetp += 2;
18781         if (f_type == 0) {
18782             int f_num_keys;
18783             f_num_keys = VALUE16(tvb, *offsetp);
18784             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_Key_num_keys, tvb, *offsetp, 2, byte_order);
18785             *offsetp += 2;
18786             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceClass_Key_keys, hf_x11_struct_xinput_DeviceClass_Key_keys_item, f_num_keys, byte_order);
18787         }
18788         if (f_type == 1) {
18789             int f_num_buttons;
18790             f_num_buttons = VALUE16(tvb, *offsetp);
18791             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_Button_num_buttons, tvb, *offsetp, 2, byte_order);
18792             *offsetp += 2;
18793             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceClass_Button_state, hf_x11_struct_xinput_DeviceClass_Button_state_item, ((f_num_buttons + 31) / 32), byte_order);
18794             listOfCard32(tvb, offsetp, t, hf_x11_struct_xinput_DeviceClass_Button_labels, hf_x11_struct_xinput_DeviceClass_Button_labels_item, f_num_buttons, byte_order);
18795         }
18796         if (f_type == 2) {
18797             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_Valuator_number, tvb, *offsetp, 2, byte_order);
18798             *offsetp += 2;
18799             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_Valuator_label, tvb, *offsetp, 4, byte_order);
18800             *offsetp += 4;
18801             struct_xinput_FP3232(tvb, offsetp, t, byte_order, 1);
18802             struct_xinput_FP3232(tvb, offsetp, t, byte_order, 1);
18803             struct_xinput_FP3232(tvb, offsetp, t, byte_order, 1);
18804             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_Valuator_resolution, tvb, *offsetp, 4, byte_order);
18805             *offsetp += 4;
18806             field8(tvb, offsetp, t, hf_x11_struct_xinput_DeviceClass_Valuator_mode, byte_order);
18807             UNUSED(3);
18808         }
18809         if (f_type == 3) {
18810             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_Scroll_number, tvb, *offsetp, 2, byte_order);
18811             *offsetp += 2;
18812             field16(tvb, offsetp, t, hf_x11_struct_xinput_DeviceClass_Scroll_scroll_type, byte_order);
18813             UNUSED(2);
18814             {
18815                 const int* flags_bits [] = {
18816                         &hf_x11_struct_xinput_DeviceClass_Scroll_flags_mask_NoEmulation,
18817                         &hf_x11_struct_xinput_DeviceClass_Scroll_flags_mask_Preferred,
18818                 };
18819                 proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xinput_DeviceClass_Scroll_flags, ett_x11_rectangle, flags_bits, byte_order);
18820             }
18821             *offsetp += 4;
18822             struct_xinput_FP3232(tvb, offsetp, t, byte_order, 1);
18823         }
18824         if (f_type == 8) {
18825             field8(tvb, offsetp, t, hf_x11_struct_xinput_DeviceClass_Touch_mode, byte_order);
18826             proto_tree_add_item(t, hf_x11_struct_xinput_DeviceClass_Touch_num_touches, tvb, *offsetp, 1, byte_order);
18827             *offsetp += 1;
18828         }
18829     }
18830 }
18831
18832 static int struct_size_xinput_XIDeviceInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
18833 {
18834     int size = 0;
18835     int i, off;
18836     int f_name_len;
18837     int f_num_classes;
18838     f_num_classes = VALUE16(tvb, *offsetp + size + 6);
18839     f_name_len = VALUE16(tvb, *offsetp + size + 8);
18840     size += f_name_len * 1;
18841     size = (size + 3) & ~3;
18842     for (i = 0; i < f_num_classes; i++) {
18843         off = (*offsetp) + size + 12;
18844         size += struct_size_xinput_DeviceClass(tvb, &off, byte_order);
18845     }
18846     return size + 12;
18847 }
18848
18849 static void struct_xinput_XIDeviceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18850 {
18851     int i;
18852     for (i = 0; i < count; i++) {
18853         proto_item *item;
18854         proto_tree *t;
18855         int f_num_classes;
18856         int f_name_len;
18857
18858         item = proto_tree_add_item(root, hf_x11_struct_xinput_XIDeviceInfo, tvb, *offsetp, struct_size_xinput_XIDeviceInfo(tvb, offsetp, byte_order), ENC_NA);
18859         t = proto_item_add_subtree(item, ett_x11_rectangle);
18860         field16(tvb, offsetp, t, hf_x11_struct_xinput_XIDeviceInfo_deviceid, byte_order);
18861         field16(tvb, offsetp, t, hf_x11_struct_xinput_XIDeviceInfo_type, byte_order);
18862         field16(tvb, offsetp, t, hf_x11_struct_xinput_XIDeviceInfo_attachment, byte_order);
18863         f_num_classes = VALUE16(tvb, *offsetp);
18864         proto_tree_add_item(t, hf_x11_struct_xinput_XIDeviceInfo_num_classes, tvb, *offsetp, 2, byte_order);
18865         *offsetp += 2;
18866         f_name_len = VALUE16(tvb, *offsetp);
18867         proto_tree_add_item(t, hf_x11_struct_xinput_XIDeviceInfo_name_len, tvb, *offsetp, 2, byte_order);
18868         *offsetp += 2;
18869         proto_tree_add_item(t, hf_x11_struct_xinput_XIDeviceInfo_enabled, tvb, *offsetp, 1, byte_order);
18870         *offsetp += 1;
18871         UNUSED(1);
18872         listOfByte(tvb, offsetp, t, hf_x11_struct_xinput_XIDeviceInfo_name, f_name_len, byte_order);
18873         if (*offsetp % 4) {
18874             UNUSED(4 - *offsetp % 4);
18875         }
18876         struct_xinput_DeviceClass(tvb, offsetp, t, byte_order, f_num_classes);
18877     }
18878 }
18879
18880 static void xinputXIQueryDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18881 {
18882     field16(tvb, offsetp, t, hf_x11_xinput_XIQueryDevice_deviceid, byte_order);
18883     UNUSED(2);
18884 }
18885 static void xinputXIQueryDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18886 {
18887     int sequence_number;
18888     int f_num_infos;
18889
18890     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIQueryDevice");
18891
18892     REPLY(reply);
18893     UNUSED(1);
18894     sequence_number = VALUE16(tvb, *offsetp);
18895     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18896             "%d (xinput-XIQueryDevice)", sequence_number);
18897     *offsetp += 2;
18898     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18899     *offsetp += 4;
18900     f_num_infos = VALUE16(tvb, *offsetp);
18901     proto_tree_add_item(t, hf_x11_xinput_XIQueryDevice_reply_num_infos, tvb, *offsetp, 2, byte_order);
18902     *offsetp += 2;
18903     UNUSED(22);
18904     struct_xinput_XIDeviceInfo(tvb, offsetp, t, byte_order, f_num_infos);
18905 }
18906
18907 static void xinputXISetFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18908 {
18909     proto_tree_add_item(t, hf_x11_xinput_XISetFocus_window, tvb, *offsetp, 4, byte_order);
18910     *offsetp += 4;
18911     field32(tvb, offsetp, t, hf_x11_xinput_XISetFocus_time, byte_order);
18912     field16(tvb, offsetp, t, hf_x11_xinput_XISetFocus_deviceid, byte_order);
18913     UNUSED(2);
18914 }
18915
18916 static void xinputXIGetFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18917 {
18918     field16(tvb, offsetp, t, hf_x11_xinput_XIGetFocus_deviceid, byte_order);
18919     UNUSED(2);
18920 }
18921 static void xinputXIGetFocus_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18922 {
18923     int sequence_number;
18924
18925     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIGetFocus");
18926
18927     REPLY(reply);
18928     UNUSED(1);
18929     sequence_number = VALUE16(tvb, *offsetp);
18930     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18931             "%d (xinput-XIGetFocus)", sequence_number);
18932     *offsetp += 2;
18933     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18934     *offsetp += 4;
18935     proto_tree_add_item(t, hf_x11_xinput_XIGetFocus_reply_focus, tvb, *offsetp, 4, byte_order);
18936     *offsetp += 4;
18937     UNUSED(20);
18938 }
18939
18940 static void xinputXIGrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18941 {
18942     int f_mask_len;
18943     proto_tree_add_item(t, hf_x11_xinput_XIGrabDevice_window, tvb, *offsetp, 4, byte_order);
18944     *offsetp += 4;
18945     field32(tvb, offsetp, t, hf_x11_xinput_XIGrabDevice_time, byte_order);
18946     proto_tree_add_item(t, hf_x11_xinput_XIGrabDevice_cursor, tvb, *offsetp, 4, byte_order);
18947     *offsetp += 4;
18948     field16(tvb, offsetp, t, hf_x11_xinput_XIGrabDevice_deviceid, byte_order);
18949     field8(tvb, offsetp, t, hf_x11_xinput_XIGrabDevice_mode, byte_order);
18950     field8(tvb, offsetp, t, hf_x11_xinput_XIGrabDevice_paired_device_mode, byte_order);
18951     field8(tvb, offsetp, t, hf_x11_xinput_XIGrabDevice_owner_events, byte_order);
18952     UNUSED(1);
18953     f_mask_len = VALUE16(tvb, *offsetp);
18954     proto_tree_add_item(t, hf_x11_xinput_XIGrabDevice_mask_len, tvb, *offsetp, 2, byte_order);
18955     *offsetp += 2;
18956     listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIGrabDevice_mask, hf_x11_xinput_XIGrabDevice_mask_item, f_mask_len, byte_order);
18957     length -= f_mask_len * 4;
18958 }
18959 static void xinputXIGrabDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
18960 {
18961     int sequence_number;
18962
18963     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIGrabDevice");
18964
18965     REPLY(reply);
18966     UNUSED(1);
18967     sequence_number = VALUE16(tvb, *offsetp);
18968     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
18969             "%d (xinput-XIGrabDevice)", sequence_number);
18970     *offsetp += 2;
18971     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
18972     *offsetp += 4;
18973     field8(tvb, offsetp, t, hf_x11_xinput_XIGrabDevice_reply_status, byte_order);
18974     UNUSED(23);
18975 }
18976
18977 static void xinputXIUngrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18978 {
18979     field32(tvb, offsetp, t, hf_x11_xinput_XIUngrabDevice_time, byte_order);
18980     field16(tvb, offsetp, t, hf_x11_xinput_XIUngrabDevice_deviceid, byte_order);
18981     UNUSED(2);
18982 }
18983
18984 static void xinputXIAllowEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
18985 {
18986     field32(tvb, offsetp, t, hf_x11_xinput_XIAllowEvents_time, byte_order);
18987     field16(tvb, offsetp, t, hf_x11_xinput_XIAllowEvents_deviceid, byte_order);
18988     field8(tvb, offsetp, t, hf_x11_xinput_XIAllowEvents_event_mode, byte_order);
18989     UNUSED(1);
18990     proto_tree_add_item(t, hf_x11_xinput_XIAllowEvents_touchid, tvb, *offsetp, 4, byte_order);
18991     *offsetp += 4;
18992     proto_tree_add_item(t, hf_x11_xinput_XIAllowEvents_grab_window, tvb, *offsetp, 4, byte_order);
18993     *offsetp += 4;
18994 }
18995
18996 static void struct_xinput_GrabModifierInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
18997 {
18998     int i;
18999     for (i = 0; i < count; i++) {
19000         proto_item *item;
19001         proto_tree *t;
19002
19003         item = proto_tree_add_item(root, hf_x11_struct_xinput_GrabModifierInfo, tvb, *offsetp, 8, ENC_NA);
19004         t = proto_item_add_subtree(item, ett_x11_rectangle);
19005         field32(tvb, offsetp, t, hf_x11_struct_xinput_GrabModifierInfo_modifiers, byte_order);
19006         field8(tvb, offsetp, t, hf_x11_struct_xinput_GrabModifierInfo_status, byte_order);
19007         UNUSED(3);
19008     }
19009 }
19010
19011 static void xinputXIPassiveGrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19012 {
19013     int f_num_modifiers;
19014     int f_mask_len;
19015     field32(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_time, byte_order);
19016     proto_tree_add_item(t, hf_x11_xinput_XIPassiveGrabDevice_grab_window, tvb, *offsetp, 4, byte_order);
19017     *offsetp += 4;
19018     proto_tree_add_item(t, hf_x11_xinput_XIPassiveGrabDevice_cursor, tvb, *offsetp, 4, byte_order);
19019     *offsetp += 4;
19020     proto_tree_add_item(t, hf_x11_xinput_XIPassiveGrabDevice_detail, tvb, *offsetp, 4, byte_order);
19021     *offsetp += 4;
19022     field16(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_deviceid, byte_order);
19023     f_num_modifiers = VALUE16(tvb, *offsetp);
19024     proto_tree_add_item(t, hf_x11_xinput_XIPassiveGrabDevice_num_modifiers, tvb, *offsetp, 2, byte_order);
19025     *offsetp += 2;
19026     f_mask_len = VALUE16(tvb, *offsetp);
19027     proto_tree_add_item(t, hf_x11_xinput_XIPassiveGrabDevice_mask_len, tvb, *offsetp, 2, byte_order);
19028     *offsetp += 2;
19029     field8(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_grab_type, byte_order);
19030     field8(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_grab_mode, byte_order);
19031     field8(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_paired_device_mode, byte_order);
19032     field8(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_owner_events, byte_order);
19033     UNUSED(2);
19034     listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_mask, hf_x11_xinput_XIPassiveGrabDevice_mask_item, f_mask_len, byte_order);
19035     length -= f_mask_len * 4;
19036     listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIPassiveGrabDevice_modifiers, hf_x11_xinput_XIPassiveGrabDevice_modifiers_item, f_num_modifiers, byte_order);
19037     length -= f_num_modifiers * 4;
19038 }
19039 static void xinputXIPassiveGrabDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
19040 {
19041     int sequence_number;
19042     int f_num_modifiers;
19043
19044     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIPassiveGrabDevice");
19045
19046     REPLY(reply);
19047     UNUSED(1);
19048     sequence_number = VALUE16(tvb, *offsetp);
19049     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
19050             "%d (xinput-XIPassiveGrabDevice)", sequence_number);
19051     *offsetp += 2;
19052     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
19053     *offsetp += 4;
19054     f_num_modifiers = VALUE16(tvb, *offsetp);
19055     proto_tree_add_item(t, hf_x11_xinput_XIPassiveGrabDevice_reply_num_modifiers, tvb, *offsetp, 2, byte_order);
19056     *offsetp += 2;
19057     UNUSED(22);
19058     struct_xinput_GrabModifierInfo(tvb, offsetp, t, byte_order, f_num_modifiers);
19059 }
19060
19061 static void xinputXIPassiveUngrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19062 {
19063     int f_num_modifiers;
19064     proto_tree_add_item(t, hf_x11_xinput_XIPassiveUngrabDevice_grab_window, tvb, *offsetp, 4, byte_order);
19065     *offsetp += 4;
19066     proto_tree_add_item(t, hf_x11_xinput_XIPassiveUngrabDevice_detail, tvb, *offsetp, 4, byte_order);
19067     *offsetp += 4;
19068     field16(tvb, offsetp, t, hf_x11_xinput_XIPassiveUngrabDevice_deviceid, byte_order);
19069     f_num_modifiers = VALUE16(tvb, *offsetp);
19070     proto_tree_add_item(t, hf_x11_xinput_XIPassiveUngrabDevice_num_modifiers, tvb, *offsetp, 2, byte_order);
19071     *offsetp += 2;
19072     field8(tvb, offsetp, t, hf_x11_xinput_XIPassiveUngrabDevice_grab_type, byte_order);
19073     UNUSED(3);
19074     listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIPassiveUngrabDevice_modifiers, hf_x11_xinput_XIPassiveUngrabDevice_modifiers_item, f_num_modifiers, byte_order);
19075     length -= f_num_modifiers * 4;
19076 }
19077
19078 static void xinputXIListProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19079 {
19080     field16(tvb, offsetp, t, hf_x11_xinput_XIListProperties_deviceid, byte_order);
19081     UNUSED(2);
19082 }
19083 static void xinputXIListProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
19084 {
19085     int sequence_number;
19086     int f_num_properties;
19087
19088     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIListProperties");
19089
19090     REPLY(reply);
19091     UNUSED(1);
19092     sequence_number = VALUE16(tvb, *offsetp);
19093     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
19094             "%d (xinput-XIListProperties)", sequence_number);
19095     *offsetp += 2;
19096     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
19097     *offsetp += 4;
19098     f_num_properties = VALUE16(tvb, *offsetp);
19099     proto_tree_add_item(t, hf_x11_xinput_XIListProperties_reply_num_properties, tvb, *offsetp, 2, byte_order);
19100     *offsetp += 2;
19101     UNUSED(22);
19102     listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIListProperties_reply_properties, hf_x11_xinput_XIListProperties_reply_properties_item, f_num_properties, byte_order);
19103 }
19104
19105 static void xinputXIChangeProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19106 {
19107     int f_format;
19108     int f_num_items;
19109     field16(tvb, offsetp, t, hf_x11_xinput_XIChangeProperty_deviceid, byte_order);
19110     field8(tvb, offsetp, t, hf_x11_xinput_XIChangeProperty_mode, byte_order);
19111     f_format = field8(tvb, offsetp, t, hf_x11_xinput_XIChangeProperty_format, byte_order);
19112     proto_tree_add_item(t, hf_x11_xinput_XIChangeProperty_property, tvb, *offsetp, 4, byte_order);
19113     *offsetp += 4;
19114     proto_tree_add_item(t, hf_x11_xinput_XIChangeProperty_type, tvb, *offsetp, 4, byte_order);
19115     *offsetp += 4;
19116     f_num_items = VALUE32(tvb, *offsetp);
19117     proto_tree_add_item(t, hf_x11_xinput_XIChangeProperty_num_items, tvb, *offsetp, 4, byte_order);
19118     *offsetp += 4;
19119     if (f_format == 8) {
19120         listOfByte(tvb, offsetp, t, hf_x11_xinput_XIChangeProperty_8Bits_data8, f_num_items, byte_order);
19121         length -= f_num_items * 1;
19122         if (*offsetp % 4) {
19123             UNUSED(4 - *offsetp % 4);
19124         }
19125         length = ((length + 3) & ~3);
19126     }
19127     if (f_format == 16) {
19128         listOfCard16(tvb, offsetp, t, hf_x11_xinput_XIChangeProperty_16Bits_data16, hf_x11_xinput_XIChangeProperty_16Bits_data16_item, f_num_items, byte_order);
19129         length -= f_num_items * 2;
19130         if (*offsetp % 4) {
19131             UNUSED(4 - *offsetp % 4);
19132         }
19133         length = ((length + 3) & ~3);
19134     }
19135     if (f_format == 32) {
19136         listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIChangeProperty_32Bits_data32, hf_x11_xinput_XIChangeProperty_32Bits_data32_item, f_num_items, byte_order);
19137         length -= f_num_items * 4;
19138     }
19139 }
19140
19141 static void xinputXIDeleteProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19142 {
19143     field16(tvb, offsetp, t, hf_x11_xinput_XIDeleteProperty_deviceid, byte_order);
19144     UNUSED(2);
19145     proto_tree_add_item(t, hf_x11_xinput_XIDeleteProperty_property, tvb, *offsetp, 4, byte_order);
19146     *offsetp += 4;
19147 }
19148
19149 static void xinputXIGetProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19150 {
19151     field16(tvb, offsetp, t, hf_x11_xinput_XIGetProperty_deviceid, byte_order);
19152     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_delete, tvb, *offsetp, 1, byte_order);
19153     *offsetp += 1;
19154     UNUSED(1);
19155     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_property, tvb, *offsetp, 4, byte_order);
19156     *offsetp += 4;
19157     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_type, tvb, *offsetp, 4, byte_order);
19158     *offsetp += 4;
19159     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_offset, tvb, *offsetp, 4, byte_order);
19160     *offsetp += 4;
19161     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_len, tvb, *offsetp, 4, byte_order);
19162     *offsetp += 4;
19163 }
19164 static void xinputXIGetProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
19165 {
19166     int sequence_number;
19167     int f_num_items;
19168     int f_format;
19169
19170     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIGetProperty");
19171
19172     REPLY(reply);
19173     UNUSED(1);
19174     sequence_number = VALUE16(tvb, *offsetp);
19175     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
19176             "%d (xinput-XIGetProperty)", sequence_number);
19177     *offsetp += 2;
19178     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
19179     *offsetp += 4;
19180     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_reply_type, tvb, *offsetp, 4, byte_order);
19181     *offsetp += 4;
19182     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_reply_bytes_after, tvb, *offsetp, 4, byte_order);
19183     *offsetp += 4;
19184     f_num_items = VALUE32(tvb, *offsetp);
19185     proto_tree_add_item(t, hf_x11_xinput_XIGetProperty_reply_num_items, tvb, *offsetp, 4, byte_order);
19186     *offsetp += 4;
19187     f_format = field8(tvb, offsetp, t, hf_x11_xinput_XIGetProperty_reply_format, byte_order);
19188     UNUSED(11);
19189     if (f_format == 8) {
19190         listOfByte(tvb, offsetp, t, hf_x11_xinput_XIGetProperty_reply_8Bits_data8, f_num_items, byte_order);
19191         if (*offsetp % 4) {
19192             UNUSED(4 - *offsetp % 4);
19193         }
19194     }
19195     if (f_format == 16) {
19196         listOfCard16(tvb, offsetp, t, hf_x11_xinput_XIGetProperty_reply_16Bits_data16, hf_x11_xinput_XIGetProperty_reply_16Bits_data16_item, f_num_items, byte_order);
19197         if (*offsetp % 4) {
19198             UNUSED(4 - *offsetp % 4);
19199         }
19200     }
19201     if (f_format == 32) {
19202         listOfCard32(tvb, offsetp, t, hf_x11_xinput_XIGetProperty_reply_32Bits_data32, hf_x11_xinput_XIGetProperty_reply_32Bits_data32_item, f_num_items, byte_order);
19203     }
19204 }
19205
19206 static void xinputXIGetSelectedEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19207 {
19208     proto_tree_add_item(t, hf_x11_xinput_XIGetSelectedEvents_window, tvb, *offsetp, 4, byte_order);
19209     *offsetp += 4;
19210 }
19211 static void xinputXIGetSelectedEvents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
19212 {
19213     int sequence_number;
19214     int f_num_masks;
19215
19216     col_append_fstr(pinfo->cinfo, COL_INFO, "-XIGetSelectedEvents");
19217
19218     REPLY(reply);
19219     UNUSED(1);
19220     sequence_number = VALUE16(tvb, *offsetp);
19221     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
19222             "%d (xinput-XIGetSelectedEvents)", sequence_number);
19223     *offsetp += 2;
19224     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
19225     *offsetp += 4;
19226     f_num_masks = VALUE16(tvb, *offsetp);
19227     proto_tree_add_item(t, hf_x11_xinput_XIGetSelectedEvents_reply_num_masks, tvb, *offsetp, 2, byte_order);
19228     *offsetp += 2;
19229     UNUSED(22);
19230     struct_xinput_EventMask(tvb, offsetp, t, byte_order, f_num_masks);
19231 }
19232
19233 static void struct_xinput_BarrierReleasePointerInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
19234 {
19235     int i;
19236     for (i = 0; i < count; i++) {
19237         proto_item *item;
19238         proto_tree *t;
19239
19240         item = proto_tree_add_item(root, hf_x11_struct_xinput_BarrierReleasePointerInfo, tvb, *offsetp, 12, ENC_NA);
19241         t = proto_item_add_subtree(item, ett_x11_rectangle);
19242         proto_tree_add_item(t, hf_x11_struct_xinput_BarrierReleasePointerInfo_deviceid, tvb, *offsetp, 2, byte_order);
19243         *offsetp += 2;
19244         UNUSED(2);
19245         proto_tree_add_item(t, hf_x11_struct_xinput_BarrierReleasePointerInfo_barrier, tvb, *offsetp, 4, byte_order);
19246         *offsetp += 4;
19247         proto_tree_add_item(t, hf_x11_struct_xinput_BarrierReleasePointerInfo_eventid, tvb, *offsetp, 4, byte_order);
19248         *offsetp += 4;
19249     }
19250 }
19251
19252 static void xinputXIBarrierReleasePointer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19253 {
19254     int f_num_barriers;
19255     f_num_barriers = VALUE32(tvb, *offsetp);
19256     proto_tree_add_item(t, hf_x11_xinput_XIBarrierReleasePointer_num_barriers, tvb, *offsetp, 4, byte_order);
19257     *offsetp += 4;
19258     struct_xinput_BarrierReleasePointerInfo(tvb, offsetp, t, byte_order, f_num_barriers);
19259     length -= f_num_barriers * 12;
19260 }
19261
19262 static void xinputDeviceKeyPress(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19263 {
19264     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_detail, tvb, *offsetp, 1, ENC_NA);
19265     *offsetp += 1;
19266     CARD16(event_sequencenumber);
19267     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_time, tvb, *offsetp, 4, byte_order);
19268     *offsetp += 4;
19269     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root, tvb, *offsetp, 4, byte_order);
19270     *offsetp += 4;
19271     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event, tvb, *offsetp, 4, byte_order);
19272     *offsetp += 4;
19273     field32(tvb, offsetp, t, hf_x11_xinput_DeviceKeyPress_child, byte_order);
19274     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root_x, tvb, *offsetp, 2, byte_order);
19275     *offsetp += 2;
19276     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root_y, tvb, *offsetp, 2, byte_order);
19277     *offsetp += 2;
19278     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event_x, tvb, *offsetp, 2, byte_order);
19279     *offsetp += 2;
19280     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event_y, tvb, *offsetp, 2, byte_order);
19281     *offsetp += 2;
19282     {
19283         const int* state_bits [] = {
19284         &hf_x11_xinput_DeviceKeyPress_state_mask_Shift,
19285         &hf_x11_xinput_DeviceKeyPress_state_mask_Lock,
19286         &hf_x11_xinput_DeviceKeyPress_state_mask_Control,
19287         &hf_x11_xinput_DeviceKeyPress_state_mask_Mod1,
19288         &hf_x11_xinput_DeviceKeyPress_state_mask_Mod2,
19289         &hf_x11_xinput_DeviceKeyPress_state_mask_Mod3,
19290         &hf_x11_xinput_DeviceKeyPress_state_mask_Mod4,
19291         &hf_x11_xinput_DeviceKeyPress_state_mask_Mod5,
19292         &hf_x11_xinput_DeviceKeyPress_state_mask_Button1,
19293         &hf_x11_xinput_DeviceKeyPress_state_mask_Button2,
19294         &hf_x11_xinput_DeviceKeyPress_state_mask_Button3,
19295         &hf_x11_xinput_DeviceKeyPress_state_mask_Button4,
19296         &hf_x11_xinput_DeviceKeyPress_state_mask_Button5,
19297         };
19298         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_DeviceKeyPress_state, ett_x11_rectangle, state_bits, byte_order);
19299     }
19300     *offsetp += 2;
19301     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_same_screen, tvb, *offsetp, 1, byte_order);
19302     *offsetp += 1;
19303     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_device_id, tvb, *offsetp, 1, byte_order);
19304     *offsetp += 1;
19305 }
19306
19307
19308 static void xinputDeviceFocusIn(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19309 {
19310     field8(tvb, offsetp, t, hf_x11_xinput_DeviceFocusIn_detail, byte_order);
19311     CARD16(event_sequencenumber);
19312     proto_tree_add_item(t, hf_x11_xinput_DeviceFocusIn_time, tvb, *offsetp, 4, byte_order);
19313     *offsetp += 4;
19314     proto_tree_add_item(t, hf_x11_xinput_DeviceFocusIn_window, tvb, *offsetp, 4, byte_order);
19315     *offsetp += 4;
19316     field8(tvb, offsetp, t, hf_x11_xinput_DeviceFocusIn_mode, byte_order);
19317     proto_tree_add_item(t, hf_x11_xinput_DeviceFocusIn_device_id, tvb, *offsetp, 1, byte_order);
19318     *offsetp += 1;
19319     UNUSED(18);
19320 }
19321
19322
19323 static void xinputDeviceStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19324 {
19325     proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_device_id, tvb, *offsetp, 1, ENC_NA);
19326     *offsetp += 1;
19327     CARD16(event_sequencenumber);
19328     proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_time, tvb, *offsetp, 4, byte_order);
19329     *offsetp += 4;
19330     proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_keys, tvb, *offsetp, 1, byte_order);
19331     *offsetp += 1;
19332     proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_buttons, tvb, *offsetp, 1, byte_order);
19333     *offsetp += 1;
19334     proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_valuators, tvb, *offsetp, 1, byte_order);
19335     *offsetp += 1;
19336     {
19337         const int* classes_reported_bits [] = {
19338         &hf_x11_xinput_DeviceStateNotify_classes_reported_mask_ReportingKeys,
19339         &hf_x11_xinput_DeviceStateNotify_classes_reported_mask_ReportingButtons,
19340         &hf_x11_xinput_DeviceStateNotify_classes_reported_mask_ReportingValuators,
19341         &hf_x11_xinput_DeviceStateNotify_classes_reported_mask_DeviceModeAbsolute,
19342         &hf_x11_xinput_DeviceStateNotify_classes_reported_mask_OutOfProximity,
19343         };
19344         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_DeviceStateNotify_classes_reported, ett_x11_rectangle, classes_reported_bits, byte_order);
19345     }
19346     *offsetp += 1;
19347     listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_buttons, 4, byte_order);
19348     listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_keys, 4, byte_order);
19349     listOfCard32(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_valuators, hf_x11_xinput_DeviceStateNotify_valuators_item, 3, byte_order);
19350 }
19351
19352
19353 static void xinputDeviceMappingNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19354 {
19355     proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_device_id, tvb, *offsetp, 1, ENC_NA);
19356     *offsetp += 1;
19357     CARD16(event_sequencenumber);
19358     field8(tvb, offsetp, t, hf_x11_xinput_DeviceMappingNotify_request, byte_order);
19359     proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_first_keycode, tvb, *offsetp, 1, byte_order);
19360     *offsetp += 1;
19361     proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_count, tvb, *offsetp, 1, byte_order);
19362     *offsetp += 1;
19363     UNUSED(1);
19364     proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_time, tvb, *offsetp, 4, byte_order);
19365     *offsetp += 4;
19366     UNUSED(20);
19367 }
19368
19369
19370 static void xinputChangeDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19371 {
19372     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_device_id, tvb, *offsetp, 1, ENC_NA);
19373     *offsetp += 1;
19374     CARD16(event_sequencenumber);
19375     proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_time, tvb, *offsetp, 4, byte_order);
19376     *offsetp += 4;
19377     field8(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceNotify_request, byte_order);
19378     UNUSED(23);
19379 }
19380
19381
19382 static void xinputDeviceKeyStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19383 {
19384     proto_tree_add_item(t, hf_x11_xinput_DeviceKeyStateNotify_device_id, tvb, *offsetp, 1, ENC_NA);
19385     *offsetp += 1;
19386     CARD16(event_sequencenumber);
19387     listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceKeyStateNotify_keys, 28, byte_order);
19388 }
19389
19390
19391 static void xinputDeviceButtonStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19392 {
19393     proto_tree_add_item(t, hf_x11_xinput_DeviceButtonStateNotify_device_id, tvb, *offsetp, 1, ENC_NA);
19394     *offsetp += 1;
19395     CARD16(event_sequencenumber);
19396     listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceButtonStateNotify_buttons, 28, byte_order);
19397 }
19398
19399
19400 static void xinputDevicePresenceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19401 {
19402     UNUSED(1);
19403     CARD16(event_sequencenumber);
19404     proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_time, tvb, *offsetp, 4, byte_order);
19405     *offsetp += 4;
19406     field8(tvb, offsetp, t, hf_x11_xinput_DevicePresenceNotify_devchange, byte_order);
19407     proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_device_id, tvb, *offsetp, 1, ENC_NA);
19408     *offsetp += 1;
19409     proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_control, tvb, *offsetp, 2, byte_order);
19410     *offsetp += 2;
19411     UNUSED(20);
19412 }
19413
19414
19415 static void xinputDevicePropertyNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
19416 {
19417     field8(tvb, offsetp, t, hf_x11_xinput_DevicePropertyNotify_state, byte_order);
19418     CARD16(event_sequencenumber);
19419     proto_tree_add_item(t, hf_x11_xinput_DevicePropertyNotify_time, tvb, *offsetp, 4, byte_order);
19420     *offsetp += 4;
19421     proto_tree_add_item(t, hf_x11_xinput_DevicePropertyNotify_property, tvb, *offsetp, 4, byte_order);
19422     *offsetp += 4;
19423     UNUSED(19);
19424     proto_tree_add_item(t, hf_x11_xinput_DevicePropertyNotify_device_id, tvb, *offsetp, 1, byte_order);
19425     *offsetp += 1;
19426 }
19427
19428
19429 static void xinputDeviceChanged(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19430 {
19431     int f_num_classes;
19432     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 1,
19433                                "DeviceChanged (1)");
19434     field16(tvb, offsetp, t, hf_x11_xinput_DeviceChanged_deviceid, byte_order);
19435     field32(tvb, offsetp, t, hf_x11_xinput_DeviceChanged_time, byte_order);
19436     f_num_classes = VALUE16(tvb, *offsetp);
19437     proto_tree_add_item(t, hf_x11_xinput_DeviceChanged_num_classes, tvb, *offsetp, 2, byte_order);
19438     *offsetp += 2;
19439     field16(tvb, offsetp, t, hf_x11_xinput_DeviceChanged_sourceid, byte_order);
19440     field8(tvb, offsetp, t, hf_x11_xinput_DeviceChanged_reason, byte_order);
19441     UNUSED(11);
19442     struct_xinput_DeviceClass(tvb, offsetp, t, byte_order, f_num_classes);
19443 }
19444
19445
19446 static void xinputKeyPress(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19447 {
19448     int f_buttons_len;
19449     int f_valuators_len;
19450     int sumof_valuator_mask = 0;
19451     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 2,
19452                                "KeyPress (2)");
19453     field16(tvb, offsetp, t, hf_x11_xinput_KeyPress_deviceid, byte_order);
19454     field32(tvb, offsetp, t, hf_x11_xinput_KeyPress_time, byte_order);
19455     proto_tree_add_item(t, hf_x11_xinput_KeyPress_detail, tvb, *offsetp, 4, byte_order);
19456     *offsetp += 4;
19457     proto_tree_add_item(t, hf_x11_xinput_KeyPress_root, tvb, *offsetp, 4, byte_order);
19458     *offsetp += 4;
19459     proto_tree_add_item(t, hf_x11_xinput_KeyPress_event, tvb, *offsetp, 4, byte_order);
19460     *offsetp += 4;
19461     proto_tree_add_item(t, hf_x11_xinput_KeyPress_child, tvb, *offsetp, 4, byte_order);
19462     *offsetp += 4;
19463     proto_tree_add_item(t, hf_x11_xinput_KeyPress_root_x, tvb, *offsetp, 4, byte_order);
19464     *offsetp += 4;
19465     proto_tree_add_item(t, hf_x11_xinput_KeyPress_root_y, tvb, *offsetp, 4, byte_order);
19466     *offsetp += 4;
19467     proto_tree_add_item(t, hf_x11_xinput_KeyPress_event_x, tvb, *offsetp, 4, byte_order);
19468     *offsetp += 4;
19469     proto_tree_add_item(t, hf_x11_xinput_KeyPress_event_y, tvb, *offsetp, 4, byte_order);
19470     *offsetp += 4;
19471     f_buttons_len = VALUE16(tvb, *offsetp);
19472     proto_tree_add_item(t, hf_x11_xinput_KeyPress_buttons_len, tvb, *offsetp, 2, byte_order);
19473     *offsetp += 2;
19474     f_valuators_len = VALUE16(tvb, *offsetp);
19475     proto_tree_add_item(t, hf_x11_xinput_KeyPress_valuators_len, tvb, *offsetp, 2, byte_order);
19476     *offsetp += 2;
19477     field16(tvb, offsetp, t, hf_x11_xinput_KeyPress_sourceid, byte_order);
19478     UNUSED(2);
19479     {
19480         const int* flags_bits [] = {
19481         &hf_x11_xinput_KeyPress_flags_mask_KeyRepeat,
19482         };
19483         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_KeyPress_flags, ett_x11_rectangle, flags_bits, byte_order);
19484     }
19485     *offsetp += 4;
19486     struct_xinput_ModifierInfo(tvb, offsetp, t, byte_order, 1);
19487     struct_xinput_GroupInfo(tvb, offsetp, t, byte_order, 1);
19488     listOfCard32(tvb, offsetp, t, hf_x11_xinput_KeyPress_button_mask, hf_x11_xinput_KeyPress_button_mask_item, f_buttons_len, byte_order);
19489     {
19490         int i;
19491         for (i = 0; i < f_valuators_len; i++) {
19492             sumof_valuator_mask += VALUE32(tvb, *offsetp + i * 4);
19493         }
19494     }
19495     listOfCard32(tvb, offsetp, t, hf_x11_xinput_KeyPress_valuator_mask, hf_x11_xinput_KeyPress_valuator_mask_item, f_valuators_len, byte_order);
19496     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19497 }
19498
19499
19500 static void xinputButtonPress(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19501 {
19502     int f_buttons_len;
19503     int f_valuators_len;
19504     int sumof_valuator_mask = 0;
19505     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 4,
19506                                "ButtonPress (4)");
19507     field16(tvb, offsetp, t, hf_x11_xinput_ButtonPress_deviceid, byte_order);
19508     field32(tvb, offsetp, t, hf_x11_xinput_ButtonPress_time, byte_order);
19509     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_detail, tvb, *offsetp, 4, byte_order);
19510     *offsetp += 4;
19511     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_root, tvb, *offsetp, 4, byte_order);
19512     *offsetp += 4;
19513     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_event, tvb, *offsetp, 4, byte_order);
19514     *offsetp += 4;
19515     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_child, tvb, *offsetp, 4, byte_order);
19516     *offsetp += 4;
19517     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_root_x, tvb, *offsetp, 4, byte_order);
19518     *offsetp += 4;
19519     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_root_y, tvb, *offsetp, 4, byte_order);
19520     *offsetp += 4;
19521     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_event_x, tvb, *offsetp, 4, byte_order);
19522     *offsetp += 4;
19523     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_event_y, tvb, *offsetp, 4, byte_order);
19524     *offsetp += 4;
19525     f_buttons_len = VALUE16(tvb, *offsetp);
19526     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_buttons_len, tvb, *offsetp, 2, byte_order);
19527     *offsetp += 2;
19528     f_valuators_len = VALUE16(tvb, *offsetp);
19529     proto_tree_add_item(t, hf_x11_xinput_ButtonPress_valuators_len, tvb, *offsetp, 2, byte_order);
19530     *offsetp += 2;
19531     field16(tvb, offsetp, t, hf_x11_xinput_ButtonPress_sourceid, byte_order);
19532     UNUSED(2);
19533     {
19534         const int* flags_bits [] = {
19535         &hf_x11_xinput_ButtonPress_flags_mask_PointerEmulated,
19536         };
19537         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_ButtonPress_flags, ett_x11_rectangle, flags_bits, byte_order);
19538     }
19539     *offsetp += 4;
19540     struct_xinput_ModifierInfo(tvb, offsetp, t, byte_order, 1);
19541     struct_xinput_GroupInfo(tvb, offsetp, t, byte_order, 1);
19542     listOfCard32(tvb, offsetp, t, hf_x11_xinput_ButtonPress_button_mask, hf_x11_xinput_ButtonPress_button_mask_item, f_buttons_len, byte_order);
19543     {
19544         int i;
19545         for (i = 0; i < f_valuators_len; i++) {
19546             sumof_valuator_mask += VALUE32(tvb, *offsetp + i * 4);
19547         }
19548     }
19549     listOfCard32(tvb, offsetp, t, hf_x11_xinput_ButtonPress_valuator_mask, hf_x11_xinput_ButtonPress_valuator_mask_item, f_valuators_len, byte_order);
19550     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19551 }
19552
19553
19554 static void xinputEnter(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19555 {
19556     int f_buttons_len;
19557     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 7,
19558                                "Enter (7)");
19559     field16(tvb, offsetp, t, hf_x11_xinput_Enter_deviceid, byte_order);
19560     field32(tvb, offsetp, t, hf_x11_xinput_Enter_time, byte_order);
19561     field16(tvb, offsetp, t, hf_x11_xinput_Enter_sourceid, byte_order);
19562     field8(tvb, offsetp, t, hf_x11_xinput_Enter_mode, byte_order);
19563     field8(tvb, offsetp, t, hf_x11_xinput_Enter_detail, byte_order);
19564     proto_tree_add_item(t, hf_x11_xinput_Enter_root, tvb, *offsetp, 4, byte_order);
19565     *offsetp += 4;
19566     proto_tree_add_item(t, hf_x11_xinput_Enter_event, tvb, *offsetp, 4, byte_order);
19567     *offsetp += 4;
19568     proto_tree_add_item(t, hf_x11_xinput_Enter_child, tvb, *offsetp, 4, byte_order);
19569     *offsetp += 4;
19570     proto_tree_add_item(t, hf_x11_xinput_Enter_root_x, tvb, *offsetp, 4, byte_order);
19571     *offsetp += 4;
19572     proto_tree_add_item(t, hf_x11_xinput_Enter_root_y, tvb, *offsetp, 4, byte_order);
19573     *offsetp += 4;
19574     proto_tree_add_item(t, hf_x11_xinput_Enter_event_x, tvb, *offsetp, 4, byte_order);
19575     *offsetp += 4;
19576     proto_tree_add_item(t, hf_x11_xinput_Enter_event_y, tvb, *offsetp, 4, byte_order);
19577     *offsetp += 4;
19578     proto_tree_add_item(t, hf_x11_xinput_Enter_same_screen, tvb, *offsetp, 1, byte_order);
19579     *offsetp += 1;
19580     proto_tree_add_item(t, hf_x11_xinput_Enter_focus, tvb, *offsetp, 1, byte_order);
19581     *offsetp += 1;
19582     f_buttons_len = VALUE16(tvb, *offsetp);
19583     proto_tree_add_item(t, hf_x11_xinput_Enter_buttons_len, tvb, *offsetp, 2, byte_order);
19584     *offsetp += 2;
19585     struct_xinput_ModifierInfo(tvb, offsetp, t, byte_order, 1);
19586     struct_xinput_GroupInfo(tvb, offsetp, t, byte_order, 1);
19587     listOfCard32(tvb, offsetp, t, hf_x11_xinput_Enter_buttons, hf_x11_xinput_Enter_buttons_item, f_buttons_len, byte_order);
19588 }
19589
19590
19591 static void struct_xinput_HierarchyInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
19592 {
19593     int i;
19594     for (i = 0; i < count; i++) {
19595         proto_item *item;
19596         proto_tree *t;
19597
19598         item = proto_tree_add_item(root, hf_x11_struct_xinput_HierarchyInfo, tvb, *offsetp, 12, ENC_NA);
19599         t = proto_item_add_subtree(item, ett_x11_rectangle);
19600         field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyInfo_deviceid, byte_order);
19601         field16(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyInfo_attachment, byte_order);
19602         field8(tvb, offsetp, t, hf_x11_struct_xinput_HierarchyInfo_type, byte_order);
19603         proto_tree_add_item(t, hf_x11_struct_xinput_HierarchyInfo_enabled, tvb, *offsetp, 1, byte_order);
19604         *offsetp += 1;
19605         UNUSED(2);
19606         {
19607             const int* flags_bits [] = {
19608                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_MasterAdded,
19609                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_MasterRemoved,
19610                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_SlaveAdded,
19611                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_SlaveRemoved,
19612                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_SlaveAttached,
19613                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_SlaveDetached,
19614                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_DeviceEnabled,
19615                 &hf_x11_struct_xinput_HierarchyInfo_flags_mask_DeviceDisabled,
19616             };
19617             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xinput_HierarchyInfo_flags, ett_x11_rectangle, flags_bits, byte_order);
19618         }
19619         *offsetp += 4;
19620     }
19621 }
19622
19623 static void xinputHierarchy(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19624 {
19625     int f_num_infos;
19626     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 11,
19627                                "Hierarchy (11)");
19628     field16(tvb, offsetp, t, hf_x11_xinput_Hierarchy_deviceid, byte_order);
19629     field32(tvb, offsetp, t, hf_x11_xinput_Hierarchy_time, byte_order);
19630     {
19631         const int* flags_bits [] = {
19632         &hf_x11_xinput_Hierarchy_flags_mask_MasterAdded,
19633         &hf_x11_xinput_Hierarchy_flags_mask_MasterRemoved,
19634         &hf_x11_xinput_Hierarchy_flags_mask_SlaveAdded,
19635         &hf_x11_xinput_Hierarchy_flags_mask_SlaveRemoved,
19636         &hf_x11_xinput_Hierarchy_flags_mask_SlaveAttached,
19637         &hf_x11_xinput_Hierarchy_flags_mask_SlaveDetached,
19638         &hf_x11_xinput_Hierarchy_flags_mask_DeviceEnabled,
19639         &hf_x11_xinput_Hierarchy_flags_mask_DeviceDisabled,
19640         };
19641         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_Hierarchy_flags, ett_x11_rectangle, flags_bits, byte_order);
19642     }
19643     *offsetp += 4;
19644     f_num_infos = VALUE16(tvb, *offsetp);
19645     proto_tree_add_item(t, hf_x11_xinput_Hierarchy_num_infos, tvb, *offsetp, 2, byte_order);
19646     *offsetp += 2;
19647     UNUSED(10);
19648     struct_xinput_HierarchyInfo(tvb, offsetp, t, byte_order, f_num_infos);
19649 }
19650
19651
19652 static void xinputProperty(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19653 {
19654     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 12,
19655                                "Property (12)");
19656     field16(tvb, offsetp, t, hf_x11_xinput_Property_deviceid, byte_order);
19657     field32(tvb, offsetp, t, hf_x11_xinput_Property_time, byte_order);
19658     proto_tree_add_item(t, hf_x11_xinput_Property_property, tvb, *offsetp, 4, byte_order);
19659     *offsetp += 4;
19660     field8(tvb, offsetp, t, hf_x11_xinput_Property_what, byte_order);
19661     UNUSED(11);
19662 }
19663
19664
19665 static void xinputRawKeyPress(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19666 {
19667     int f_valuators_len;
19668     int sumof_valuator_mask = 0;
19669     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 13,
19670                                "RawKeyPress (13)");
19671     field16(tvb, offsetp, t, hf_x11_xinput_RawKeyPress_deviceid, byte_order);
19672     field32(tvb, offsetp, t, hf_x11_xinput_RawKeyPress_time, byte_order);
19673     proto_tree_add_item(t, hf_x11_xinput_RawKeyPress_detail, tvb, *offsetp, 4, byte_order);
19674     *offsetp += 4;
19675     proto_tree_add_item(t, hf_x11_xinput_RawKeyPress_sourceid, tvb, *offsetp, 2, byte_order);
19676     *offsetp += 2;
19677     f_valuators_len = VALUE16(tvb, *offsetp);
19678     proto_tree_add_item(t, hf_x11_xinput_RawKeyPress_valuators_len, tvb, *offsetp, 2, byte_order);
19679     *offsetp += 2;
19680     {
19681         const int* flags_bits [] = {
19682         &hf_x11_xinput_RawKeyPress_flags_mask_KeyRepeat,
19683         };
19684         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_RawKeyPress_flags, ett_x11_rectangle, flags_bits, byte_order);
19685     }
19686     *offsetp += 4;
19687     UNUSED(4);
19688     {
19689         int i;
19690         for (i = 0; i < f_valuators_len; i++) {
19691             sumof_valuator_mask += VALUE32(tvb, *offsetp + i * 4);
19692         }
19693     }
19694     listOfCard32(tvb, offsetp, t, hf_x11_xinput_RawKeyPress_valuator_mask, hf_x11_xinput_RawKeyPress_valuator_mask_item, f_valuators_len, byte_order);
19695     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19696     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19697 }
19698
19699
19700 static void xinputRawButtonPress(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19701 {
19702     int f_valuators_len;
19703     int sumof_valuator_mask = 0;
19704     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 15,
19705                                "RawButtonPress (15)");
19706     field16(tvb, offsetp, t, hf_x11_xinput_RawButtonPress_deviceid, byte_order);
19707     field32(tvb, offsetp, t, hf_x11_xinput_RawButtonPress_time, byte_order);
19708     proto_tree_add_item(t, hf_x11_xinput_RawButtonPress_detail, tvb, *offsetp, 4, byte_order);
19709     *offsetp += 4;
19710     proto_tree_add_item(t, hf_x11_xinput_RawButtonPress_sourceid, tvb, *offsetp, 2, byte_order);
19711     *offsetp += 2;
19712     f_valuators_len = VALUE16(tvb, *offsetp);
19713     proto_tree_add_item(t, hf_x11_xinput_RawButtonPress_valuators_len, tvb, *offsetp, 2, byte_order);
19714     *offsetp += 2;
19715     {
19716         const int* flags_bits [] = {
19717         &hf_x11_xinput_RawButtonPress_flags_mask_PointerEmulated,
19718         };
19719         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_RawButtonPress_flags, ett_x11_rectangle, flags_bits, byte_order);
19720     }
19721     *offsetp += 4;
19722     UNUSED(4);
19723     {
19724         int i;
19725         for (i = 0; i < f_valuators_len; i++) {
19726             sumof_valuator_mask += VALUE32(tvb, *offsetp + i * 4);
19727         }
19728     }
19729     listOfCard32(tvb, offsetp, t, hf_x11_xinput_RawButtonPress_valuator_mask, hf_x11_xinput_RawButtonPress_valuator_mask_item, f_valuators_len, byte_order);
19730     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19731     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19732 }
19733
19734
19735 static void xinputTouchBegin(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19736 {
19737     int f_buttons_len;
19738     int f_valuators_len;
19739     int sumof_valuator_mask = 0;
19740     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 18,
19741                                "TouchBegin (18)");
19742     field16(tvb, offsetp, t, hf_x11_xinput_TouchBegin_deviceid, byte_order);
19743     field32(tvb, offsetp, t, hf_x11_xinput_TouchBegin_time, byte_order);
19744     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_detail, tvb, *offsetp, 4, byte_order);
19745     *offsetp += 4;
19746     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_root, tvb, *offsetp, 4, byte_order);
19747     *offsetp += 4;
19748     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_event, tvb, *offsetp, 4, byte_order);
19749     *offsetp += 4;
19750     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_child, tvb, *offsetp, 4, byte_order);
19751     *offsetp += 4;
19752     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_root_x, tvb, *offsetp, 4, byte_order);
19753     *offsetp += 4;
19754     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_root_y, tvb, *offsetp, 4, byte_order);
19755     *offsetp += 4;
19756     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_event_x, tvb, *offsetp, 4, byte_order);
19757     *offsetp += 4;
19758     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_event_y, tvb, *offsetp, 4, byte_order);
19759     *offsetp += 4;
19760     f_buttons_len = VALUE16(tvb, *offsetp);
19761     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_buttons_len, tvb, *offsetp, 2, byte_order);
19762     *offsetp += 2;
19763     f_valuators_len = VALUE16(tvb, *offsetp);
19764     proto_tree_add_item(t, hf_x11_xinput_TouchBegin_valuators_len, tvb, *offsetp, 2, byte_order);
19765     *offsetp += 2;
19766     field16(tvb, offsetp, t, hf_x11_xinput_TouchBegin_sourceid, byte_order);
19767     UNUSED(2);
19768     {
19769         const int* flags_bits [] = {
19770         &hf_x11_xinput_TouchBegin_flags_mask_TouchPendingEnd,
19771         &hf_x11_xinput_TouchBegin_flags_mask_TouchEmulatingPointer,
19772         };
19773         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_TouchBegin_flags, ett_x11_rectangle, flags_bits, byte_order);
19774     }
19775     *offsetp += 4;
19776     struct_xinput_ModifierInfo(tvb, offsetp, t, byte_order, 1);
19777     struct_xinput_GroupInfo(tvb, offsetp, t, byte_order, 1);
19778     listOfCard32(tvb, offsetp, t, hf_x11_xinput_TouchBegin_button_mask, hf_x11_xinput_TouchBegin_button_mask_item, f_buttons_len, byte_order);
19779     {
19780         int i;
19781         for (i = 0; i < f_valuators_len; i++) {
19782             sumof_valuator_mask += VALUE32(tvb, *offsetp + i * 4);
19783         }
19784     }
19785     listOfCard32(tvb, offsetp, t, hf_x11_xinput_TouchBegin_valuator_mask, hf_x11_xinput_TouchBegin_valuator_mask_item, f_valuators_len, byte_order);
19786     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19787 }
19788
19789
19790 static void xinputTouchOwnership(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19791 {
19792     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 21,
19793                                "TouchOwnership (21)");
19794     field16(tvb, offsetp, t, hf_x11_xinput_TouchOwnership_deviceid, byte_order);
19795     field32(tvb, offsetp, t, hf_x11_xinput_TouchOwnership_time, byte_order);
19796     proto_tree_add_item(t, hf_x11_xinput_TouchOwnership_touchid, tvb, *offsetp, 4, byte_order);
19797     *offsetp += 4;
19798     proto_tree_add_item(t, hf_x11_xinput_TouchOwnership_root, tvb, *offsetp, 4, byte_order);
19799     *offsetp += 4;
19800     proto_tree_add_item(t, hf_x11_xinput_TouchOwnership_event, tvb, *offsetp, 4, byte_order);
19801     *offsetp += 4;
19802     proto_tree_add_item(t, hf_x11_xinput_TouchOwnership_child, tvb, *offsetp, 4, byte_order);
19803     *offsetp += 4;
19804     field16(tvb, offsetp, t, hf_x11_xinput_TouchOwnership_sourceid, byte_order);
19805     UNUSED(2);
19806     field32(tvb, offsetp, t, hf_x11_xinput_TouchOwnership_flags, byte_order);
19807     UNUSED(8);
19808 }
19809
19810
19811 static void xinputRawTouchBegin(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19812 {
19813     int f_valuators_len;
19814     int sumof_valuator_mask = 0;
19815     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 22,
19816                                "RawTouchBegin (22)");
19817     field16(tvb, offsetp, t, hf_x11_xinput_RawTouchBegin_deviceid, byte_order);
19818     field32(tvb, offsetp, t, hf_x11_xinput_RawTouchBegin_time, byte_order);
19819     proto_tree_add_item(t, hf_x11_xinput_RawTouchBegin_detail, tvb, *offsetp, 4, byte_order);
19820     *offsetp += 4;
19821     proto_tree_add_item(t, hf_x11_xinput_RawTouchBegin_sourceid, tvb, *offsetp, 2, byte_order);
19822     *offsetp += 2;
19823     f_valuators_len = VALUE16(tvb, *offsetp);
19824     proto_tree_add_item(t, hf_x11_xinput_RawTouchBegin_valuators_len, tvb, *offsetp, 2, byte_order);
19825     *offsetp += 2;
19826     {
19827         const int* flags_bits [] = {
19828         &hf_x11_xinput_RawTouchBegin_flags_mask_TouchPendingEnd,
19829         &hf_x11_xinput_RawTouchBegin_flags_mask_TouchEmulatingPointer,
19830         };
19831         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_RawTouchBegin_flags, ett_x11_rectangle, flags_bits, byte_order);
19832     }
19833     *offsetp += 4;
19834     UNUSED(4);
19835     {
19836         int i;
19837         for (i = 0; i < f_valuators_len; i++) {
19838             sumof_valuator_mask += VALUE32(tvb, *offsetp + i * 4);
19839         }
19840     }
19841     listOfCard32(tvb, offsetp, t, hf_x11_xinput_RawTouchBegin_valuator_mask, hf_x11_xinput_RawTouchBegin_valuator_mask_item, f_valuators_len, byte_order);
19842     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19843     struct_xinput_FP3232(tvb, offsetp, t, byte_order, sumof_valuator_mask);
19844 }
19845
19846
19847 static void xinputBarrierHit(tvbuff_t *tvb, int length _U_, int *offsetp, proto_tree *t, guint byte_order)
19848 {
19849     proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, 25,
19850                                "BarrierHit (25)");
19851     field16(tvb, offsetp, t, hf_x11_xinput_BarrierHit_deviceid, byte_order);
19852     field32(tvb, offsetp, t, hf_x11_xinput_BarrierHit_time, byte_order);
19853     proto_tree_add_item(t, hf_x11_xinput_BarrierHit_eventid, tvb, *offsetp, 4, byte_order);
19854     *offsetp += 4;
19855     proto_tree_add_item(t, hf_x11_xinput_BarrierHit_root, tvb, *offsetp, 4, byte_order);
19856     *offsetp += 4;
19857     proto_tree_add_item(t, hf_x11_xinput_BarrierHit_event, tvb, *offsetp, 4, byte_order);
19858     *offsetp += 4;
19859     proto_tree_add_item(t, hf_x11_xinput_BarrierHit_barrier, tvb, *offsetp, 4, byte_order);
19860     *offsetp += 4;
19861     proto_tree_add_item(t, hf_x11_xinput_BarrierHit_dtime, tvb, *offsetp, 4, byte_order);
19862     *offsetp += 4;
19863     {
19864         const int* flags_bits [] = {
19865         &hf_x11_xinput_BarrierHit_flags_mask_PointerReleased,
19866         &hf_x11_xinput_BarrierHit_flags_mask_DeviceIsGrabbed,
19867         };
19868         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xinput_BarrierHit_flags, ett_x11_rectangle, flags_bits, byte_order);
19869     }
19870     *offsetp += 4;
19871     field16(tvb, offsetp, t, hf_x11_xinput_BarrierHit_sourceid, byte_order);
19872     UNUSED(2);
19873     proto_tree_add_item(t, hf_x11_xinput_BarrierHit_root_x, tvb, *offsetp, 4, byte_order);
19874     *offsetp += 4;
19875     proto_tree_add_item(t, hf_x11_xinput_BarrierHit_root_y, tvb, *offsetp, 4, byte_order);
19876     *offsetp += 4;
19877     struct_xinput_FP3232(tvb, offsetp, t, byte_order, 1);
19878     struct_xinput_FP3232(tvb, offsetp, t, byte_order, 1);
19879 }
19880
19881
19882 static void xinputSendExtensionEvent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
19883 {
19884     int f_num_classes;
19885     int f_num_events;
19886     proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_destination, tvb, *offsetp, 4, byte_order);
19887     *offsetp += 4;
19888     proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_device_id, tvb, *offsetp, 1, byte_order);
19889     *offsetp += 1;
19890     proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_propagate, tvb, *offsetp, 1, byte_order);
19891     *offsetp += 1;
19892     f_num_classes = VALUE16(tvb, *offsetp);
19893     proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_num_classes, tvb, *offsetp, 2, byte_order);
19894     *offsetp += 2;
19895     f_num_events = VALUE8(tvb, *offsetp);
19896     proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_num_events, tvb, *offsetp, 1, byte_order);
19897     *offsetp += 1;
19898     UNUSED(3);
19899     length -= f_num_events * 1;
19900     listOfCard32(tvb, offsetp, t, hf_x11_xinput_SendExtensionEvent_classes, hf_x11_xinput_SendExtensionEvent_classes_item, f_num_classes, byte_order);
19901     length -= f_num_classes * 4;
19902 }
19903 static const value_string xinput_extension_minor[] = {
19904     { 1, "GetExtensionVersion" },
19905     { 2, "ListInputDevices" },
19906     { 3, "OpenDevice" },
19907     { 4, "CloseDevice" },
19908     { 5, "SetDeviceMode" },
19909     { 6, "SelectExtensionEvent" },
19910     { 7, "GetSelectedExtensionEvents" },
19911     { 8, "ChangeDeviceDontPropagateList" },
19912     { 9, "GetDeviceDontPropagateList" },
19913     { 10, "GetDeviceMotionEvents" },
19914     { 11, "ChangeKeyboardDevice" },
19915     { 12, "ChangePointerDevice" },
19916     { 13, "GrabDevice" },
19917     { 14, "UngrabDevice" },
19918     { 15, "GrabDeviceKey" },
19919     { 16, "UngrabDeviceKey" },
19920     { 17, "GrabDeviceButton" },
19921     { 18, "UngrabDeviceButton" },
19922     { 19, "AllowDeviceEvents" },
19923     { 20, "GetDeviceFocus" },
19924     { 21, "SetDeviceFocus" },
19925     { 22, "GetFeedbackControl" },
19926     { 23, "ChangeFeedbackControl" },
19927     { 24, "GetDeviceKeyMapping" },
19928     { 25, "ChangeDeviceKeyMapping" },
19929     { 26, "GetDeviceModifierMapping" },
19930     { 27, "SetDeviceModifierMapping" },
19931     { 28, "GetDeviceButtonMapping" },
19932     { 29, "SetDeviceButtonMapping" },
19933     { 30, "QueryDeviceState" },
19934     { 31, "SendExtensionEvent" },
19935     { 32, "DeviceBell" },
19936     { 33, "SetDeviceValuators" },
19937     { 34, "GetDeviceControl" },
19938     { 35, "ChangeDeviceControl" },
19939     { 36, "ListDeviceProperties" },
19940     { 37, "ChangeDeviceProperty" },
19941     { 38, "DeleteDeviceProperty" },
19942     { 39, "GetDeviceProperty" },
19943     { 40, "XIQueryPointer" },
19944     { 41, "XIWarpPointer" },
19945     { 42, "XIChangeCursor" },
19946     { 43, "XIChangeHierarchy" },
19947     { 44, "XISetClientPointer" },
19948     { 45, "XIGetClientPointer" },
19949     { 46, "XISelectEvents" },
19950     { 47, "XIQueryVersion" },
19951     { 48, "XIQueryDevice" },
19952     { 49, "XISetFocus" },
19953     { 50, "XIGetFocus" },
19954     { 51, "XIGrabDevice" },
19955     { 52, "XIUngrabDevice" },
19956     { 53, "XIAllowEvents" },
19957     { 54, "XIPassiveGrabDevice" },
19958     { 55, "XIPassiveUngrabDevice" },
19959     { 56, "XIListProperties" },
19960     { 57, "XIChangeProperty" },
19961     { 58, "XIDeleteProperty" },
19962     { 59, "XIGetProperty" },
19963     { 60, "XIGetSelectedEvents" },
19964     { 61, "XIBarrierReleasePointer" },
19965     { 0, NULL }
19966 };
19967 const x11_event_info xinput_events[] = {
19968     { "xinput-DeviceKeyPress", xinputDeviceKeyPress },
19969     { "xinput-DeviceFocusIn", xinputDeviceFocusIn },
19970     { "xinput-DeviceStateNotify", xinputDeviceStateNotify },
19971     { "xinput-DeviceMappingNotify", xinputDeviceMappingNotify },
19972     { "xinput-ChangeDeviceNotify", xinputChangeDeviceNotify },
19973     { "xinput-DeviceKeyStateNotify", xinputDeviceKeyStateNotify },
19974     { "xinput-DeviceButtonStateNotify", xinputDeviceButtonStateNotify },
19975     { "xinput-DevicePresenceNotify", xinputDevicePresenceNotify },
19976     { "xinput-DevicePropertyNotify", xinputDevicePropertyNotify },
19977     { NULL, NULL }
19978 };
19979 static const x11_generic_event_info xinput_generic_events[] = {
19980         {   1, xinputDeviceChanged },
19981         {   2, xinputKeyPress },
19982         {   4, xinputButtonPress },
19983         {   7, xinputEnter },
19984         {  11, xinputHierarchy },
19985         {  12, xinputProperty },
19986         {  13, xinputRawKeyPress },
19987         {  15, xinputRawButtonPress },
19988         {  18, xinputTouchBegin },
19989         {  21, xinputTouchOwnership },
19990         {  22, xinputRawTouchBegin },
19991         {  25, xinputBarrierHit },
19992         {   0, NULL },
19993 };
19994
19995 static x11_reply_info xinput_replies[] = {
19996     { 1, xinputGetExtensionVersion_Reply },
19997     { 2, xinputListInputDevices_Reply },
19998     { 3, xinputOpenDevice_Reply },
19999     { 5, xinputSetDeviceMode_Reply },
20000     { 7, xinputGetSelectedExtensionEvents_Reply },
20001     { 9, xinputGetDeviceDontPropagateList_Reply },
20002     { 10, xinputGetDeviceMotionEvents_Reply },
20003     { 11, xinputChangeKeyboardDevice_Reply },
20004     { 12, xinputChangePointerDevice_Reply },
20005     { 13, xinputGrabDevice_Reply },
20006     { 20, xinputGetDeviceFocus_Reply },
20007     { 22, xinputGetFeedbackControl_Reply },
20008     { 24, xinputGetDeviceKeyMapping_Reply },
20009     { 26, xinputGetDeviceModifierMapping_Reply },
20010     { 27, xinputSetDeviceModifierMapping_Reply },
20011     { 28, xinputGetDeviceButtonMapping_Reply },
20012     { 29, xinputSetDeviceButtonMapping_Reply },
20013     { 30, xinputQueryDeviceState_Reply },
20014     { 33, xinputSetDeviceValuators_Reply },
20015     { 34, xinputGetDeviceControl_Reply },
20016     { 35, xinputChangeDeviceControl_Reply },
20017     { 36, xinputListDeviceProperties_Reply },
20018     { 39, xinputGetDeviceProperty_Reply },
20019     { 40, xinputXIQueryPointer_Reply },
20020     { 45, xinputXIGetClientPointer_Reply },
20021     { 47, xinputXIQueryVersion_Reply },
20022     { 48, xinputXIQueryDevice_Reply },
20023     { 50, xinputXIGetFocus_Reply },
20024     { 51, xinputXIGrabDevice_Reply },
20025     { 54, xinputXIPassiveGrabDevice_Reply },
20026     { 56, xinputXIListProperties_Reply },
20027     { 59, xinputXIGetProperty_Reply },
20028     { 60, xinputXIGetSelectedEvents_Reply },
20029     { 0, NULL }
20030 };
20031
20032 static void dispatch_xinput(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
20033 {
20034     int minor, length;
20035     minor = CARD8(xinput_extension_minor);
20036     length = REQUEST_LENGTH();
20037
20038     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
20039                           val_to_str(minor, xinput_extension_minor,
20040                                      "<Unknown opcode %d>"));
20041     switch (minor) {
20042     case 1:
20043         xinputGetExtensionVersion(tvb, pinfo, offsetp, t, byte_order, length);
20044         break;
20045     case 2:
20046         xinputListInputDevices(tvb, pinfo, offsetp, t, byte_order, length);
20047         break;
20048     case 3:
20049         xinputOpenDevice(tvb, pinfo, offsetp, t, byte_order, length);
20050         break;
20051     case 4:
20052         xinputCloseDevice(tvb, pinfo, offsetp, t, byte_order, length);
20053         break;
20054     case 5:
20055         xinputSetDeviceMode(tvb, pinfo, offsetp, t, byte_order, length);
20056         break;
20057     case 6:
20058         xinputSelectExtensionEvent(tvb, pinfo, offsetp, t, byte_order, length);
20059         break;
20060     case 7:
20061         xinputGetSelectedExtensionEvents(tvb, pinfo, offsetp, t, byte_order, length);
20062         break;
20063     case 8:
20064         xinputChangeDeviceDontPropagateList(tvb, pinfo, offsetp, t, byte_order, length);
20065         break;
20066     case 9:
20067         xinputGetDeviceDontPropagateList(tvb, pinfo, offsetp, t, byte_order, length);
20068         break;
20069     case 10:
20070         xinputGetDeviceMotionEvents(tvb, pinfo, offsetp, t, byte_order, length);
20071         break;
20072     case 11:
20073         xinputChangeKeyboardDevice(tvb, pinfo, offsetp, t, byte_order, length);
20074         break;
20075     case 12:
20076         xinputChangePointerDevice(tvb, pinfo, offsetp, t, byte_order, length);
20077         break;
20078     case 13:
20079         xinputGrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
20080         break;
20081     case 14:
20082         xinputUngrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
20083         break;
20084     case 15:
20085         xinputGrabDeviceKey(tvb, pinfo, offsetp, t, byte_order, length);
20086         break;
20087     case 16:
20088         xinputUngrabDeviceKey(tvb, pinfo, offsetp, t, byte_order, length);
20089         break;
20090     case 17:
20091         xinputGrabDeviceButton(tvb, pinfo, offsetp, t, byte_order, length);
20092         break;
20093     case 18:
20094         xinputUngrabDeviceButton(tvb, pinfo, offsetp, t, byte_order, length);
20095         break;
20096     case 19:
20097         xinputAllowDeviceEvents(tvb, pinfo, offsetp, t, byte_order, length);
20098         break;
20099     case 20:
20100         xinputGetDeviceFocus(tvb, pinfo, offsetp, t, byte_order, length);
20101         break;
20102     case 21:
20103         xinputSetDeviceFocus(tvb, pinfo, offsetp, t, byte_order, length);
20104         break;
20105     case 22:
20106         xinputGetFeedbackControl(tvb, pinfo, offsetp, t, byte_order, length);
20107         break;
20108     case 23:
20109         xinputChangeFeedbackControl(tvb, pinfo, offsetp, t, byte_order, length);
20110         break;
20111     case 24:
20112         xinputGetDeviceKeyMapping(tvb, pinfo, offsetp, t, byte_order, length);
20113         break;
20114     case 25:
20115         xinputChangeDeviceKeyMapping(tvb, pinfo, offsetp, t, byte_order, length);
20116         break;
20117     case 26:
20118         xinputGetDeviceModifierMapping(tvb, pinfo, offsetp, t, byte_order, length);
20119         break;
20120     case 27:
20121         xinputSetDeviceModifierMapping(tvb, pinfo, offsetp, t, byte_order, length);
20122         break;
20123     case 28:
20124         xinputGetDeviceButtonMapping(tvb, pinfo, offsetp, t, byte_order, length);
20125         break;
20126     case 29:
20127         xinputSetDeviceButtonMapping(tvb, pinfo, offsetp, t, byte_order, length);
20128         break;
20129     case 30:
20130         xinputQueryDeviceState(tvb, pinfo, offsetp, t, byte_order, length);
20131         break;
20132     case 31:
20133         xinputSendExtensionEvent(tvb, pinfo, offsetp, t, byte_order, length);
20134         break;
20135     case 32:
20136         xinputDeviceBell(tvb, pinfo, offsetp, t, byte_order, length);
20137         break;
20138     case 33:
20139         xinputSetDeviceValuators(tvb, pinfo, offsetp, t, byte_order, length);
20140         break;
20141     case 34:
20142         xinputGetDeviceControl(tvb, pinfo, offsetp, t, byte_order, length);
20143         break;
20144     case 35:
20145         xinputChangeDeviceControl(tvb, pinfo, offsetp, t, byte_order, length);
20146         break;
20147     case 36:
20148         xinputListDeviceProperties(tvb, pinfo, offsetp, t, byte_order, length);
20149         break;
20150     case 37:
20151         xinputChangeDeviceProperty(tvb, pinfo, offsetp, t, byte_order, length);
20152         break;
20153     case 38:
20154         xinputDeleteDeviceProperty(tvb, pinfo, offsetp, t, byte_order, length);
20155         break;
20156     case 39:
20157         xinputGetDeviceProperty(tvb, pinfo, offsetp, t, byte_order, length);
20158         break;
20159     case 40:
20160         xinputXIQueryPointer(tvb, pinfo, offsetp, t, byte_order, length);
20161         break;
20162     case 41:
20163         xinputXIWarpPointer(tvb, pinfo, offsetp, t, byte_order, length);
20164         break;
20165     case 42:
20166         xinputXIChangeCursor(tvb, pinfo, offsetp, t, byte_order, length);
20167         break;
20168     case 43:
20169         xinputXIChangeHierarchy(tvb, pinfo, offsetp, t, byte_order, length);
20170         break;
20171     case 44:
20172         xinputXISetClientPointer(tvb, pinfo, offsetp, t, byte_order, length);
20173         break;
20174     case 45:
20175         xinputXIGetClientPointer(tvb, pinfo, offsetp, t, byte_order, length);
20176         break;
20177     case 46:
20178         xinputXISelectEvents(tvb, pinfo, offsetp, t, byte_order, length);
20179         break;
20180     case 47:
20181         xinputXIQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
20182         break;
20183     case 48:
20184         xinputXIQueryDevice(tvb, pinfo, offsetp, t, byte_order, length);
20185         break;
20186     case 49:
20187         xinputXISetFocus(tvb, pinfo, offsetp, t, byte_order, length);
20188         break;
20189     case 50:
20190         xinputXIGetFocus(tvb, pinfo, offsetp, t, byte_order, length);
20191         break;
20192     case 51:
20193         xinputXIGrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
20194         break;
20195     case 52:
20196         xinputXIUngrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
20197         break;
20198     case 53:
20199         xinputXIAllowEvents(tvb, pinfo, offsetp, t, byte_order, length);
20200         break;
20201     case 54:
20202         xinputXIPassiveGrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
20203         break;
20204     case 55:
20205         xinputXIPassiveUngrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
20206         break;
20207     case 56:
20208         xinputXIListProperties(tvb, pinfo, offsetp, t, byte_order, length);
20209         break;
20210     case 57:
20211         xinputXIChangeProperty(tvb, pinfo, offsetp, t, byte_order, length);
20212         break;
20213     case 58:
20214         xinputXIDeleteProperty(tvb, pinfo, offsetp, t, byte_order, length);
20215         break;
20216     case 59:
20217         xinputXIGetProperty(tvb, pinfo, offsetp, t, byte_order, length);
20218         break;
20219     case 60:
20220         xinputXIGetSelectedEvents(tvb, pinfo, offsetp, t, byte_order, length);
20221         break;
20222     case 61:
20223         xinputXIBarrierReleasePointer(tvb, pinfo, offsetp, t, byte_order, length);
20224         break;
20225     /* No need for a default case here, since Unknown is printed above,
20226        and UNDECODED() is taken care of by dissect_x11_request */
20227     }
20228 }
20229
20230 static void register_xinput(void)
20231 {
20232     set_handler("XInputExtension", dispatch_xinput, xinput_errors, xinput_events, xinput_generic_events, xinput_replies);
20233 }
20234
20235 static void struct_xkb_IndicatorMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20236 {
20237     int i;
20238     for (i = 0; i < count; i++) {
20239         proto_item *item;
20240         proto_tree *t;
20241
20242         item = proto_tree_add_item(root, hf_x11_struct_xkb_IndicatorMap, tvb, *offsetp, 12, ENC_NA);
20243         t = proto_item_add_subtree(item, ett_x11_rectangle);
20244         field8(tvb, offsetp, t, hf_x11_struct_xkb_IndicatorMap_flags, byte_order);
20245         field8(tvb, offsetp, t, hf_x11_struct_xkb_IndicatorMap_whichGroups, byte_order);
20246         field8(tvb, offsetp, t, hf_x11_struct_xkb_IndicatorMap_groups, byte_order);
20247         field8(tvb, offsetp, t, hf_x11_struct_xkb_IndicatorMap_whichMods, byte_order);
20248         {
20249             const int* mods_bits [] = {
20250                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_Shift,
20251                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_Lock,
20252                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_Control,
20253                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_1,
20254                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_2,
20255                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_3,
20256                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_4,
20257                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_5,
20258                 &hf_x11_struct_xkb_IndicatorMap_mods_mask_Any,
20259             };
20260             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_IndicatorMap_mods, ett_x11_rectangle, mods_bits, byte_order);
20261         }
20262         *offsetp += 1;
20263         {
20264             const int* realMods_bits [] = {
20265                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_Shift,
20266                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_Lock,
20267                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_Control,
20268                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_1,
20269                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_2,
20270                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_3,
20271                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_4,
20272                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_5,
20273                 &hf_x11_struct_xkb_IndicatorMap_realMods_mask_Any,
20274             };
20275             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_IndicatorMap_realMods, ett_x11_rectangle, realMods_bits, byte_order);
20276         }
20277         *offsetp += 1;
20278         {
20279             const int* vmods_bits [] = {
20280                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_0,
20281                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_1,
20282                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_2,
20283                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_3,
20284                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_4,
20285                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_5,
20286                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_6,
20287                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_7,
20288                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_8,
20289                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_9,
20290                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_10,
20291                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_11,
20292                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_12,
20293                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_13,
20294                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_14,
20295                 &hf_x11_struct_xkb_IndicatorMap_vmods_mask_15,
20296             };
20297             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_IndicatorMap_vmods, ett_x11_rectangle, vmods_bits, byte_order);
20298         }
20299         *offsetp += 2;
20300         {
20301             const int* ctrls_bits [] = {
20302                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_RepeatKeys,
20303                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_SlowKeys,
20304                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_BounceKeys,
20305                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_StickyKeys,
20306                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_MouseKeys,
20307                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_MouseKeysAccel,
20308                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_AccessXKeys,
20309                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_AccessXTimeoutMask,
20310                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_AccessXFeedbackMask,
20311                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_AudibleBellMask,
20312                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_Overlay1Mask,
20313                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_Overlay2Mask,
20314                 &hf_x11_struct_xkb_IndicatorMap_ctrls_mask_IgnoreGroupLockMask,
20315             };
20316             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_IndicatorMap_ctrls, ett_x11_rectangle, ctrls_bits, byte_order);
20317         }
20318         *offsetp += 4;
20319     }
20320 }
20321
20322 static void struct_xkb_ModDef(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20323 {
20324     int i;
20325     for (i = 0; i < count; i++) {
20326         proto_item *item;
20327         proto_tree *t;
20328
20329         item = proto_tree_add_item(root, hf_x11_struct_xkb_ModDef, tvb, *offsetp, 4, ENC_NA);
20330         t = proto_item_add_subtree(item, ett_x11_rectangle);
20331         {
20332             const int* mask_bits [] = {
20333                 &hf_x11_struct_xkb_ModDef_mask_mask_Shift,
20334                 &hf_x11_struct_xkb_ModDef_mask_mask_Lock,
20335                 &hf_x11_struct_xkb_ModDef_mask_mask_Control,
20336                 &hf_x11_struct_xkb_ModDef_mask_mask_1,
20337                 &hf_x11_struct_xkb_ModDef_mask_mask_2,
20338                 &hf_x11_struct_xkb_ModDef_mask_mask_3,
20339                 &hf_x11_struct_xkb_ModDef_mask_mask_4,
20340                 &hf_x11_struct_xkb_ModDef_mask_mask_5,
20341                 &hf_x11_struct_xkb_ModDef_mask_mask_Any,
20342             };
20343             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_ModDef_mask, ett_x11_rectangle, mask_bits, byte_order);
20344         }
20345         *offsetp += 1;
20346         {
20347             const int* realMods_bits [] = {
20348                 &hf_x11_struct_xkb_ModDef_realMods_mask_Shift,
20349                 &hf_x11_struct_xkb_ModDef_realMods_mask_Lock,
20350                 &hf_x11_struct_xkb_ModDef_realMods_mask_Control,
20351                 &hf_x11_struct_xkb_ModDef_realMods_mask_1,
20352                 &hf_x11_struct_xkb_ModDef_realMods_mask_2,
20353                 &hf_x11_struct_xkb_ModDef_realMods_mask_3,
20354                 &hf_x11_struct_xkb_ModDef_realMods_mask_4,
20355                 &hf_x11_struct_xkb_ModDef_realMods_mask_5,
20356                 &hf_x11_struct_xkb_ModDef_realMods_mask_Any,
20357             };
20358             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_ModDef_realMods, ett_x11_rectangle, realMods_bits, byte_order);
20359         }
20360         *offsetp += 1;
20361         {
20362             const int* vmods_bits [] = {
20363                 &hf_x11_struct_xkb_ModDef_vmods_mask_0,
20364                 &hf_x11_struct_xkb_ModDef_vmods_mask_1,
20365                 &hf_x11_struct_xkb_ModDef_vmods_mask_2,
20366                 &hf_x11_struct_xkb_ModDef_vmods_mask_3,
20367                 &hf_x11_struct_xkb_ModDef_vmods_mask_4,
20368                 &hf_x11_struct_xkb_ModDef_vmods_mask_5,
20369                 &hf_x11_struct_xkb_ModDef_vmods_mask_6,
20370                 &hf_x11_struct_xkb_ModDef_vmods_mask_7,
20371                 &hf_x11_struct_xkb_ModDef_vmods_mask_8,
20372                 &hf_x11_struct_xkb_ModDef_vmods_mask_9,
20373                 &hf_x11_struct_xkb_ModDef_vmods_mask_10,
20374                 &hf_x11_struct_xkb_ModDef_vmods_mask_11,
20375                 &hf_x11_struct_xkb_ModDef_vmods_mask_12,
20376                 &hf_x11_struct_xkb_ModDef_vmods_mask_13,
20377                 &hf_x11_struct_xkb_ModDef_vmods_mask_14,
20378                 &hf_x11_struct_xkb_ModDef_vmods_mask_15,
20379             };
20380             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_ModDef_vmods, ett_x11_rectangle, vmods_bits, byte_order);
20381         }
20382         *offsetp += 2;
20383     }
20384 }
20385
20386 static void struct_xkb_KeyName(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20387 {
20388     int i;
20389     for (i = 0; i < count; i++) {
20390         proto_item *item;
20391         proto_tree *t;
20392
20393         item = proto_tree_add_item(root, hf_x11_struct_xkb_KeyName, tvb, *offsetp, 4, ENC_NA);
20394         t = proto_item_add_subtree(item, ett_x11_rectangle);
20395         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_KeyName_name, 4, byte_order);
20396     }
20397 }
20398
20399 static void struct_xkb_KeyAlias(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20400 {
20401     int i;
20402     for (i = 0; i < count; i++) {
20403         proto_item *item;
20404         proto_tree *t;
20405
20406         item = proto_tree_add_item(root, hf_x11_struct_xkb_KeyAlias, tvb, *offsetp, 8, ENC_NA);
20407         t = proto_item_add_subtree(item, ett_x11_rectangle);
20408         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_KeyAlias_real, 4, byte_order);
20409         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_KeyAlias_alias, 4, byte_order);
20410     }
20411 }
20412
20413 static int struct_size_xkb_CountedString16(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
20414 {
20415     int size = 0;
20416     int f_length;
20417     f_length = VALUE16(tvb, *offsetp + size + 0);
20418     size += f_length * 1;
20419     size += (((f_length + 5) & (~3)) - (f_length + 2)) * 1;
20420     return size + 2;
20421 }
20422
20423 static void struct_xkb_CountedString16(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20424 {
20425     int i;
20426     for (i = 0; i < count; i++) {
20427         proto_item *item;
20428         proto_tree *t;
20429         int f_length;
20430
20431         item = proto_tree_add_item(root, hf_x11_struct_xkb_CountedString16, tvb, *offsetp, struct_size_xkb_CountedString16(tvb, offsetp, byte_order), ENC_NA);
20432         t = proto_item_add_subtree(item, ett_x11_rectangle);
20433         f_length = VALUE16(tvb, *offsetp);
20434         proto_tree_add_item(t, hf_x11_struct_xkb_CountedString16_length, tvb, *offsetp, 2, byte_order);
20435         *offsetp += 2;
20436         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_CountedString16_string, f_length, byte_order);
20437         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_CountedString16_alignment_pad, (((f_length + 5) & (~3)) - (f_length + 2)), byte_order);
20438     }
20439 }
20440
20441 static void struct_xkb_KTMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20442 {
20443     int i;
20444     for (i = 0; i < count; i++) {
20445         proto_item *item;
20446         proto_tree *t;
20447
20448         item = proto_tree_add_item(root, hf_x11_struct_xkb_KTMapEntry, tvb, *offsetp, 8, ENC_NA);
20449         t = proto_item_add_subtree(item, ett_x11_rectangle);
20450         proto_tree_add_item(t, hf_x11_struct_xkb_KTMapEntry_active, tvb, *offsetp, 1, byte_order);
20451         *offsetp += 1;
20452         {
20453             const int* mods_mask_bits [] = {
20454                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_Shift,
20455                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_Lock,
20456                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_Control,
20457                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_1,
20458                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_2,
20459                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_3,
20460                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_4,
20461                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_5,
20462                 &hf_x11_struct_xkb_KTMapEntry_mods_mask_mask_Any,
20463             };
20464             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KTMapEntry_mods_mask, ett_x11_rectangle, mods_mask_bits, byte_order);
20465         }
20466         *offsetp += 1;
20467         proto_tree_add_item(t, hf_x11_struct_xkb_KTMapEntry_level, tvb, *offsetp, 1, byte_order);
20468         *offsetp += 1;
20469         {
20470             const int* mods_mods_bits [] = {
20471                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_Shift,
20472                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_Lock,
20473                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_Control,
20474                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_1,
20475                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_2,
20476                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_3,
20477                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_4,
20478                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_5,
20479                 &hf_x11_struct_xkb_KTMapEntry_mods_mods_mask_Any,
20480             };
20481             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KTMapEntry_mods_mods, ett_x11_rectangle, mods_mods_bits, byte_order);
20482         }
20483         *offsetp += 1;
20484         {
20485             const int* mods_vmods_bits [] = {
20486                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_0,
20487                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_1,
20488                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_2,
20489                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_3,
20490                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_4,
20491                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_5,
20492                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_6,
20493                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_7,
20494                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_8,
20495                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_9,
20496                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_10,
20497                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_11,
20498                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_12,
20499                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_13,
20500                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_14,
20501                 &hf_x11_struct_xkb_KTMapEntry_mods_vmods_mask_15,
20502             };
20503             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KTMapEntry_mods_vmods, ett_x11_rectangle, mods_vmods_bits, byte_order);
20504         }
20505         *offsetp += 2;
20506         UNUSED(2);
20507     }
20508 }
20509
20510 static int struct_size_xkb_KeyType(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
20511 {
20512     int size = 0;
20513     int f_hasPreserve;
20514     int f_nMapEntries;
20515     f_nMapEntries = VALUE8(tvb, *offsetp + size + 5);
20516     f_hasPreserve = VALUE8(tvb, *offsetp + size + 6);
20517     size += f_nMapEntries * 8;
20518     size += (f_hasPreserve * f_nMapEntries) * 4;
20519     return size + 8;
20520 }
20521
20522 static void struct_xkb_KeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20523 {
20524     int i;
20525     for (i = 0; i < count; i++) {
20526         proto_item *item;
20527         proto_tree *t;
20528         int f_nMapEntries;
20529         int f_hasPreserve;
20530
20531         item = proto_tree_add_item(root, hf_x11_struct_xkb_KeyType, tvb, *offsetp, struct_size_xkb_KeyType(tvb, offsetp, byte_order), ENC_NA);
20532         t = proto_item_add_subtree(item, ett_x11_rectangle);
20533         {
20534             const int* mods_mask_bits [] = {
20535                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_Shift,
20536                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_Lock,
20537                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_Control,
20538                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_1,
20539                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_2,
20540                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_3,
20541                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_4,
20542                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_5,
20543                 &hf_x11_struct_xkb_KeyType_mods_mask_mask_Any,
20544             };
20545             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KeyType_mods_mask, ett_x11_rectangle, mods_mask_bits, byte_order);
20546         }
20547         *offsetp += 1;
20548         {
20549             const int* mods_mods_bits [] = {
20550                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_Shift,
20551                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_Lock,
20552                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_Control,
20553                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_1,
20554                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_2,
20555                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_3,
20556                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_4,
20557                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_5,
20558                 &hf_x11_struct_xkb_KeyType_mods_mods_mask_Any,
20559             };
20560             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KeyType_mods_mods, ett_x11_rectangle, mods_mods_bits, byte_order);
20561         }
20562         *offsetp += 1;
20563         {
20564             const int* mods_vmods_bits [] = {
20565                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_0,
20566                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_1,
20567                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_2,
20568                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_3,
20569                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_4,
20570                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_5,
20571                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_6,
20572                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_7,
20573                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_8,
20574                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_9,
20575                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_10,
20576                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_11,
20577                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_12,
20578                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_13,
20579                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_14,
20580                 &hf_x11_struct_xkb_KeyType_mods_vmods_mask_15,
20581             };
20582             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KeyType_mods_vmods, ett_x11_rectangle, mods_vmods_bits, byte_order);
20583         }
20584         *offsetp += 2;
20585         proto_tree_add_item(t, hf_x11_struct_xkb_KeyType_numLevels, tvb, *offsetp, 1, byte_order);
20586         *offsetp += 1;
20587         f_nMapEntries = VALUE8(tvb, *offsetp);
20588         proto_tree_add_item(t, hf_x11_struct_xkb_KeyType_nMapEntries, tvb, *offsetp, 1, byte_order);
20589         *offsetp += 1;
20590         f_hasPreserve = VALUE8(tvb, *offsetp);
20591         proto_tree_add_item(t, hf_x11_struct_xkb_KeyType_hasPreserve, tvb, *offsetp, 1, byte_order);
20592         *offsetp += 1;
20593         UNUSED(1);
20594         struct_xkb_KTMapEntry(tvb, offsetp, t, byte_order, f_nMapEntries);
20595         struct_xkb_ModDef(tvb, offsetp, t, byte_order, (f_hasPreserve * f_nMapEntries));
20596     }
20597 }
20598
20599 static int struct_size_xkb_KeySymMap(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
20600 {
20601     int size = 0;
20602     int f_nSyms;
20603     f_nSyms = VALUE16(tvb, *offsetp + size + 6);
20604     size += f_nSyms * 4;
20605     return size + 8;
20606 }
20607
20608 static void struct_xkb_KeySymMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20609 {
20610     int i;
20611     for (i = 0; i < count; i++) {
20612         proto_item *item;
20613         proto_tree *t;
20614         int f_nSyms;
20615
20616         item = proto_tree_add_item(root, hf_x11_struct_xkb_KeySymMap, tvb, *offsetp, struct_size_xkb_KeySymMap(tvb, offsetp, byte_order), ENC_NA);
20617         t = proto_item_add_subtree(item, ett_x11_rectangle);
20618         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_KeySymMap_kt_index, 4, byte_order);
20619         proto_tree_add_item(t, hf_x11_struct_xkb_KeySymMap_groupInfo, tvb, *offsetp, 1, byte_order);
20620         *offsetp += 1;
20621         proto_tree_add_item(t, hf_x11_struct_xkb_KeySymMap_width, tvb, *offsetp, 1, byte_order);
20622         *offsetp += 1;
20623         f_nSyms = VALUE16(tvb, *offsetp);
20624         proto_tree_add_item(t, hf_x11_struct_xkb_KeySymMap_nSyms, tvb, *offsetp, 2, byte_order);
20625         *offsetp += 2;
20626         listOfCard32(tvb, offsetp, t, hf_x11_struct_xkb_KeySymMap_syms, hf_x11_struct_xkb_KeySymMap_syms_item, f_nSyms, byte_order);
20627     }
20628 }
20629
20630 static void struct_xkb_CommonBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20631 {
20632     int i;
20633     for (i = 0; i < count; i++) {
20634         proto_item *item;
20635         proto_tree *t;
20636
20637         item = proto_tree_add_item(root, hf_x11_struct_xkb_CommonBehavior, tvb, *offsetp, 2, ENC_NA);
20638         t = proto_item_add_subtree(item, ett_x11_rectangle);
20639         proto_tree_add_item(t, hf_x11_struct_xkb_CommonBehavior_type, tvb, *offsetp, 1, byte_order);
20640         *offsetp += 1;
20641         proto_tree_add_item(t, hf_x11_struct_xkb_CommonBehavior_data, tvb, *offsetp, 1, byte_order);
20642         *offsetp += 1;
20643     }
20644 }
20645
20646 static void struct_xkb_DefaultBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20647 {
20648     int i;
20649     for (i = 0; i < count; i++) {
20650         proto_item *item;
20651         proto_tree *t;
20652
20653         item = proto_tree_add_item(root, hf_x11_struct_xkb_DefaultBehavior, tvb, *offsetp, 2, ENC_NA);
20654         t = proto_item_add_subtree(item, ett_x11_rectangle);
20655         proto_tree_add_item(t, hf_x11_struct_xkb_DefaultBehavior_type, tvb, *offsetp, 1, byte_order);
20656         *offsetp += 1;
20657         UNUSED(1);
20658     }
20659 }
20660
20661 static void struct_xkb_RadioGroupBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20662 {
20663     int i;
20664     for (i = 0; i < count; i++) {
20665         proto_item *item;
20666         proto_tree *t;
20667
20668         item = proto_tree_add_item(root, hf_x11_struct_xkb_RadioGroupBehavior, tvb, *offsetp, 2, ENC_NA);
20669         t = proto_item_add_subtree(item, ett_x11_rectangle);
20670         proto_tree_add_item(t, hf_x11_struct_xkb_RadioGroupBehavior_type, tvb, *offsetp, 1, byte_order);
20671         *offsetp += 1;
20672         proto_tree_add_item(t, hf_x11_struct_xkb_RadioGroupBehavior_group, tvb, *offsetp, 1, byte_order);
20673         *offsetp += 1;
20674     }
20675 }
20676
20677 static void struct_xkb_OverlayBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20678 {
20679     int i;
20680     for (i = 0; i < count; i++) {
20681         proto_item *item;
20682         proto_tree *t;
20683
20684         item = proto_tree_add_item(root, hf_x11_struct_xkb_OverlayBehavior, tvb, *offsetp, 2, ENC_NA);
20685         t = proto_item_add_subtree(item, ett_x11_rectangle);
20686         proto_tree_add_item(t, hf_x11_struct_xkb_OverlayBehavior_type, tvb, *offsetp, 1, byte_order);
20687         *offsetp += 1;
20688         proto_tree_add_item(t, hf_x11_struct_xkb_OverlayBehavior_key, tvb, *offsetp, 1, byte_order);
20689         *offsetp += 1;
20690     }
20691 }
20692
20693 static void struct_xkb_Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
20694 {
20695     int i;
20696     int base = *offsetp;
20697     for (i = 0; i < count; i++) {
20698         proto_item *item;
20699         proto_tree *t;
20700         item = proto_tree_add_item(root, hf_x11_union_xkb_Behavior, tvb, base, 2, ENC_NA);
20701         t = proto_item_add_subtree(item, ett_x11_rectangle);
20702
20703         *offsetp = base;
20704         struct_xkb_CommonBehavior(tvb, offsetp, t, byte_order, 1);
20705         *offsetp = base;
20706         struct_xkb_DefaultBehavior(tvb, offsetp, t, byte_order, 1);
20707         *offsetp = base;
20708         struct_xkb_DefaultBehavior(tvb, offsetp, t, byte_order, 1);
20709         *offsetp = base;
20710         struct_xkb_RadioGroupBehavior(tvb, offsetp, t, byte_order, 1);
20711         *offsetp = base;
20712         struct_xkb_OverlayBehavior(tvb, offsetp, t, byte_order, 1);
20713         *offsetp = base;
20714         struct_xkb_OverlayBehavior(tvb, offsetp, t, byte_order, 1);
20715         *offsetp = base;
20716         struct_xkb_DefaultBehavior(tvb, offsetp, t, byte_order, 1);
20717         *offsetp = base;
20718         struct_xkb_RadioGroupBehavior(tvb, offsetp, t, byte_order, 1);
20719         *offsetp = base;
20720         struct_xkb_OverlayBehavior(tvb, offsetp, t, byte_order, 1);
20721         *offsetp = base;
20722         struct_xkb_OverlayBehavior(tvb, offsetp, t, byte_order, 1);
20723         *offsetp = base;
20724         proto_tree_add_item(t, hf_x11_union_xkb_Behavior_type, tvb, *offsetp, 1, byte_order);
20725         *offsetp += 1;
20726         base += 2;
20727     }
20728     *offsetp = base;
20729 }
20730
20731 static void struct_xkb_SetBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20732 {
20733     int i;
20734     for (i = 0; i < count; i++) {
20735         proto_item *item;
20736         proto_tree *t;
20737
20738         item = proto_tree_add_item(root, hf_x11_struct_xkb_SetBehavior, tvb, *offsetp, 4, ENC_NA);
20739         t = proto_item_add_subtree(item, ett_x11_rectangle);
20740         proto_tree_add_item(t, hf_x11_struct_xkb_SetBehavior_keycode, tvb, *offsetp, 1, byte_order);
20741         *offsetp += 1;
20742         struct_xkb_Behavior(tvb, offsetp, t, byte_order, 1);
20743         UNUSED(1);
20744     }
20745 }
20746
20747 static void struct_xkb_SetExplicit(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20748 {
20749     int i;
20750     for (i = 0; i < count; i++) {
20751         proto_item *item;
20752         proto_tree *t;
20753
20754         item = proto_tree_add_item(root, hf_x11_struct_xkb_SetExplicit, tvb, *offsetp, 2, ENC_NA);
20755         t = proto_item_add_subtree(item, ett_x11_rectangle);
20756         proto_tree_add_item(t, hf_x11_struct_xkb_SetExplicit_keycode, tvb, *offsetp, 1, byte_order);
20757         *offsetp += 1;
20758         {
20759             const int* explicit_bits [] = {
20760                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_KeyType1,
20761                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_KeyType2,
20762                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_KeyType3,
20763                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_KeyType4,
20764                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_Interpret,
20765                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_AutoRepeat,
20766                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_Behavior,
20767                 &hf_x11_struct_xkb_SetExplicit_explicit_mask_VModMap,
20768             };
20769             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SetExplicit_explicit, ett_x11_rectangle, explicit_bits, byte_order);
20770         }
20771         *offsetp += 1;
20772     }
20773 }
20774
20775 static void struct_xkb_KeyModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20776 {
20777     int i;
20778     for (i = 0; i < count; i++) {
20779         proto_item *item;
20780         proto_tree *t;
20781
20782         item = proto_tree_add_item(root, hf_x11_struct_xkb_KeyModMap, tvb, *offsetp, 2, ENC_NA);
20783         t = proto_item_add_subtree(item, ett_x11_rectangle);
20784         proto_tree_add_item(t, hf_x11_struct_xkb_KeyModMap_keycode, tvb, *offsetp, 1, byte_order);
20785         *offsetp += 1;
20786         {
20787             const int* mods_bits [] = {
20788                 &hf_x11_struct_xkb_KeyModMap_mods_mask_Shift,
20789                 &hf_x11_struct_xkb_KeyModMap_mods_mask_Lock,
20790                 &hf_x11_struct_xkb_KeyModMap_mods_mask_Control,
20791                 &hf_x11_struct_xkb_KeyModMap_mods_mask_1,
20792                 &hf_x11_struct_xkb_KeyModMap_mods_mask_2,
20793                 &hf_x11_struct_xkb_KeyModMap_mods_mask_3,
20794                 &hf_x11_struct_xkb_KeyModMap_mods_mask_4,
20795                 &hf_x11_struct_xkb_KeyModMap_mods_mask_5,
20796                 &hf_x11_struct_xkb_KeyModMap_mods_mask_Any,
20797             };
20798             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KeyModMap_mods, ett_x11_rectangle, mods_bits, byte_order);
20799         }
20800         *offsetp += 1;
20801     }
20802 }
20803
20804 static void struct_xkb_KeyVModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20805 {
20806     int i;
20807     for (i = 0; i < count; i++) {
20808         proto_item *item;
20809         proto_tree *t;
20810
20811         item = proto_tree_add_item(root, hf_x11_struct_xkb_KeyVModMap, tvb, *offsetp, 4, ENC_NA);
20812         t = proto_item_add_subtree(item, ett_x11_rectangle);
20813         proto_tree_add_item(t, hf_x11_struct_xkb_KeyVModMap_keycode, tvb, *offsetp, 1, byte_order);
20814         *offsetp += 1;
20815         UNUSED(1);
20816         {
20817             const int* vmods_bits [] = {
20818                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_0,
20819                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_1,
20820                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_2,
20821                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_3,
20822                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_4,
20823                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_5,
20824                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_6,
20825                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_7,
20826                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_8,
20827                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_9,
20828                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_10,
20829                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_11,
20830                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_12,
20831                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_13,
20832                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_14,
20833                 &hf_x11_struct_xkb_KeyVModMap_vmods_mask_15,
20834             };
20835             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KeyVModMap_vmods, ett_x11_rectangle, vmods_bits, byte_order);
20836         }
20837         *offsetp += 2;
20838     }
20839 }
20840
20841 static void struct_xkb_KTSetMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20842 {
20843     int i;
20844     for (i = 0; i < count; i++) {
20845         proto_item *item;
20846         proto_tree *t;
20847
20848         item = proto_tree_add_item(root, hf_x11_struct_xkb_KTSetMapEntry, tvb, *offsetp, 4, ENC_NA);
20849         t = proto_item_add_subtree(item, ett_x11_rectangle);
20850         proto_tree_add_item(t, hf_x11_struct_xkb_KTSetMapEntry_level, tvb, *offsetp, 1, byte_order);
20851         *offsetp += 1;
20852         {
20853             const int* realMods_bits [] = {
20854                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_Shift,
20855                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_Lock,
20856                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_Control,
20857                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_1,
20858                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_2,
20859                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_3,
20860                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_4,
20861                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_5,
20862                 &hf_x11_struct_xkb_KTSetMapEntry_realMods_mask_Any,
20863             };
20864             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KTSetMapEntry_realMods, ett_x11_rectangle, realMods_bits, byte_order);
20865         }
20866         *offsetp += 1;
20867         {
20868             const int* virtualMods_bits [] = {
20869                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_0,
20870                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_1,
20871                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_2,
20872                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_3,
20873                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_4,
20874                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_5,
20875                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_6,
20876                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_7,
20877                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_8,
20878                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_9,
20879                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_10,
20880                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_11,
20881                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_12,
20882                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_13,
20883                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_14,
20884                 &hf_x11_struct_xkb_KTSetMapEntry_virtualMods_mask_15,
20885             };
20886             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_KTSetMapEntry_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
20887         }
20888         *offsetp += 2;
20889     }
20890 }
20891
20892 static int struct_size_xkb_SetKeyType(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
20893 {
20894     int size = 0;
20895     int f_nMapEntries;
20896     int f_preserve;
20897     f_nMapEntries = VALUE8(tvb, *offsetp + size + 5);
20898     f_preserve = VALUE8(tvb, *offsetp + size + 6);
20899     size += f_nMapEntries * 4;
20900     size += (f_preserve * f_nMapEntries) * 4;
20901     return size + 8;
20902 }
20903
20904 static void struct_xkb_SetKeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20905 {
20906     int i;
20907     for (i = 0; i < count; i++) {
20908         proto_item *item;
20909         proto_tree *t;
20910         int f_nMapEntries;
20911         int f_preserve;
20912
20913         item = proto_tree_add_item(root, hf_x11_struct_xkb_SetKeyType, tvb, *offsetp, struct_size_xkb_SetKeyType(tvb, offsetp, byte_order), ENC_NA);
20914         t = proto_item_add_subtree(item, ett_x11_rectangle);
20915         {
20916             const int* mask_bits [] = {
20917                 &hf_x11_struct_xkb_SetKeyType_mask_mask_Shift,
20918                 &hf_x11_struct_xkb_SetKeyType_mask_mask_Lock,
20919                 &hf_x11_struct_xkb_SetKeyType_mask_mask_Control,
20920                 &hf_x11_struct_xkb_SetKeyType_mask_mask_1,
20921                 &hf_x11_struct_xkb_SetKeyType_mask_mask_2,
20922                 &hf_x11_struct_xkb_SetKeyType_mask_mask_3,
20923                 &hf_x11_struct_xkb_SetKeyType_mask_mask_4,
20924                 &hf_x11_struct_xkb_SetKeyType_mask_mask_5,
20925                 &hf_x11_struct_xkb_SetKeyType_mask_mask_Any,
20926             };
20927             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SetKeyType_mask, ett_x11_rectangle, mask_bits, byte_order);
20928         }
20929         *offsetp += 1;
20930         {
20931             const int* realMods_bits [] = {
20932                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_Shift,
20933                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_Lock,
20934                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_Control,
20935                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_1,
20936                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_2,
20937                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_3,
20938                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_4,
20939                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_5,
20940                 &hf_x11_struct_xkb_SetKeyType_realMods_mask_Any,
20941             };
20942             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SetKeyType_realMods, ett_x11_rectangle, realMods_bits, byte_order);
20943         }
20944         *offsetp += 1;
20945         {
20946             const int* virtualMods_bits [] = {
20947                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_0,
20948                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_1,
20949                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_2,
20950                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_3,
20951                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_4,
20952                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_5,
20953                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_6,
20954                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_7,
20955                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_8,
20956                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_9,
20957                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_10,
20958                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_11,
20959                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_12,
20960                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_13,
20961                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_14,
20962                 &hf_x11_struct_xkb_SetKeyType_virtualMods_mask_15,
20963             };
20964             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SetKeyType_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
20965         }
20966         *offsetp += 2;
20967         proto_tree_add_item(t, hf_x11_struct_xkb_SetKeyType_numLevels, tvb, *offsetp, 1, byte_order);
20968         *offsetp += 1;
20969         f_nMapEntries = VALUE8(tvb, *offsetp);
20970         proto_tree_add_item(t, hf_x11_struct_xkb_SetKeyType_nMapEntries, tvb, *offsetp, 1, byte_order);
20971         *offsetp += 1;
20972         f_preserve = VALUE8(tvb, *offsetp);
20973         proto_tree_add_item(t, hf_x11_struct_xkb_SetKeyType_preserve, tvb, *offsetp, 1, byte_order);
20974         *offsetp += 1;
20975         UNUSED(1);
20976         struct_xkb_KTSetMapEntry(tvb, offsetp, t, byte_order, f_nMapEntries);
20977         struct_xkb_KTSetMapEntry(tvb, offsetp, t, byte_order, (f_preserve * f_nMapEntries));
20978     }
20979 }
20980
20981 static int struct_size_xkb_Listing(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
20982 {
20983     int size = 0;
20984     int f_length;
20985     f_length = VALUE16(tvb, *offsetp + size + 2);
20986     size += f_length * 1;
20987     size = (size + 1) & ~1;
20988     return size + 4;
20989 }
20990
20991 static void struct_xkb_Listing(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
20992 {
20993     int i;
20994     for (i = 0; i < count; i++) {
20995         proto_item *item;
20996         proto_tree *t;
20997         int f_length;
20998
20999         item = proto_tree_add_item(root, hf_x11_struct_xkb_Listing, tvb, *offsetp, struct_size_xkb_Listing(tvb, offsetp, byte_order), ENC_NA);
21000         t = proto_item_add_subtree(item, ett_x11_rectangle);
21001         proto_tree_add_item(t, hf_x11_struct_xkb_Listing_flags, tvb, *offsetp, 2, byte_order);
21002         *offsetp += 2;
21003         f_length = VALUE16(tvb, *offsetp);
21004         proto_tree_add_item(t, hf_x11_struct_xkb_Listing_length, tvb, *offsetp, 2, byte_order);
21005         *offsetp += 2;
21006         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_Listing_string, f_length, byte_order);
21007         if (*offsetp % 2) {
21008             UNUSED(2 - *offsetp % 2);
21009         }
21010     }
21011 }
21012
21013 static int struct_size_xkb_DeviceLedInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
21014 {
21015     int size = 0;
21016     int f_mapsPresent;
21017     int f_namesPresent;
21018     f_namesPresent = VALUE32(tvb, *offsetp + size + 4);
21019     f_mapsPresent = VALUE32(tvb, *offsetp + size + 8);
21020     size += popcount(f_namesPresent) * 4;
21021     size += popcount(f_mapsPresent) * 12;
21022     return size + 20;
21023 }
21024
21025 static void struct_xkb_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21026 {
21027     int i;
21028     for (i = 0; i < count; i++) {
21029         proto_item *item;
21030         proto_tree *t;
21031         int f_namesPresent;
21032         int f_mapsPresent;
21033
21034         item = proto_tree_add_item(root, hf_x11_struct_xkb_DeviceLedInfo, tvb, *offsetp, struct_size_xkb_DeviceLedInfo(tvb, offsetp, byte_order), ENC_NA);
21035         t = proto_item_add_subtree(item, ett_x11_rectangle);
21036         field16(tvb, offsetp, t, hf_x11_struct_xkb_DeviceLedInfo_ledClass, byte_order);
21037         field16(tvb, offsetp, t, hf_x11_struct_xkb_DeviceLedInfo_ledID, byte_order);
21038         f_namesPresent = VALUE32(tvb, *offsetp);
21039         proto_tree_add_item(t, hf_x11_struct_xkb_DeviceLedInfo_namesPresent, tvb, *offsetp, 4, byte_order);
21040         *offsetp += 4;
21041         f_mapsPresent = VALUE32(tvb, *offsetp);
21042         proto_tree_add_item(t, hf_x11_struct_xkb_DeviceLedInfo_mapsPresent, tvb, *offsetp, 4, byte_order);
21043         *offsetp += 4;
21044         proto_tree_add_item(t, hf_x11_struct_xkb_DeviceLedInfo_physIndicators, tvb, *offsetp, 4, byte_order);
21045         *offsetp += 4;
21046         proto_tree_add_item(t, hf_x11_struct_xkb_DeviceLedInfo_state, tvb, *offsetp, 4, byte_order);
21047         *offsetp += 4;
21048         listOfCard32(tvb, offsetp, t, hf_x11_struct_xkb_DeviceLedInfo_names, hf_x11_struct_xkb_DeviceLedInfo_names_item, popcount(f_namesPresent), byte_order);
21049         struct_xkb_IndicatorMap(tvb, offsetp, t, byte_order, popcount(f_mapsPresent));
21050     }
21051 }
21052
21053 static void struct_xkb_SANoAction(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21054 {
21055     int i;
21056     for (i = 0; i < count; i++) {
21057         proto_item *item;
21058         proto_tree *t;
21059
21060         item = proto_tree_add_item(root, hf_x11_struct_xkb_SANoAction, tvb, *offsetp, 8, ENC_NA);
21061         t = proto_item_add_subtree(item, ett_x11_rectangle);
21062         field8(tvb, offsetp, t, hf_x11_struct_xkb_SANoAction_type, byte_order);
21063         UNUSED(7);
21064     }
21065 }
21066
21067 static void struct_xkb_SASetMods(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21068 {
21069     int i;
21070     for (i = 0; i < count; i++) {
21071         proto_item *item;
21072         proto_tree *t;
21073
21074         item = proto_tree_add_item(root, hf_x11_struct_xkb_SASetMods, tvb, *offsetp, 8, ENC_NA);
21075         t = proto_item_add_subtree(item, ett_x11_rectangle);
21076         field8(tvb, offsetp, t, hf_x11_struct_xkb_SASetMods_type, byte_order);
21077         {
21078             const int* flags_bits [] = {
21079                 &hf_x11_struct_xkb_SASetMods_flags_mask_ClearLocks,
21080                 &hf_x11_struct_xkb_SASetMods_flags_mask_LatchToLock,
21081                 &hf_x11_struct_xkb_SASetMods_flags_mask_GroupAbsolute,
21082             };
21083             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetMods_flags, ett_x11_rectangle, flags_bits, byte_order);
21084         }
21085         *offsetp += 1;
21086         {
21087             const int* mask_bits [] = {
21088                 &hf_x11_struct_xkb_SASetMods_mask_mask_Shift,
21089                 &hf_x11_struct_xkb_SASetMods_mask_mask_Lock,
21090                 &hf_x11_struct_xkb_SASetMods_mask_mask_Control,
21091                 &hf_x11_struct_xkb_SASetMods_mask_mask_1,
21092                 &hf_x11_struct_xkb_SASetMods_mask_mask_2,
21093                 &hf_x11_struct_xkb_SASetMods_mask_mask_3,
21094                 &hf_x11_struct_xkb_SASetMods_mask_mask_4,
21095                 &hf_x11_struct_xkb_SASetMods_mask_mask_5,
21096                 &hf_x11_struct_xkb_SASetMods_mask_mask_Any,
21097             };
21098             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetMods_mask, ett_x11_rectangle, mask_bits, byte_order);
21099         }
21100         *offsetp += 1;
21101         {
21102             const int* realMods_bits [] = {
21103                 &hf_x11_struct_xkb_SASetMods_realMods_mask_Shift,
21104                 &hf_x11_struct_xkb_SASetMods_realMods_mask_Lock,
21105                 &hf_x11_struct_xkb_SASetMods_realMods_mask_Control,
21106                 &hf_x11_struct_xkb_SASetMods_realMods_mask_1,
21107                 &hf_x11_struct_xkb_SASetMods_realMods_mask_2,
21108                 &hf_x11_struct_xkb_SASetMods_realMods_mask_3,
21109                 &hf_x11_struct_xkb_SASetMods_realMods_mask_4,
21110                 &hf_x11_struct_xkb_SASetMods_realMods_mask_5,
21111                 &hf_x11_struct_xkb_SASetMods_realMods_mask_Any,
21112             };
21113             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetMods_realMods, ett_x11_rectangle, realMods_bits, byte_order);
21114         }
21115         *offsetp += 1;
21116         {
21117             const int* vmodsHigh_bits [] = {
21118                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_8,
21119                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_9,
21120                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_10,
21121                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_11,
21122                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_12,
21123                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_13,
21124                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_14,
21125                 &hf_x11_struct_xkb_SASetMods_vmodsHigh_mask_15,
21126             };
21127             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetMods_vmodsHigh, ett_x11_rectangle, vmodsHigh_bits, byte_order);
21128         }
21129         *offsetp += 1;
21130         {
21131             const int* vmodsLow_bits [] = {
21132                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_0,
21133                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_1,
21134                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_2,
21135                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_3,
21136                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_4,
21137                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_5,
21138                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_6,
21139                 &hf_x11_struct_xkb_SASetMods_vmodsLow_mask_7,
21140             };
21141             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetMods_vmodsLow, ett_x11_rectangle, vmodsLow_bits, byte_order);
21142         }
21143         *offsetp += 1;
21144         UNUSED(2);
21145     }
21146 }
21147
21148 static void struct_xkb_SASetGroup(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21149 {
21150     int i;
21151     for (i = 0; i < count; i++) {
21152         proto_item *item;
21153         proto_tree *t;
21154
21155         item = proto_tree_add_item(root, hf_x11_struct_xkb_SASetGroup, tvb, *offsetp, 8, ENC_NA);
21156         t = proto_item_add_subtree(item, ett_x11_rectangle);
21157         field8(tvb, offsetp, t, hf_x11_struct_xkb_SASetGroup_type, byte_order);
21158         {
21159             const int* flags_bits [] = {
21160                 &hf_x11_struct_xkb_SASetGroup_flags_mask_ClearLocks,
21161                 &hf_x11_struct_xkb_SASetGroup_flags_mask_LatchToLock,
21162                 &hf_x11_struct_xkb_SASetGroup_flags_mask_GroupAbsolute,
21163             };
21164             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetGroup_flags, ett_x11_rectangle, flags_bits, byte_order);
21165         }
21166         *offsetp += 1;
21167         proto_tree_add_item(t, hf_x11_struct_xkb_SASetGroup_group, tvb, *offsetp, 1, byte_order);
21168         *offsetp += 1;
21169         UNUSED(5);
21170     }
21171 }
21172
21173 static void struct_xkb_SAMovePtr(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21174 {
21175     int i;
21176     for (i = 0; i < count; i++) {
21177         proto_item *item;
21178         proto_tree *t;
21179
21180         item = proto_tree_add_item(root, hf_x11_struct_xkb_SAMovePtr, tvb, *offsetp, 8, ENC_NA);
21181         t = proto_item_add_subtree(item, ett_x11_rectangle);
21182         field8(tvb, offsetp, t, hf_x11_struct_xkb_SAMovePtr_type, byte_order);
21183         {
21184             const int* flags_bits [] = {
21185                 &hf_x11_struct_xkb_SAMovePtr_flags_mask_NoAcceleration,
21186                 &hf_x11_struct_xkb_SAMovePtr_flags_mask_MoveAbsoluteX,
21187                 &hf_x11_struct_xkb_SAMovePtr_flags_mask_MoveAbsoluteY,
21188             };
21189             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAMovePtr_flags, ett_x11_rectangle, flags_bits, byte_order);
21190         }
21191         *offsetp += 1;
21192         proto_tree_add_item(t, hf_x11_struct_xkb_SAMovePtr_xHigh, tvb, *offsetp, 1, byte_order);
21193         *offsetp += 1;
21194         proto_tree_add_item(t, hf_x11_struct_xkb_SAMovePtr_xLow, tvb, *offsetp, 1, byte_order);
21195         *offsetp += 1;
21196         proto_tree_add_item(t, hf_x11_struct_xkb_SAMovePtr_yHigh, tvb, *offsetp, 1, byte_order);
21197         *offsetp += 1;
21198         proto_tree_add_item(t, hf_x11_struct_xkb_SAMovePtr_yLow, tvb, *offsetp, 1, byte_order);
21199         *offsetp += 1;
21200         UNUSED(2);
21201     }
21202 }
21203
21204 static void struct_xkb_SAPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21205 {
21206     int i;
21207     for (i = 0; i < count; i++) {
21208         proto_item *item;
21209         proto_tree *t;
21210
21211         item = proto_tree_add_item(root, hf_x11_struct_xkb_SAPtrBtn, tvb, *offsetp, 8, ENC_NA);
21212         t = proto_item_add_subtree(item, ett_x11_rectangle);
21213         field8(tvb, offsetp, t, hf_x11_struct_xkb_SAPtrBtn_type, byte_order);
21214         proto_tree_add_item(t, hf_x11_struct_xkb_SAPtrBtn_flags, tvb, *offsetp, 1, byte_order);
21215         *offsetp += 1;
21216         proto_tree_add_item(t, hf_x11_struct_xkb_SAPtrBtn_count, tvb, *offsetp, 1, byte_order);
21217         *offsetp += 1;
21218         proto_tree_add_item(t, hf_x11_struct_xkb_SAPtrBtn_button, tvb, *offsetp, 1, byte_order);
21219         *offsetp += 1;
21220         UNUSED(4);
21221     }
21222 }
21223
21224 static void struct_xkb_SALockPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21225 {
21226     int i;
21227     for (i = 0; i < count; i++) {
21228         proto_item *item;
21229         proto_tree *t;
21230
21231         item = proto_tree_add_item(root, hf_x11_struct_xkb_SALockPtrBtn, tvb, *offsetp, 8, ENC_NA);
21232         t = proto_item_add_subtree(item, ett_x11_rectangle);
21233         field8(tvb, offsetp, t, hf_x11_struct_xkb_SALockPtrBtn_type, byte_order);
21234         proto_tree_add_item(t, hf_x11_struct_xkb_SALockPtrBtn_flags, tvb, *offsetp, 1, byte_order);
21235         *offsetp += 1;
21236         UNUSED(1);
21237         proto_tree_add_item(t, hf_x11_struct_xkb_SALockPtrBtn_button, tvb, *offsetp, 1, byte_order);
21238         *offsetp += 1;
21239         UNUSED(4);
21240     }
21241 }
21242
21243 static void struct_xkb_SASetPtrDflt(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21244 {
21245     int i;
21246     for (i = 0; i < count; i++) {
21247         proto_item *item;
21248         proto_tree *t;
21249
21250         item = proto_tree_add_item(root, hf_x11_struct_xkb_SASetPtrDflt, tvb, *offsetp, 8, ENC_NA);
21251         t = proto_item_add_subtree(item, ett_x11_rectangle);
21252         field8(tvb, offsetp, t, hf_x11_struct_xkb_SASetPtrDflt_type, byte_order);
21253         {
21254             const int* flags_bits [] = {
21255                 &hf_x11_struct_xkb_SASetPtrDflt_flags_mask_AffectDfltButton,
21256                 &hf_x11_struct_xkb_SASetPtrDflt_flags_mask_DfltBtnAbsolute,
21257             };
21258             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetPtrDflt_flags, ett_x11_rectangle, flags_bits, byte_order);
21259         }
21260         *offsetp += 1;
21261         {
21262             const int* affect_bits [] = {
21263                 &hf_x11_struct_xkb_SASetPtrDflt_affect_mask_AffectDfltButton,
21264                 &hf_x11_struct_xkb_SASetPtrDflt_affect_mask_DfltBtnAbsolute,
21265             };
21266             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetPtrDflt_affect, ett_x11_rectangle, affect_bits, byte_order);
21267         }
21268         *offsetp += 1;
21269         proto_tree_add_item(t, hf_x11_struct_xkb_SASetPtrDflt_value, tvb, *offsetp, 1, byte_order);
21270         *offsetp += 1;
21271         UNUSED(4);
21272     }
21273 }
21274
21275 static void struct_xkb_SAIsoLock(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21276 {
21277     int i;
21278     for (i = 0; i < count; i++) {
21279         proto_item *item;
21280         proto_tree *t;
21281
21282         item = proto_tree_add_item(root, hf_x11_struct_xkb_SAIsoLock, tvb, *offsetp, 8, ENC_NA);
21283         t = proto_item_add_subtree(item, ett_x11_rectangle);
21284         field8(tvb, offsetp, t, hf_x11_struct_xkb_SAIsoLock_type, byte_order);
21285         {
21286             const int* flags_bits [] = {
21287                 &hf_x11_struct_xkb_SAIsoLock_flags_mask_NoLock,
21288                 &hf_x11_struct_xkb_SAIsoLock_flags_mask_NoUnlock,
21289                 &hf_x11_struct_xkb_SAIsoLock_flags_mask_GroupAbsolute,
21290                 &hf_x11_struct_xkb_SAIsoLock_flags_mask_ISODfltIsGroup,
21291             };
21292             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAIsoLock_flags, ett_x11_rectangle, flags_bits, byte_order);
21293         }
21294         *offsetp += 1;
21295         {
21296             const int* mask_bits [] = {
21297                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_Shift,
21298                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_Lock,
21299                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_Control,
21300                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_1,
21301                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_2,
21302                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_3,
21303                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_4,
21304                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_5,
21305                 &hf_x11_struct_xkb_SAIsoLock_mask_mask_Any,
21306             };
21307             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAIsoLock_mask, ett_x11_rectangle, mask_bits, byte_order);
21308         }
21309         *offsetp += 1;
21310         {
21311             const int* realMods_bits [] = {
21312                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_Shift,
21313                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_Lock,
21314                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_Control,
21315                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_1,
21316                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_2,
21317                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_3,
21318                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_4,
21319                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_5,
21320                 &hf_x11_struct_xkb_SAIsoLock_realMods_mask_Any,
21321             };
21322             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAIsoLock_realMods, ett_x11_rectangle, realMods_bits, byte_order);
21323         }
21324         *offsetp += 1;
21325         proto_tree_add_item(t, hf_x11_struct_xkb_SAIsoLock_group, tvb, *offsetp, 1, byte_order);
21326         *offsetp += 1;
21327         {
21328             const int* affect_bits [] = {
21329                 &hf_x11_struct_xkb_SAIsoLock_affect_mask_Ctrls,
21330                 &hf_x11_struct_xkb_SAIsoLock_affect_mask_Ptr,
21331                 &hf_x11_struct_xkb_SAIsoLock_affect_mask_Group,
21332                 &hf_x11_struct_xkb_SAIsoLock_affect_mask_Mods,
21333             };
21334             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAIsoLock_affect, ett_x11_rectangle, affect_bits, byte_order);
21335         }
21336         *offsetp += 1;
21337         {
21338             const int* vmodsHigh_bits [] = {
21339                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_8,
21340                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_9,
21341                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_10,
21342                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_11,
21343                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_12,
21344                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_13,
21345                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_14,
21346                 &hf_x11_struct_xkb_SAIsoLock_vmodsHigh_mask_15,
21347             };
21348             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAIsoLock_vmodsHigh, ett_x11_rectangle, vmodsHigh_bits, byte_order);
21349         }
21350         *offsetp += 1;
21351         {
21352             const int* vmodsLow_bits [] = {
21353                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_0,
21354                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_1,
21355                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_2,
21356                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_3,
21357                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_4,
21358                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_5,
21359                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_6,
21360                 &hf_x11_struct_xkb_SAIsoLock_vmodsLow_mask_7,
21361             };
21362             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAIsoLock_vmodsLow, ett_x11_rectangle, vmodsLow_bits, byte_order);
21363         }
21364         *offsetp += 1;
21365     }
21366 }
21367
21368 static void struct_xkb_SATerminate(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21369 {
21370     int i;
21371     for (i = 0; i < count; i++) {
21372         proto_item *item;
21373         proto_tree *t;
21374
21375         item = proto_tree_add_item(root, hf_x11_struct_xkb_SATerminate, tvb, *offsetp, 8, ENC_NA);
21376         t = proto_item_add_subtree(item, ett_x11_rectangle);
21377         field8(tvb, offsetp, t, hf_x11_struct_xkb_SATerminate_type, byte_order);
21378         UNUSED(7);
21379     }
21380 }
21381
21382 static void struct_xkb_SASwitchScreen(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21383 {
21384     int i;
21385     for (i = 0; i < count; i++) {
21386         proto_item *item;
21387         proto_tree *t;
21388
21389         item = proto_tree_add_item(root, hf_x11_struct_xkb_SASwitchScreen, tvb, *offsetp, 8, ENC_NA);
21390         t = proto_item_add_subtree(item, ett_x11_rectangle);
21391         field8(tvb, offsetp, t, hf_x11_struct_xkb_SASwitchScreen_type, byte_order);
21392         proto_tree_add_item(t, hf_x11_struct_xkb_SASwitchScreen_flags, tvb, *offsetp, 1, byte_order);
21393         *offsetp += 1;
21394         proto_tree_add_item(t, hf_x11_struct_xkb_SASwitchScreen_newScreen, tvb, *offsetp, 1, byte_order);
21395         *offsetp += 1;
21396         UNUSED(5);
21397     }
21398 }
21399
21400 static void struct_xkb_SASetControls(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21401 {
21402     int i;
21403     for (i = 0; i < count; i++) {
21404         proto_item *item;
21405         proto_tree *t;
21406
21407         item = proto_tree_add_item(root, hf_x11_struct_xkb_SASetControls, tvb, *offsetp, 8, ENC_NA);
21408         t = proto_item_add_subtree(item, ett_x11_rectangle);
21409         field8(tvb, offsetp, t, hf_x11_struct_xkb_SASetControls_type, byte_order);
21410         UNUSED(3);
21411         {
21412             const int* boolCtrlsHigh_bits [] = {
21413                 &hf_x11_struct_xkb_SASetControls_boolCtrlsHigh_mask_AccessXFeedback,
21414                 &hf_x11_struct_xkb_SASetControls_boolCtrlsHigh_mask_AudibleBell,
21415                 &hf_x11_struct_xkb_SASetControls_boolCtrlsHigh_mask_Overlay1,
21416                 &hf_x11_struct_xkb_SASetControls_boolCtrlsHigh_mask_Overlay2,
21417                 &hf_x11_struct_xkb_SASetControls_boolCtrlsHigh_mask_IgnoreGroupLock,
21418             };
21419             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetControls_boolCtrlsHigh, ett_x11_rectangle, boolCtrlsHigh_bits, byte_order);
21420         }
21421         *offsetp += 1;
21422         {
21423             const int* boolCtrlsLow_bits [] = {
21424                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_RepeatKeys,
21425                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_SlowKeys,
21426                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_BounceKeys,
21427                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_StickyKeys,
21428                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_MouseKeys,
21429                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_MouseKeysAccel,
21430                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_AccessXKeys,
21431                 &hf_x11_struct_xkb_SASetControls_boolCtrlsLow_mask_AccessXTimeout,
21432             };
21433             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SASetControls_boolCtrlsLow, ett_x11_rectangle, boolCtrlsLow_bits, byte_order);
21434         }
21435         *offsetp += 1;
21436         UNUSED(2);
21437     }
21438 }
21439
21440 static void struct_xkb_SAActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21441 {
21442     int i;
21443     for (i = 0; i < count; i++) {
21444         proto_item *item;
21445         proto_tree *t;
21446
21447         item = proto_tree_add_item(root, hf_x11_struct_xkb_SAActionMessage, tvb, *offsetp, 8, ENC_NA);
21448         t = proto_item_add_subtree(item, ett_x11_rectangle);
21449         field8(tvb, offsetp, t, hf_x11_struct_xkb_SAActionMessage_type, byte_order);
21450         {
21451             const int* flags_bits [] = {
21452                 &hf_x11_struct_xkb_SAActionMessage_flags_mask_OnPress,
21453                 &hf_x11_struct_xkb_SAActionMessage_flags_mask_OnRelease,
21454                 &hf_x11_struct_xkb_SAActionMessage_flags_mask_GenKeyEvent,
21455             };
21456             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SAActionMessage_flags, ett_x11_rectangle, flags_bits, byte_order);
21457         }
21458         *offsetp += 1;
21459         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_SAActionMessage_message, 6, byte_order);
21460     }
21461 }
21462
21463 static void struct_xkb_SARedirectKey(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21464 {
21465     int i;
21466     for (i = 0; i < count; i++) {
21467         proto_item *item;
21468         proto_tree *t;
21469
21470         item = proto_tree_add_item(root, hf_x11_struct_xkb_SARedirectKey, tvb, *offsetp, 8, ENC_NA);
21471         t = proto_item_add_subtree(item, ett_x11_rectangle);
21472         field8(tvb, offsetp, t, hf_x11_struct_xkb_SARedirectKey_type, byte_order);
21473         proto_tree_add_item(t, hf_x11_struct_xkb_SARedirectKey_newkey, tvb, *offsetp, 1, byte_order);
21474         *offsetp += 1;
21475         {
21476             const int* mask_bits [] = {
21477                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_Shift,
21478                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_Lock,
21479                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_Control,
21480                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_1,
21481                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_2,
21482                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_3,
21483                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_4,
21484                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_5,
21485                 &hf_x11_struct_xkb_SARedirectKey_mask_mask_Any,
21486             };
21487             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SARedirectKey_mask, ett_x11_rectangle, mask_bits, byte_order);
21488         }
21489         *offsetp += 1;
21490         {
21491             const int* realModifiers_bits [] = {
21492                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_Shift,
21493                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_Lock,
21494                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_Control,
21495                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_1,
21496                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_2,
21497                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_3,
21498                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_4,
21499                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_5,
21500                 &hf_x11_struct_xkb_SARedirectKey_realModifiers_mask_Any,
21501             };
21502             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SARedirectKey_realModifiers, ett_x11_rectangle, realModifiers_bits, byte_order);
21503         }
21504         *offsetp += 1;
21505         {
21506             const int* vmodsMaskHigh_bits [] = {
21507                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_8,
21508                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_9,
21509                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_10,
21510                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_11,
21511                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_12,
21512                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_13,
21513                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_14,
21514                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh_mask_15,
21515             };
21516             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SARedirectKey_vmodsMaskHigh, ett_x11_rectangle, vmodsMaskHigh_bits, byte_order);
21517         }
21518         *offsetp += 1;
21519         {
21520             const int* vmodsMaskLow_bits [] = {
21521                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_0,
21522                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_1,
21523                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_2,
21524                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_3,
21525                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_4,
21526                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_5,
21527                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_6,
21528                 &hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow_mask_7,
21529             };
21530             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SARedirectKey_vmodsMaskLow, ett_x11_rectangle, vmodsMaskLow_bits, byte_order);
21531         }
21532         *offsetp += 1;
21533         {
21534             const int* vmodsHigh_bits [] = {
21535                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_8,
21536                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_9,
21537                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_10,
21538                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_11,
21539                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_12,
21540                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_13,
21541                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_14,
21542                 &hf_x11_struct_xkb_SARedirectKey_vmodsHigh_mask_15,
21543             };
21544             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SARedirectKey_vmodsHigh, ett_x11_rectangle, vmodsHigh_bits, byte_order);
21545         }
21546         *offsetp += 1;
21547         {
21548             const int* vmodsLow_bits [] = {
21549                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_0,
21550                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_1,
21551                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_2,
21552                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_3,
21553                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_4,
21554                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_5,
21555                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_6,
21556                 &hf_x11_struct_xkb_SARedirectKey_vmodsLow_mask_7,
21557             };
21558             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SARedirectKey_vmodsLow, ett_x11_rectangle, vmodsLow_bits, byte_order);
21559         }
21560         *offsetp += 1;
21561     }
21562 }
21563
21564 static void struct_xkb_SADeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21565 {
21566     int i;
21567     for (i = 0; i < count; i++) {
21568         proto_item *item;
21569         proto_tree *t;
21570
21571         item = proto_tree_add_item(root, hf_x11_struct_xkb_SADeviceBtn, tvb, *offsetp, 8, ENC_NA);
21572         t = proto_item_add_subtree(item, ett_x11_rectangle);
21573         field8(tvb, offsetp, t, hf_x11_struct_xkb_SADeviceBtn_type, byte_order);
21574         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceBtn_flags, tvb, *offsetp, 1, byte_order);
21575         *offsetp += 1;
21576         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceBtn_count, tvb, *offsetp, 1, byte_order);
21577         *offsetp += 1;
21578         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceBtn_button, tvb, *offsetp, 1, byte_order);
21579         *offsetp += 1;
21580         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceBtn_device, tvb, *offsetp, 1, byte_order);
21581         *offsetp += 1;
21582         UNUSED(3);
21583     }
21584 }
21585
21586 static void struct_xkb_SALockDeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21587 {
21588     int i;
21589     for (i = 0; i < count; i++) {
21590         proto_item *item;
21591         proto_tree *t;
21592
21593         item = proto_tree_add_item(root, hf_x11_struct_xkb_SALockDeviceBtn, tvb, *offsetp, 8, ENC_NA);
21594         t = proto_item_add_subtree(item, ett_x11_rectangle);
21595         field8(tvb, offsetp, t, hf_x11_struct_xkb_SALockDeviceBtn_type, byte_order);
21596         {
21597             const int* flags_bits [] = {
21598                 &hf_x11_struct_xkb_SALockDeviceBtn_flags_mask_NoLock,
21599                 &hf_x11_struct_xkb_SALockDeviceBtn_flags_mask_NoUnlock,
21600             };
21601             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SALockDeviceBtn_flags, ett_x11_rectangle, flags_bits, byte_order);
21602         }
21603         *offsetp += 1;
21604         UNUSED(1);
21605         proto_tree_add_item(t, hf_x11_struct_xkb_SALockDeviceBtn_button, tvb, *offsetp, 1, byte_order);
21606         *offsetp += 1;
21607         proto_tree_add_item(t, hf_x11_struct_xkb_SALockDeviceBtn_device, tvb, *offsetp, 1, byte_order);
21608         *offsetp += 1;
21609         UNUSED(3);
21610     }
21611 }
21612
21613 static void struct_xkb_SADeviceValuator(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21614 {
21615     int i;
21616     for (i = 0; i < count; i++) {
21617         proto_item *item;
21618         proto_tree *t;
21619
21620         item = proto_tree_add_item(root, hf_x11_struct_xkb_SADeviceValuator, tvb, *offsetp, 8, ENC_NA);
21621         t = proto_item_add_subtree(item, ett_x11_rectangle);
21622         field8(tvb, offsetp, t, hf_x11_struct_xkb_SADeviceValuator_type, byte_order);
21623         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceValuator_device, tvb, *offsetp, 1, byte_order);
21624         *offsetp += 1;
21625         field8(tvb, offsetp, t, hf_x11_struct_xkb_SADeviceValuator_val1what, byte_order);
21626         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceValuator_val1index, tvb, *offsetp, 1, byte_order);
21627         *offsetp += 1;
21628         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceValuator_val1value, tvb, *offsetp, 1, byte_order);
21629         *offsetp += 1;
21630         field8(tvb, offsetp, t, hf_x11_struct_xkb_SADeviceValuator_val2what, byte_order);
21631         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceValuator_val2index, tvb, *offsetp, 1, byte_order);
21632         *offsetp += 1;
21633         proto_tree_add_item(t, hf_x11_struct_xkb_SADeviceValuator_val2value, tvb, *offsetp, 1, byte_order);
21634         *offsetp += 1;
21635     }
21636 }
21637
21638 static void struct_xkb_SIAction(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21639 {
21640     int i;
21641     for (i = 0; i < count; i++) {
21642         proto_item *item;
21643         proto_tree *t;
21644
21645         item = proto_tree_add_item(root, hf_x11_struct_xkb_SIAction, tvb, *offsetp, 8, ENC_NA);
21646         t = proto_item_add_subtree(item, ett_x11_rectangle);
21647         field8(tvb, offsetp, t, hf_x11_struct_xkb_SIAction_type, byte_order);
21648         listOfByte(tvb, offsetp, t, hf_x11_struct_xkb_SIAction_data, 7, byte_order);
21649     }
21650 }
21651
21652 static void struct_xkb_SymInterpret(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
21653 {
21654     int i;
21655     for (i = 0; i < count; i++) {
21656         proto_item *item;
21657         proto_tree *t;
21658
21659         item = proto_tree_add_item(root, hf_x11_struct_xkb_SymInterpret, tvb, *offsetp, 16, ENC_NA);
21660         t = proto_item_add_subtree(item, ett_x11_rectangle);
21661         proto_tree_add_item(t, hf_x11_struct_xkb_SymInterpret_sym, tvb, *offsetp, 4, byte_order);
21662         *offsetp += 4;
21663         {
21664             const int* mods_bits [] = {
21665                 &hf_x11_struct_xkb_SymInterpret_mods_mask_Shift,
21666                 &hf_x11_struct_xkb_SymInterpret_mods_mask_Lock,
21667                 &hf_x11_struct_xkb_SymInterpret_mods_mask_Control,
21668                 &hf_x11_struct_xkb_SymInterpret_mods_mask_1,
21669                 &hf_x11_struct_xkb_SymInterpret_mods_mask_2,
21670                 &hf_x11_struct_xkb_SymInterpret_mods_mask_3,
21671                 &hf_x11_struct_xkb_SymInterpret_mods_mask_4,
21672                 &hf_x11_struct_xkb_SymInterpret_mods_mask_5,
21673                 &hf_x11_struct_xkb_SymInterpret_mods_mask_Any,
21674             };
21675             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SymInterpret_mods, ett_x11_rectangle, mods_bits, byte_order);
21676         }
21677         *offsetp += 1;
21678         field8(tvb, offsetp, t, hf_x11_struct_xkb_SymInterpret_match, byte_order);
21679         {
21680             const int* virtualMod_bits [] = {
21681                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_0,
21682                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_1,
21683                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_2,
21684                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_3,
21685                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_4,
21686                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_5,
21687                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_6,
21688                 &hf_x11_struct_xkb_SymInterpret_virtualMod_mask_7,
21689             };
21690             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xkb_SymInterpret_virtualMod, ett_x11_rectangle, virtualMod_bits, byte_order);
21691         }
21692         *offsetp += 1;
21693         proto_tree_add_item(t, hf_x11_struct_xkb_SymInterpret_flags, tvb, *offsetp, 1, byte_order);
21694         *offsetp += 1;
21695         struct_xkb_SIAction(tvb, offsetp, t, byte_order, 1);
21696     }
21697 }
21698
21699 static void struct_xkb_Action(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
21700 {
21701     int i;
21702     int base = *offsetp;
21703     for (i = 0; i < count; i++) {
21704         proto_item *item;
21705         proto_tree *t;
21706         item = proto_tree_add_item(root, hf_x11_union_xkb_Action, tvb, base, 8, ENC_NA);
21707         t = proto_item_add_subtree(item, ett_x11_rectangle);
21708
21709         *offsetp = base;
21710         struct_xkb_SANoAction(tvb, offsetp, t, byte_order, 1);
21711         *offsetp = base;
21712         struct_xkb_SASetMods(tvb, offsetp, t, byte_order, 1);
21713         *offsetp = base;
21714         struct_xkb_SASetMods(tvb, offsetp, t, byte_order, 1);
21715         *offsetp = base;
21716         struct_xkb_SASetMods(tvb, offsetp, t, byte_order, 1);
21717         *offsetp = base;
21718         struct_xkb_SASetGroup(tvb, offsetp, t, byte_order, 1);
21719         *offsetp = base;
21720         struct_xkb_SASetGroup(tvb, offsetp, t, byte_order, 1);
21721         *offsetp = base;
21722         struct_xkb_SASetGroup(tvb, offsetp, t, byte_order, 1);
21723         *offsetp = base;
21724         struct_xkb_SAMovePtr(tvb, offsetp, t, byte_order, 1);
21725         *offsetp = base;
21726         struct_xkb_SAPtrBtn(tvb, offsetp, t, byte_order, 1);
21727         *offsetp = base;
21728         struct_xkb_SALockPtrBtn(tvb, offsetp, t, byte_order, 1);
21729         *offsetp = base;
21730         struct_xkb_SASetPtrDflt(tvb, offsetp, t, byte_order, 1);
21731         *offsetp = base;
21732         struct_xkb_SAIsoLock(tvb, offsetp, t, byte_order, 1);
21733         *offsetp = base;
21734         struct_xkb_SATerminate(tvb, offsetp, t, byte_order, 1);
21735         *offsetp = base;
21736         struct_xkb_SASwitchScreen(tvb, offsetp, t, byte_order, 1);
21737         *offsetp = base;
21738         struct_xkb_SASetControls(tvb, offsetp, t, byte_order, 1);
21739         *offsetp = base;
21740         struct_xkb_SASetControls(tvb, offsetp, t, byte_order, 1);
21741         *offsetp = base;
21742         struct_xkb_SAActionMessage(tvb, offsetp, t, byte_order, 1);
21743         *offsetp = base;
21744         struct_xkb_SARedirectKey(tvb, offsetp, t, byte_order, 1);
21745         *offsetp = base;
21746         struct_xkb_SADeviceBtn(tvb, offsetp, t, byte_order, 1);
21747         *offsetp = base;
21748         struct_xkb_SALockDeviceBtn(tvb, offsetp, t, byte_order, 1);
21749         *offsetp = base;
21750         struct_xkb_SADeviceValuator(tvb, offsetp, t, byte_order, 1);
21751         *offsetp = base;
21752         field8(tvb, offsetp, t, hf_x11_union_xkb_Action_type, byte_order);
21753         base += 8;
21754     }
21755     *offsetp = base;
21756 }
21757
21758 static void xkbUseExtension(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
21759 {
21760     proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMajor, tvb, *offsetp, 2, byte_order);
21761     *offsetp += 2;
21762     proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMinor, tvb, *offsetp, 2, byte_order);
21763     *offsetp += 2;
21764 }
21765 static void xkbUseExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
21766 {
21767     int sequence_number;
21768
21769     col_append_fstr(pinfo->cinfo, COL_INFO, "-UseExtension");
21770
21771     REPLY(reply);
21772     proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_supported, tvb, *offsetp, 1, byte_order);
21773     *offsetp += 1;
21774     sequence_number = VALUE16(tvb, *offsetp);
21775     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
21776             "%d (xkb-UseExtension)", sequence_number);
21777     *offsetp += 2;
21778     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
21779     *offsetp += 4;
21780     proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMajor, tvb, *offsetp, 2, byte_order);
21781     *offsetp += 2;
21782     proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMinor, tvb, *offsetp, 2, byte_order);
21783     *offsetp += 2;
21784     UNUSED(20);
21785 }
21786
21787 static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
21788 {
21789     int f_affectWhich;
21790     int f_clear;
21791     int f_selectAll;
21792     proto_tree_add_item(t, hf_x11_xkb_SelectEvents_deviceSpec, tvb, *offsetp, 2, byte_order);
21793     *offsetp += 2;
21794     f_affectWhich = VALUE16(tvb, *offsetp);
21795     {
21796         const int* affectWhich_bits [] = {
21797         &hf_x11_xkb_SelectEvents_affectWhich_mask_NewKeyboardNotify,
21798         &hf_x11_xkb_SelectEvents_affectWhich_mask_MapNotify,
21799         &hf_x11_xkb_SelectEvents_affectWhich_mask_StateNotify,
21800         &hf_x11_xkb_SelectEvents_affectWhich_mask_ControlsNotify,
21801         &hf_x11_xkb_SelectEvents_affectWhich_mask_IndicatorStateNotify,
21802         &hf_x11_xkb_SelectEvents_affectWhich_mask_IndicatorMapNotify,
21803         &hf_x11_xkb_SelectEvents_affectWhich_mask_NamesNotify,
21804         &hf_x11_xkb_SelectEvents_affectWhich_mask_CompatMapNotify,
21805         &hf_x11_xkb_SelectEvents_affectWhich_mask_BellNotify,
21806         &hf_x11_xkb_SelectEvents_affectWhich_mask_ActionMessage,
21807         &hf_x11_xkb_SelectEvents_affectWhich_mask_AccessXNotify,
21808         &hf_x11_xkb_SelectEvents_affectWhich_mask_ExtensionDeviceNotify,
21809         };
21810         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_affectWhich, ett_x11_rectangle, affectWhich_bits, byte_order);
21811     }
21812     *offsetp += 2;
21813     f_clear = VALUE16(tvb, *offsetp);
21814     {
21815         const int* clear_bits [] = {
21816         &hf_x11_xkb_SelectEvents_clear_mask_NewKeyboardNotify,
21817         &hf_x11_xkb_SelectEvents_clear_mask_MapNotify,
21818         &hf_x11_xkb_SelectEvents_clear_mask_StateNotify,
21819         &hf_x11_xkb_SelectEvents_clear_mask_ControlsNotify,
21820         &hf_x11_xkb_SelectEvents_clear_mask_IndicatorStateNotify,
21821         &hf_x11_xkb_SelectEvents_clear_mask_IndicatorMapNotify,
21822         &hf_x11_xkb_SelectEvents_clear_mask_NamesNotify,
21823         &hf_x11_xkb_SelectEvents_clear_mask_CompatMapNotify,
21824         &hf_x11_xkb_SelectEvents_clear_mask_BellNotify,
21825         &hf_x11_xkb_SelectEvents_clear_mask_ActionMessage,
21826         &hf_x11_xkb_SelectEvents_clear_mask_AccessXNotify,
21827         &hf_x11_xkb_SelectEvents_clear_mask_ExtensionDeviceNotify,
21828         };
21829         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_clear, ett_x11_rectangle, clear_bits, byte_order);
21830     }
21831     *offsetp += 2;
21832     f_selectAll = VALUE16(tvb, *offsetp);
21833     {
21834         const int* selectAll_bits [] = {
21835         &hf_x11_xkb_SelectEvents_selectAll_mask_NewKeyboardNotify,
21836         &hf_x11_xkb_SelectEvents_selectAll_mask_MapNotify,
21837         &hf_x11_xkb_SelectEvents_selectAll_mask_StateNotify,
21838         &hf_x11_xkb_SelectEvents_selectAll_mask_ControlsNotify,
21839         &hf_x11_xkb_SelectEvents_selectAll_mask_IndicatorStateNotify,
21840         &hf_x11_xkb_SelectEvents_selectAll_mask_IndicatorMapNotify,
21841         &hf_x11_xkb_SelectEvents_selectAll_mask_NamesNotify,
21842         &hf_x11_xkb_SelectEvents_selectAll_mask_CompatMapNotify,
21843         &hf_x11_xkb_SelectEvents_selectAll_mask_BellNotify,
21844         &hf_x11_xkb_SelectEvents_selectAll_mask_ActionMessage,
21845         &hf_x11_xkb_SelectEvents_selectAll_mask_AccessXNotify,
21846         &hf_x11_xkb_SelectEvents_selectAll_mask_ExtensionDeviceNotify,
21847         };
21848         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_selectAll, ett_x11_rectangle, selectAll_bits, byte_order);
21849     }
21850     *offsetp += 2;
21851     {
21852         const int* affectMap_bits [] = {
21853         &hf_x11_xkb_SelectEvents_affectMap_mask_KeyTypes,
21854         &hf_x11_xkb_SelectEvents_affectMap_mask_KeySyms,
21855         &hf_x11_xkb_SelectEvents_affectMap_mask_ModifierMap,
21856         &hf_x11_xkb_SelectEvents_affectMap_mask_ExplicitComponents,
21857         &hf_x11_xkb_SelectEvents_affectMap_mask_KeyActions,
21858         &hf_x11_xkb_SelectEvents_affectMap_mask_KeyBehaviors,
21859         &hf_x11_xkb_SelectEvents_affectMap_mask_VirtualMods,
21860         &hf_x11_xkb_SelectEvents_affectMap_mask_VirtualModMap,
21861         };
21862         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_affectMap, ett_x11_rectangle, affectMap_bits, byte_order);
21863     }
21864     *offsetp += 2;
21865     {
21866         const int* map_bits [] = {
21867         &hf_x11_xkb_SelectEvents_map_mask_KeyTypes,
21868         &hf_x11_xkb_SelectEvents_map_mask_KeySyms,
21869         &hf_x11_xkb_SelectEvents_map_mask_ModifierMap,
21870         &hf_x11_xkb_SelectEvents_map_mask_ExplicitComponents,
21871         &hf_x11_xkb_SelectEvents_map_mask_KeyActions,
21872         &hf_x11_xkb_SelectEvents_map_mask_KeyBehaviors,
21873         &hf_x11_xkb_SelectEvents_map_mask_VirtualMods,
21874         &hf_x11_xkb_SelectEvents_map_mask_VirtualModMap,
21875         };
21876         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_map, ett_x11_rectangle, map_bits, byte_order);
21877     }
21878     *offsetp += 2;
21879     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 0)) {
21880         {
21881             const int* affectNewKeyboard_bits [] = {
21882                 &hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Keycodes,
21883                 &hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Geometry,
21884                 &hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_DeviceID,
21885             };
21886             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard, ett_x11_rectangle, affectNewKeyboard_bits, byte_order);
21887         }
21888         *offsetp += 2;
21889         {
21890             const int* newKeyboardDetails_bits [] = {
21891                 &hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Keycodes,
21892                 &hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Geometry,
21893                 &hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_DeviceID,
21894             };
21895             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails, ett_x11_rectangle, newKeyboardDetails_bits, byte_order);
21896         }
21897         *offsetp += 2;
21898     }
21899     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 2)) {
21900         {
21901             const int* affectState_bits [] = {
21902                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierState,
21903                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierBase,
21904                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLatch,
21905                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLock,
21906                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupState,
21907                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupBase,
21908                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLatch,
21909                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLock,
21910                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatState,
21911                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GrabMods,
21912                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatGrabMods,
21913                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_LookupMods,
21914                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatLookupMods,
21915                 &hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_PointerButtons,
21916             };
21917             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_StateNotify_affectState, ett_x11_rectangle, affectState_bits, byte_order);
21918         }
21919         *offsetp += 2;
21920         {
21921             const int* stateDetails_bits [] = {
21922                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierState,
21923                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierBase,
21924                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLatch,
21925                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLock,
21926                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupState,
21927                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupBase,
21928                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLatch,
21929                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLock,
21930                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatState,
21931                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GrabMods,
21932                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatGrabMods,
21933                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_LookupMods,
21934                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatLookupMods,
21935                 &hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_PointerButtons,
21936             };
21937             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_StateNotify_stateDetails, ett_x11_rectangle, stateDetails_bits, byte_order);
21938         }
21939         *offsetp += 2;
21940     }
21941     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 3)) {
21942         {
21943             const int* affectCtrls_bits [] = {
21944                 &hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_GroupsWrap,
21945                 &hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_InternalMods,
21946                 &hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_IgnoreLockMods,
21947                 &hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_PerKeyRepeat,
21948                 &hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_ControlsEnabled,
21949             };
21950             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls, ett_x11_rectangle, affectCtrls_bits, byte_order);
21951         }
21952         *offsetp += 4;
21953         {
21954             const int* ctrlDetails_bits [] = {
21955                 &hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_GroupsWrap,
21956                 &hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_InternalMods,
21957                 &hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_IgnoreLockMods,
21958                 &hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_PerKeyRepeat,
21959                 &hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_ControlsEnabled,
21960             };
21961             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails, ett_x11_rectangle, ctrlDetails_bits, byte_order);
21962         }
21963         *offsetp += 4;
21964     }
21965     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 4)) {
21966         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_affectIndicatorState, tvb, *offsetp, 4, byte_order);
21967         *offsetp += 4;
21968         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_indicatorStateDetails, tvb, *offsetp, 4, byte_order);
21969         *offsetp += 4;
21970     }
21971     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 5)) {
21972         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_affectIndicatorMap, tvb, *offsetp, 4, byte_order);
21973         *offsetp += 4;
21974         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_indicatorMapDetails, tvb, *offsetp, 4, byte_order);
21975         *offsetp += 4;
21976     }
21977     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 6)) {
21978         {
21979             const int* affectNames_bits [] = {
21980                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Keycodes,
21981                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Geometry,
21982                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Symbols,
21983                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_PhysSymbols,
21984                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Types,
21985                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Compat,
21986                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyTypeNames,
21987                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KTLevelNames,
21988                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_IndicatorNames,
21989                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyNames,
21990                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyAliases,
21991                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_VirtualModNames,
21992                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_GroupNames,
21993                 &hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_RGNames,
21994             };
21995             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_NamesNotify_affectNames, ett_x11_rectangle, affectNames_bits, byte_order);
21996         }
21997         *offsetp += 2;
21998         {
21999             const int* namesDetails_bits [] = {
22000                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Keycodes,
22001                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Geometry,
22002                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Symbols,
22003                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_PhysSymbols,
22004                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Types,
22005                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Compat,
22006                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyTypeNames,
22007                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KTLevelNames,
22008                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_IndicatorNames,
22009                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyNames,
22010                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyAliases,
22011                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_VirtualModNames,
22012                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_GroupNames,
22013                 &hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_RGNames,
22014             };
22015             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails, ett_x11_rectangle, namesDetails_bits, byte_order);
22016         }
22017         *offsetp += 2;
22018     }
22019     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 7)) {
22020         {
22021             const int* affectCompat_bits [] = {
22022                 &hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_SymInterp,
22023                 &hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_GroupCompat,
22024             };
22025             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat, ett_x11_rectangle, affectCompat_bits, byte_order);
22026         }
22027         *offsetp += 1;
22028         {
22029             const int* compatDetails_bits [] = {
22030                 &hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_SymInterp,
22031                 &hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_GroupCompat,
22032             };
22033             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails, ett_x11_rectangle, compatDetails_bits, byte_order);
22034         }
22035         *offsetp += 1;
22036     }
22037     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 8)) {
22038         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_affectBell, tvb, *offsetp, 1, byte_order);
22039         *offsetp += 1;
22040         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_bellDetails, tvb, *offsetp, 1, byte_order);
22041         *offsetp += 1;
22042     }
22043     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 9)) {
22044         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_affectMsgDetails, tvb, *offsetp, 1, byte_order);
22045         *offsetp += 1;
22046         proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_msgDetails, tvb, *offsetp, 1, byte_order);
22047         *offsetp += 1;
22048     }
22049     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 10)) {
22050         {
22051             const int* affectAccessX_bits [] = {
22052                 &hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKPress,
22053                 &hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKAccept,
22054                 &hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKReject,
22055                 &hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKRelease,
22056                 &hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKAccept,
22057                 &hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKReject,
22058                 &hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_AXKWarning,
22059             };
22060             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX, ett_x11_rectangle, affectAccessX_bits, byte_order);
22061         }
22062         *offsetp += 2;
22063         {
22064             const int* accessXDetails_bits [] = {
22065                 &hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKPress,
22066                 &hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKAccept,
22067                 &hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKReject,
22068                 &hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKRelease,
22069                 &hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKAccept,
22070                 &hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKReject,
22071                 &hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_AXKWarning,
22072             };
22073             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails, ett_x11_rectangle, accessXDetails_bits, byte_order);
22074         }
22075         *offsetp += 2;
22076     }
22077     if ((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1U << 11)) {
22078         {
22079             const int* affectExtDev_bits [] = {
22080                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_Keyboards,
22081                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_ButtonActions,
22082                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorNames,
22083                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorMaps,
22084                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorState,
22085             };
22086             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev, ett_x11_rectangle, affectExtDev_bits, byte_order);
22087         }
22088         *offsetp += 2;
22089         {
22090             const int* extdevDetails_bits [] = {
22091                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_Keyboards,
22092                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_ButtonActions,
22093                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorNames,
22094                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorMaps,
22095                 &hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorState,
22096             };
22097             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails, ett_x11_rectangle, extdevDetails_bits, byte_order);
22098         }
22099         *offsetp += 2;
22100     }
22101 }
22102
22103 static void xkbBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
22104 {
22105     proto_tree_add_item(t, hf_x11_xkb_Bell_deviceSpec, tvb, *offsetp, 2, byte_order);
22106     *offsetp += 2;
22107     proto_tree_add_item(t, hf_x11_xkb_Bell_bellClass, tvb, *offsetp, 2, byte_order);
22108     *offsetp += 2;
22109     proto_tree_add_item(t, hf_x11_xkb_Bell_bellID, tvb, *offsetp, 2, byte_order);
22110     *offsetp += 2;
22111     proto_tree_add_item(t, hf_x11_xkb_Bell_percent, tvb, *offsetp, 1, byte_order);
22112     *offsetp += 1;
22113     proto_tree_add_item(t, hf_x11_xkb_Bell_forceSound, tvb, *offsetp, 1, byte_order);
22114     *offsetp += 1;
22115     proto_tree_add_item(t, hf_x11_xkb_Bell_eventOnly, tvb, *offsetp, 1, byte_order);
22116     *offsetp += 1;
22117     UNUSED(1);
22118     proto_tree_add_item(t, hf_x11_xkb_Bell_pitch, tvb, *offsetp, 2, byte_order);
22119     *offsetp += 2;
22120     proto_tree_add_item(t, hf_x11_xkb_Bell_duration, tvb, *offsetp, 2, byte_order);
22121     *offsetp += 2;
22122     UNUSED(2);
22123     proto_tree_add_item(t, hf_x11_xkb_Bell_name, tvb, *offsetp, 4, byte_order);
22124     *offsetp += 4;
22125     proto_tree_add_item(t, hf_x11_xkb_Bell_window, tvb, *offsetp, 4, byte_order);
22126     *offsetp += 4;
22127 }
22128
22129 static void xkbGetState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
22130 {
22131     proto_tree_add_item(t, hf_x11_xkb_GetState_deviceSpec, tvb, *offsetp, 2, byte_order);
22132     *offsetp += 2;
22133     UNUSED(2);
22134 }
22135 static void xkbGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
22136 {
22137     int sequence_number;
22138
22139     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetState");
22140
22141     REPLY(reply);
22142     proto_tree_add_item(t, hf_x11_xkb_GetState_reply_deviceID, tvb, *offsetp, 1, byte_order);
22143     *offsetp += 1;
22144     sequence_number = VALUE16(tvb, *offsetp);
22145     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
22146             "%d (xkb-GetState)", sequence_number);
22147     *offsetp += 2;
22148     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
22149     *offsetp += 4;
22150     {
22151         const int* mods_bits [] = {
22152         &hf_x11_xkb_GetState_reply_mods_mask_Shift,
22153         &hf_x11_xkb_GetState_reply_mods_mask_Lock,
22154         &hf_x11_xkb_GetState_reply_mods_mask_Control,
22155         &hf_x11_xkb_GetState_reply_mods_mask_1,
22156         &hf_x11_xkb_GetState_reply_mods_mask_2,
22157         &hf_x11_xkb_GetState_reply_mods_mask_3,
22158         &hf_x11_xkb_GetState_reply_mods_mask_4,
22159         &hf_x11_xkb_GetState_reply_mods_mask_5,
22160         &hf_x11_xkb_GetState_reply_mods_mask_Any,
22161         };
22162         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_mods, ett_x11_rectangle, mods_bits, byte_order);
22163     }
22164     *offsetp += 1;
22165     {
22166         const int* baseMods_bits [] = {
22167         &hf_x11_xkb_GetState_reply_baseMods_mask_Shift,
22168         &hf_x11_xkb_GetState_reply_baseMods_mask_Lock,
22169         &hf_x11_xkb_GetState_reply_baseMods_mask_Control,
22170         &hf_x11_xkb_GetState_reply_baseMods_mask_1,
22171         &hf_x11_xkb_GetState_reply_baseMods_mask_2,
22172         &hf_x11_xkb_GetState_reply_baseMods_mask_3,
22173         &hf_x11_xkb_GetState_reply_baseMods_mask_4,
22174         &hf_x11_xkb_GetState_reply_baseMods_mask_5,
22175         &hf_x11_xkb_GetState_reply_baseMods_mask_Any,
22176         };
22177         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_baseMods, ett_x11_rectangle, baseMods_bits, byte_order);
22178     }
22179     *offsetp += 1;
22180     {
22181         const int* latchedMods_bits [] = {
22182         &hf_x11_xkb_GetState_reply_latchedMods_mask_Shift,
22183         &hf_x11_xkb_GetState_reply_latchedMods_mask_Lock,
22184         &hf_x11_xkb_GetState_reply_latchedMods_mask_Control,
22185         &hf_x11_xkb_GetState_reply_latchedMods_mask_1,
22186         &hf_x11_xkb_GetState_reply_latchedMods_mask_2,
22187         &hf_x11_xkb_GetState_reply_latchedMods_mask_3,
22188         &hf_x11_xkb_GetState_reply_latchedMods_mask_4,
22189         &hf_x11_xkb_GetState_reply_latchedMods_mask_5,
22190         &hf_x11_xkb_GetState_reply_latchedMods_mask_Any,
22191         };
22192         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_latchedMods, ett_x11_rectangle, latchedMods_bits, byte_order);
22193     }
22194     *offsetp += 1;
22195     {
22196         const int* lockedMods_bits [] = {
22197         &hf_x11_xkb_GetState_reply_lockedMods_mask_Shift,
22198         &hf_x11_xkb_GetState_reply_lockedMods_mask_Lock,
22199         &hf_x11_xkb_GetState_reply_lockedMods_mask_Control,
22200         &hf_x11_xkb_GetState_reply_lockedMods_mask_1,
22201         &hf_x11_xkb_GetState_reply_lockedMods_mask_2,
22202         &hf_x11_xkb_GetState_reply_lockedMods_mask_3,
22203         &hf_x11_xkb_GetState_reply_lockedMods_mask_4,
22204         &hf_x11_xkb_GetState_reply_lockedMods_mask_5,
22205         &hf_x11_xkb_GetState_reply_lockedMods_mask_Any,
22206         };
22207         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_lockedMods, ett_x11_rectangle, lockedMods_bits, byte_order);
22208     }
22209     *offsetp += 1;
22210     field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_group, byte_order);
22211     field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_lockedGroup, byte_order);
22212     proto_tree_add_item(t, hf_x11_xkb_GetState_reply_baseGroup, tvb, *offsetp, 2, byte_order);
22213     *offsetp += 2;
22214     proto_tree_add_item(t, hf_x11_xkb_GetState_reply_latchedGroup, tvb, *offsetp, 2, byte_order);
22215     *offsetp += 2;
22216     {
22217         const int* compatState_bits [] = {
22218         &hf_x11_xkb_GetState_reply_compatState_mask_Shift,
22219         &hf_x11_xkb_GetState_reply_compatState_mask_Lock,
22220         &hf_x11_xkb_GetState_reply_compatState_mask_Control,
22221         &hf_x11_xkb_GetState_reply_compatState_mask_1,
22222         &hf_x11_xkb_GetState_reply_compatState_mask_2,
22223         &hf_x11_xkb_GetState_reply_compatState_mask_3,
22224         &hf_x11_xkb_GetState_reply_compatState_mask_4,
22225         &hf_x11_xkb_GetState_reply_compatState_mask_5,
22226         &hf_x11_xkb_GetState_reply_compatState_mask_Any,
22227         };
22228         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_compatState, ett_x11_rectangle, compatState_bits, byte_order);
22229     }
22230     *offsetp += 1;
22231     {
22232         const int* grabMods_bits [] = {
22233         &hf_x11_xkb_GetState_reply_grabMods_mask_Shift,
22234         &hf_x11_xkb_GetState_reply_grabMods_mask_Lock,
22235         &hf_x11_xkb_GetState_reply_grabMods_mask_Control,
22236         &hf_x11_xkb_GetState_reply_grabMods_mask_1,
22237         &hf_x11_xkb_GetState_reply_grabMods_mask_2,
22238         &hf_x11_xkb_GetState_reply_grabMods_mask_3,
22239         &hf_x11_xkb_GetState_reply_grabMods_mask_4,
22240         &hf_x11_xkb_GetState_reply_grabMods_mask_5,
22241         &hf_x11_xkb_GetState_reply_grabMods_mask_Any,
22242         };
22243         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_grabMods, ett_x11_rectangle, grabMods_bits, byte_order);
22244     }
22245     *offsetp += 1;
22246     {
22247         const int* compatGrabMods_bits [] = {
22248         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_Shift,
22249         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_Lock,
22250         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_Control,
22251         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_1,
22252         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_2,
22253         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_3,
22254         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_4,
22255         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_5,
22256         &hf_x11_xkb_GetState_reply_compatGrabMods_mask_Any,
22257         };
22258         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_compatGrabMods, ett_x11_rectangle, compatGrabMods_bits, byte_order);
22259     }
22260     *offsetp += 1;
22261     {
22262         const int* lookupMods_bits [] = {
22263         &hf_x11_xkb_GetState_reply_lookupMods_mask_Shift,
22264         &hf_x11_xkb_GetState_reply_lookupMods_mask_Lock,
22265         &hf_x11_xkb_GetState_reply_lookupMods_mask_Control,
22266         &hf_x11_xkb_GetState_reply_lookupMods_mask_1,
22267         &hf_x11_xkb_GetState_reply_lookupMods_mask_2,
22268         &hf_x11_xkb_GetState_reply_lookupMods_mask_3,
22269         &hf_x11_xkb_GetState_reply_lookupMods_mask_4,
22270         &hf_x11_xkb_GetState_reply_lookupMods_mask_5,
22271         &hf_x11_xkb_GetState_reply_lookupMods_mask_Any,
22272         };
22273         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_lookupMods, ett_x11_rectangle, lookupMods_bits, byte_order);
22274     }
22275     *offsetp += 1;
22276     {
22277         const int* compatLookupMods_bits [] = {
22278         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_Shift,
22279         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_Lock,
22280         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_Control,
22281         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_1,
22282         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_2,
22283         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_3,
22284         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_4,
22285         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_5,
22286         &hf_x11_xkb_GetState_reply_compatLookupMods_mask_Any,
22287         };
22288         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_compatLookupMods, ett_x11_rectangle, compatLookupMods_bits, byte_order);
22289     }
22290     *offsetp += 1;
22291     UNUSED(1);
22292     {
22293         const int* ptrBtnState_bits [] = {
22294         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Shift,
22295         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Lock,
22296         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Control,
22297         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod1,
22298         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod2,
22299         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod3,
22300         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod4,
22301         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod5,
22302         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button1,
22303         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button2,
22304         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button3,
22305         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button4,
22306         &hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button5,
22307         };
22308         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetState_reply_ptrBtnState, ett_x11_rectangle, ptrBtnState_bits, byte_order);
22309     }
22310     *offsetp += 2;
22311     UNUSED(6);
22312 }
22313
22314 static void xkbLatchLockState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
22315 {
22316     proto_tree_add_item(t, hf_x11_xkb_LatchLockState_deviceSpec, tvb, *offsetp, 2, byte_order);
22317     *offsetp += 2;
22318     {
22319         const int* affectModLocks_bits [] = {
22320         &hf_x11_xkb_LatchLockState_affectModLocks_mask_Shift,
22321         &hf_x11_xkb_LatchLockState_affectModLocks_mask_Lock,
22322         &hf_x11_xkb_LatchLockState_affectModLocks_mask_Control,
22323         &hf_x11_xkb_LatchLockState_affectModLocks_mask_1,
22324         &hf_x11_xkb_LatchLockState_affectModLocks_mask_2,
22325         &hf_x11_xkb_LatchLockState_affectModLocks_mask_3,
22326         &hf_x11_xkb_LatchLockState_affectModLocks_mask_4,
22327         &hf_x11_xkb_LatchLockState_affectModLocks_mask_5,
22328         &hf_x11_xkb_LatchLockState_affectModLocks_mask_Any,
22329         };
22330         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_LatchLockState_affectModLocks, ett_x11_rectangle, affectModLocks_bits, byte_order);
22331     }
22332     *offsetp += 1;
22333     {
22334         const int* modLocks_bits [] = {
22335         &hf_x11_xkb_LatchLockState_modLocks_mask_Shift,
22336         &hf_x11_xkb_LatchLockState_modLocks_mask_Lock,
22337         &hf_x11_xkb_LatchLockState_modLocks_mask_Control,
22338         &hf_x11_xkb_LatchLockState_modLocks_mask_1,
22339         &hf_x11_xkb_LatchLockState_modLocks_mask_2,
22340         &hf_x11_xkb_LatchLockState_modLocks_mask_3,
22341         &hf_x11_xkb_LatchLockState_modLocks_mask_4,
22342         &hf_x11_xkb_LatchLockState_modLocks_mask_5,
22343         &hf_x11_xkb_LatchLockState_modLocks_mask_Any,
22344         };
22345         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_LatchLockState_modLocks, ett_x11_rectangle, modLocks_bits, byte_order);
22346     }
22347     *offsetp += 1;
22348     proto_tree_add_item(t, hf_x11_xkb_LatchLockState_lockGroup, tvb, *offsetp, 1, byte_order);
22349     *offsetp += 1;
22350     field8(tvb, offsetp, t, hf_x11_xkb_LatchLockState_groupLock, byte_order);
22351     {
22352         const int* affectModLatches_bits [] = {
22353         &hf_x11_xkb_LatchLockState_affectModLatches_mask_Shift,
22354         &hf_x11_xkb_LatchLockState_affectModLatches_mask_Lock,
22355         &hf_x11_xkb_LatchLockState_affectModLatches_mask_Control,
22356         &hf_x11_xkb_LatchLockState_affectModLatches_mask_1,
22357         &hf_x11_xkb_LatchLockState_affectModLatches_mask_2,
22358         &hf_x11_xkb_LatchLockState_affectModLatches_mask_3,
22359         &hf_x11_xkb_LatchLockState_affectModLatches_mask_4,
22360         &hf_x11_xkb_LatchLockState_affectModLatches_mask_5,
22361         &hf_x11_xkb_LatchLockState_affectModLatches_mask_Any,
22362         };
22363         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_LatchLockState_affectModLatches, ett_x11_rectangle, affectModLatches_bits, byte_order);
22364     }
22365     *offsetp += 1;
22366     UNUSED(1);
22367     UNUSED(1);
22368     proto_tree_add_item(t, hf_x11_xkb_LatchLockState_latchGroup, tvb, *offsetp, 1, byte_order);
22369     *offsetp += 1;
22370     proto_tree_add_item(t, hf_x11_xkb_LatchLockState_groupLatch, tvb, *offsetp, 2, byte_order);
22371     *offsetp += 2;
22372 }
22373
22374 static void xkbGetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
22375 {
22376     proto_tree_add_item(t, hf_x11_xkb_GetControls_deviceSpec, tvb, *offsetp, 2, byte_order);
22377     *offsetp += 2;
22378     UNUSED(2);
22379 }
22380 static void xkbGetControls_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
22381 {
22382     int sequence_number;
22383
22384     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetControls");
22385
22386     REPLY(reply);
22387     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_deviceID, tvb, *offsetp, 1, byte_order);
22388     *offsetp += 1;
22389     sequence_number = VALUE16(tvb, *offsetp);
22390     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
22391             "%d (xkb-GetControls)", sequence_number);
22392     *offsetp += 2;
22393     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
22394     *offsetp += 4;
22395     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDfltBtn, tvb, *offsetp, 1, byte_order);
22396     *offsetp += 1;
22397     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_numGroups, tvb, *offsetp, 1, byte_order);
22398     *offsetp += 1;
22399     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_groupsWrap, tvb, *offsetp, 1, byte_order);
22400     *offsetp += 1;
22401     {
22402         const int* internalModsMask_bits [] = {
22403         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_Shift,
22404         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_Lock,
22405         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_Control,
22406         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_1,
22407         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_2,
22408         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_3,
22409         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_4,
22410         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_5,
22411         &hf_x11_xkb_GetControls_reply_internalModsMask_mask_Any,
22412         };
22413         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_internalModsMask, ett_x11_rectangle, internalModsMask_bits, byte_order);
22414     }
22415     *offsetp += 1;
22416     {
22417         const int* ignoreLockModsMask_bits [] = {
22418         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Shift,
22419         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Lock,
22420         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Control,
22421         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_1,
22422         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_2,
22423         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_3,
22424         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_4,
22425         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_5,
22426         &hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Any,
22427         };
22428         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_ignoreLockModsMask, ett_x11_rectangle, ignoreLockModsMask_bits, byte_order);
22429     }
22430     *offsetp += 1;
22431     {
22432         const int* internalModsRealMods_bits [] = {
22433         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Shift,
22434         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Lock,
22435         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Control,
22436         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_1,
22437         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_2,
22438         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_3,
22439         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_4,
22440         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_5,
22441         &hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Any,
22442         };
22443         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_internalModsRealMods, ett_x11_rectangle, internalModsRealMods_bits, byte_order);
22444     }
22445     *offsetp += 1;
22446     {
22447         const int* ignoreLockModsRealMods_bits [] = {
22448         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Shift,
22449         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Lock,
22450         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Control,
22451         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_1,
22452         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_2,
22453         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_3,
22454         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_4,
22455         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_5,
22456         &hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Any,
22457         };
22458         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods, ett_x11_rectangle, ignoreLockModsRealMods_bits, byte_order);
22459     }
22460     *offsetp += 1;
22461     UNUSED(1);
22462     {
22463         const int* internalModsVmods_bits [] = {
22464         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_0,
22465         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_1,
22466         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_2,
22467         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_3,
22468         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_4,
22469         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_5,
22470         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_6,
22471         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_7,
22472         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_8,
22473         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_9,
22474         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_10,
22475         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_11,
22476         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_12,
22477         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_13,
22478         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_14,
22479         &hf_x11_xkb_GetControls_reply_internalModsVmods_mask_15,
22480         };
22481         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_internalModsVmods, ett_x11_rectangle, internalModsVmods_bits, byte_order);
22482     }
22483     *offsetp += 2;
22484     {
22485         const int* ignoreLockModsVmods_bits [] = {
22486         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_0,
22487         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_1,
22488         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_2,
22489         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_3,
22490         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_4,
22491         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_5,
22492         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_6,
22493         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_7,
22494         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_8,
22495         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_9,
22496         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_10,
22497         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_11,
22498         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_12,
22499         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_13,
22500         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_14,
22501         &hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_15,
22502         };
22503         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods, ett_x11_rectangle, ignoreLockModsVmods_bits, byte_order);
22504     }
22505     *offsetp += 2;
22506     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatDelay, tvb, *offsetp, 2, byte_order);
22507     *offsetp += 2;
22508     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatInterval, tvb, *offsetp, 2, byte_order);
22509     *offsetp += 2;
22510     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_slowKeysDelay, tvb, *offsetp, 2, byte_order);
22511     *offsetp += 2;
22512     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_debounceDelay, tvb, *offsetp, 2, byte_order);
22513     *offsetp += 2;
22514     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDelay, tvb, *offsetp, 2, byte_order);
22515     *offsetp += 2;
22516     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysInterval, tvb, *offsetp, 2, byte_order);
22517     *offsetp += 2;
22518     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysTimeToMax, tvb, *offsetp, 2, byte_order);
22519     *offsetp += 2;
22520     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysMaxSpeed, tvb, *offsetp, 2, byte_order);
22521     *offsetp += 2;
22522     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysCurve, tvb, *offsetp, 2, byte_order);
22523     *offsetp += 2;
22524     {
22525         const int* accessXOption_bits [] = {
22526         &hf_x11_xkb_GetControls_reply_accessXOption_mask_SKPressFB,
22527         &hf_x11_xkb_GetControls_reply_accessXOption_mask_SKAcceptFB,
22528         &hf_x11_xkb_GetControls_reply_accessXOption_mask_FeatureFB,
22529         &hf_x11_xkb_GetControls_reply_accessXOption_mask_SlowWarnFB,
22530         &hf_x11_xkb_GetControls_reply_accessXOption_mask_IndicatorFB,
22531         &hf_x11_xkb_GetControls_reply_accessXOption_mask_StickyKeysFB,
22532         &hf_x11_xkb_GetControls_reply_accessXOption_mask_TwoKeys,
22533         &hf_x11_xkb_GetControls_reply_accessXOption_mask_LatchToLock,
22534         &hf_x11_xkb_GetControls_reply_accessXOption_mask_SKReleaseFB,
22535         &hf_x11_xkb_GetControls_reply_accessXOption_mask_SKRejectFB,
22536         &hf_x11_xkb_GetControls_reply_accessXOption_mask_BKRejectFB,
22537         &hf_x11_xkb_GetControls_reply_accessXOption_mask_DumbBell,
22538         };
22539         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_accessXOption, ett_x11_rectangle, accessXOption_bits, byte_order);
22540     }
22541     *offsetp += 2;
22542     proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_accessXTimeout, tvb, *offsetp, 2, byte_order);
22543     *offsetp += 2;
22544     {
22545         const int* accessXTimeoutOptionsMask_bits [] = {
22546         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_SKPressFB,
22547         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_SKAcceptFB,
22548         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_FeatureFB,
22549         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_SlowWarnFB,
22550         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_IndicatorFB,
22551         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_StickyKeysFB,
22552         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_TwoKeys,
22553         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_LatchToLock,
22554         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_SKReleaseFB,
22555         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_SKRejectFB,
22556         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_BKRejectFB,
22557         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask_mask_DumbBell,
22558         };
22559         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask, ett_x11_rectangle, accessXTimeoutOptionsMask_bits, byte_order);
22560     }
22561     *offsetp += 2;
22562     {
22563         const int* accessXTimeoutOptionsValues_bits [] = {
22564         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_SKPressFB,
22565         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_SKAcceptFB,
22566         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_FeatureFB,
22567         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_SlowWarnFB,
22568         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_IndicatorFB,
22569         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_StickyKeysFB,
22570         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_TwoKeys,
22571         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_LatchToLock,
22572         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_SKReleaseFB,
22573         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_SKRejectFB,
22574         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_BKRejectFB,
22575         &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues_mask_DumbBell,
22576         };
22577         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues, ett_x11_rectangle, accessXTimeoutOptionsValues_bits, byte_order);
22578     }
22579     *offsetp += 2;
22580     UNUSED(2);
22581     {
22582         const int* accessXTimeoutMask_bits [] = {
22583         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_RepeatKeys,
22584         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_SlowKeys,
22585         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_BounceKeys,
22586         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_StickyKeys,
22587         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_MouseKeys,
22588         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_MouseKeysAccel,
22589         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_AccessXKeys,
22590         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_AccessXTimeoutMask,
22591         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_AccessXFeedbackMask,
22592         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_AudibleBellMask,
22593         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_Overlay1Mask,
22594         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_Overlay2Mask,
22595         &hf_x11_xkb_GetControls_reply_accessXTimeoutMask_mask_IgnoreGroupLockMask,
22596         };
22597         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_accessXTimeoutMask, ett_x11_rectangle, accessXTimeoutMask_bits, byte_order);
22598     }
22599     *offsetp += 4;
22600     {
22601         const int* accessXTimeoutValues_bits [] = {
22602         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_RepeatKeys,
22603         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_SlowKeys,
22604         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_BounceKeys,
22605         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_StickyKeys,
22606         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_MouseKeys,
22607         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_MouseKeysAccel,
22608         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_AccessXKeys,
22609         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_AccessXTimeoutMask,
22610         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_AccessXFeedbackMask,
22611         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_AudibleBellMask,
22612         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_Overlay1Mask,
22613         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_Overlay2Mask,
22614         &hf_x11_xkb_GetControls_reply_accessXTimeoutValues_mask_IgnoreGroupLockMask,
22615         };
22616         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_accessXTimeoutValues, ett_x11_rectangle, accessXTimeoutValues_bits, byte_order);
22617     }
22618     *offsetp += 4;
22619     {
22620         const int* enabledControls_bits [] = {
22621         &hf_x11_xkb_GetControls_reply_enabledControls_mask_RepeatKeys,
22622         &hf_x11_xkb_GetControls_reply_enabledControls_mask_SlowKeys,
22623         &hf_x11_xkb_GetControls_reply_enabledControls_mask_BounceKeys,
22624         &hf_x11_xkb_GetControls_reply_enabledControls_mask_StickyKeys,
22625         &hf_x11_xkb_GetControls_reply_enabledControls_mask_MouseKeys,
22626         &hf_x11_xkb_GetControls_reply_enabledControls_mask_MouseKeysAccel,
22627         &hf_x11_xkb_GetControls_reply_enabledControls_mask_AccessXKeys,
22628         &hf_x11_xkb_GetControls_reply_enabledControls_mask_AccessXTimeoutMask,
22629         &hf_x11_xkb_GetControls_reply_enabledControls_mask_AccessXFeedbackMask,
22630         &hf_x11_xkb_GetControls_reply_enabledControls_mask_AudibleBellMask,
22631         &hf_x11_xkb_GetControls_reply_enabledControls_mask_Overlay1Mask,
22632         &hf_x11_xkb_GetControls_reply_enabledControls_mask_Overlay2Mask,
22633         &hf_x11_xkb_GetControls_reply_enabledControls_mask_IgnoreGroupLockMask,
22634         };
22635         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetControls_reply_enabledControls, ett_x11_rectangle, enabledControls_bits, byte_order);
22636     }
22637     *offsetp += 4;
22638     listOfByte(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_perKeyRepeat, 32, byte_order);
22639 }
22640
22641 static void xkbSetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
22642 {
22643     proto_tree_add_item(t, hf_x11_xkb_SetControls_deviceSpec, tvb, *offsetp, 2, byte_order);
22644     *offsetp += 2;
22645     {
22646         const int* affectInternalRealMods_bits [] = {
22647         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_Shift,
22648         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_Lock,
22649         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_Control,
22650         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_1,
22651         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_2,
22652         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_3,
22653         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_4,
22654         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_5,
22655         &hf_x11_xkb_SetControls_affectInternalRealMods_mask_Any,
22656         };
22657         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_affectInternalRealMods, ett_x11_rectangle, affectInternalRealMods_bits, byte_order);
22658     }
22659     *offsetp += 1;
22660     {
22661         const int* internalRealMods_bits [] = {
22662         &hf_x11_xkb_SetControls_internalRealMods_mask_Shift,
22663         &hf_x11_xkb_SetControls_internalRealMods_mask_Lock,
22664         &hf_x11_xkb_SetControls_internalRealMods_mask_Control,
22665         &hf_x11_xkb_SetControls_internalRealMods_mask_1,
22666         &hf_x11_xkb_SetControls_internalRealMods_mask_2,
22667         &hf_x11_xkb_SetControls_internalRealMods_mask_3,
22668         &hf_x11_xkb_SetControls_internalRealMods_mask_4,
22669         &hf_x11_xkb_SetControls_internalRealMods_mask_5,
22670         &hf_x11_xkb_SetControls_internalRealMods_mask_Any,
22671         };
22672         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_internalRealMods, ett_x11_rectangle, internalRealMods_bits, byte_order);
22673     }
22674     *offsetp += 1;
22675     {
22676         const int* affectIgnoreLockRealMods_bits [] = {
22677         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Shift,
22678         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Lock,
22679         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Control,
22680         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_1,
22681         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_2,
22682         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_3,
22683         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_4,
22684         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_5,
22685         &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Any,
22686         };
22687         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_affectIgnoreLockRealMods, ett_x11_rectangle, affectIgnoreLockRealMods_bits, byte_order);
22688     }
22689     *offsetp += 1;
22690     {
22691         const int* ignoreLockRealMods_bits [] = {
22692         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Shift,
22693         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Lock,
22694         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Control,
22695         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_1,
22696         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_2,
22697         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_3,
22698         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_4,
22699         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_5,
22700         &hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Any,
22701         };
22702         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_ignoreLockRealMods, ett_x11_rectangle, ignoreLockRealMods_bits, byte_order);
22703     }
22704     *offsetp += 1;
22705     {
22706         const int* affectInternalVirtualMods_bits [] = {
22707         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_0,
22708         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_1,
22709         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_2,
22710         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_3,
22711         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_4,
22712         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_5,
22713         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_6,
22714         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_7,
22715         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_8,
22716         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_9,
22717         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_10,
22718         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_11,
22719         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_12,
22720         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_13,
22721         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_14,
22722         &hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_15,
22723         };
22724         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_affectInternalVirtualMods, ett_x11_rectangle, affectInternalVirtualMods_bits, byte_order);
22725     }
22726     *offsetp += 2;
22727     {
22728         const int* internalVirtualMods_bits [] = {
22729         &hf_x11_xkb_SetControls_internalVirtualMods_mask_0,
22730         &hf_x11_xkb_SetControls_internalVirtualMods_mask_1,
22731         &hf_x11_xkb_SetControls_internalVirtualMods_mask_2,
22732         &hf_x11_xkb_SetControls_internalVirtualMods_mask_3,
22733         &hf_x11_xkb_SetControls_internalVirtualMods_mask_4,
22734         &hf_x11_xkb_SetControls_internalVirtualMods_mask_5,
22735         &hf_x11_xkb_SetControls_internalVirtualMods_mask_6,
22736         &hf_x11_xkb_SetControls_internalVirtualMods_mask_7,
22737         &hf_x11_xkb_SetControls_internalVirtualMods_mask_8,
22738         &hf_x11_xkb_SetControls_internalVirtualMods_mask_9,
22739         &hf_x11_xkb_SetControls_internalVirtualMods_mask_10,
22740         &hf_x11_xkb_SetControls_internalVirtualMods_mask_11,
22741         &hf_x11_xkb_SetControls_internalVirtualMods_mask_12,
22742         &hf_x11_xkb_SetControls_internalVirtualMods_mask_13,
22743         &hf_x11_xkb_SetControls_internalVirtualMods_mask_14,
22744         &hf_x11_xkb_SetControls_internalVirtualMods_mask_15,
22745         };
22746         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_internalVirtualMods, ett_x11_rectangle, internalVirtualMods_bits, byte_order);
22747     }
22748     *offsetp += 2;
22749     {
22750         const int* affectIgnoreLockVirtualMods_bits [] = {
22751         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_0,
22752         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_1,
22753         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_2,
22754         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_3,
22755         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_4,
22756         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_5,
22757         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_6,
22758         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_7,
22759         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_8,
22760         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_9,
22761         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_10,
22762         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_11,
22763         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_12,
22764         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_13,
22765         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_14,
22766         &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_15,
22767         };
22768         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods, ett_x11_rectangle, affectIgnoreLockVirtualMods_bits, byte_order);
22769     }
22770     *offsetp += 2;
22771     {
22772         const int* ignoreLockVirtualMods_bits [] = {
22773         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_0,
22774         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_1,
22775         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_2,
22776         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_3,
22777         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_4,
22778         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_5,
22779         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_6,
22780         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_7,
22781         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_8,
22782         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_9,
22783         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_10,
22784         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_11,
22785         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_12,
22786         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_13,
22787         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_14,
22788         &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_15,
22789         };
22790         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_ignoreLockVirtualMods, ett_x11_rectangle, ignoreLockVirtualMods_bits, byte_order);
22791     }
22792     *offsetp += 2;
22793     proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDfltBtn, tvb, *offsetp, 1, byte_order);
22794     *offsetp += 1;
22795     proto_tree_add_item(t, hf_x11_xkb_SetControls_groupsWrap, tvb, *offsetp, 1, byte_order);
22796     *offsetp += 1;
22797     {
22798         const int* accessXOptions_bits [] = {
22799         &hf_x11_xkb_SetControls_accessXOptions_mask_SKPressFB,
22800         &hf_x11_xkb_SetControls_accessXOptions_mask_SKAcceptFB,
22801         &hf_x11_xkb_SetControls_accessXOptions_mask_FeatureFB,
22802         &hf_x11_xkb_SetControls_accessXOptions_mask_SlowWarnFB,
22803         &hf_x11_xkb_SetControls_accessXOptions_mask_IndicatorFB,
22804         &hf_x11_xkb_SetControls_accessXOptions_mask_StickyKeysFB,
22805         &hf_x11_xkb_SetControls_accessXOptions_mask_TwoKeys,
22806         &hf_x11_xkb_SetControls_accessXOptions_mask_LatchToLock,
22807         &hf_x11_xkb_SetControls_accessXOptions_mask_SKReleaseFB,
22808         &hf_x11_xkb_SetControls_accessXOptions_mask_SKRejectFB,
22809         &hf_x11_xkb_SetControls_accessXOptions_mask_BKRejectFB,
22810         &hf_x11_xkb_SetControls_accessXOptions_mask_DumbBell,
22811         };
22812         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_accessXOptions, ett_x11_rectangle, accessXOptions_bits, byte_order);
22813     }
22814     *offsetp += 2;
22815     UNUSED(2);
22816     {
22817         const int* affectEnabledControls_bits [] = {
22818         &hf_x11_xkb_SetControls_affectEnabledControls_mask_RepeatKeys,
22819         &hf_x11_xkb_SetControls_affectEnabledControls_mask_SlowKeys,
22820         &hf_x11_xkb_SetControls_affectEnabledControls_mask_BounceKeys,
22821         &hf_x11_xkb_SetControls_affectEnabledControls_mask_StickyKeys,
22822         &hf_x11_xkb_SetControls_affectEnabledControls_mask_MouseKeys,
22823         &hf_x11_xkb_SetControls_affectEnabledControls_mask_MouseKeysAccel,
22824         &hf_x11_xkb_SetControls_affectEnabledControls_mask_AccessXKeys,
22825         &hf_x11_xkb_SetControls_affectEnabledControls_mask_AccessXTimeoutMask,
22826         &hf_x11_xkb_SetControls_affectEnabledControls_mask_AccessXFeedbackMask,
22827         &hf_x11_xkb_SetControls_affectEnabledControls_mask_AudibleBellMask,
22828         &hf_x11_xkb_SetControls_affectEnabledControls_mask_Overlay1Mask,
22829         &hf_x11_xkb_SetControls_affectEnabledControls_mask_Overlay2Mask,
22830         &hf_x11_xkb_SetControls_affectEnabledControls_mask_IgnoreGroupLockMask,
22831         };
22832         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_affectEnabledControls, ett_x11_rectangle, affectEnabledControls_bits, byte_order);
22833     }
22834     *offsetp += 4;
22835     {
22836         const int* enabledControls_bits [] = {
22837         &hf_x11_xkb_SetControls_enabledControls_mask_RepeatKeys,
22838         &hf_x11_xkb_SetControls_enabledControls_mask_SlowKeys,
22839         &hf_x11_xkb_SetControls_enabledControls_mask_BounceKeys,
22840         &hf_x11_xkb_SetControls_enabledControls_mask_StickyKeys,
22841         &hf_x11_xkb_SetControls_enabledControls_mask_MouseKeys,
22842         &hf_x11_xkb_SetControls_enabledControls_mask_MouseKeysAccel,
22843         &hf_x11_xkb_SetControls_enabledControls_mask_AccessXKeys,
22844         &hf_x11_xkb_SetControls_enabledControls_mask_AccessXTimeoutMask,
22845         &hf_x11_xkb_SetControls_enabledControls_mask_AccessXFeedbackMask,
22846         &hf_x11_xkb_SetControls_enabledControls_mask_AudibleBellMask,
22847         &hf_x11_xkb_SetControls_enabledControls_mask_Overlay1Mask,
22848         &hf_x11_xkb_SetControls_enabledControls_mask_Overlay2Mask,
22849         &hf_x11_xkb_SetControls_enabledControls_mask_IgnoreGroupLockMask,
22850         };
22851         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_enabledControls, ett_x11_rectangle, enabledControls_bits, byte_order);
22852     }
22853     *offsetp += 4;
22854     {
22855         const int* changeControls_bits [] = {
22856         &hf_x11_xkb_SetControls_changeControls_mask_GroupsWrap,
22857         &hf_x11_xkb_SetControls_changeControls_mask_InternalMods,
22858         &hf_x11_xkb_SetControls_changeControls_mask_IgnoreLockMods,
22859         &hf_x11_xkb_SetControls_changeControls_mask_PerKeyRepeat,
22860         &hf_x11_xkb_SetControls_changeControls_mask_ControlsEnabled,
22861         };
22862         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_changeControls, ett_x11_rectangle, changeControls_bits, byte_order);
22863     }
22864     *offsetp += 4;
22865     proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatDelay, tvb, *offsetp, 2, byte_order);
22866     *offsetp += 2;
22867     proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatInterval, tvb, *offsetp, 2, byte_order);
22868     *offsetp += 2;
22869     proto_tree_add_item(t, hf_x11_xkb_SetControls_slowKeysDelay, tvb, *offsetp, 2, byte_order);
22870     *offsetp += 2;
22871     proto_tree_add_item(t, hf_x11_xkb_SetControls_debounceDelay, tvb, *offsetp, 2, byte_order);
22872     *offsetp += 2;
22873     proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDelay, tvb, *offsetp, 2, byte_order);
22874     *offsetp += 2;
22875     proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysInterval, tvb, *offsetp, 2, byte_order);
22876     *offsetp += 2;
22877     proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysTimeToMax, tvb, *offsetp, 2, byte_order);
22878     *offsetp += 2;
22879     proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysMaxSpeed, tvb, *offsetp, 2, byte_order);
22880     *offsetp += 2;
22881     proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysCurve, tvb, *offsetp, 2, byte_order);
22882     *offsetp += 2;
22883     proto_tree_add_item(t, hf_x11_xkb_SetControls_accessXTimeout, tvb, *offsetp, 2, byte_order);
22884     *offsetp += 2;
22885     {
22886         const int* accessXTimeoutMask_bits [] = {
22887         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_RepeatKeys,
22888         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_SlowKeys,
22889         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_BounceKeys,
22890         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_StickyKeys,
22891         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_MouseKeys,
22892         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_MouseKeysAccel,
22893         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_AccessXKeys,
22894         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_AccessXTimeoutMask,
22895         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_AccessXFeedbackMask,
22896         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_AudibleBellMask,
22897         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_Overlay1Mask,
22898         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_Overlay2Mask,
22899         &hf_x11_xkb_SetControls_accessXTimeoutMask_mask_IgnoreGroupLockMask,
22900         };
22901         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_accessXTimeoutMask, ett_x11_rectangle, accessXTimeoutMask_bits, byte_order);
22902     }
22903     *offsetp += 4;
22904     {
22905         const int* accessXTimeoutValues_bits [] = {
22906         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_RepeatKeys,
22907         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_SlowKeys,
22908         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_BounceKeys,
22909         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_StickyKeys,
22910         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_MouseKeys,
22911         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_MouseKeysAccel,
22912         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_AccessXKeys,
22913         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_AccessXTimeoutMask,
22914         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_AccessXFeedbackMask,
22915         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_AudibleBellMask,
22916         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_Overlay1Mask,
22917         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_Overlay2Mask,
22918         &hf_x11_xkb_SetControls_accessXTimeoutValues_mask_IgnoreGroupLockMask,
22919         };
22920         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_accessXTimeoutValues, ett_x11_rectangle, accessXTimeoutValues_bits, byte_order);
22921     }
22922     *offsetp += 4;
22923     {
22924         const int* accessXTimeoutOptionsMask_bits [] = {
22925         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_SKPressFB,
22926         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_SKAcceptFB,
22927         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_FeatureFB,
22928         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_SlowWarnFB,
22929         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_IndicatorFB,
22930         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_StickyKeysFB,
22931         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_TwoKeys,
22932         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_LatchToLock,
22933         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_SKReleaseFB,
22934         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_SKRejectFB,
22935         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_BKRejectFB,
22936         &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask_mask_DumbBell,
22937         };
22938         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_accessXTimeoutOptionsMask, ett_x11_rectangle, accessXTimeoutOptionsMask_bits, byte_order);
22939     }
22940     *offsetp += 2;
22941     {
22942         const int* accessXTimeoutOptionsValues_bits [] = {
22943         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_SKPressFB,
22944         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_SKAcceptFB,
22945         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_FeatureFB,
22946         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_SlowWarnFB,
22947         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_IndicatorFB,
22948         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_StickyKeysFB,
22949         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_TwoKeys,
22950         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_LatchToLock,
22951         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_SKReleaseFB,
22952         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_SKRejectFB,
22953         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_BKRejectFB,
22954         &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues_mask_DumbBell,
22955         };
22956         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetControls_accessXTimeoutOptionsValues, ett_x11_rectangle, accessXTimeoutOptionsValues_bits, byte_order);
22957     }
22958     *offsetp += 2;
22959     listOfByte(tvb, offsetp, t, hf_x11_xkb_SetControls_perKeyRepeat, 32, byte_order);
22960     length -= 32 * 1;
22961 }
22962
22963 static void xkbGetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
22964 {
22965     proto_tree_add_item(t, hf_x11_xkb_GetMap_deviceSpec, tvb, *offsetp, 2, byte_order);
22966     *offsetp += 2;
22967     {
22968         const int* full_bits [] = {
22969         &hf_x11_xkb_GetMap_full_mask_KeyTypes,
22970         &hf_x11_xkb_GetMap_full_mask_KeySyms,
22971         &hf_x11_xkb_GetMap_full_mask_ModifierMap,
22972         &hf_x11_xkb_GetMap_full_mask_ExplicitComponents,
22973         &hf_x11_xkb_GetMap_full_mask_KeyActions,
22974         &hf_x11_xkb_GetMap_full_mask_KeyBehaviors,
22975         &hf_x11_xkb_GetMap_full_mask_VirtualMods,
22976         &hf_x11_xkb_GetMap_full_mask_VirtualModMap,
22977         };
22978         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetMap_full, ett_x11_rectangle, full_bits, byte_order);
22979     }
22980     *offsetp += 2;
22981     {
22982         const int* partial_bits [] = {
22983         &hf_x11_xkb_GetMap_partial_mask_KeyTypes,
22984         &hf_x11_xkb_GetMap_partial_mask_KeySyms,
22985         &hf_x11_xkb_GetMap_partial_mask_ModifierMap,
22986         &hf_x11_xkb_GetMap_partial_mask_ExplicitComponents,
22987         &hf_x11_xkb_GetMap_partial_mask_KeyActions,
22988         &hf_x11_xkb_GetMap_partial_mask_KeyBehaviors,
22989         &hf_x11_xkb_GetMap_partial_mask_VirtualMods,
22990         &hf_x11_xkb_GetMap_partial_mask_VirtualModMap,
22991         };
22992         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetMap_partial, ett_x11_rectangle, partial_bits, byte_order);
22993     }
22994     *offsetp += 2;
22995     proto_tree_add_item(t, hf_x11_xkb_GetMap_firstType, tvb, *offsetp, 1, byte_order);
22996     *offsetp += 1;
22997     proto_tree_add_item(t, hf_x11_xkb_GetMap_nTypes, tvb, *offsetp, 1, byte_order);
22998     *offsetp += 1;
22999     proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeySym, tvb, *offsetp, 1, byte_order);
23000     *offsetp += 1;
23001     proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeySyms, tvb, *offsetp, 1, byte_order);
23002     *offsetp += 1;
23003     proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyAction, tvb, *offsetp, 1, byte_order);
23004     *offsetp += 1;
23005     proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyActions, tvb, *offsetp, 1, byte_order);
23006     *offsetp += 1;
23007     proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
23008     *offsetp += 1;
23009     proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
23010     *offsetp += 1;
23011     {
23012         const int* virtualMods_bits [] = {
23013         &hf_x11_xkb_GetMap_virtualMods_mask_0,
23014         &hf_x11_xkb_GetMap_virtualMods_mask_1,
23015         &hf_x11_xkb_GetMap_virtualMods_mask_2,
23016         &hf_x11_xkb_GetMap_virtualMods_mask_3,
23017         &hf_x11_xkb_GetMap_virtualMods_mask_4,
23018         &hf_x11_xkb_GetMap_virtualMods_mask_5,
23019         &hf_x11_xkb_GetMap_virtualMods_mask_6,
23020         &hf_x11_xkb_GetMap_virtualMods_mask_7,
23021         &hf_x11_xkb_GetMap_virtualMods_mask_8,
23022         &hf_x11_xkb_GetMap_virtualMods_mask_9,
23023         &hf_x11_xkb_GetMap_virtualMods_mask_10,
23024         &hf_x11_xkb_GetMap_virtualMods_mask_11,
23025         &hf_x11_xkb_GetMap_virtualMods_mask_12,
23026         &hf_x11_xkb_GetMap_virtualMods_mask_13,
23027         &hf_x11_xkb_GetMap_virtualMods_mask_14,
23028         &hf_x11_xkb_GetMap_virtualMods_mask_15,
23029         };
23030         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetMap_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
23031     }
23032     *offsetp += 2;
23033     proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
23034     *offsetp += 1;
23035     proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyExplicit, tvb, *offsetp, 1, byte_order);
23036     *offsetp += 1;
23037     proto_tree_add_item(t, hf_x11_xkb_GetMap_firstModMapKey, tvb, *offsetp, 1, byte_order);
23038     *offsetp += 1;
23039     proto_tree_add_item(t, hf_x11_xkb_GetMap_nModMapKeys, tvb, *offsetp, 1, byte_order);
23040     *offsetp += 1;
23041     proto_tree_add_item(t, hf_x11_xkb_GetMap_firstVModMapKey, tvb, *offsetp, 1, byte_order);
23042     *offsetp += 1;
23043     proto_tree_add_item(t, hf_x11_xkb_GetMap_nVModMapKeys, tvb, *offsetp, 1, byte_order);
23044     *offsetp += 1;
23045     UNUSED(2);
23046 }
23047 static void xkbGetMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
23048 {
23049     int sequence_number;
23050     int f_present;
23051     int f_nTypes;
23052     int f_nKeySyms;
23053     int f_totalActions;
23054     int f_nKeyActions;
23055     int f_totalKeyBehaviors;
23056     int f_totalKeyExplicit;
23057     int f_totalModMapKeys;
23058     int f_totalVModMapKeys;
23059     int f_virtualMods;
23060
23061     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMap");
23062
23063     REPLY(reply);
23064     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_deviceID, tvb, *offsetp, 1, byte_order);
23065     *offsetp += 1;
23066     sequence_number = VALUE16(tvb, *offsetp);
23067     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
23068             "%d (xkb-GetMap)", sequence_number);
23069     *offsetp += 2;
23070     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
23071     *offsetp += 4;
23072     UNUSED(2);
23073     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_minKeyCode, tvb, *offsetp, 1, byte_order);
23074     *offsetp += 1;
23075     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_maxKeyCode, tvb, *offsetp, 1, byte_order);
23076     *offsetp += 1;
23077     f_present = VALUE16(tvb, *offsetp);
23078     {
23079         const int* present_bits [] = {
23080         &hf_x11_xkb_GetMap_reply_present_mask_KeyTypes,
23081         &hf_x11_xkb_GetMap_reply_present_mask_KeySyms,
23082         &hf_x11_xkb_GetMap_reply_present_mask_ModifierMap,
23083         &hf_x11_xkb_GetMap_reply_present_mask_ExplicitComponents,
23084         &hf_x11_xkb_GetMap_reply_present_mask_KeyActions,
23085         &hf_x11_xkb_GetMap_reply_present_mask_KeyBehaviors,
23086         &hf_x11_xkb_GetMap_reply_present_mask_VirtualMods,
23087         &hf_x11_xkb_GetMap_reply_present_mask_VirtualModMap,
23088         };
23089         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetMap_reply_present, ett_x11_rectangle, present_bits, byte_order);
23090     }
23091     *offsetp += 2;
23092     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstType, tvb, *offsetp, 1, byte_order);
23093     *offsetp += 1;
23094     f_nTypes = VALUE8(tvb, *offsetp);
23095     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nTypes, tvb, *offsetp, 1, byte_order);
23096     *offsetp += 1;
23097     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalTypes, tvb, *offsetp, 1, byte_order);
23098     *offsetp += 1;
23099     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeySym, tvb, *offsetp, 1, byte_order);
23100     *offsetp += 1;
23101     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalSyms, tvb, *offsetp, 2, byte_order);
23102     *offsetp += 2;
23103     f_nKeySyms = VALUE8(tvb, *offsetp);
23104     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeySyms, tvb, *offsetp, 1, byte_order);
23105     *offsetp += 1;
23106     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyAction, tvb, *offsetp, 1, byte_order);
23107     *offsetp += 1;
23108     f_totalActions = VALUE16(tvb, *offsetp);
23109     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalActions, tvb, *offsetp, 2, byte_order);
23110     *offsetp += 2;
23111     f_nKeyActions = VALUE8(tvb, *offsetp);
23112     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyActions, tvb, *offsetp, 1, byte_order);
23113     *offsetp += 1;
23114     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
23115     *offsetp += 1;
23116     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
23117     *offsetp += 1;
23118     f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
23119     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
23120     *offsetp += 1;
23121     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
23122     *offsetp += 1;
23123     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyExplicit, tvb, *offsetp, 1, byte_order);
23124     *offsetp += 1;
23125     f_totalKeyExplicit = VALUE8(tvb, *offsetp);
23126     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
23127     *offsetp += 1;
23128     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstModMapKey, tvb, *offsetp, 1, byte_order);
23129     *offsetp += 1;
23130     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nModMapKeys, tvb, *offsetp, 1, byte_order);
23131     *offsetp += 1;
23132     f_totalModMapKeys = VALUE8(tvb, *offsetp);
23133     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalModMapKeys, tvb, *offsetp, 1, byte_order);
23134     *offsetp += 1;
23135     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstVModMapKey, tvb, *offsetp, 1, byte_order);
23136     *offsetp += 1;
23137     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nVModMapKeys, tvb, *offsetp, 1, byte_order);
23138     *offsetp += 1;
23139     f_totalVModMapKeys = VALUE8(tvb, *offsetp);
23140     proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
23141     *offsetp += 1;
23142     UNUSED(1);
23143     f_virtualMods = VALUE16(tvb, *offsetp);
23144     {
23145         const int* virtualMods_bits [] = {
23146         &hf_x11_xkb_GetMap_reply_virtualMods_mask_0,
23147         &hf_x11_xkb_GetMap_reply_virtualMods_mask_1,
23148         &hf_x11_xkb_GetMap_reply_virtualMods_mask_2,
23149         &hf_x11_xkb_GetMap_reply_virtualMods_mask_3,
23150         &hf_x11_xkb_GetMap_reply_virtualMods_mask_4,
23151         &hf_x11_xkb_GetMap_reply_virtualMods_mask_5,
23152         &hf_x11_xkb_GetMap_reply_virtualMods_mask_6,
23153         &hf_x11_xkb_GetMap_reply_virtualMods_mask_7,
23154         &hf_x11_xkb_GetMap_reply_virtualMods_mask_8,
23155         &hf_x11_xkb_GetMap_reply_virtualMods_mask_9,
23156         &hf_x11_xkb_GetMap_reply_virtualMods_mask_10,
23157         &hf_x11_xkb_GetMap_reply_virtualMods_mask_11,
23158         &hf_x11_xkb_GetMap_reply_virtualMods_mask_12,
23159         &hf_x11_xkb_GetMap_reply_virtualMods_mask_13,
23160         &hf_x11_xkb_GetMap_reply_virtualMods_mask_14,
23161         &hf_x11_xkb_GetMap_reply_virtualMods_mask_15,
23162         };
23163         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetMap_reply_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
23164     }
23165     *offsetp += 2;
23166     if (f_present & (1U << 0)) {
23167         struct_xkb_KeyType(tvb, offsetp, t, byte_order, f_nTypes);
23168     }
23169     if (f_present & (1U << 1)) {
23170         struct_xkb_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
23171     }
23172     if (f_present & (1U << 4)) {
23173         listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_KeyActions_acts_rtrn_count, f_nKeyActions, byte_order);
23174         if (*offsetp % 4) {
23175             UNUSED(4 - *offsetp % 4);
23176         }
23177         struct_xkb_Action(tvb, offsetp, t, byte_order, f_totalActions);
23178     }
23179     if (f_present & (1U << 5)) {
23180         struct_xkb_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
23181     }
23182     if (f_present & (1U << 6)) {
23183         listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_VirtualMods_vmods_rtrn, popcount(f_virtualMods), byte_order);
23184         if (*offsetp % 4) {
23185             UNUSED(4 - *offsetp % 4);
23186         }
23187     }
23188     if (f_present & (1U << 3)) {
23189         struct_xkb_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
23190         if (*offsetp % 4) {
23191             UNUSED(4 - *offsetp % 4);
23192         }
23193     }
23194     if (f_present & (1U << 2)) {
23195         struct_xkb_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
23196         if (*offsetp % 4) {
23197             UNUSED(4 - *offsetp % 4);
23198         }
23199     }
23200     if (f_present & (1U << 7)) {
23201         struct_xkb_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
23202     }
23203 }
23204
23205 static void xkbSetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23206 {
23207     int f_present;
23208     int f_nTypes;
23209     int f_nKeySyms;
23210     int f_nKeyActions;
23211     int f_totalActions;
23212     int f_totalKeyBehaviors;
23213     int f_totalKeyExplicit;
23214     int f_totalModMapKeys;
23215     int f_totalVModMapKeys;
23216     int f_virtualMods;
23217     proto_tree_add_item(t, hf_x11_xkb_SetMap_deviceSpec, tvb, *offsetp, 2, byte_order);
23218     *offsetp += 2;
23219     f_present = VALUE16(tvb, *offsetp);
23220     {
23221         const int* present_bits [] = {
23222         &hf_x11_xkb_SetMap_present_mask_KeyTypes,
23223         &hf_x11_xkb_SetMap_present_mask_KeySyms,
23224         &hf_x11_xkb_SetMap_present_mask_ModifierMap,
23225         &hf_x11_xkb_SetMap_present_mask_ExplicitComponents,
23226         &hf_x11_xkb_SetMap_present_mask_KeyActions,
23227         &hf_x11_xkb_SetMap_present_mask_KeyBehaviors,
23228         &hf_x11_xkb_SetMap_present_mask_VirtualMods,
23229         &hf_x11_xkb_SetMap_present_mask_VirtualModMap,
23230         };
23231         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetMap_present, ett_x11_rectangle, present_bits, byte_order);
23232     }
23233     *offsetp += 2;
23234     {
23235         const int* flags_bits [] = {
23236         &hf_x11_xkb_SetMap_flags_mask_ResizeTypes,
23237         &hf_x11_xkb_SetMap_flags_mask_RecomputeActions,
23238         };
23239         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetMap_flags, ett_x11_rectangle, flags_bits, byte_order);
23240     }
23241     *offsetp += 2;
23242     proto_tree_add_item(t, hf_x11_xkb_SetMap_minKeyCode, tvb, *offsetp, 1, byte_order);
23243     *offsetp += 1;
23244     proto_tree_add_item(t, hf_x11_xkb_SetMap_maxKeyCode, tvb, *offsetp, 1, byte_order);
23245     *offsetp += 1;
23246     proto_tree_add_item(t, hf_x11_xkb_SetMap_firstType, tvb, *offsetp, 1, byte_order);
23247     *offsetp += 1;
23248     f_nTypes = VALUE8(tvb, *offsetp);
23249     proto_tree_add_item(t, hf_x11_xkb_SetMap_nTypes, tvb, *offsetp, 1, byte_order);
23250     *offsetp += 1;
23251     proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeySym, tvb, *offsetp, 1, byte_order);
23252     *offsetp += 1;
23253     f_nKeySyms = VALUE8(tvb, *offsetp);
23254     proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeySyms, tvb, *offsetp, 1, byte_order);
23255     *offsetp += 1;
23256     proto_tree_add_item(t, hf_x11_xkb_SetMap_totalSyms, tvb, *offsetp, 2, byte_order);
23257     *offsetp += 2;
23258     proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyAction, tvb, *offsetp, 1, byte_order);
23259     *offsetp += 1;
23260     f_nKeyActions = VALUE8(tvb, *offsetp);
23261     proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyActions, tvb, *offsetp, 1, byte_order);
23262     *offsetp += 1;
23263     f_totalActions = VALUE16(tvb, *offsetp);
23264     proto_tree_add_item(t, hf_x11_xkb_SetMap_totalActions, tvb, *offsetp, 2, byte_order);
23265     *offsetp += 2;
23266     proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
23267     *offsetp += 1;
23268     proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
23269     *offsetp += 1;
23270     f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
23271     proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
23272     *offsetp += 1;
23273     proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
23274     *offsetp += 1;
23275     proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyExplicit, tvb, *offsetp, 1, byte_order);
23276     *offsetp += 1;
23277     f_totalKeyExplicit = VALUE8(tvb, *offsetp);
23278     proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
23279     *offsetp += 1;
23280     proto_tree_add_item(t, hf_x11_xkb_SetMap_firstModMapKey, tvb, *offsetp, 1, byte_order);
23281     *offsetp += 1;
23282     proto_tree_add_item(t, hf_x11_xkb_SetMap_nModMapKeys, tvb, *offsetp, 1, byte_order);
23283     *offsetp += 1;
23284     f_totalModMapKeys = VALUE8(tvb, *offsetp);
23285     proto_tree_add_item(t, hf_x11_xkb_SetMap_totalModMapKeys, tvb, *offsetp, 1, byte_order);
23286     *offsetp += 1;
23287     proto_tree_add_item(t, hf_x11_xkb_SetMap_firstVModMapKey, tvb, *offsetp, 1, byte_order);
23288     *offsetp += 1;
23289     proto_tree_add_item(t, hf_x11_xkb_SetMap_nVModMapKeys, tvb, *offsetp, 1, byte_order);
23290     *offsetp += 1;
23291     f_totalVModMapKeys = VALUE8(tvb, *offsetp);
23292     proto_tree_add_item(t, hf_x11_xkb_SetMap_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
23293     *offsetp += 1;
23294     f_virtualMods = VALUE16(tvb, *offsetp);
23295     {
23296         const int* virtualMods_bits [] = {
23297         &hf_x11_xkb_SetMap_virtualMods_mask_0,
23298         &hf_x11_xkb_SetMap_virtualMods_mask_1,
23299         &hf_x11_xkb_SetMap_virtualMods_mask_2,
23300         &hf_x11_xkb_SetMap_virtualMods_mask_3,
23301         &hf_x11_xkb_SetMap_virtualMods_mask_4,
23302         &hf_x11_xkb_SetMap_virtualMods_mask_5,
23303         &hf_x11_xkb_SetMap_virtualMods_mask_6,
23304         &hf_x11_xkb_SetMap_virtualMods_mask_7,
23305         &hf_x11_xkb_SetMap_virtualMods_mask_8,
23306         &hf_x11_xkb_SetMap_virtualMods_mask_9,
23307         &hf_x11_xkb_SetMap_virtualMods_mask_10,
23308         &hf_x11_xkb_SetMap_virtualMods_mask_11,
23309         &hf_x11_xkb_SetMap_virtualMods_mask_12,
23310         &hf_x11_xkb_SetMap_virtualMods_mask_13,
23311         &hf_x11_xkb_SetMap_virtualMods_mask_14,
23312         &hf_x11_xkb_SetMap_virtualMods_mask_15,
23313         };
23314         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetMap_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
23315     }
23316     *offsetp += 2;
23317     if (f_present & (1U << 0)) {
23318         struct_xkb_SetKeyType(tvb, offsetp, t, byte_order, f_nTypes);
23319         length -= f_nTypes * 0;
23320     }
23321     if (f_present & (1U << 1)) {
23322         struct_xkb_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
23323         length -= f_nKeySyms * 0;
23324     }
23325     if (f_present & (1U << 4)) {
23326         listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_KeyActions_actionsCount, f_nKeyActions, byte_order);
23327         length -= f_nKeyActions * 1;
23328         if (*offsetp % 4) {
23329             UNUSED(4 - *offsetp % 4);
23330         }
23331         length = ((length + 3) & ~3);
23332         struct_xkb_Action(tvb, offsetp, t, byte_order, f_totalActions);
23333         length -= f_totalActions * 8;
23334     }
23335     if (f_present & (1U << 5)) {
23336         struct_xkb_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
23337         length -= f_totalKeyBehaviors * 4;
23338     }
23339     if (f_present & (1U << 6)) {
23340         listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_VirtualMods_vmods, popcount(f_virtualMods), byte_order);
23341         length -= popcount(f_virtualMods) * 1;
23342         if (*offsetp % 4) {
23343             UNUSED(4 - *offsetp % 4);
23344         }
23345         length = ((length + 3) & ~3);
23346     }
23347     if (f_present & (1U << 3)) {
23348         struct_xkb_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
23349         length -= f_totalKeyExplicit * 2;
23350     }
23351     if (f_present & (1U << 2)) {
23352         struct_xkb_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
23353         length -= f_totalModMapKeys * 2;
23354     }
23355     if (f_present & (1U << 7)) {
23356         struct_xkb_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
23357         length -= f_totalVModMapKeys * 4;
23358     }
23359 }
23360
23361 static void xkbGetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23362 {
23363     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_deviceSpec, tvb, *offsetp, 2, byte_order);
23364     *offsetp += 2;
23365     {
23366         const int* groups_bits [] = {
23367         &hf_x11_xkb_GetCompatMap_groups_mask_Group1,
23368         &hf_x11_xkb_GetCompatMap_groups_mask_Group2,
23369         &hf_x11_xkb_GetCompatMap_groups_mask_Group3,
23370         &hf_x11_xkb_GetCompatMap_groups_mask_Group4,
23371         };
23372         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetCompatMap_groups, ett_x11_rectangle, groups_bits, byte_order);
23373     }
23374     *offsetp += 1;
23375     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_getAllSI, tvb, *offsetp, 1, byte_order);
23376     *offsetp += 1;
23377     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_firstSI, tvb, *offsetp, 2, byte_order);
23378     *offsetp += 2;
23379     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_nSI, tvb, *offsetp, 2, byte_order);
23380     *offsetp += 2;
23381 }
23382 static void xkbGetCompatMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
23383 {
23384     int sequence_number;
23385     int f_groupsRtrn;
23386     int f_nSIRtrn;
23387
23388     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCompatMap");
23389
23390     REPLY(reply);
23391     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_deviceID, tvb, *offsetp, 1, byte_order);
23392     *offsetp += 1;
23393     sequence_number = VALUE16(tvb, *offsetp);
23394     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
23395             "%d (xkb-GetCompatMap)", sequence_number);
23396     *offsetp += 2;
23397     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
23398     *offsetp += 4;
23399     f_groupsRtrn = VALUE8(tvb, *offsetp);
23400     {
23401         const int* groupsRtrn_bits [] = {
23402         &hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group1,
23403         &hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group2,
23404         &hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group3,
23405         &hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group4,
23406         };
23407         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetCompatMap_reply_groupsRtrn, ett_x11_rectangle, groupsRtrn_bits, byte_order);
23408     }
23409     *offsetp += 1;
23410     UNUSED(1);
23411     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_firstSIRtrn, tvb, *offsetp, 2, byte_order);
23412     *offsetp += 2;
23413     f_nSIRtrn = VALUE16(tvb, *offsetp);
23414     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nSIRtrn, tvb, *offsetp, 2, byte_order);
23415     *offsetp += 2;
23416     proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nTotalSI, tvb, *offsetp, 2, byte_order);
23417     *offsetp += 2;
23418     UNUSED(16);
23419     struct_xkb_SymInterpret(tvb, offsetp, t, byte_order, f_nSIRtrn);
23420     struct_xkb_ModDef(tvb, offsetp, t, byte_order, popcount(f_groupsRtrn));
23421 }
23422
23423 static void xkbSetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23424 {
23425     int f_groups;
23426     int f_nSI;
23427     proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_deviceSpec, tvb, *offsetp, 2, byte_order);
23428     *offsetp += 2;
23429     UNUSED(1);
23430     proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_recomputeActions, tvb, *offsetp, 1, byte_order);
23431     *offsetp += 1;
23432     proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_truncateSI, tvb, *offsetp, 1, byte_order);
23433     *offsetp += 1;
23434     f_groups = VALUE8(tvb, *offsetp);
23435     {
23436         const int* groups_bits [] = {
23437         &hf_x11_xkb_SetCompatMap_groups_mask_Group1,
23438         &hf_x11_xkb_SetCompatMap_groups_mask_Group2,
23439         &hf_x11_xkb_SetCompatMap_groups_mask_Group3,
23440         &hf_x11_xkb_SetCompatMap_groups_mask_Group4,
23441         };
23442         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetCompatMap_groups, ett_x11_rectangle, groups_bits, byte_order);
23443     }
23444     *offsetp += 1;
23445     proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_firstSI, tvb, *offsetp, 2, byte_order);
23446     *offsetp += 2;
23447     f_nSI = VALUE16(tvb, *offsetp);
23448     proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_nSI, tvb, *offsetp, 2, byte_order);
23449     *offsetp += 2;
23450     UNUSED(2);
23451     struct_xkb_SymInterpret(tvb, offsetp, t, byte_order, f_nSI);
23452     length -= f_nSI * 16;
23453     struct_xkb_ModDef(tvb, offsetp, t, byte_order, popcount(f_groups));
23454     length -= popcount(f_groups) * 4;
23455 }
23456
23457 static void xkbGetIndicatorState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23458 {
23459     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_deviceSpec, tvb, *offsetp, 2, byte_order);
23460     *offsetp += 2;
23461     UNUSED(2);
23462 }
23463 static void xkbGetIndicatorState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
23464 {
23465     int sequence_number;
23466
23467     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetIndicatorState");
23468
23469     REPLY(reply);
23470     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_deviceID, tvb, *offsetp, 1, byte_order);
23471     *offsetp += 1;
23472     sequence_number = VALUE16(tvb, *offsetp);
23473     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
23474             "%d (xkb-GetIndicatorState)", sequence_number);
23475     *offsetp += 2;
23476     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
23477     *offsetp += 4;
23478     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_state, tvb, *offsetp, 4, byte_order);
23479     *offsetp += 4;
23480     UNUSED(20);
23481 }
23482
23483 static void xkbGetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23484 {
23485     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_deviceSpec, tvb, *offsetp, 2, byte_order);
23486     *offsetp += 2;
23487     UNUSED(2);
23488     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_which, tvb, *offsetp, 4, byte_order);
23489     *offsetp += 4;
23490 }
23491 static void xkbGetIndicatorMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
23492 {
23493     int sequence_number;
23494     int f_which;
23495
23496     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetIndicatorMap");
23497
23498     REPLY(reply);
23499     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_deviceID, tvb, *offsetp, 1, byte_order);
23500     *offsetp += 1;
23501     sequence_number = VALUE16(tvb, *offsetp);
23502     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
23503             "%d (xkb-GetIndicatorMap)", sequence_number);
23504     *offsetp += 2;
23505     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
23506     *offsetp += 4;
23507     f_which = VALUE32(tvb, *offsetp);
23508     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_which, tvb, *offsetp, 4, byte_order);
23509     *offsetp += 4;
23510     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_realIndicators, tvb, *offsetp, 4, byte_order);
23511     *offsetp += 4;
23512     proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_nIndicators, tvb, *offsetp, 1, byte_order);
23513     *offsetp += 1;
23514     UNUSED(15);
23515     struct_xkb_IndicatorMap(tvb, offsetp, t, byte_order, popcount(f_which));
23516 }
23517
23518 static void xkbSetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23519 {
23520     int f_which;
23521     proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_deviceSpec, tvb, *offsetp, 2, byte_order);
23522     *offsetp += 2;
23523     UNUSED(2);
23524     f_which = VALUE32(tvb, *offsetp);
23525     proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_which, tvb, *offsetp, 4, byte_order);
23526     *offsetp += 4;
23527     struct_xkb_IndicatorMap(tvb, offsetp, t, byte_order, popcount(f_which));
23528     length -= popcount(f_which) * 12;
23529 }
23530
23531 static void xkbGetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23532 {
23533     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_deviceSpec, tvb, *offsetp, 2, byte_order);
23534     *offsetp += 2;
23535     field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledClass, byte_order);
23536     field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledID, byte_order);
23537     UNUSED(2);
23538     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_indicator, tvb, *offsetp, 4, byte_order);
23539     *offsetp += 4;
23540 }
23541 static void xkbGetNamedIndicator_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
23542 {
23543     int sequence_number;
23544
23545     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetNamedIndicator");
23546
23547     REPLY(reply);
23548     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_deviceID, tvb, *offsetp, 1, byte_order);
23549     *offsetp += 1;
23550     sequence_number = VALUE16(tvb, *offsetp);
23551     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
23552             "%d (xkb-GetNamedIndicator)", sequence_number);
23553     *offsetp += 2;
23554     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
23555     *offsetp += 4;
23556     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_indicator, tvb, *offsetp, 4, byte_order);
23557     *offsetp += 4;
23558     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_found, tvb, *offsetp, 1, byte_order);
23559     *offsetp += 1;
23560     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_on, tvb, *offsetp, 1, byte_order);
23561     *offsetp += 1;
23562     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_realIndicator, tvb, *offsetp, 1, byte_order);
23563     *offsetp += 1;
23564     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_ndx, tvb, *offsetp, 1, byte_order);
23565     *offsetp += 1;
23566     {
23567         const int* map_flags_bits [] = {
23568         &hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_LEDDrivesKB,
23569         &hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoAutomatic,
23570         &hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoExplicit,
23571         };
23572         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_flags, ett_x11_rectangle, map_flags_bits, byte_order);
23573     }
23574     *offsetp += 1;
23575     {
23576         const int* map_whichGroups_bits [] = {
23577         &hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseBase,
23578         &hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLatched,
23579         &hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLocked,
23580         &hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseEffective,
23581         &hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseCompat,
23582         };
23583         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups, ett_x11_rectangle, map_whichGroups_bits, byte_order);
23584     }
23585     *offsetp += 1;
23586     {
23587         const int* map_groups_bits [] = {
23588         &hf_x11_xkb_GetNamedIndicator_reply_map_groups_mask_Any,
23589         };
23590         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_groups, ett_x11_rectangle, map_groups_bits, byte_order);
23591     }
23592     *offsetp += 1;
23593     {
23594         const int* map_whichMods_bits [] = {
23595         &hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseBase,
23596         &hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLatched,
23597         &hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLocked,
23598         &hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseEffective,
23599         &hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseCompat,
23600         };
23601         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods, ett_x11_rectangle, map_whichMods_bits, byte_order);
23602     }
23603     *offsetp += 1;
23604     {
23605         const int* map_mods_bits [] = {
23606         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Shift,
23607         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Lock,
23608         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Control,
23609         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_1,
23610         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_2,
23611         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_3,
23612         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_4,
23613         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_5,
23614         &hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Any,
23615         };
23616         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_mods, ett_x11_rectangle, map_mods_bits, byte_order);
23617     }
23618     *offsetp += 1;
23619     {
23620         const int* map_realMods_bits [] = {
23621         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Shift,
23622         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Lock,
23623         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Control,
23624         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_1,
23625         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_2,
23626         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_3,
23627         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_4,
23628         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_5,
23629         &hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Any,
23630         };
23631         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_realMods, ett_x11_rectangle, map_realMods_bits, byte_order);
23632     }
23633     *offsetp += 1;
23634     {
23635         const int* map_vmod_bits [] = {
23636         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_0,
23637         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_1,
23638         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_2,
23639         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_3,
23640         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_4,
23641         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_5,
23642         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_6,
23643         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_7,
23644         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_8,
23645         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_9,
23646         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_10,
23647         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_11,
23648         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_12,
23649         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_13,
23650         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_14,
23651         &hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_15,
23652         };
23653         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_vmod, ett_x11_rectangle, map_vmod_bits, byte_order);
23654     }
23655     *offsetp += 2;
23656     {
23657         const int* map_ctrls_bits [] = {
23658         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_RepeatKeys,
23659         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_SlowKeys,
23660         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_BounceKeys,
23661         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_StickyKeys,
23662         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeys,
23663         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeysAccel,
23664         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXKeys,
23665         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXTimeoutMask,
23666         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXFeedbackMask,
23667         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AudibleBellMask,
23668         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay1Mask,
23669         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay2Mask,
23670         &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_IgnoreGroupLockMask,
23671         };
23672         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls, ett_x11_rectangle, map_ctrls_bits, byte_order);
23673     }
23674     *offsetp += 4;
23675     proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_supported, tvb, *offsetp, 1, byte_order);
23676     *offsetp += 1;
23677     UNUSED(3);
23678 }
23679
23680 static void xkbSetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23681 {
23682     proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_deviceSpec, tvb, *offsetp, 2, byte_order);
23683     *offsetp += 2;
23684     field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledClass, byte_order);
23685     field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledID, byte_order);
23686     UNUSED(2);
23687     proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_indicator, tvb, *offsetp, 4, byte_order);
23688     *offsetp += 4;
23689     proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setState, tvb, *offsetp, 1, byte_order);
23690     *offsetp += 1;
23691     proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_on, tvb, *offsetp, 1, byte_order);
23692     *offsetp += 1;
23693     proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setMap, tvb, *offsetp, 1, byte_order);
23694     *offsetp += 1;
23695     proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_createMap, tvb, *offsetp, 1, byte_order);
23696     *offsetp += 1;
23697     UNUSED(1);
23698     {
23699         const int* map_flags_bits [] = {
23700         &hf_x11_xkb_SetNamedIndicator_map_flags_mask_LEDDrivesKB,
23701         &hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoAutomatic,
23702         &hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoExplicit,
23703         };
23704         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNamedIndicator_map_flags, ett_x11_rectangle, map_flags_bits, byte_order);
23705     }
23706     *offsetp += 1;
23707     {
23708         const int* map_whichGroups_bits [] = {
23709         &hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseBase,
23710         &hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLatched,
23711         &hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLocked,
23712         &hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseEffective,
23713         &hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseCompat,
23714         };
23715         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNamedIndicator_map_whichGroups, ett_x11_rectangle, map_whichGroups_bits, byte_order);
23716     }
23717     *offsetp += 1;
23718     {
23719         const int* map_groups_bits [] = {
23720         &hf_x11_xkb_SetNamedIndicator_map_groups_mask_Any,
23721         };
23722         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNamedIndicator_map_groups, ett_x11_rectangle, map_groups_bits, byte_order);
23723     }
23724     *offsetp += 1;
23725     {
23726         const int* map_whichMods_bits [] = {
23727         &hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseBase,
23728         &hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLatched,
23729         &hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLocked,
23730         &hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseEffective,
23731         &hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseCompat,
23732         };
23733         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNamedIndicator_map_whichMods, ett_x11_rectangle, map_whichMods_bits, byte_order);
23734     }
23735     *offsetp += 1;
23736     {
23737         const int* map_realMods_bits [] = {
23738         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Shift,
23739         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Lock,
23740         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Control,
23741         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_1,
23742         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_2,
23743         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_3,
23744         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_4,
23745         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_5,
23746         &hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Any,
23747         };
23748         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNamedIndicator_map_realMods, ett_x11_rectangle, map_realMods_bits, byte_order);
23749     }
23750     *offsetp += 1;
23751     {
23752         const int* map_vmods_bits [] = {
23753         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_0,
23754         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_1,
23755         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_2,
23756         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_3,
23757         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_4,
23758         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_5,
23759         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_6,
23760         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_7,
23761         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_8,
23762         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_9,
23763         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_10,
23764         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_11,
23765         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_12,
23766         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_13,
23767         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_14,
23768         &hf_x11_xkb_SetNamedIndicator_map_vmods_mask_15,
23769         };
23770         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNamedIndicator_map_vmods, ett_x11_rectangle, map_vmods_bits, byte_order);
23771     }
23772     *offsetp += 2;
23773     {
23774         const int* map_ctrls_bits [] = {
23775         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_RepeatKeys,
23776         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_SlowKeys,
23777         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_BounceKeys,
23778         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_StickyKeys,
23779         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeys,
23780         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeysAccel,
23781         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXKeys,
23782         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXTimeoutMask,
23783         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXFeedbackMask,
23784         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AudibleBellMask,
23785         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay1Mask,
23786         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay2Mask,
23787         &hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_IgnoreGroupLockMask,
23788         };
23789         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNamedIndicator_map_ctrls, ett_x11_rectangle, map_ctrls_bits, byte_order);
23790     }
23791     *offsetp += 4;
23792 }
23793
23794 static void xkbGetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23795 {
23796     proto_tree_add_item(t, hf_x11_xkb_GetNames_deviceSpec, tvb, *offsetp, 2, byte_order);
23797     *offsetp += 2;
23798     UNUSED(2);
23799     {
23800         const int* which_bits [] = {
23801         &hf_x11_xkb_GetNames_which_mask_Keycodes,
23802         &hf_x11_xkb_GetNames_which_mask_Geometry,
23803         &hf_x11_xkb_GetNames_which_mask_Symbols,
23804         &hf_x11_xkb_GetNames_which_mask_PhysSymbols,
23805         &hf_x11_xkb_GetNames_which_mask_Types,
23806         &hf_x11_xkb_GetNames_which_mask_Compat,
23807         &hf_x11_xkb_GetNames_which_mask_KeyTypeNames,
23808         &hf_x11_xkb_GetNames_which_mask_KTLevelNames,
23809         &hf_x11_xkb_GetNames_which_mask_IndicatorNames,
23810         &hf_x11_xkb_GetNames_which_mask_KeyNames,
23811         &hf_x11_xkb_GetNames_which_mask_KeyAliases,
23812         &hf_x11_xkb_GetNames_which_mask_VirtualModNames,
23813         &hf_x11_xkb_GetNames_which_mask_GroupNames,
23814         &hf_x11_xkb_GetNames_which_mask_RGNames,
23815         };
23816         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNames_which, ett_x11_rectangle, which_bits, byte_order);
23817     }
23818     *offsetp += 4;
23819 }
23820 static void xkbGetNames_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
23821 {
23822     int sequence_number;
23823     int f_which;
23824     int f_nTypes;
23825     int f_groupNames;
23826     int f_virtualMods;
23827     int f_nKeys;
23828     int f_indicators;
23829     int f_nRadioGroups;
23830     int f_nKeyAliases;
23831
23832     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetNames");
23833
23834     REPLY(reply);
23835     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_deviceID, tvb, *offsetp, 1, byte_order);
23836     *offsetp += 1;
23837     sequence_number = VALUE16(tvb, *offsetp);
23838     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
23839             "%d (xkb-GetNames)", sequence_number);
23840     *offsetp += 2;
23841     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
23842     *offsetp += 4;
23843     f_which = VALUE32(tvb, *offsetp);
23844     {
23845         const int* which_bits [] = {
23846         &hf_x11_xkb_GetNames_reply_which_mask_Keycodes,
23847         &hf_x11_xkb_GetNames_reply_which_mask_Geometry,
23848         &hf_x11_xkb_GetNames_reply_which_mask_Symbols,
23849         &hf_x11_xkb_GetNames_reply_which_mask_PhysSymbols,
23850         &hf_x11_xkb_GetNames_reply_which_mask_Types,
23851         &hf_x11_xkb_GetNames_reply_which_mask_Compat,
23852         &hf_x11_xkb_GetNames_reply_which_mask_KeyTypeNames,
23853         &hf_x11_xkb_GetNames_reply_which_mask_KTLevelNames,
23854         &hf_x11_xkb_GetNames_reply_which_mask_IndicatorNames,
23855         &hf_x11_xkb_GetNames_reply_which_mask_KeyNames,
23856         &hf_x11_xkb_GetNames_reply_which_mask_KeyAliases,
23857         &hf_x11_xkb_GetNames_reply_which_mask_VirtualModNames,
23858         &hf_x11_xkb_GetNames_reply_which_mask_GroupNames,
23859         &hf_x11_xkb_GetNames_reply_which_mask_RGNames,
23860         };
23861         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNames_reply_which, ett_x11_rectangle, which_bits, byte_order);
23862     }
23863     *offsetp += 4;
23864     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_minKeyCode, tvb, *offsetp, 1, byte_order);
23865     *offsetp += 1;
23866     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_maxKeyCode, tvb, *offsetp, 1, byte_order);
23867     *offsetp += 1;
23868     f_nTypes = VALUE8(tvb, *offsetp);
23869     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nTypes, tvb, *offsetp, 1, byte_order);
23870     *offsetp += 1;
23871     f_groupNames = VALUE8(tvb, *offsetp);
23872     {
23873         const int* groupNames_bits [] = {
23874         &hf_x11_xkb_GetNames_reply_groupNames_mask_Group1,
23875         &hf_x11_xkb_GetNames_reply_groupNames_mask_Group2,
23876         &hf_x11_xkb_GetNames_reply_groupNames_mask_Group3,
23877         &hf_x11_xkb_GetNames_reply_groupNames_mask_Group4,
23878         };
23879         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNames_reply_groupNames, ett_x11_rectangle, groupNames_bits, byte_order);
23880     }
23881     *offsetp += 1;
23882     f_virtualMods = VALUE16(tvb, *offsetp);
23883     {
23884         const int* virtualMods_bits [] = {
23885         &hf_x11_xkb_GetNames_reply_virtualMods_mask_0,
23886         &hf_x11_xkb_GetNames_reply_virtualMods_mask_1,
23887         &hf_x11_xkb_GetNames_reply_virtualMods_mask_2,
23888         &hf_x11_xkb_GetNames_reply_virtualMods_mask_3,
23889         &hf_x11_xkb_GetNames_reply_virtualMods_mask_4,
23890         &hf_x11_xkb_GetNames_reply_virtualMods_mask_5,
23891         &hf_x11_xkb_GetNames_reply_virtualMods_mask_6,
23892         &hf_x11_xkb_GetNames_reply_virtualMods_mask_7,
23893         &hf_x11_xkb_GetNames_reply_virtualMods_mask_8,
23894         &hf_x11_xkb_GetNames_reply_virtualMods_mask_9,
23895         &hf_x11_xkb_GetNames_reply_virtualMods_mask_10,
23896         &hf_x11_xkb_GetNames_reply_virtualMods_mask_11,
23897         &hf_x11_xkb_GetNames_reply_virtualMods_mask_12,
23898         &hf_x11_xkb_GetNames_reply_virtualMods_mask_13,
23899         &hf_x11_xkb_GetNames_reply_virtualMods_mask_14,
23900         &hf_x11_xkb_GetNames_reply_virtualMods_mask_15,
23901         };
23902         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetNames_reply_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
23903     }
23904     *offsetp += 2;
23905     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_firstKey, tvb, *offsetp, 1, byte_order);
23906     *offsetp += 1;
23907     f_nKeys = VALUE8(tvb, *offsetp);
23908     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeys, tvb, *offsetp, 1, byte_order);
23909     *offsetp += 1;
23910     f_indicators = VALUE32(tvb, *offsetp);
23911     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_indicators, tvb, *offsetp, 4, byte_order);
23912     *offsetp += 4;
23913     f_nRadioGroups = VALUE8(tvb, *offsetp);
23914     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nRadioGroups, tvb, *offsetp, 1, byte_order);
23915     *offsetp += 1;
23916     f_nKeyAliases = VALUE8(tvb, *offsetp);
23917     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeyAliases, tvb, *offsetp, 1, byte_order);
23918     *offsetp += 1;
23919     proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKTLevels, tvb, *offsetp, 2, byte_order);
23920     *offsetp += 2;
23921     UNUSED(4);
23922     if (f_which & (1U << 0)) {
23923         proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Keycodes_keycodesName, tvb, *offsetp, 4, byte_order);
23924         *offsetp += 4;
23925     }
23926     if (f_which & (1U << 1)) {
23927         proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Geometry_geometryName, tvb, *offsetp, 4, byte_order);
23928         *offsetp += 4;
23929     }
23930     if (f_which & (1U << 2)) {
23931         proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Symbols_symbolsName, tvb, *offsetp, 4, byte_order);
23932         *offsetp += 4;
23933     }
23934     if (f_which & (1U << 3)) {
23935         proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, byte_order);
23936         *offsetp += 4;
23937     }
23938     if (f_which & (1U << 4)) {
23939         proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Types_typesName, tvb, *offsetp, 4, byte_order);
23940         *offsetp += 4;
23941     }
23942     if (f_which & (1U << 5)) {
23943         proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Compat_compatName, tvb, *offsetp, 4, byte_order);
23944         *offsetp += 4;
23945     }
23946     if (f_which & (1U << 6)) {
23947         listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames_item, f_nTypes, byte_order);
23948     }
23949     if (f_which & (1U << 7)) {
23950         int sumof_nLevelsPerType = 0;
23951         {
23952             int i;
23953             for (i = 0; i < f_nTypes; i++) {
23954                 sumof_nLevelsPerType += VALUE8(tvb, *offsetp + i * 1);
23955             }
23956         }
23957         listOfByte(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_nLevelsPerType, f_nTypes, byte_order);
23958         if (*offsetp % 4) {
23959             UNUSED(4 - *offsetp % 4);
23960         }
23961         listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames_item, sumof_nLevelsPerType, byte_order);
23962     }
23963     if (f_which & (1U << 8)) {
23964         listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames_item, popcount(f_indicators), byte_order);
23965     }
23966     if (f_which & (1U << 11)) {
23967         listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), byte_order);
23968     }
23969     if (f_which & (1U << 12)) {
23970         listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_GroupNames_groups, hf_x11_xkb_GetNames_reply_GroupNames_groups_item, popcount(f_groupNames), byte_order);
23971     }
23972     if (f_which & (1U << 9)) {
23973         struct_xkb_KeyName(tvb, offsetp, t, byte_order, f_nKeys);
23974     }
23975     if (f_which & (1U << 10)) {
23976         struct_xkb_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
23977     }
23978     if (f_which & (1U << 13)) {
23979         listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames_item, f_nRadioGroups, byte_order);
23980     }
23981 }
23982
23983 static void xkbSetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
23984 {
23985     int f_virtualMods;
23986     int f_which;
23987     int f_nTypes;
23988     int f_indicators;
23989     int f_groupNames;
23990     int f_nRadioGroups;
23991     int f_nKeys;
23992     int f_nKeyAliases;
23993     proto_tree_add_item(t, hf_x11_xkb_SetNames_deviceSpec, tvb, *offsetp, 2, byte_order);
23994     *offsetp += 2;
23995     f_virtualMods = VALUE16(tvb, *offsetp);
23996     {
23997         const int* virtualMods_bits [] = {
23998         &hf_x11_xkb_SetNames_virtualMods_mask_0,
23999         &hf_x11_xkb_SetNames_virtualMods_mask_1,
24000         &hf_x11_xkb_SetNames_virtualMods_mask_2,
24001         &hf_x11_xkb_SetNames_virtualMods_mask_3,
24002         &hf_x11_xkb_SetNames_virtualMods_mask_4,
24003         &hf_x11_xkb_SetNames_virtualMods_mask_5,
24004         &hf_x11_xkb_SetNames_virtualMods_mask_6,
24005         &hf_x11_xkb_SetNames_virtualMods_mask_7,
24006         &hf_x11_xkb_SetNames_virtualMods_mask_8,
24007         &hf_x11_xkb_SetNames_virtualMods_mask_9,
24008         &hf_x11_xkb_SetNames_virtualMods_mask_10,
24009         &hf_x11_xkb_SetNames_virtualMods_mask_11,
24010         &hf_x11_xkb_SetNames_virtualMods_mask_12,
24011         &hf_x11_xkb_SetNames_virtualMods_mask_13,
24012         &hf_x11_xkb_SetNames_virtualMods_mask_14,
24013         &hf_x11_xkb_SetNames_virtualMods_mask_15,
24014         };
24015         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNames_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
24016     }
24017     *offsetp += 2;
24018     f_which = VALUE32(tvb, *offsetp);
24019     {
24020         const int* which_bits [] = {
24021         &hf_x11_xkb_SetNames_which_mask_Keycodes,
24022         &hf_x11_xkb_SetNames_which_mask_Geometry,
24023         &hf_x11_xkb_SetNames_which_mask_Symbols,
24024         &hf_x11_xkb_SetNames_which_mask_PhysSymbols,
24025         &hf_x11_xkb_SetNames_which_mask_Types,
24026         &hf_x11_xkb_SetNames_which_mask_Compat,
24027         &hf_x11_xkb_SetNames_which_mask_KeyTypeNames,
24028         &hf_x11_xkb_SetNames_which_mask_KTLevelNames,
24029         &hf_x11_xkb_SetNames_which_mask_IndicatorNames,
24030         &hf_x11_xkb_SetNames_which_mask_KeyNames,
24031         &hf_x11_xkb_SetNames_which_mask_KeyAliases,
24032         &hf_x11_xkb_SetNames_which_mask_VirtualModNames,
24033         &hf_x11_xkb_SetNames_which_mask_GroupNames,
24034         &hf_x11_xkb_SetNames_which_mask_RGNames,
24035         };
24036         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNames_which, ett_x11_rectangle, which_bits, byte_order);
24037     }
24038     *offsetp += 4;
24039     proto_tree_add_item(t, hf_x11_xkb_SetNames_firstType, tvb, *offsetp, 1, byte_order);
24040     *offsetp += 1;
24041     f_nTypes = VALUE8(tvb, *offsetp);
24042     proto_tree_add_item(t, hf_x11_xkb_SetNames_nTypes, tvb, *offsetp, 1, byte_order);
24043     *offsetp += 1;
24044     proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKTLevelt, tvb, *offsetp, 1, byte_order);
24045     *offsetp += 1;
24046     proto_tree_add_item(t, hf_x11_xkb_SetNames_nKTLevels, tvb, *offsetp, 1, byte_order);
24047     *offsetp += 1;
24048     f_indicators = VALUE32(tvb, *offsetp);
24049     proto_tree_add_item(t, hf_x11_xkb_SetNames_indicators, tvb, *offsetp, 4, byte_order);
24050     *offsetp += 4;
24051     f_groupNames = VALUE8(tvb, *offsetp);
24052     {
24053         const int* groupNames_bits [] = {
24054         &hf_x11_xkb_SetNames_groupNames_mask_Group1,
24055         &hf_x11_xkb_SetNames_groupNames_mask_Group2,
24056         &hf_x11_xkb_SetNames_groupNames_mask_Group3,
24057         &hf_x11_xkb_SetNames_groupNames_mask_Group4,
24058         };
24059         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetNames_groupNames, ett_x11_rectangle, groupNames_bits, byte_order);
24060     }
24061     *offsetp += 1;
24062     f_nRadioGroups = VALUE8(tvb, *offsetp);
24063     proto_tree_add_item(t, hf_x11_xkb_SetNames_nRadioGroups, tvb, *offsetp, 1, byte_order);
24064     *offsetp += 1;
24065     proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKey, tvb, *offsetp, 1, byte_order);
24066     *offsetp += 1;
24067     f_nKeys = VALUE8(tvb, *offsetp);
24068     proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeys, tvb, *offsetp, 1, byte_order);
24069     *offsetp += 1;
24070     f_nKeyAliases = VALUE8(tvb, *offsetp);
24071     proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeyAliases, tvb, *offsetp, 1, byte_order);
24072     *offsetp += 1;
24073     UNUSED(1);
24074     proto_tree_add_item(t, hf_x11_xkb_SetNames_totalKTLevelNames, tvb, *offsetp, 2, byte_order);
24075     *offsetp += 2;
24076     if (f_which & (1U << 0)) {
24077         proto_tree_add_item(t, hf_x11_xkb_SetNames_Keycodes_keycodesName, tvb, *offsetp, 4, byte_order);
24078         *offsetp += 4;
24079     }
24080     if (f_which & (1U << 1)) {
24081         proto_tree_add_item(t, hf_x11_xkb_SetNames_Geometry_geometryName, tvb, *offsetp, 4, byte_order);
24082         *offsetp += 4;
24083     }
24084     if (f_which & (1U << 2)) {
24085         proto_tree_add_item(t, hf_x11_xkb_SetNames_Symbols_symbolsName, tvb, *offsetp, 4, byte_order);
24086         *offsetp += 4;
24087     }
24088     if (f_which & (1U << 3)) {
24089         proto_tree_add_item(t, hf_x11_xkb_SetNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, byte_order);
24090         *offsetp += 4;
24091     }
24092     if (f_which & (1U << 4)) {
24093         proto_tree_add_item(t, hf_x11_xkb_SetNames_Types_typesName, tvb, *offsetp, 4, byte_order);
24094         *offsetp += 4;
24095     }
24096     if (f_which & (1U << 5)) {
24097         proto_tree_add_item(t, hf_x11_xkb_SetNames_Compat_compatName, tvb, *offsetp, 4, byte_order);
24098         *offsetp += 4;
24099     }
24100     if (f_which & (1U << 6)) {
24101         listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KeyTypeNames_typeNames, hf_x11_xkb_SetNames_KeyTypeNames_typeNames_item, f_nTypes, byte_order);
24102         length -= f_nTypes * 4;
24103     }
24104     if (f_which & (1U << 7)) {
24105         int sumof_nLevelsPerType = 0;
24106         {
24107             int i;
24108             for (i = 0; i < f_nTypes; i++) {
24109                 sumof_nLevelsPerType += VALUE8(tvb, *offsetp + i * 1);
24110             }
24111         }
24112         listOfByte(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_nLevelsPerType, f_nTypes, byte_order);
24113         length -= f_nTypes * 1;
24114         if (*offsetp % 4) {
24115             UNUSED(4 - *offsetp % 4);
24116         }
24117         length = ((length + 3) & ~3);
24118         listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames_item, sumof_nLevelsPerType, byte_order);
24119         length -= sumof_nLevelsPerType * 4;
24120     }
24121     if (f_which & (1U << 8)) {
24122         listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), byte_order);
24123         length -= popcount(f_indicators) * 4;
24124     }
24125     if (f_which & (1U << 11)) {
24126         listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), byte_order);
24127         length -= popcount(f_virtualMods) * 4;
24128     }
24129     if (f_which & (1U << 12)) {
24130         listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_GroupNames_groups, hf_x11_xkb_SetNames_GroupNames_groups_item, popcount(f_groupNames), byte_order);
24131         length -= popcount(f_groupNames) * 4;
24132     }
24133     if (f_which & (1U << 9)) {
24134         struct_xkb_KeyName(tvb, offsetp, t, byte_order, f_nKeys);
24135         length -= f_nKeys * 4;
24136     }
24137     if (f_which & (1U << 10)) {
24138         struct_xkb_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
24139         length -= f_nKeyAliases * 8;
24140     }
24141     if (f_which & (1U << 13)) {
24142         listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_RGNames_radioGroupNames, hf_x11_xkb_SetNames_RGNames_radioGroupNames_item, f_nRadioGroups, byte_order);
24143         length -= f_nRadioGroups * 4;
24144     }
24145 }
24146
24147 static void xkbPerClientFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
24148 {
24149     proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_deviceSpec, tvb, *offsetp, 2, byte_order);
24150     *offsetp += 2;
24151     UNUSED(2);
24152     {
24153         const int* change_bits [] = {
24154         &hf_x11_xkb_PerClientFlags_change_mask_DetectableAutoRepeat,
24155         &hf_x11_xkb_PerClientFlags_change_mask_GrabsUseXKBState,
24156         &hf_x11_xkb_PerClientFlags_change_mask_AutoResetControls,
24157         &hf_x11_xkb_PerClientFlags_change_mask_LookupStateWhenGrabbed,
24158         &hf_x11_xkb_PerClientFlags_change_mask_SendEventUsesXKBState,
24159         };
24160         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_change, ett_x11_rectangle, change_bits, byte_order);
24161     }
24162     *offsetp += 4;
24163     {
24164         const int* value_bits [] = {
24165         &hf_x11_xkb_PerClientFlags_value_mask_DetectableAutoRepeat,
24166         &hf_x11_xkb_PerClientFlags_value_mask_GrabsUseXKBState,
24167         &hf_x11_xkb_PerClientFlags_value_mask_AutoResetControls,
24168         &hf_x11_xkb_PerClientFlags_value_mask_LookupStateWhenGrabbed,
24169         &hf_x11_xkb_PerClientFlags_value_mask_SendEventUsesXKBState,
24170         };
24171         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_value, ett_x11_rectangle, value_bits, byte_order);
24172     }
24173     *offsetp += 4;
24174     {
24175         const int* ctrlsToChange_bits [] = {
24176         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_RepeatKeys,
24177         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_SlowKeys,
24178         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_BounceKeys,
24179         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_StickyKeys,
24180         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeys,
24181         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeysAccel,
24182         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXKeys,
24183         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXTimeoutMask,
24184         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXFeedbackMask,
24185         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AudibleBellMask,
24186         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay1Mask,
24187         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay2Mask,
24188         &hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_IgnoreGroupLockMask,
24189         };
24190         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_ctrlsToChange, ett_x11_rectangle, ctrlsToChange_bits, byte_order);
24191     }
24192     *offsetp += 4;
24193     {
24194         const int* autoCtrls_bits [] = {
24195         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_RepeatKeys,
24196         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_SlowKeys,
24197         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_BounceKeys,
24198         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_StickyKeys,
24199         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeys,
24200         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeysAccel,
24201         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXKeys,
24202         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXTimeoutMask,
24203         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXFeedbackMask,
24204         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_AudibleBellMask,
24205         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay1Mask,
24206         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay2Mask,
24207         &hf_x11_xkb_PerClientFlags_autoCtrls_mask_IgnoreGroupLockMask,
24208         };
24209         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_autoCtrls, ett_x11_rectangle, autoCtrls_bits, byte_order);
24210     }
24211     *offsetp += 4;
24212     {
24213         const int* autoCtrlsValues_bits [] = {
24214         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_RepeatKeys,
24215         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_SlowKeys,
24216         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_BounceKeys,
24217         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_StickyKeys,
24218         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeys,
24219         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeysAccel,
24220         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXKeys,
24221         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXTimeoutMask,
24222         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXFeedbackMask,
24223         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AudibleBellMask,
24224         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay1Mask,
24225         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay2Mask,
24226         &hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_IgnoreGroupLockMask,
24227         };
24228         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_autoCtrlsValues, ett_x11_rectangle, autoCtrlsValues_bits, byte_order);
24229     }
24230     *offsetp += 4;
24231 }
24232 static void xkbPerClientFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
24233 {
24234     int sequence_number;
24235
24236     col_append_fstr(pinfo->cinfo, COL_INFO, "-PerClientFlags");
24237
24238     REPLY(reply);
24239     proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_deviceID, tvb, *offsetp, 1, byte_order);
24240     *offsetp += 1;
24241     sequence_number = VALUE16(tvb, *offsetp);
24242     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
24243             "%d (xkb-PerClientFlags)", sequence_number);
24244     *offsetp += 2;
24245     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
24246     *offsetp += 4;
24247     {
24248         const int* supported_bits [] = {
24249         &hf_x11_xkb_PerClientFlags_reply_supported_mask_DetectableAutoRepeat,
24250         &hf_x11_xkb_PerClientFlags_reply_supported_mask_GrabsUseXKBState,
24251         &hf_x11_xkb_PerClientFlags_reply_supported_mask_AutoResetControls,
24252         &hf_x11_xkb_PerClientFlags_reply_supported_mask_LookupStateWhenGrabbed,
24253         &hf_x11_xkb_PerClientFlags_reply_supported_mask_SendEventUsesXKBState,
24254         };
24255         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_reply_supported, ett_x11_rectangle, supported_bits, byte_order);
24256     }
24257     *offsetp += 4;
24258     {
24259         const int* value_bits [] = {
24260         &hf_x11_xkb_PerClientFlags_reply_value_mask_DetectableAutoRepeat,
24261         &hf_x11_xkb_PerClientFlags_reply_value_mask_GrabsUseXKBState,
24262         &hf_x11_xkb_PerClientFlags_reply_value_mask_AutoResetControls,
24263         &hf_x11_xkb_PerClientFlags_reply_value_mask_LookupStateWhenGrabbed,
24264         &hf_x11_xkb_PerClientFlags_reply_value_mask_SendEventUsesXKBState,
24265         };
24266         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_reply_value, ett_x11_rectangle, value_bits, byte_order);
24267     }
24268     *offsetp += 4;
24269     {
24270         const int* autoCtrls_bits [] = {
24271         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_RepeatKeys,
24272         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_SlowKeys,
24273         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_BounceKeys,
24274         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_StickyKeys,
24275         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeys,
24276         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeysAccel,
24277         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXKeys,
24278         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXTimeoutMask,
24279         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXFeedbackMask,
24280         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AudibleBellMask,
24281         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay1Mask,
24282         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay2Mask,
24283         &hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_IgnoreGroupLockMask,
24284         };
24285         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_reply_autoCtrls, ett_x11_rectangle, autoCtrls_bits, byte_order);
24286     }
24287     *offsetp += 4;
24288     {
24289         const int* autoCtrlsValues_bits [] = {
24290         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_RepeatKeys,
24291         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_SlowKeys,
24292         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_BounceKeys,
24293         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_StickyKeys,
24294         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeys,
24295         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeysAccel,
24296         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXKeys,
24297         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXTimeoutMask,
24298         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXFeedbackMask,
24299         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AudibleBellMask,
24300         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay1Mask,
24301         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay2Mask,
24302         &hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_IgnoreGroupLockMask,
24303         };
24304         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues, ett_x11_rectangle, autoCtrlsValues_bits, byte_order);
24305     }
24306     *offsetp += 4;
24307     UNUSED(8);
24308 }
24309
24310 static void xkbListComponents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
24311 {
24312     proto_tree_add_item(t, hf_x11_xkb_ListComponents_deviceSpec, tvb, *offsetp, 2, byte_order);
24313     *offsetp += 2;
24314     proto_tree_add_item(t, hf_x11_xkb_ListComponents_maxNames, tvb, *offsetp, 2, byte_order);
24315     *offsetp += 2;
24316 }
24317 static void xkbListComponents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
24318 {
24319     int sequence_number;
24320     int f_nKeymaps;
24321     int f_nKeycodes;
24322     int f_nTypes;
24323     int f_nCompatMaps;
24324     int f_nSymbols;
24325     int f_nGeometries;
24326
24327     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListComponents");
24328
24329     REPLY(reply);
24330     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_deviceID, tvb, *offsetp, 1, byte_order);
24331     *offsetp += 1;
24332     sequence_number = VALUE16(tvb, *offsetp);
24333     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
24334             "%d (xkb-ListComponents)", sequence_number);
24335     *offsetp += 2;
24336     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
24337     *offsetp += 4;
24338     f_nKeymaps = VALUE16(tvb, *offsetp);
24339     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeymaps, tvb, *offsetp, 2, byte_order);
24340     *offsetp += 2;
24341     f_nKeycodes = VALUE16(tvb, *offsetp);
24342     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeycodes, tvb, *offsetp, 2, byte_order);
24343     *offsetp += 2;
24344     f_nTypes = VALUE16(tvb, *offsetp);
24345     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nTypes, tvb, *offsetp, 2, byte_order);
24346     *offsetp += 2;
24347     f_nCompatMaps = VALUE16(tvb, *offsetp);
24348     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nCompatMaps, tvb, *offsetp, 2, byte_order);
24349     *offsetp += 2;
24350     f_nSymbols = VALUE16(tvb, *offsetp);
24351     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nSymbols, tvb, *offsetp, 2, byte_order);
24352     *offsetp += 2;
24353     f_nGeometries = VALUE16(tvb, *offsetp);
24354     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nGeometries, tvb, *offsetp, 2, byte_order);
24355     *offsetp += 2;
24356     proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_extra, tvb, *offsetp, 2, byte_order);
24357     *offsetp += 2;
24358     UNUSED(10);
24359     struct_xkb_Listing(tvb, offsetp, t, byte_order, f_nKeymaps);
24360     struct_xkb_Listing(tvb, offsetp, t, byte_order, f_nKeycodes);
24361     struct_xkb_Listing(tvb, offsetp, t, byte_order, f_nTypes);
24362     struct_xkb_Listing(tvb, offsetp, t, byte_order, f_nCompatMaps);
24363     struct_xkb_Listing(tvb, offsetp, t, byte_order, f_nSymbols);
24364     struct_xkb_Listing(tvb, offsetp, t, byte_order, f_nGeometries);
24365 }
24366
24367 static void xkbGetKbdByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
24368 {
24369     proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_deviceSpec, tvb, *offsetp, 2, byte_order);
24370     *offsetp += 2;
24371     {
24372         const int* need_bits [] = {
24373         &hf_x11_xkb_GetKbdByName_need_mask_Types,
24374         &hf_x11_xkb_GetKbdByName_need_mask_CompatMap,
24375         &hf_x11_xkb_GetKbdByName_need_mask_ClientSymbols,
24376         &hf_x11_xkb_GetKbdByName_need_mask_ServerSymbols,
24377         &hf_x11_xkb_GetKbdByName_need_mask_IndicatorMaps,
24378         &hf_x11_xkb_GetKbdByName_need_mask_KeyNames,
24379         &hf_x11_xkb_GetKbdByName_need_mask_Geometry,
24380         &hf_x11_xkb_GetKbdByName_need_mask_OtherNames,
24381         };
24382         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_need, ett_x11_rectangle, need_bits, byte_order);
24383     }
24384     *offsetp += 2;
24385     {
24386         const int* want_bits [] = {
24387         &hf_x11_xkb_GetKbdByName_want_mask_Types,
24388         &hf_x11_xkb_GetKbdByName_want_mask_CompatMap,
24389         &hf_x11_xkb_GetKbdByName_want_mask_ClientSymbols,
24390         &hf_x11_xkb_GetKbdByName_want_mask_ServerSymbols,
24391         &hf_x11_xkb_GetKbdByName_want_mask_IndicatorMaps,
24392         &hf_x11_xkb_GetKbdByName_want_mask_KeyNames,
24393         &hf_x11_xkb_GetKbdByName_want_mask_Geometry,
24394         &hf_x11_xkb_GetKbdByName_want_mask_OtherNames,
24395         };
24396         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_want, ett_x11_rectangle, want_bits, byte_order);
24397     }
24398     *offsetp += 2;
24399     proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_load, tvb, *offsetp, 1, byte_order);
24400     *offsetp += 1;
24401     UNUSED(1);
24402 }
24403 static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
24404 {
24405     int sequence_number;
24406     int f_reported;
24407
24408     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetKbdByName");
24409
24410     REPLY(reply);
24411     proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_deviceID, tvb, *offsetp, 1, byte_order);
24412     *offsetp += 1;
24413     sequence_number = VALUE16(tvb, *offsetp);
24414     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
24415             "%d (xkb-GetKbdByName)", sequence_number);
24416     *offsetp += 2;
24417     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
24418     *offsetp += 4;
24419     proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_minKeyCode, tvb, *offsetp, 1, byte_order);
24420     *offsetp += 1;
24421     proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_maxKeyCode, tvb, *offsetp, 1, byte_order);
24422     *offsetp += 1;
24423     proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_loaded, tvb, *offsetp, 1, byte_order);
24424     *offsetp += 1;
24425     proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_newKeyboard, tvb, *offsetp, 1, byte_order);
24426     *offsetp += 1;
24427     {
24428         const int* found_bits [] = {
24429         &hf_x11_xkb_GetKbdByName_reply_found_mask_Types,
24430         &hf_x11_xkb_GetKbdByName_reply_found_mask_CompatMap,
24431         &hf_x11_xkb_GetKbdByName_reply_found_mask_ClientSymbols,
24432         &hf_x11_xkb_GetKbdByName_reply_found_mask_ServerSymbols,
24433         &hf_x11_xkb_GetKbdByName_reply_found_mask_IndicatorMaps,
24434         &hf_x11_xkb_GetKbdByName_reply_found_mask_KeyNames,
24435         &hf_x11_xkb_GetKbdByName_reply_found_mask_Geometry,
24436         &hf_x11_xkb_GetKbdByName_reply_found_mask_OtherNames,
24437         };
24438         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_found, ett_x11_rectangle, found_bits, byte_order);
24439     }
24440     *offsetp += 2;
24441     f_reported = VALUE16(tvb, *offsetp);
24442     {
24443         const int* reported_bits [] = {
24444         &hf_x11_xkb_GetKbdByName_reply_reported_mask_Types,
24445         &hf_x11_xkb_GetKbdByName_reply_reported_mask_CompatMap,
24446         &hf_x11_xkb_GetKbdByName_reply_reported_mask_ClientSymbols,
24447         &hf_x11_xkb_GetKbdByName_reply_reported_mask_ServerSymbols,
24448         &hf_x11_xkb_GetKbdByName_reply_reported_mask_IndicatorMaps,
24449         &hf_x11_xkb_GetKbdByName_reply_reported_mask_KeyNames,
24450         &hf_x11_xkb_GetKbdByName_reply_reported_mask_Geometry,
24451         &hf_x11_xkb_GetKbdByName_reply_reported_mask_OtherNames,
24452         };
24453         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_reported, ett_x11_rectangle, reported_bits, byte_order);
24454     }
24455     *offsetp += 2;
24456     UNUSED(16);
24457     if ((f_reported & (1U << 0)) || (f_reported & (1U << 2)) || (f_reported & (1U << 3))) {
24458         int f_present;
24459         int f_nTypes;
24460         int f_nKeySyms;
24461         int f_totalActions;
24462         int f_nKeyActions;
24463         int f_totalKeyBehaviors;
24464         int f_totalKeyExplicit;
24465         int f_totalModMapKeys;
24466         int f_totalVModMapKeys;
24467         int f_virtualMods;
24468         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_type, tvb, *offsetp, 1, byte_order);
24469         *offsetp += 1;
24470         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeDeviceID, tvb, *offsetp, 1, byte_order);
24471         *offsetp += 1;
24472         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_sequence, tvb, *offsetp, 2, byte_order);
24473         *offsetp += 2;
24474         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_length, tvb, *offsetp, 4, byte_order);
24475         *offsetp += 4;
24476         UNUSED(2);
24477         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMinKeyCode, tvb, *offsetp, 1, byte_order);
24478         *offsetp += 1;
24479         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMaxKeyCode, tvb, *offsetp, 1, byte_order);
24480         *offsetp += 1;
24481         f_present = VALUE16(tvb, *offsetp);
24482         {
24483             const int* present_bits [] = {
24484                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_KeyTypes,
24485                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_KeySyms,
24486                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_ModifierMap,
24487                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_ExplicitComponents,
24488                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_KeyActions,
24489                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_KeyBehaviors,
24490                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_VirtualMods,
24491                 &hf_x11_xkb_GetKbdByName_reply_Types_present_mask_VirtualModMap,
24492             };
24493             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_Types_present, ett_x11_rectangle, present_bits, byte_order);
24494         }
24495         *offsetp += 2;
24496         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstType, tvb, *offsetp, 1, byte_order);
24497         *offsetp += 1;
24498         f_nTypes = VALUE8(tvb, *offsetp);
24499         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nTypes, tvb, *offsetp, 1, byte_order);
24500         *offsetp += 1;
24501         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalTypes, tvb, *offsetp, 1, byte_order);
24502         *offsetp += 1;
24503         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeySym, tvb, *offsetp, 1, byte_order);
24504         *offsetp += 1;
24505         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalSyms, tvb, *offsetp, 2, byte_order);
24506         *offsetp += 2;
24507         f_nKeySyms = VALUE8(tvb, *offsetp);
24508         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeySyms, tvb, *offsetp, 1, byte_order);
24509         *offsetp += 1;
24510         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyAction, tvb, *offsetp, 1, byte_order);
24511         *offsetp += 1;
24512         f_totalActions = VALUE16(tvb, *offsetp);
24513         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalActions, tvb, *offsetp, 2, byte_order);
24514         *offsetp += 2;
24515         f_nKeyActions = VALUE8(tvb, *offsetp);
24516         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyActions, tvb, *offsetp, 1, byte_order);
24517         *offsetp += 1;
24518         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
24519         *offsetp += 1;
24520         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
24521         *offsetp += 1;
24522         f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
24523         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
24524         *offsetp += 1;
24525         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
24526         *offsetp += 1;
24527         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyExplicit, tvb, *offsetp, 1, byte_order);
24528         *offsetp += 1;
24529         f_totalKeyExplicit = VALUE8(tvb, *offsetp);
24530         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
24531         *offsetp += 1;
24532         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstModMapKey, tvb, *offsetp, 1, byte_order);
24533         *offsetp += 1;
24534         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nModMapKeys, tvb, *offsetp, 1, byte_order);
24535         *offsetp += 1;
24536         f_totalModMapKeys = VALUE8(tvb, *offsetp);
24537         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalModMapKeys, tvb, *offsetp, 1, byte_order);
24538         *offsetp += 1;
24539         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstVModMapKey, tvb, *offsetp, 1, byte_order);
24540         *offsetp += 1;
24541         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nVModMapKeys, tvb, *offsetp, 1, byte_order);
24542         *offsetp += 1;
24543         f_totalVModMapKeys = VALUE8(tvb, *offsetp);
24544         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
24545         *offsetp += 1;
24546         UNUSED(1);
24547         f_virtualMods = VALUE16(tvb, *offsetp);
24548         {
24549             const int* virtualMods_bits [] = {
24550                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_0,
24551                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_1,
24552                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_2,
24553                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_3,
24554                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_4,
24555                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_5,
24556                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_6,
24557                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_7,
24558                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_8,
24559                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_9,
24560                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_10,
24561                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_11,
24562                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_12,
24563                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_13,
24564                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_14,
24565                 &hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_15,
24566             };
24567             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
24568         }
24569         *offsetp += 2;
24570         if (f_present & (1U << 0)) {
24571             struct_xkb_KeyType(tvb, offsetp, t, byte_order, f_nTypes);
24572         }
24573         if (f_present & (1U << 1)) {
24574             struct_xkb_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
24575         }
24576         if (f_present & (1U << 4)) {
24577             listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_KeyActions_acts_rtrn_count, f_nKeyActions, byte_order);
24578             if (*offsetp % 4) {
24579                 UNUSED(4 - *offsetp % 4);
24580             }
24581             struct_xkb_Action(tvb, offsetp, t, byte_order, f_totalActions);
24582         }
24583         if (f_present & (1U << 5)) {
24584             struct_xkb_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
24585         }
24586         if (f_present & (1U << 6)) {
24587             listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_VirtualMods_vmods_rtrn, popcount(f_virtualMods), byte_order);
24588             if (*offsetp % 4) {
24589                 UNUSED(4 - *offsetp % 4);
24590             }
24591         }
24592         if (f_present & (1U << 3)) {
24593             struct_xkb_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
24594             if (*offsetp % 4) {
24595                 UNUSED(4 - *offsetp % 4);
24596             }
24597         }
24598         if (f_present & (1U << 2)) {
24599             struct_xkb_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
24600             if (*offsetp % 4) {
24601                 UNUSED(4 - *offsetp % 4);
24602             }
24603         }
24604         if (f_present & (1U << 7)) {
24605             struct_xkb_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
24606         }
24607     }
24608     if (f_reported & (1U << 1)) {
24609         int f_groupsRtrn;
24610         int f_nSIRtrn;
24611         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_compatmap_type, tvb, *offsetp, 1, byte_order);
24612         *offsetp += 1;
24613         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_compatDeviceID, tvb, *offsetp, 1, byte_order);
24614         *offsetp += 1;
24615         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_compatmap_sequence, tvb, *offsetp, 2, byte_order);
24616         *offsetp += 2;
24617         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_compatmap_length, tvb, *offsetp, 4, byte_order);
24618         *offsetp += 4;
24619         f_groupsRtrn = VALUE8(tvb, *offsetp);
24620         {
24621             const int* groupsRtrn_bits [] = {
24622                 &hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group1,
24623                 &hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group2,
24624                 &hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group3,
24625                 &hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group4,
24626             };
24627             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn, ett_x11_rectangle, groupsRtrn_bits, byte_order);
24628         }
24629         *offsetp += 1;
24630         UNUSED(1);
24631         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_firstSIRtrn, tvb, *offsetp, 2, byte_order);
24632         *offsetp += 2;
24633         f_nSIRtrn = VALUE16(tvb, *offsetp);
24634         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nSIRtrn, tvb, *offsetp, 2, byte_order);
24635         *offsetp += 2;
24636         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nTotalSI, tvb, *offsetp, 2, byte_order);
24637         *offsetp += 2;
24638         UNUSED(16);
24639         struct_xkb_SymInterpret(tvb, offsetp, t, byte_order, f_nSIRtrn);
24640         struct_xkb_ModDef(tvb, offsetp, t, byte_order, popcount(f_groupsRtrn));
24641     }
24642     if (f_reported & (1U << 4)) {
24643         int f_nIndicators;
24644         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_indicatormap_type, tvb, *offsetp, 1, byte_order);
24645         *offsetp += 1;
24646         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_indicatorDeviceID, tvb, *offsetp, 1, byte_order);
24647         *offsetp += 1;
24648         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_indicatormap_sequence, tvb, *offsetp, 2, byte_order);
24649         *offsetp += 2;
24650         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_indicatormap_length, tvb, *offsetp, 4, byte_order);
24651         *offsetp += 4;
24652         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_which, tvb, *offsetp, 4, byte_order);
24653         *offsetp += 4;
24654         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_realIndicators, tvb, *offsetp, 4, byte_order);
24655         *offsetp += 4;
24656         f_nIndicators = VALUE8(tvb, *offsetp);
24657         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_nIndicators, tvb, *offsetp, 1, byte_order);
24658         *offsetp += 1;
24659         UNUSED(15);
24660         struct_xkb_IndicatorMap(tvb, offsetp, t, byte_order, f_nIndicators);
24661     }
24662     if ((f_reported & (1U << 5)) || (f_reported & (1U << 7))) {
24663         int f_which;
24664         int f_nTypes;
24665         int f_groupNames;
24666         int f_virtualMods;
24667         int f_nKeys;
24668         int f_indicators;
24669         int f_nRadioGroups;
24670         int f_nKeyAliases;
24671         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyname_type, tvb, *offsetp, 1, byte_order);
24672         *offsetp += 1;
24673         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyDeviceID, tvb, *offsetp, 1, byte_order);
24674         *offsetp += 1;
24675         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyname_sequence, tvb, *offsetp, 2, byte_order);
24676         *offsetp += 2;
24677         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyname_length, tvb, *offsetp, 4, byte_order);
24678         *offsetp += 4;
24679         f_which = VALUE32(tvb, *offsetp);
24680         {
24681             const int* which_bits [] = {
24682                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Keycodes,
24683                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Geometry,
24684                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Symbols,
24685                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_PhysSymbols,
24686                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Types,
24687                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Compat,
24688                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyTypeNames,
24689                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KTLevelNames,
24690                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_IndicatorNames,
24691                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyNames,
24692                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyAliases,
24693                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_VirtualModNames,
24694                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_GroupNames,
24695                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_RGNames,
24696             };
24697             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_KeyNames_which, ett_x11_rectangle, which_bits, byte_order);
24698         }
24699         *offsetp += 4;
24700         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMinKeyCode, tvb, *offsetp, 1, byte_order);
24701         *offsetp += 1;
24702         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMaxKeyCode, tvb, *offsetp, 1, byte_order);
24703         *offsetp += 1;
24704         f_nTypes = VALUE8(tvb, *offsetp);
24705         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nTypes, tvb, *offsetp, 1, byte_order);
24706         *offsetp += 1;
24707         f_groupNames = VALUE8(tvb, *offsetp);
24708         {
24709             const int* groupNames_bits [] = {
24710                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group1,
24711                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group2,
24712                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group3,
24713                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group4,
24714             };
24715             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames, ett_x11_rectangle, groupNames_bits, byte_order);
24716         }
24717         *offsetp += 1;
24718         f_virtualMods = VALUE16(tvb, *offsetp);
24719         {
24720             const int* virtualMods_bits [] = {
24721                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_0,
24722                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_1,
24723                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_2,
24724                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_3,
24725                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_4,
24726                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_5,
24727                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_6,
24728                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_7,
24729                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_8,
24730                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_9,
24731                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_10,
24732                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_11,
24733                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_12,
24734                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_13,
24735                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_14,
24736                 &hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_15,
24737             };
24738             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
24739         }
24740         *offsetp += 2;
24741         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_firstKey, tvb, *offsetp, 1, byte_order);
24742         *offsetp += 1;
24743         f_nKeys = VALUE8(tvb, *offsetp);
24744         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeys, tvb, *offsetp, 1, byte_order);
24745         *offsetp += 1;
24746         f_indicators = VALUE32(tvb, *offsetp);
24747         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_indicators, tvb, *offsetp, 4, byte_order);
24748         *offsetp += 4;
24749         f_nRadioGroups = VALUE8(tvb, *offsetp);
24750         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nRadioGroups, tvb, *offsetp, 1, byte_order);
24751         *offsetp += 1;
24752         f_nKeyAliases = VALUE8(tvb, *offsetp);
24753         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeyAliases, tvb, *offsetp, 1, byte_order);
24754         *offsetp += 1;
24755         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKTLevels, tvb, *offsetp, 2, byte_order);
24756         *offsetp += 2;
24757         UNUSED(4);
24758         if (f_which & (1U << 0)) {
24759             proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Keycodes_keycodesName, tvb, *offsetp, 4, byte_order);
24760             *offsetp += 4;
24761         }
24762         if (f_which & (1U << 1)) {
24763             proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Geometry_geometryName, tvb, *offsetp, 4, byte_order);
24764             *offsetp += 4;
24765         }
24766         if (f_which & (1U << 2)) {
24767             proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Symbols_symbolsName, tvb, *offsetp, 4, byte_order);
24768             *offsetp += 4;
24769         }
24770         if (f_which & (1U << 3)) {
24771             proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, byte_order);
24772             *offsetp += 4;
24773         }
24774         if (f_which & (1U << 4)) {
24775             proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Types_typesName, tvb, *offsetp, 4, byte_order);
24776             *offsetp += 4;
24777         }
24778         if (f_which & (1U << 5)) {
24779             proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Compat_compatName, tvb, *offsetp, 4, byte_order);
24780             *offsetp += 4;
24781         }
24782         if (f_which & (1U << 6)) {
24783             listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames_item, f_nTypes, byte_order);
24784         }
24785         if (f_which & (1U << 7)) {
24786             int sumof_nLevelsPerType = 0;
24787             {
24788                 int i;
24789                 for (i = 0; i < f_nTypes; i++) {
24790                     sumof_nLevelsPerType += VALUE8(tvb, *offsetp + i * 1);
24791                 }
24792             }
24793             listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_nLevelsPerType, f_nTypes, byte_order);
24794             if (*offsetp % 4) {
24795                 UNUSED(4 - *offsetp % 4);
24796             }
24797             listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames_item, sumof_nLevelsPerType, byte_order);
24798         }
24799         if (f_which & (1U << 8)) {
24800             listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), byte_order);
24801         }
24802         if (f_which & (1U << 11)) {
24803             listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), byte_order);
24804         }
24805         if (f_which & (1U << 12)) {
24806             listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups_item, popcount(f_groupNames), byte_order);
24807         }
24808         if (f_which & (1U << 9)) {
24809             struct_xkb_KeyName(tvb, offsetp, t, byte_order, f_nKeys);
24810         }
24811         if (f_which & (1U << 10)) {
24812             struct_xkb_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
24813         }
24814         if (f_which & (1U << 13)) {
24815             listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames_item, f_nRadioGroups, byte_order);
24816         }
24817     }
24818     if (f_reported & (1U << 6)) {
24819         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometry_type, tvb, *offsetp, 1, byte_order);
24820         *offsetp += 1;
24821         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryDeviceID, tvb, *offsetp, 1, byte_order);
24822         *offsetp += 1;
24823         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometry_sequence, tvb, *offsetp, 2, byte_order);
24824         *offsetp += 2;
24825         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometry_length, tvb, *offsetp, 4, byte_order);
24826         *offsetp += 4;
24827         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_name, tvb, *offsetp, 4, byte_order);
24828         *offsetp += 4;
24829         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryFound, tvb, *offsetp, 1, byte_order);
24830         *offsetp += 1;
24831         UNUSED(1);
24832         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_widthMM, tvb, *offsetp, 2, byte_order);
24833         *offsetp += 2;
24834         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_heightMM, tvb, *offsetp, 2, byte_order);
24835         *offsetp += 2;
24836         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nProperties, tvb, *offsetp, 2, byte_order);
24837         *offsetp += 2;
24838         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nColors, tvb, *offsetp, 2, byte_order);
24839         *offsetp += 2;
24840         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nShapes, tvb, *offsetp, 2, byte_order);
24841         *offsetp += 2;
24842         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nSections, tvb, *offsetp, 2, byte_order);
24843         *offsetp += 2;
24844         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nDoodads, tvb, *offsetp, 2, byte_order);
24845         *offsetp += 2;
24846         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nKeyAliases, tvb, *offsetp, 2, byte_order);
24847         *offsetp += 2;
24848         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_baseColorNdx, tvb, *offsetp, 1, byte_order);
24849         *offsetp += 1;
24850         proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_labelColorNdx, tvb, *offsetp, 1, byte_order);
24851         *offsetp += 1;
24852         struct_xkb_CountedString16(tvb, offsetp, t, byte_order, 1);
24853     }
24854 }
24855
24856 static void xkbGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
24857 {
24858     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_deviceSpec, tvb, *offsetp, 2, byte_order);
24859     *offsetp += 2;
24860     {
24861         const int* wanted_bits [] = {
24862         &hf_x11_xkb_GetDeviceInfo_wanted_mask_Keyboards,
24863         &hf_x11_xkb_GetDeviceInfo_wanted_mask_ButtonActions,
24864         &hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorNames,
24865         &hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorMaps,
24866         &hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorState,
24867         };
24868         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetDeviceInfo_wanted, ett_x11_rectangle, wanted_bits, byte_order);
24869     }
24870     *offsetp += 2;
24871     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_allButtons, tvb, *offsetp, 1, byte_order);
24872     *offsetp += 1;
24873     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_firstButton, tvb, *offsetp, 1, byte_order);
24874     *offsetp += 1;
24875     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_nButtons, tvb, *offsetp, 1, byte_order);
24876     *offsetp += 1;
24877     UNUSED(1);
24878     field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledClass, byte_order);
24879     field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledID, byte_order);
24880 }
24881 static void xkbGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
24882 {
24883     int sequence_number;
24884     int f_nDeviceLedFBs;
24885     int f_nBtnsRtrn;
24886     int f_nameLen;
24887
24888     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceInfo");
24889
24890     REPLY(reply);
24891     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_deviceID, tvb, *offsetp, 1, byte_order);
24892     *offsetp += 1;
24893     sequence_number = VALUE16(tvb, *offsetp);
24894     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
24895             "%d (xkb-GetDeviceInfo)", sequence_number);
24896     *offsetp += 2;
24897     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
24898     *offsetp += 4;
24899     {
24900         const int* present_bits [] = {
24901         &hf_x11_xkb_GetDeviceInfo_reply_present_mask_Keyboards,
24902         &hf_x11_xkb_GetDeviceInfo_reply_present_mask_ButtonActions,
24903         &hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorNames,
24904         &hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorMaps,
24905         &hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorState,
24906         };
24907         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetDeviceInfo_reply_present, ett_x11_rectangle, present_bits, byte_order);
24908     }
24909     *offsetp += 2;
24910     {
24911         const int* supported_bits [] = {
24912         &hf_x11_xkb_GetDeviceInfo_reply_supported_mask_Keyboards,
24913         &hf_x11_xkb_GetDeviceInfo_reply_supported_mask_ButtonActions,
24914         &hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorNames,
24915         &hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorMaps,
24916         &hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorState,
24917         };
24918         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetDeviceInfo_reply_supported, ett_x11_rectangle, supported_bits, byte_order);
24919     }
24920     *offsetp += 2;
24921     {
24922         const int* unsupported_bits [] = {
24923         &hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_Keyboards,
24924         &hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_ButtonActions,
24925         &hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorNames,
24926         &hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorMaps,
24927         &hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorState,
24928         };
24929         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_GetDeviceInfo_reply_unsupported, ett_x11_rectangle, unsupported_bits, byte_order);
24930     }
24931     *offsetp += 2;
24932     f_nDeviceLedFBs = VALUE16(tvb, *offsetp);
24933     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nDeviceLedFBs, tvb, *offsetp, 2, byte_order);
24934     *offsetp += 2;
24935     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnWanted, tvb, *offsetp, 1, byte_order);
24936     *offsetp += 1;
24937     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsWanted, tvb, *offsetp, 1, byte_order);
24938     *offsetp += 1;
24939     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnRtrn, tvb, *offsetp, 1, byte_order);
24940     *offsetp += 1;
24941     f_nBtnsRtrn = VALUE8(tvb, *offsetp);
24942     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsRtrn, tvb, *offsetp, 1, byte_order);
24943     *offsetp += 1;
24944     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_totalBtns, tvb, *offsetp, 1, byte_order);
24945     *offsetp += 1;
24946     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_hasOwnState, tvb, *offsetp, 1, byte_order);
24947     *offsetp += 1;
24948     field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltKbdFB, byte_order);
24949     field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltLedFB, byte_order);
24950     UNUSED(2);
24951     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_devType, tvb, *offsetp, 4, byte_order);
24952     *offsetp += 4;
24953     f_nameLen = VALUE16(tvb, *offsetp);
24954     proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nameLen, tvb, *offsetp, 2, byte_order);
24955     *offsetp += 2;
24956     listOfByte(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_name, f_nameLen, byte_order);
24957     if (*offsetp % 4) {
24958         UNUSED(4 - *offsetp % 4);
24959     }
24960     struct_xkb_Action(tvb, offsetp, t, byte_order, f_nBtnsRtrn);
24961     struct_xkb_DeviceLedInfo(tvb, offsetp, t, byte_order, f_nDeviceLedFBs);
24962 }
24963
24964 static void xkbSetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
24965 {
24966     int f_nBtns;
24967     int f_nDeviceLedFBs;
24968     proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_deviceSpec, tvb, *offsetp, 2, byte_order);
24969     *offsetp += 2;
24970     proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_firstBtn, tvb, *offsetp, 1, byte_order);
24971     *offsetp += 1;
24972     f_nBtns = VALUE8(tvb, *offsetp);
24973     proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nBtns, tvb, *offsetp, 1, byte_order);
24974     *offsetp += 1;
24975     {
24976         const int* change_bits [] = {
24977         &hf_x11_xkb_SetDeviceInfo_change_mask_Keyboards,
24978         &hf_x11_xkb_SetDeviceInfo_change_mask_ButtonActions,
24979         &hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorNames,
24980         &hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorMaps,
24981         &hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorState,
24982         };
24983         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_SetDeviceInfo_change, ett_x11_rectangle, change_bits, byte_order);
24984     }
24985     *offsetp += 2;
24986     f_nDeviceLedFBs = VALUE16(tvb, *offsetp);
24987     proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nDeviceLedFBs, tvb, *offsetp, 2, byte_order);
24988     *offsetp += 2;
24989     struct_xkb_Action(tvb, offsetp, t, byte_order, f_nBtns);
24990     length -= f_nBtns * 8;
24991     struct_xkb_DeviceLedInfo(tvb, offsetp, t, byte_order, f_nDeviceLedFBs);
24992     length -= f_nDeviceLedFBs * 0;
24993 }
24994
24995 static void xkbSetDebuggingFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
24996 {
24997     int f_msgLength;
24998     f_msgLength = VALUE16(tvb, *offsetp);
24999     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_msgLength, tvb, *offsetp, 2, byte_order);
25000     *offsetp += 2;
25001     UNUSED(2);
25002     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectFlags, tvb, *offsetp, 4, byte_order);
25003     *offsetp += 4;
25004     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_flags, tvb, *offsetp, 4, byte_order);
25005     *offsetp += 4;
25006     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectCtrls, tvb, *offsetp, 4, byte_order);
25007     *offsetp += 4;
25008     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_ctrls, tvb, *offsetp, 4, byte_order);
25009     *offsetp += 4;
25010     listOfByte(tvb, offsetp, t, hf_x11_xkb_SetDebuggingFlags_message, f_msgLength, byte_order);
25011     length -= f_msgLength * 1;
25012 }
25013 static void xkbSetDebuggingFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
25014 {
25015     int sequence_number;
25016
25017     col_append_fstr(pinfo->cinfo, COL_INFO, "-SetDebuggingFlags");
25018
25019     REPLY(reply);
25020     UNUSED(1);
25021     sequence_number = VALUE16(tvb, *offsetp);
25022     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
25023             "%d (xkb-SetDebuggingFlags)", sequence_number);
25024     *offsetp += 2;
25025     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
25026     *offsetp += 4;
25027     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentFlags, tvb, *offsetp, 4, byte_order);
25028     *offsetp += 4;
25029     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentCtrls, tvb, *offsetp, 4, byte_order);
25030     *offsetp += 4;
25031     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedFlags, tvb, *offsetp, 4, byte_order);
25032     *offsetp += 4;
25033     proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedCtrls, tvb, *offsetp, 4, byte_order);
25034     *offsetp += 4;
25035     UNUSED(8);
25036 }
25037
25038 static void xkbMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25039 {
25040     proto_tree_add_item(t, hf_x11_xkb_MapNotify_xkbType, tvb, *offsetp, 1, byte_order);
25041     *offsetp += 1;
25042     CARD16(event_sequencenumber);
25043     proto_tree_add_item(t, hf_x11_xkb_MapNotify_time, tvb, *offsetp, 4, byte_order);
25044     *offsetp += 4;
25045     proto_tree_add_item(t, hf_x11_xkb_MapNotify_deviceID, tvb, *offsetp, 1, byte_order);
25046     *offsetp += 1;
25047     proto_tree_add_item(t, hf_x11_xkb_MapNotify_ptrBtnActions, tvb, *offsetp, 1, byte_order);
25048     *offsetp += 1;
25049     {
25050         const int* changed_bits [] = {
25051         &hf_x11_xkb_MapNotify_changed_mask_KeyTypes,
25052         &hf_x11_xkb_MapNotify_changed_mask_KeySyms,
25053         &hf_x11_xkb_MapNotify_changed_mask_ModifierMap,
25054         &hf_x11_xkb_MapNotify_changed_mask_ExplicitComponents,
25055         &hf_x11_xkb_MapNotify_changed_mask_KeyActions,
25056         &hf_x11_xkb_MapNotify_changed_mask_KeyBehaviors,
25057         &hf_x11_xkb_MapNotify_changed_mask_VirtualMods,
25058         &hf_x11_xkb_MapNotify_changed_mask_VirtualModMap,
25059         };
25060         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_MapNotify_changed, ett_x11_rectangle, changed_bits, byte_order);
25061     }
25062     *offsetp += 2;
25063     proto_tree_add_item(t, hf_x11_xkb_MapNotify_minKeyCode, tvb, *offsetp, 1, byte_order);
25064     *offsetp += 1;
25065     proto_tree_add_item(t, hf_x11_xkb_MapNotify_maxKeyCode, tvb, *offsetp, 1, byte_order);
25066     *offsetp += 1;
25067     proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstType, tvb, *offsetp, 1, byte_order);
25068     *offsetp += 1;
25069     proto_tree_add_item(t, hf_x11_xkb_MapNotify_nTypes, tvb, *offsetp, 1, byte_order);
25070     *offsetp += 1;
25071     proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeySym, tvb, *offsetp, 1, byte_order);
25072     *offsetp += 1;
25073     proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeySyms, tvb, *offsetp, 1, byte_order);
25074     *offsetp += 1;
25075     proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyAct, tvb, *offsetp, 1, byte_order);
25076     *offsetp += 1;
25077     proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyActs, tvb, *offsetp, 1, byte_order);
25078     *offsetp += 1;
25079     proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
25080     *offsetp += 1;
25081     proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyBehavior, tvb, *offsetp, 1, byte_order);
25082     *offsetp += 1;
25083     proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
25084     *offsetp += 1;
25085     proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyExplicit, tvb, *offsetp, 1, byte_order);
25086     *offsetp += 1;
25087     proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstModMapKey, tvb, *offsetp, 1, byte_order);
25088     *offsetp += 1;
25089     proto_tree_add_item(t, hf_x11_xkb_MapNotify_nModMapKeys, tvb, *offsetp, 1, byte_order);
25090     *offsetp += 1;
25091     proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstVModMapKey, tvb, *offsetp, 1, byte_order);
25092     *offsetp += 1;
25093     proto_tree_add_item(t, hf_x11_xkb_MapNotify_nVModMapKeys, tvb, *offsetp, 1, byte_order);
25094     *offsetp += 1;
25095     {
25096         const int* virtualMods_bits [] = {
25097         &hf_x11_xkb_MapNotify_virtualMods_mask_0,
25098         &hf_x11_xkb_MapNotify_virtualMods_mask_1,
25099         &hf_x11_xkb_MapNotify_virtualMods_mask_2,
25100         &hf_x11_xkb_MapNotify_virtualMods_mask_3,
25101         &hf_x11_xkb_MapNotify_virtualMods_mask_4,
25102         &hf_x11_xkb_MapNotify_virtualMods_mask_5,
25103         &hf_x11_xkb_MapNotify_virtualMods_mask_6,
25104         &hf_x11_xkb_MapNotify_virtualMods_mask_7,
25105         &hf_x11_xkb_MapNotify_virtualMods_mask_8,
25106         &hf_x11_xkb_MapNotify_virtualMods_mask_9,
25107         &hf_x11_xkb_MapNotify_virtualMods_mask_10,
25108         &hf_x11_xkb_MapNotify_virtualMods_mask_11,
25109         &hf_x11_xkb_MapNotify_virtualMods_mask_12,
25110         &hf_x11_xkb_MapNotify_virtualMods_mask_13,
25111         &hf_x11_xkb_MapNotify_virtualMods_mask_14,
25112         &hf_x11_xkb_MapNotify_virtualMods_mask_15,
25113         };
25114         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_MapNotify_virtualMods, ett_x11_rectangle, virtualMods_bits, byte_order);
25115     }
25116     *offsetp += 2;
25117     UNUSED(2);
25118 }
25119
25120
25121 static void xkbStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25122 {
25123     proto_tree_add_item(t, hf_x11_xkb_StateNotify_xkbType, tvb, *offsetp, 1, byte_order);
25124     *offsetp += 1;
25125     CARD16(event_sequencenumber);
25126     proto_tree_add_item(t, hf_x11_xkb_StateNotify_time, tvb, *offsetp, 4, byte_order);
25127     *offsetp += 4;
25128     proto_tree_add_item(t, hf_x11_xkb_StateNotify_deviceID, tvb, *offsetp, 1, byte_order);
25129     *offsetp += 1;
25130     {
25131         const int* mods_bits [] = {
25132         &hf_x11_xkb_StateNotify_mods_mask_Shift,
25133         &hf_x11_xkb_StateNotify_mods_mask_Lock,
25134         &hf_x11_xkb_StateNotify_mods_mask_Control,
25135         &hf_x11_xkb_StateNotify_mods_mask_1,
25136         &hf_x11_xkb_StateNotify_mods_mask_2,
25137         &hf_x11_xkb_StateNotify_mods_mask_3,
25138         &hf_x11_xkb_StateNotify_mods_mask_4,
25139         &hf_x11_xkb_StateNotify_mods_mask_5,
25140         &hf_x11_xkb_StateNotify_mods_mask_Any,
25141         };
25142         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_mods, ett_x11_rectangle, mods_bits, byte_order);
25143     }
25144     *offsetp += 1;
25145     {
25146         const int* baseMods_bits [] = {
25147         &hf_x11_xkb_StateNotify_baseMods_mask_Shift,
25148         &hf_x11_xkb_StateNotify_baseMods_mask_Lock,
25149         &hf_x11_xkb_StateNotify_baseMods_mask_Control,
25150         &hf_x11_xkb_StateNotify_baseMods_mask_1,
25151         &hf_x11_xkb_StateNotify_baseMods_mask_2,
25152         &hf_x11_xkb_StateNotify_baseMods_mask_3,
25153         &hf_x11_xkb_StateNotify_baseMods_mask_4,
25154         &hf_x11_xkb_StateNotify_baseMods_mask_5,
25155         &hf_x11_xkb_StateNotify_baseMods_mask_Any,
25156         };
25157         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_baseMods, ett_x11_rectangle, baseMods_bits, byte_order);
25158     }
25159     *offsetp += 1;
25160     {
25161         const int* latchedMods_bits [] = {
25162         &hf_x11_xkb_StateNotify_latchedMods_mask_Shift,
25163         &hf_x11_xkb_StateNotify_latchedMods_mask_Lock,
25164         &hf_x11_xkb_StateNotify_latchedMods_mask_Control,
25165         &hf_x11_xkb_StateNotify_latchedMods_mask_1,
25166         &hf_x11_xkb_StateNotify_latchedMods_mask_2,
25167         &hf_x11_xkb_StateNotify_latchedMods_mask_3,
25168         &hf_x11_xkb_StateNotify_latchedMods_mask_4,
25169         &hf_x11_xkb_StateNotify_latchedMods_mask_5,
25170         &hf_x11_xkb_StateNotify_latchedMods_mask_Any,
25171         };
25172         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_latchedMods, ett_x11_rectangle, latchedMods_bits, byte_order);
25173     }
25174     *offsetp += 1;
25175     {
25176         const int* lockedMods_bits [] = {
25177         &hf_x11_xkb_StateNotify_lockedMods_mask_Shift,
25178         &hf_x11_xkb_StateNotify_lockedMods_mask_Lock,
25179         &hf_x11_xkb_StateNotify_lockedMods_mask_Control,
25180         &hf_x11_xkb_StateNotify_lockedMods_mask_1,
25181         &hf_x11_xkb_StateNotify_lockedMods_mask_2,
25182         &hf_x11_xkb_StateNotify_lockedMods_mask_3,
25183         &hf_x11_xkb_StateNotify_lockedMods_mask_4,
25184         &hf_x11_xkb_StateNotify_lockedMods_mask_5,
25185         &hf_x11_xkb_StateNotify_lockedMods_mask_Any,
25186         };
25187         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_lockedMods, ett_x11_rectangle, lockedMods_bits, byte_order);
25188     }
25189     *offsetp += 1;
25190     field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_group, byte_order);
25191     proto_tree_add_item(t, hf_x11_xkb_StateNotify_baseGroup, tvb, *offsetp, 2, byte_order);
25192     *offsetp += 2;
25193     proto_tree_add_item(t, hf_x11_xkb_StateNotify_latchedGroup, tvb, *offsetp, 2, byte_order);
25194     *offsetp += 2;
25195     field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_lockedGroup, byte_order);
25196     {
25197         const int* compatState_bits [] = {
25198         &hf_x11_xkb_StateNotify_compatState_mask_Shift,
25199         &hf_x11_xkb_StateNotify_compatState_mask_Lock,
25200         &hf_x11_xkb_StateNotify_compatState_mask_Control,
25201         &hf_x11_xkb_StateNotify_compatState_mask_1,
25202         &hf_x11_xkb_StateNotify_compatState_mask_2,
25203         &hf_x11_xkb_StateNotify_compatState_mask_3,
25204         &hf_x11_xkb_StateNotify_compatState_mask_4,
25205         &hf_x11_xkb_StateNotify_compatState_mask_5,
25206         &hf_x11_xkb_StateNotify_compatState_mask_Any,
25207         };
25208         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_compatState, ett_x11_rectangle, compatState_bits, byte_order);
25209     }
25210     *offsetp += 1;
25211     {
25212         const int* grabMods_bits [] = {
25213         &hf_x11_xkb_StateNotify_grabMods_mask_Shift,
25214         &hf_x11_xkb_StateNotify_grabMods_mask_Lock,
25215         &hf_x11_xkb_StateNotify_grabMods_mask_Control,
25216         &hf_x11_xkb_StateNotify_grabMods_mask_1,
25217         &hf_x11_xkb_StateNotify_grabMods_mask_2,
25218         &hf_x11_xkb_StateNotify_grabMods_mask_3,
25219         &hf_x11_xkb_StateNotify_grabMods_mask_4,
25220         &hf_x11_xkb_StateNotify_grabMods_mask_5,
25221         &hf_x11_xkb_StateNotify_grabMods_mask_Any,
25222         };
25223         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_grabMods, ett_x11_rectangle, grabMods_bits, byte_order);
25224     }
25225     *offsetp += 1;
25226     {
25227         const int* compatGrabMods_bits [] = {
25228         &hf_x11_xkb_StateNotify_compatGrabMods_mask_Shift,
25229         &hf_x11_xkb_StateNotify_compatGrabMods_mask_Lock,
25230         &hf_x11_xkb_StateNotify_compatGrabMods_mask_Control,
25231         &hf_x11_xkb_StateNotify_compatGrabMods_mask_1,
25232         &hf_x11_xkb_StateNotify_compatGrabMods_mask_2,
25233         &hf_x11_xkb_StateNotify_compatGrabMods_mask_3,
25234         &hf_x11_xkb_StateNotify_compatGrabMods_mask_4,
25235         &hf_x11_xkb_StateNotify_compatGrabMods_mask_5,
25236         &hf_x11_xkb_StateNotify_compatGrabMods_mask_Any,
25237         };
25238         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_compatGrabMods, ett_x11_rectangle, compatGrabMods_bits, byte_order);
25239     }
25240     *offsetp += 1;
25241     {
25242         const int* lookupMods_bits [] = {
25243         &hf_x11_xkb_StateNotify_lookupMods_mask_Shift,
25244         &hf_x11_xkb_StateNotify_lookupMods_mask_Lock,
25245         &hf_x11_xkb_StateNotify_lookupMods_mask_Control,
25246         &hf_x11_xkb_StateNotify_lookupMods_mask_1,
25247         &hf_x11_xkb_StateNotify_lookupMods_mask_2,
25248         &hf_x11_xkb_StateNotify_lookupMods_mask_3,
25249         &hf_x11_xkb_StateNotify_lookupMods_mask_4,
25250         &hf_x11_xkb_StateNotify_lookupMods_mask_5,
25251         &hf_x11_xkb_StateNotify_lookupMods_mask_Any,
25252         };
25253         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_lookupMods, ett_x11_rectangle, lookupMods_bits, byte_order);
25254     }
25255     *offsetp += 1;
25256     {
25257         const int* compatLoockupMods_bits [] = {
25258         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_Shift,
25259         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_Lock,
25260         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_Control,
25261         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_1,
25262         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_2,
25263         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_3,
25264         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_4,
25265         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_5,
25266         &hf_x11_xkb_StateNotify_compatLoockupMods_mask_Any,
25267         };
25268         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_compatLoockupMods, ett_x11_rectangle, compatLoockupMods_bits, byte_order);
25269     }
25270     *offsetp += 1;
25271     {
25272         const int* ptrBtnState_bits [] = {
25273         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Shift,
25274         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Lock,
25275         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Control,
25276         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod1,
25277         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod2,
25278         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod3,
25279         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod4,
25280         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod5,
25281         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Button1,
25282         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Button2,
25283         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Button3,
25284         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Button4,
25285         &hf_x11_xkb_StateNotify_ptrBtnState_mask_Button5,
25286         };
25287         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_ptrBtnState, ett_x11_rectangle, ptrBtnState_bits, byte_order);
25288     }
25289     *offsetp += 2;
25290     {
25291         const int* changed_bits [] = {
25292         &hf_x11_xkb_StateNotify_changed_mask_ModifierState,
25293         &hf_x11_xkb_StateNotify_changed_mask_ModifierBase,
25294         &hf_x11_xkb_StateNotify_changed_mask_ModifierLatch,
25295         &hf_x11_xkb_StateNotify_changed_mask_ModifierLock,
25296         &hf_x11_xkb_StateNotify_changed_mask_GroupState,
25297         &hf_x11_xkb_StateNotify_changed_mask_GroupBase,
25298         &hf_x11_xkb_StateNotify_changed_mask_GroupLatch,
25299         &hf_x11_xkb_StateNotify_changed_mask_GroupLock,
25300         &hf_x11_xkb_StateNotify_changed_mask_CompatState,
25301         &hf_x11_xkb_StateNotify_changed_mask_GrabMods,
25302         &hf_x11_xkb_StateNotify_changed_mask_CompatGrabMods,
25303         &hf_x11_xkb_StateNotify_changed_mask_LookupMods,
25304         &hf_x11_xkb_StateNotify_changed_mask_CompatLookupMods,
25305         &hf_x11_xkb_StateNotify_changed_mask_PointerButtons,
25306         };
25307         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_StateNotify_changed, ett_x11_rectangle, changed_bits, byte_order);
25308     }
25309     *offsetp += 2;
25310     proto_tree_add_item(t, hf_x11_xkb_StateNotify_keycode, tvb, *offsetp, 1, byte_order);
25311     *offsetp += 1;
25312     proto_tree_add_item(t, hf_x11_xkb_StateNotify_eventType, tvb, *offsetp, 1, byte_order);
25313     *offsetp += 1;
25314     proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMajor, tvb, *offsetp, 1, byte_order);
25315     *offsetp += 1;
25316     proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMinor, tvb, *offsetp, 1, byte_order);
25317     *offsetp += 1;
25318 }
25319
25320
25321 static void xkbControlsNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25322 {
25323     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_xkbType, tvb, *offsetp, 1, byte_order);
25324     *offsetp += 1;
25325     CARD16(event_sequencenumber);
25326     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_time, tvb, *offsetp, 4, byte_order);
25327     *offsetp += 4;
25328     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_deviceID, tvb, *offsetp, 1, byte_order);
25329     *offsetp += 1;
25330     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_numGroups, tvb, *offsetp, 1, byte_order);
25331     *offsetp += 1;
25332     UNUSED(2);
25333     {
25334         const int* changedControls_bits [] = {
25335         &hf_x11_xkb_ControlsNotify_changedControls_mask_GroupsWrap,
25336         &hf_x11_xkb_ControlsNotify_changedControls_mask_InternalMods,
25337         &hf_x11_xkb_ControlsNotify_changedControls_mask_IgnoreLockMods,
25338         &hf_x11_xkb_ControlsNotify_changedControls_mask_PerKeyRepeat,
25339         &hf_x11_xkb_ControlsNotify_changedControls_mask_ControlsEnabled,
25340         };
25341         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_ControlsNotify_changedControls, ett_x11_rectangle, changedControls_bits, byte_order);
25342     }
25343     *offsetp += 4;
25344     {
25345         const int* enabledControls_bits [] = {
25346         &hf_x11_xkb_ControlsNotify_enabledControls_mask_RepeatKeys,
25347         &hf_x11_xkb_ControlsNotify_enabledControls_mask_SlowKeys,
25348         &hf_x11_xkb_ControlsNotify_enabledControls_mask_BounceKeys,
25349         &hf_x11_xkb_ControlsNotify_enabledControls_mask_StickyKeys,
25350         &hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeys,
25351         &hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeysAccel,
25352         &hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXKeys,
25353         &hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXTimeoutMask,
25354         &hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXFeedbackMask,
25355         &hf_x11_xkb_ControlsNotify_enabledControls_mask_AudibleBellMask,
25356         &hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay1Mask,
25357         &hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay2Mask,
25358         &hf_x11_xkb_ControlsNotify_enabledControls_mask_IgnoreGroupLockMask,
25359         };
25360         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_ControlsNotify_enabledControls, ett_x11_rectangle, enabledControls_bits, byte_order);
25361     }
25362     *offsetp += 4;
25363     {
25364         const int* enabledControlChanges_bits [] = {
25365         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_RepeatKeys,
25366         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_SlowKeys,
25367         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_BounceKeys,
25368         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_StickyKeys,
25369         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeys,
25370         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeysAccel,
25371         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXKeys,
25372         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXTimeoutMask,
25373         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXFeedbackMask,
25374         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AudibleBellMask,
25375         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay1Mask,
25376         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay2Mask,
25377         &hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_IgnoreGroupLockMask,
25378         };
25379         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_ControlsNotify_enabledControlChanges, ett_x11_rectangle, enabledControlChanges_bits, byte_order);
25380     }
25381     *offsetp += 4;
25382     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_keycode, tvb, *offsetp, 1, byte_order);
25383     *offsetp += 1;
25384     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_eventType, tvb, *offsetp, 1, byte_order);
25385     *offsetp += 1;
25386     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMajor, tvb, *offsetp, 1, byte_order);
25387     *offsetp += 1;
25388     proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMinor, tvb, *offsetp, 1, byte_order);
25389     *offsetp += 1;
25390     UNUSED(4);
25391 }
25392
25393
25394 static void xkbIndicatorStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25395 {
25396     proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_xkbType, tvb, *offsetp, 1, byte_order);
25397     *offsetp += 1;
25398     CARD16(event_sequencenumber);
25399     proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_time, tvb, *offsetp, 4, byte_order);
25400     *offsetp += 4;
25401     proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_deviceID, tvb, *offsetp, 1, byte_order);
25402     *offsetp += 1;
25403     UNUSED(3);
25404     proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_state, tvb, *offsetp, 4, byte_order);
25405     *offsetp += 4;
25406     proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_stateChanged, tvb, *offsetp, 4, byte_order);
25407     *offsetp += 4;
25408     UNUSED(12);
25409 }
25410
25411
25412 static void xkbIndicatorMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25413 {
25414     proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_xkbType, tvb, *offsetp, 1, byte_order);
25415     *offsetp += 1;
25416     CARD16(event_sequencenumber);
25417     proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_time, tvb, *offsetp, 4, byte_order);
25418     *offsetp += 4;
25419     proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_deviceID, tvb, *offsetp, 1, byte_order);
25420     *offsetp += 1;
25421     UNUSED(3);
25422     proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_state, tvb, *offsetp, 4, byte_order);
25423     *offsetp += 4;
25424     proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_mapChanged, tvb, *offsetp, 4, byte_order);
25425     *offsetp += 4;
25426     UNUSED(12);
25427 }
25428
25429
25430 static void xkbNamesNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25431 {
25432     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_xkbType, tvb, *offsetp, 1, byte_order);
25433     *offsetp += 1;
25434     CARD16(event_sequencenumber);
25435     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_time, tvb, *offsetp, 4, byte_order);
25436     *offsetp += 4;
25437     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_deviceID, tvb, *offsetp, 1, byte_order);
25438     *offsetp += 1;
25439     UNUSED(1);
25440     {
25441         const int* changed_bits [] = {
25442         &hf_x11_xkb_NamesNotify_changed_mask_Keycodes,
25443         &hf_x11_xkb_NamesNotify_changed_mask_Geometry,
25444         &hf_x11_xkb_NamesNotify_changed_mask_Symbols,
25445         &hf_x11_xkb_NamesNotify_changed_mask_PhysSymbols,
25446         &hf_x11_xkb_NamesNotify_changed_mask_Types,
25447         &hf_x11_xkb_NamesNotify_changed_mask_Compat,
25448         &hf_x11_xkb_NamesNotify_changed_mask_KeyTypeNames,
25449         &hf_x11_xkb_NamesNotify_changed_mask_KTLevelNames,
25450         &hf_x11_xkb_NamesNotify_changed_mask_IndicatorNames,
25451         &hf_x11_xkb_NamesNotify_changed_mask_KeyNames,
25452         &hf_x11_xkb_NamesNotify_changed_mask_KeyAliases,
25453         &hf_x11_xkb_NamesNotify_changed_mask_VirtualModNames,
25454         &hf_x11_xkb_NamesNotify_changed_mask_GroupNames,
25455         &hf_x11_xkb_NamesNotify_changed_mask_RGNames,
25456         };
25457         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_NamesNotify_changed, ett_x11_rectangle, changed_bits, byte_order);
25458     }
25459     *offsetp += 2;
25460     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstType, tvb, *offsetp, 1, byte_order);
25461     *offsetp += 1;
25462     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nTypes, tvb, *offsetp, 1, byte_order);
25463     *offsetp += 1;
25464     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstLevelName, tvb, *offsetp, 1, byte_order);
25465     *offsetp += 1;
25466     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nLevelNames, tvb, *offsetp, 1, byte_order);
25467     *offsetp += 1;
25468     UNUSED(1);
25469     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nRadioGroups, tvb, *offsetp, 1, byte_order);
25470     *offsetp += 1;
25471     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeyAliases, tvb, *offsetp, 1, byte_order);
25472     *offsetp += 1;
25473     {
25474         const int* changedGroupNames_bits [] = {
25475         &hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group1,
25476         &hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group2,
25477         &hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group3,
25478         &hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group4,
25479         };
25480         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_NamesNotify_changedGroupNames, ett_x11_rectangle, changedGroupNames_bits, byte_order);
25481     }
25482     *offsetp += 1;
25483     {
25484         const int* changedVirtualMods_bits [] = {
25485         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_0,
25486         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_1,
25487         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_2,
25488         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_3,
25489         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_4,
25490         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_5,
25491         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_6,
25492         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_7,
25493         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_8,
25494         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_9,
25495         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_10,
25496         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_11,
25497         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_12,
25498         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_13,
25499         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_14,
25500         &hf_x11_xkb_NamesNotify_changedVirtualMods_mask_15,
25501         };
25502         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_NamesNotify_changedVirtualMods, ett_x11_rectangle, changedVirtualMods_bits, byte_order);
25503     }
25504     *offsetp += 2;
25505     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstKey, tvb, *offsetp, 1, byte_order);
25506     *offsetp += 1;
25507     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeys, tvb, *offsetp, 1, byte_order);
25508     *offsetp += 1;
25509     proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedIndicators, tvb, *offsetp, 4, byte_order);
25510     *offsetp += 4;
25511     UNUSED(4);
25512 }
25513
25514
25515 static void xkbCompatMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25516 {
25517     proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_xkbType, tvb, *offsetp, 1, byte_order);
25518     *offsetp += 1;
25519     CARD16(event_sequencenumber);
25520     proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_time, tvb, *offsetp, 4, byte_order);
25521     *offsetp += 4;
25522     proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_deviceID, tvb, *offsetp, 1, byte_order);
25523     *offsetp += 1;
25524     {
25525         const int* changedGroups_bits [] = {
25526         &hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group1,
25527         &hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group2,
25528         &hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group3,
25529         &hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group4,
25530         };
25531         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_CompatMapNotify_changedGroups, ett_x11_rectangle, changedGroups_bits, byte_order);
25532     }
25533     *offsetp += 1;
25534     proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_firstSI, tvb, *offsetp, 2, byte_order);
25535     *offsetp += 2;
25536     proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nSI, tvb, *offsetp, 2, byte_order);
25537     *offsetp += 2;
25538     proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nTotalSI, tvb, *offsetp, 2, byte_order);
25539     *offsetp += 2;
25540     UNUSED(16);
25541 }
25542
25543
25544 static void xkbBellNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25545 {
25546     proto_tree_add_item(t, hf_x11_xkb_BellNotify_xkbType, tvb, *offsetp, 1, byte_order);
25547     *offsetp += 1;
25548     CARD16(event_sequencenumber);
25549     proto_tree_add_item(t, hf_x11_xkb_BellNotify_time, tvb, *offsetp, 4, byte_order);
25550     *offsetp += 4;
25551     proto_tree_add_item(t, hf_x11_xkb_BellNotify_deviceID, tvb, *offsetp, 1, byte_order);
25552     *offsetp += 1;
25553     field8(tvb, offsetp, t, hf_x11_xkb_BellNotify_bellClass, byte_order);
25554     proto_tree_add_item(t, hf_x11_xkb_BellNotify_bellID, tvb, *offsetp, 1, byte_order);
25555     *offsetp += 1;
25556     proto_tree_add_item(t, hf_x11_xkb_BellNotify_percent, tvb, *offsetp, 1, byte_order);
25557     *offsetp += 1;
25558     proto_tree_add_item(t, hf_x11_xkb_BellNotify_pitch, tvb, *offsetp, 2, byte_order);
25559     *offsetp += 2;
25560     proto_tree_add_item(t, hf_x11_xkb_BellNotify_duration, tvb, *offsetp, 2, byte_order);
25561     *offsetp += 2;
25562     proto_tree_add_item(t, hf_x11_xkb_BellNotify_name, tvb, *offsetp, 4, byte_order);
25563     *offsetp += 4;
25564     proto_tree_add_item(t, hf_x11_xkb_BellNotify_window, tvb, *offsetp, 4, byte_order);
25565     *offsetp += 4;
25566     proto_tree_add_item(t, hf_x11_xkb_BellNotify_eventOnly, tvb, *offsetp, 1, byte_order);
25567     *offsetp += 1;
25568     UNUSED(7);
25569 }
25570
25571
25572 static void xkbActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25573 {
25574     proto_tree_add_item(t, hf_x11_xkb_ActionMessage_xkbType, tvb, *offsetp, 1, byte_order);
25575     *offsetp += 1;
25576     CARD16(event_sequencenumber);
25577     proto_tree_add_item(t, hf_x11_xkb_ActionMessage_time, tvb, *offsetp, 4, byte_order);
25578     *offsetp += 4;
25579     proto_tree_add_item(t, hf_x11_xkb_ActionMessage_deviceID, tvb, *offsetp, 1, byte_order);
25580     *offsetp += 1;
25581     proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keycode, tvb, *offsetp, 1, byte_order);
25582     *offsetp += 1;
25583     proto_tree_add_item(t, hf_x11_xkb_ActionMessage_press, tvb, *offsetp, 1, byte_order);
25584     *offsetp += 1;
25585     proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keyEventFollows, tvb, *offsetp, 1, byte_order);
25586     *offsetp += 1;
25587     {
25588         const int* mods_bits [] = {
25589         &hf_x11_xkb_ActionMessage_mods_mask_Shift,
25590         &hf_x11_xkb_ActionMessage_mods_mask_Lock,
25591         &hf_x11_xkb_ActionMessage_mods_mask_Control,
25592         &hf_x11_xkb_ActionMessage_mods_mask_1,
25593         &hf_x11_xkb_ActionMessage_mods_mask_2,
25594         &hf_x11_xkb_ActionMessage_mods_mask_3,
25595         &hf_x11_xkb_ActionMessage_mods_mask_4,
25596         &hf_x11_xkb_ActionMessage_mods_mask_5,
25597         &hf_x11_xkb_ActionMessage_mods_mask_Any,
25598         };
25599         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_ActionMessage_mods, ett_x11_rectangle, mods_bits, byte_order);
25600     }
25601     *offsetp += 1;
25602     field8(tvb, offsetp, t, hf_x11_xkb_ActionMessage_group, byte_order);
25603     listOfByte(tvb, offsetp, t, hf_x11_xkb_ActionMessage_message, 8, byte_order);
25604     UNUSED(10);
25605 }
25606
25607
25608 static void xkbAccessXNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25609 {
25610     proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_xkbType, tvb, *offsetp, 1, byte_order);
25611     *offsetp += 1;
25612     CARD16(event_sequencenumber);
25613     proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_time, tvb, *offsetp, 4, byte_order);
25614     *offsetp += 4;
25615     proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_deviceID, tvb, *offsetp, 1, byte_order);
25616     *offsetp += 1;
25617     proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_keycode, tvb, *offsetp, 1, byte_order);
25618     *offsetp += 1;
25619     {
25620         const int* detailt_bits [] = {
25621         &hf_x11_xkb_AccessXNotify_detailt_mask_SKPress,
25622         &hf_x11_xkb_AccessXNotify_detailt_mask_SKAccept,
25623         &hf_x11_xkb_AccessXNotify_detailt_mask_SKReject,
25624         &hf_x11_xkb_AccessXNotify_detailt_mask_SKRelease,
25625         &hf_x11_xkb_AccessXNotify_detailt_mask_BKAccept,
25626         &hf_x11_xkb_AccessXNotify_detailt_mask_BKReject,
25627         &hf_x11_xkb_AccessXNotify_detailt_mask_AXKWarning,
25628         };
25629         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_AccessXNotify_detailt, ett_x11_rectangle, detailt_bits, byte_order);
25630     }
25631     *offsetp += 2;
25632     proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_slowKeysDelay, tvb, *offsetp, 2, byte_order);
25633     *offsetp += 2;
25634     proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_debounceDelay, tvb, *offsetp, 2, byte_order);
25635     *offsetp += 2;
25636     UNUSED(16);
25637 }
25638
25639
25640 static void xkbExtensionDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
25641 {
25642     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_xkbType, tvb, *offsetp, 1, byte_order);
25643     *offsetp += 1;
25644     CARD16(event_sequencenumber);
25645     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_time, tvb, *offsetp, 4, byte_order);
25646     *offsetp += 4;
25647     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_deviceID, tvb, *offsetp, 1, byte_order);
25648     *offsetp += 1;
25649     UNUSED(1);
25650     {
25651         const int* reason_bits [] = {
25652         &hf_x11_xkb_ExtensionDeviceNotify_reason_mask_Keyboards,
25653         &hf_x11_xkb_ExtensionDeviceNotify_reason_mask_ButtonActions,
25654         &hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorNames,
25655         &hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorMaps,
25656         &hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorState,
25657         };
25658         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_ExtensionDeviceNotify_reason, ett_x11_rectangle, reason_bits, byte_order);
25659     }
25660     *offsetp += 2;
25661     field16(tvb, offsetp, t, hf_x11_xkb_ExtensionDeviceNotify_ledClass, byte_order);
25662     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledID, tvb, *offsetp, 2, byte_order);
25663     *offsetp += 2;
25664     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledsDefined, tvb, *offsetp, 4, byte_order);
25665     *offsetp += 4;
25666     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledState, tvb, *offsetp, 4, byte_order);
25667     *offsetp += 4;
25668     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_firstButton, tvb, *offsetp, 1, byte_order);
25669     *offsetp += 1;
25670     proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_nButtons, tvb, *offsetp, 1, byte_order);
25671     *offsetp += 1;
25672     {
25673         const int* supported_bits [] = {
25674         &hf_x11_xkb_ExtensionDeviceNotify_supported_mask_Keyboards,
25675         &hf_x11_xkb_ExtensionDeviceNotify_supported_mask_ButtonActions,
25676         &hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorNames,
25677         &hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorMaps,
25678         &hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorState,
25679         };
25680         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_ExtensionDeviceNotify_supported, ett_x11_rectangle, supported_bits, byte_order);
25681     }
25682     *offsetp += 2;
25683     {
25684         const int* unsupported_bits [] = {
25685         &hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_Keyboards,
25686         &hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_ButtonActions,
25687         &hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorNames,
25688         &hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorMaps,
25689         &hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorState,
25690         };
25691         proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_xkb_ExtensionDeviceNotify_unsupported, ett_x11_rectangle, unsupported_bits, byte_order);
25692     }
25693     *offsetp += 2;
25694     UNUSED(2);
25695 }
25696
25697 static const value_string xkb_extension_minor[] = {
25698     { 0, "UseExtension" },
25699     { 1, "SelectEvents" },
25700     { 3, "Bell" },
25701     { 4, "GetState" },
25702     { 5, "LatchLockState" },
25703     { 6, "GetControls" },
25704     { 7, "SetControls" },
25705     { 8, "GetMap" },
25706     { 9, "SetMap" },
25707     { 10, "GetCompatMap" },
25708     { 11, "SetCompatMap" },
25709     { 12, "GetIndicatorState" },
25710     { 13, "GetIndicatorMap" },
25711     { 14, "SetIndicatorMap" },
25712     { 15, "GetNamedIndicator" },
25713     { 16, "SetNamedIndicator" },
25714     { 17, "GetNames" },
25715     { 18, "SetNames" },
25716     { 21, "PerClientFlags" },
25717     { 22, "ListComponents" },
25718     { 23, "GetKbdByName" },
25719     { 24, "GetDeviceInfo" },
25720     { 25, "SetDeviceInfo" },
25721     { 101, "SetDebuggingFlags" },
25722     { 0, NULL }
25723 };
25724 const x11_event_info xkb_events[] = {
25725     { "xkb-MapNotify", xkbMapNotify },
25726     { "xkb-StateNotify", xkbStateNotify },
25727     { "xkb-ControlsNotify", xkbControlsNotify },
25728     { "xkb-IndicatorStateNotify", xkbIndicatorStateNotify },
25729     { "xkb-IndicatorMapNotify", xkbIndicatorMapNotify },
25730     { "xkb-NamesNotify", xkbNamesNotify },
25731     { "xkb-CompatMapNotify", xkbCompatMapNotify },
25732     { "xkb-BellNotify", xkbBellNotify },
25733     { "xkb-ActionMessage", xkbActionMessage },
25734     { "xkb-AccessXNotify", xkbAccessXNotify },
25735     { "xkb-ExtensionDeviceNotify", xkbExtensionDeviceNotify },
25736     { NULL, NULL }
25737 };
25738 static x11_reply_info xkb_replies[] = {
25739     { 0, xkbUseExtension_Reply },
25740     { 4, xkbGetState_Reply },
25741     { 6, xkbGetControls_Reply },
25742     { 8, xkbGetMap_Reply },
25743     { 10, xkbGetCompatMap_Reply },
25744     { 12, xkbGetIndicatorState_Reply },
25745     { 13, xkbGetIndicatorMap_Reply },
25746     { 15, xkbGetNamedIndicator_Reply },
25747     { 17, xkbGetNames_Reply },
25748     { 21, xkbPerClientFlags_Reply },
25749     { 22, xkbListComponents_Reply },
25750     { 23, xkbGetKbdByName_Reply },
25751     { 24, xkbGetDeviceInfo_Reply },
25752     { 101, xkbSetDebuggingFlags_Reply },
25753     { 0, NULL }
25754 };
25755
25756 static void dispatch_xkb(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
25757 {
25758     int minor, length;
25759     minor = CARD8(xkb_extension_minor);
25760     length = REQUEST_LENGTH();
25761
25762     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
25763                           val_to_str(minor, xkb_extension_minor,
25764                                      "<Unknown opcode %d>"));
25765     switch (minor) {
25766     case 0:
25767         xkbUseExtension(tvb, pinfo, offsetp, t, byte_order, length);
25768         break;
25769     case 1:
25770         xkbSelectEvents(tvb, pinfo, offsetp, t, byte_order, length);
25771         break;
25772     case 3:
25773         xkbBell(tvb, pinfo, offsetp, t, byte_order, length);
25774         break;
25775     case 4:
25776         xkbGetState(tvb, pinfo, offsetp, t, byte_order, length);
25777         break;
25778     case 5:
25779         xkbLatchLockState(tvb, pinfo, offsetp, t, byte_order, length);
25780         break;
25781     case 6:
25782         xkbGetControls(tvb, pinfo, offsetp, t, byte_order, length);
25783         break;
25784     case 7:
25785         xkbSetControls(tvb, pinfo, offsetp, t, byte_order, length);
25786         break;
25787     case 8:
25788         xkbGetMap(tvb, pinfo, offsetp, t, byte_order, length);
25789         break;
25790     case 9:
25791         xkbSetMap(tvb, pinfo, offsetp, t, byte_order, length);
25792         break;
25793     case 10:
25794         xkbGetCompatMap(tvb, pinfo, offsetp, t, byte_order, length);
25795         break;
25796     case 11:
25797         xkbSetCompatMap(tvb, pinfo, offsetp, t, byte_order, length);
25798         break;
25799     case 12:
25800         xkbGetIndicatorState(tvb, pinfo, offsetp, t, byte_order, length);
25801         break;
25802     case 13:
25803         xkbGetIndicatorMap(tvb, pinfo, offsetp, t, byte_order, length);
25804         break;
25805     case 14:
25806         xkbSetIndicatorMap(tvb, pinfo, offsetp, t, byte_order, length);
25807         break;
25808     case 15:
25809         xkbGetNamedIndicator(tvb, pinfo, offsetp, t, byte_order, length);
25810         break;
25811     case 16:
25812         xkbSetNamedIndicator(tvb, pinfo, offsetp, t, byte_order, length);
25813         break;
25814     case 17:
25815         xkbGetNames(tvb, pinfo, offsetp, t, byte_order, length);
25816         break;
25817     case 18:
25818         xkbSetNames(tvb, pinfo, offsetp, t, byte_order, length);
25819         break;
25820     case 21:
25821         xkbPerClientFlags(tvb, pinfo, offsetp, t, byte_order, length);
25822         break;
25823     case 22:
25824         xkbListComponents(tvb, pinfo, offsetp, t, byte_order, length);
25825         break;
25826     case 23:
25827         xkbGetKbdByName(tvb, pinfo, offsetp, t, byte_order, length);
25828         break;
25829     case 24:
25830         xkbGetDeviceInfo(tvb, pinfo, offsetp, t, byte_order, length);
25831         break;
25832     case 25:
25833         xkbSetDeviceInfo(tvb, pinfo, offsetp, t, byte_order, length);
25834         break;
25835     case 101:
25836         xkbSetDebuggingFlags(tvb, pinfo, offsetp, t, byte_order, length);
25837         break;
25838     /* No need for a default case here, since Unknown is printed above,
25839        and UNDECODED() is taken care of by dissect_x11_request */
25840     }
25841 }
25842
25843 static void register_xkb(void)
25844 {
25845     set_handler("XKEYBOARD", dispatch_xkb, xkb_errors, xkb_events, NULL, xkb_replies);
25846 }
25847
25848 static int struct_size_xprint_PRINTER(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
25849 {
25850     int size = 0;
25851     int f_descLen;
25852     int f_nameLen;
25853     f_nameLen = VALUE32(tvb, *offsetp + size + 0);
25854     size += f_nameLen * 1;
25855     size = (size + 3) & ~3;
25856     f_descLen = VALUE32(tvb, *offsetp + size + 4);
25857     size += f_descLen * 1;
25858     size = (size + 3) & ~3;
25859     return size + 8;
25860 }
25861
25862 static void struct_xprint_PRINTER(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
25863 {
25864     int i;
25865     for (i = 0; i < count; i++) {
25866         proto_item *item;
25867         proto_tree *t;
25868         int f_nameLen;
25869         int f_descLen;
25870
25871         item = proto_tree_add_item(root, hf_x11_struct_xprint_PRINTER, tvb, *offsetp, struct_size_xprint_PRINTER(tvb, offsetp, byte_order), ENC_NA);
25872         t = proto_item_add_subtree(item, ett_x11_rectangle);
25873         f_nameLen = VALUE32(tvb, *offsetp);
25874         proto_tree_add_item(t, hf_x11_struct_xprint_PRINTER_nameLen, tvb, *offsetp, 4, byte_order);
25875         *offsetp += 4;
25876         listOfByte(tvb, offsetp, t, hf_x11_struct_xprint_PRINTER_name, f_nameLen, byte_order);
25877         if (*offsetp % 4) {
25878             UNUSED(4 - *offsetp % 4);
25879         }
25880         f_descLen = VALUE32(tvb, *offsetp);
25881         proto_tree_add_item(t, hf_x11_struct_xprint_PRINTER_descLen, tvb, *offsetp, 4, byte_order);
25882         *offsetp += 4;
25883         listOfByte(tvb, offsetp, t, hf_x11_struct_xprint_PRINTER_description, f_descLen, byte_order);
25884         if (*offsetp % 4) {
25885             UNUSED(4 - *offsetp % 4);
25886         }
25887     }
25888 }
25889
25890 static void xprintPrintQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
25891 {
25892 }
25893 static void xprintPrintQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
25894 {
25895     int sequence_number;
25896
25897     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintQueryVersion");
25898
25899     REPLY(reply);
25900     UNUSED(1);
25901     sequence_number = VALUE16(tvb, *offsetp);
25902     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
25903             "%d (xprint-PrintQueryVersion)", sequence_number);
25904     *offsetp += 2;
25905     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
25906     *offsetp += 4;
25907     proto_tree_add_item(t, hf_x11_xprint_PrintQueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
25908     *offsetp += 2;
25909     proto_tree_add_item(t, hf_x11_xprint_PrintQueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
25910     *offsetp += 2;
25911 }
25912
25913 static void xprintPrintGetPrinterList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
25914 {
25915     int f_printerNameLen;
25916     int f_localeLen;
25917     f_printerNameLen = VALUE32(tvb, *offsetp);
25918     proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_printerNameLen, tvb, *offsetp, 4, byte_order);
25919     *offsetp += 4;
25920     f_localeLen = VALUE32(tvb, *offsetp);
25921     proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_localeLen, tvb, *offsetp, 4, byte_order);
25922     *offsetp += 4;
25923     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetPrinterList_printer_name, f_printerNameLen, byte_order);
25924     length -= f_printerNameLen * 1;
25925     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetPrinterList_locale, f_localeLen, byte_order);
25926     length -= f_localeLen * 1;
25927 }
25928 static void xprintPrintGetPrinterList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
25929 {
25930     int sequence_number;
25931     int f_listCount;
25932
25933     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetPrinterList");
25934
25935     REPLY(reply);
25936     UNUSED(1);
25937     sequence_number = VALUE16(tvb, *offsetp);
25938     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
25939             "%d (xprint-PrintGetPrinterList)", sequence_number);
25940     *offsetp += 2;
25941     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
25942     *offsetp += 4;
25943     f_listCount = VALUE32(tvb, *offsetp);
25944     proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_reply_listCount, tvb, *offsetp, 4, byte_order);
25945     *offsetp += 4;
25946     UNUSED(20);
25947     struct_xprint_PRINTER(tvb, offsetp, t, byte_order, f_listCount);
25948 }
25949
25950 static void xprintPrintRehashPrinterList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
25951 {
25952 }
25953
25954 static void xprintCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
25955 {
25956     int f_printerNameLen;
25957     int f_localeLen;
25958     proto_tree_add_item(t, hf_x11_xprint_CreateContext_context_id, tvb, *offsetp, 4, byte_order);
25959     *offsetp += 4;
25960     f_printerNameLen = VALUE32(tvb, *offsetp);
25961     proto_tree_add_item(t, hf_x11_xprint_CreateContext_printerNameLen, tvb, *offsetp, 4, byte_order);
25962     *offsetp += 4;
25963     f_localeLen = VALUE32(tvb, *offsetp);
25964     proto_tree_add_item(t, hf_x11_xprint_CreateContext_localeLen, tvb, *offsetp, 4, byte_order);
25965     *offsetp += 4;
25966     listOfByte(tvb, offsetp, t, hf_x11_xprint_CreateContext_printerName, f_printerNameLen, byte_order);
25967     length -= f_printerNameLen * 1;
25968     listOfByte(tvb, offsetp, t, hf_x11_xprint_CreateContext_locale, f_localeLen, byte_order);
25969     length -= f_localeLen * 1;
25970 }
25971
25972 static void xprintPrintSetContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
25973 {
25974     proto_tree_add_item(t, hf_x11_xprint_PrintSetContext_context, tvb, *offsetp, 4, byte_order);
25975     *offsetp += 4;
25976 }
25977
25978 static void xprintPrintGetContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
25979 {
25980 }
25981 static void xprintPrintGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
25982 {
25983     int sequence_number;
25984
25985     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetContext");
25986
25987     REPLY(reply);
25988     UNUSED(1);
25989     sequence_number = VALUE16(tvb, *offsetp);
25990     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
25991             "%d (xprint-PrintGetContext)", sequence_number);
25992     *offsetp += 2;
25993     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
25994     *offsetp += 4;
25995     proto_tree_add_item(t, hf_x11_xprint_PrintGetContext_reply_context, tvb, *offsetp, 4, byte_order);
25996     *offsetp += 4;
25997 }
25998
25999 static void xprintPrintDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26000 {
26001     proto_tree_add_item(t, hf_x11_xprint_PrintDestroyContext_context, tvb, *offsetp, 4, byte_order);
26002     *offsetp += 4;
26003 }
26004
26005 static void xprintPrintGetScreenOfContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26006 {
26007 }
26008 static void xprintPrintGetScreenOfContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26009 {
26010     int sequence_number;
26011
26012     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetScreenOfContext");
26013
26014     REPLY(reply);
26015     UNUSED(1);
26016     sequence_number = VALUE16(tvb, *offsetp);
26017     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26018             "%d (xprint-PrintGetScreenOfContext)", sequence_number);
26019     *offsetp += 2;
26020     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26021     *offsetp += 4;
26022     proto_tree_add_item(t, hf_x11_xprint_PrintGetScreenOfContext_reply_root, tvb, *offsetp, 4, byte_order);
26023     *offsetp += 4;
26024 }
26025
26026 static void xprintPrintStartJob(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26027 {
26028     proto_tree_add_item(t, hf_x11_xprint_PrintStartJob_output_mode, tvb, *offsetp, 1, byte_order);
26029     *offsetp += 1;
26030 }
26031
26032 static void xprintPrintEndJob(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26033 {
26034     proto_tree_add_item(t, hf_x11_xprint_PrintEndJob_cancel, tvb, *offsetp, 1, byte_order);
26035     *offsetp += 1;
26036 }
26037
26038 static void xprintPrintStartDoc(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26039 {
26040     proto_tree_add_item(t, hf_x11_xprint_PrintStartDoc_driver_mode, tvb, *offsetp, 1, byte_order);
26041     *offsetp += 1;
26042 }
26043
26044 static void xprintPrintEndDoc(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26045 {
26046     proto_tree_add_item(t, hf_x11_xprint_PrintEndDoc_cancel, tvb, *offsetp, 1, byte_order);
26047     *offsetp += 1;
26048 }
26049
26050 static void xprintPrintPutDocumentData(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26051 {
26052     int f_len_data;
26053     int f_len_fmt;
26054     int f_len_options;
26055     proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_drawable, tvb, *offsetp, 4, byte_order);
26056     *offsetp += 4;
26057     f_len_data = VALUE32(tvb, *offsetp);
26058     proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_data, tvb, *offsetp, 4, byte_order);
26059     *offsetp += 4;
26060     f_len_fmt = VALUE16(tvb, *offsetp);
26061     proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_fmt, tvb, *offsetp, 2, byte_order);
26062     *offsetp += 2;
26063     f_len_options = VALUE16(tvb, *offsetp);
26064     proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_options, tvb, *offsetp, 2, byte_order);
26065     *offsetp += 2;
26066     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_data, f_len_data, byte_order);
26067     length -= f_len_data * 1;
26068     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_doc_format, f_len_fmt, byte_order);
26069     length -= f_len_fmt * 1;
26070     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_options, f_len_options, byte_order);
26071     length -= f_len_options * 1;
26072 }
26073
26074 static void xprintPrintGetDocumentData(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26075 {
26076     proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_context, tvb, *offsetp, 4, byte_order);
26077     *offsetp += 4;
26078     proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_max_bytes, tvb, *offsetp, 4, byte_order);
26079     *offsetp += 4;
26080 }
26081 static void xprintPrintGetDocumentData_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26082 {
26083     int sequence_number;
26084     int f_dataLen;
26085
26086     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetDocumentData");
26087
26088     REPLY(reply);
26089     UNUSED(1);
26090     sequence_number = VALUE16(tvb, *offsetp);
26091     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26092             "%d (xprint-PrintGetDocumentData)", sequence_number);
26093     *offsetp += 2;
26094     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26095     *offsetp += 4;
26096     proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_status_code, tvb, *offsetp, 4, byte_order);
26097     *offsetp += 4;
26098     proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_finished_flag, tvb, *offsetp, 4, byte_order);
26099     *offsetp += 4;
26100     f_dataLen = VALUE32(tvb, *offsetp);
26101     proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_dataLen, tvb, *offsetp, 4, byte_order);
26102     *offsetp += 4;
26103     UNUSED(12);
26104     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetDocumentData_reply_data, f_dataLen, byte_order);
26105 }
26106
26107 static void xprintPrintStartPage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26108 {
26109     proto_tree_add_item(t, hf_x11_xprint_PrintStartPage_window, tvb, *offsetp, 4, byte_order);
26110     *offsetp += 4;
26111 }
26112
26113 static void xprintPrintEndPage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26114 {
26115     proto_tree_add_item(t, hf_x11_xprint_PrintEndPage_cancel, tvb, *offsetp, 1, byte_order);
26116     *offsetp += 1;
26117     UNUSED(3);
26118 }
26119
26120 static void xprintPrintSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26121 {
26122     proto_tree_add_item(t, hf_x11_xprint_PrintSelectInput_context, tvb, *offsetp, 4, byte_order);
26123     *offsetp += 4;
26124     proto_tree_add_item(t, hf_x11_xprint_PrintSelectInput_event_mask, tvb, *offsetp, 4, byte_order);
26125     *offsetp += 4;
26126 }
26127
26128 static void xprintPrintInputSelected(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26129 {
26130     proto_tree_add_item(t, hf_x11_xprint_PrintInputSelected_context, tvb, *offsetp, 4, byte_order);
26131     *offsetp += 4;
26132 }
26133 static void xprintPrintInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26134 {
26135     int sequence_number;
26136
26137     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintInputSelected");
26138
26139     REPLY(reply);
26140     UNUSED(1);
26141     sequence_number = VALUE16(tvb, *offsetp);
26142     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26143             "%d (xprint-PrintInputSelected)", sequence_number);
26144     *offsetp += 2;
26145     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26146     *offsetp += 4;
26147     proto_tree_add_item(t, hf_x11_xprint_PrintInputSelected_reply_event_mask, tvb, *offsetp, 4, byte_order);
26148     *offsetp += 4;
26149     proto_tree_add_item(t, hf_x11_xprint_PrintInputSelected_reply_all_events_mask, tvb, *offsetp, 4, byte_order);
26150     *offsetp += 4;
26151 }
26152
26153 static void xprintPrintGetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26154 {
26155     proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_context, tvb, *offsetp, 4, byte_order);
26156     *offsetp += 4;
26157     proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_pool, tvb, *offsetp, 1, byte_order);
26158     *offsetp += 1;
26159     UNUSED(3);
26160 }
26161 static void xprintPrintGetAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26162 {
26163     int sequence_number;
26164     int f_stringLen;
26165
26166     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetAttributes");
26167
26168     REPLY(reply);
26169     UNUSED(1);
26170     sequence_number = VALUE16(tvb, *offsetp);
26171     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26172             "%d (xprint-PrintGetAttributes)", sequence_number);
26173     *offsetp += 2;
26174     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26175     *offsetp += 4;
26176     f_stringLen = VALUE32(tvb, *offsetp);
26177     proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_reply_stringLen, tvb, *offsetp, 4, byte_order);
26178     *offsetp += 4;
26179     UNUSED(20);
26180     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetAttributes_reply_attributes, f_stringLen, byte_order);
26181 }
26182
26183 static void xprintPrintGetOneAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26184 {
26185     int f_nameLen;
26186     proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_context, tvb, *offsetp, 4, byte_order);
26187     *offsetp += 4;
26188     f_nameLen = VALUE32(tvb, *offsetp);
26189     proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_nameLen, tvb, *offsetp, 4, byte_order);
26190     *offsetp += 4;
26191     proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_pool, tvb, *offsetp, 1, byte_order);
26192     *offsetp += 1;
26193     UNUSED(3);
26194     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetOneAttributes_name, f_nameLen, byte_order);
26195     length -= f_nameLen * 1;
26196 }
26197 static void xprintPrintGetOneAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26198 {
26199     int sequence_number;
26200     int f_valueLen;
26201
26202     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetOneAttributes");
26203
26204     REPLY(reply);
26205     UNUSED(1);
26206     sequence_number = VALUE16(tvb, *offsetp);
26207     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26208             "%d (xprint-PrintGetOneAttributes)", sequence_number);
26209     *offsetp += 2;
26210     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26211     *offsetp += 4;
26212     f_valueLen = VALUE32(tvb, *offsetp);
26213     proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_reply_valueLen, tvb, *offsetp, 4, byte_order);
26214     *offsetp += 4;
26215     UNUSED(20);
26216     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetOneAttributes_reply_value, f_valueLen, byte_order);
26217 }
26218
26219 static void xprintPrintSetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26220 {
26221     proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_context, tvb, *offsetp, 4, byte_order);
26222     *offsetp += 4;
26223     proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_stringLen, tvb, *offsetp, 4, byte_order);
26224     *offsetp += 4;
26225     proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_pool, tvb, *offsetp, 1, byte_order);
26226     *offsetp += 1;
26227     proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_rule, tvb, *offsetp, 1, byte_order);
26228     *offsetp += 1;
26229     UNUSED(2);
26230     listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintSetAttributes_attributes, (length - 16) / 1, byte_order);
26231 }
26232
26233 static void xprintPrintGetPageDimensions(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26234 {
26235     proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_context, tvb, *offsetp, 4, byte_order);
26236     *offsetp += 4;
26237 }
26238 static void xprintPrintGetPageDimensions_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26239 {
26240     int sequence_number;
26241
26242     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetPageDimensions");
26243
26244     REPLY(reply);
26245     UNUSED(1);
26246     sequence_number = VALUE16(tvb, *offsetp);
26247     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26248             "%d (xprint-PrintGetPageDimensions)", sequence_number);
26249     *offsetp += 2;
26250     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26251     *offsetp += 4;
26252     proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_width, tvb, *offsetp, 2, byte_order);
26253     *offsetp += 2;
26254     proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_height, tvb, *offsetp, 2, byte_order);
26255     *offsetp += 2;
26256     proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_offset_x, tvb, *offsetp, 2, byte_order);
26257     *offsetp += 2;
26258     proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_offset_y, tvb, *offsetp, 2, byte_order);
26259     *offsetp += 2;
26260     proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_reproducible_width, tvb, *offsetp, 2, byte_order);
26261     *offsetp += 2;
26262     proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_reproducible_height, tvb, *offsetp, 2, byte_order);
26263     *offsetp += 2;
26264 }
26265
26266 static void xprintPrintQueryScreens(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26267 {
26268 }
26269 static void xprintPrintQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26270 {
26271     int sequence_number;
26272     int f_listCount;
26273
26274     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintQueryScreens");
26275
26276     REPLY(reply);
26277     UNUSED(1);
26278     sequence_number = VALUE16(tvb, *offsetp);
26279     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26280             "%d (xprint-PrintQueryScreens)", sequence_number);
26281     *offsetp += 2;
26282     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26283     *offsetp += 4;
26284     f_listCount = VALUE32(tvb, *offsetp);
26285     proto_tree_add_item(t, hf_x11_xprint_PrintQueryScreens_reply_listCount, tvb, *offsetp, 4, byte_order);
26286     *offsetp += 4;
26287     UNUSED(20);
26288     listOfCard32(tvb, offsetp, t, hf_x11_xprint_PrintQueryScreens_reply_roots, hf_x11_xprint_PrintQueryScreens_reply_roots_item, f_listCount, byte_order);
26289 }
26290
26291 static void xprintPrintSetImageResolution(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26292 {
26293     proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_context, tvb, *offsetp, 4, byte_order);
26294     *offsetp += 4;
26295     proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_image_resolution, tvb, *offsetp, 2, byte_order);
26296     *offsetp += 2;
26297 }
26298 static void xprintPrintSetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26299 {
26300     int sequence_number;
26301
26302     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintSetImageResolution");
26303
26304     REPLY(reply);
26305     proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_reply_status, tvb, *offsetp, 1, byte_order);
26306     *offsetp += 1;
26307     sequence_number = VALUE16(tvb, *offsetp);
26308     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26309             "%d (xprint-PrintSetImageResolution)", sequence_number);
26310     *offsetp += 2;
26311     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26312     *offsetp += 4;
26313     proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_reply_previous_resolutions, tvb, *offsetp, 2, byte_order);
26314     *offsetp += 2;
26315 }
26316
26317 static void xprintPrintGetImageResolution(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26318 {
26319     proto_tree_add_item(t, hf_x11_xprint_PrintGetImageResolution_context, tvb, *offsetp, 4, byte_order);
26320     *offsetp += 4;
26321 }
26322 static void xprintPrintGetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26323 {
26324     int sequence_number;
26325
26326     col_append_fstr(pinfo->cinfo, COL_INFO, "-PrintGetImageResolution");
26327
26328     REPLY(reply);
26329     UNUSED(1);
26330     sequence_number = VALUE16(tvb, *offsetp);
26331     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26332             "%d (xprint-PrintGetImageResolution)", sequence_number);
26333     *offsetp += 2;
26334     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26335     *offsetp += 4;
26336     proto_tree_add_item(t, hf_x11_xprint_PrintGetImageResolution_reply_image_resolution, tvb, *offsetp, 2, byte_order);
26337     *offsetp += 2;
26338 }
26339
26340 static void xprintAttributNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
26341 {
26342     proto_tree_add_item(t, hf_x11_xprint_AttributNotify_detail, tvb, *offsetp, 1, byte_order);
26343     *offsetp += 1;
26344     CARD16(event_sequencenumber);
26345     proto_tree_add_item(t, hf_x11_xprint_AttributNotify_context, tvb, *offsetp, 4, byte_order);
26346     *offsetp += 4;
26347 }
26348
26349 static const value_string xprint_extension_minor[] = {
26350     { 0, "PrintQueryVersion" },
26351     { 1, "PrintGetPrinterList" },
26352     { 2, "CreateContext" },
26353     { 3, "PrintSetContext" },
26354     { 4, "PrintGetContext" },
26355     { 5, "PrintDestroyContext" },
26356     { 6, "PrintGetScreenOfContext" },
26357     { 7, "PrintStartJob" },
26358     { 8, "PrintEndJob" },
26359     { 9, "PrintStartDoc" },
26360     { 10, "PrintEndDoc" },
26361     { 11, "PrintPutDocumentData" },
26362     { 12, "PrintGetDocumentData" },
26363     { 13, "PrintStartPage" },
26364     { 14, "PrintEndPage" },
26365     { 15, "PrintSelectInput" },
26366     { 16, "PrintInputSelected" },
26367     { 17, "PrintGetAttributes" },
26368     { 18, "PrintSetAttributes" },
26369     { 19, "PrintGetOneAttributes" },
26370     { 20, "PrintRehashPrinterList" },
26371     { 21, "PrintGetPageDimensions" },
26372     { 22, "PrintQueryScreens" },
26373     { 23, "PrintSetImageResolution" },
26374     { 24, "PrintGetImageResolution" },
26375     { 0, NULL }
26376 };
26377 const x11_event_info xprint_events[] = {
26378     { "xprint-AttributNotify", xprintAttributNotify },
26379     { NULL, NULL }
26380 };
26381 static x11_reply_info xprint_replies[] = {
26382     { 0, xprintPrintQueryVersion_Reply },
26383     { 1, xprintPrintGetPrinterList_Reply },
26384     { 4, xprintPrintGetContext_Reply },
26385     { 6, xprintPrintGetScreenOfContext_Reply },
26386     { 12, xprintPrintGetDocumentData_Reply },
26387     { 16, xprintPrintInputSelected_Reply },
26388     { 17, xprintPrintGetAttributes_Reply },
26389     { 19, xprintPrintGetOneAttributes_Reply },
26390     { 21, xprintPrintGetPageDimensions_Reply },
26391     { 22, xprintPrintQueryScreens_Reply },
26392     { 23, xprintPrintSetImageResolution_Reply },
26393     { 24, xprintPrintGetImageResolution_Reply },
26394     { 0, NULL }
26395 };
26396
26397 static void dispatch_xprint(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26398 {
26399     int minor, length;
26400     minor = CARD8(xprint_extension_minor);
26401     length = REQUEST_LENGTH();
26402
26403     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
26404                           val_to_str(minor, xprint_extension_minor,
26405                                      "<Unknown opcode %d>"));
26406     switch (minor) {
26407     case 0:
26408         xprintPrintQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
26409         break;
26410     case 1:
26411         xprintPrintGetPrinterList(tvb, pinfo, offsetp, t, byte_order, length);
26412         break;
26413     case 2:
26414         xprintCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
26415         break;
26416     case 3:
26417         xprintPrintSetContext(tvb, pinfo, offsetp, t, byte_order, length);
26418         break;
26419     case 4:
26420         xprintPrintGetContext(tvb, pinfo, offsetp, t, byte_order, length);
26421         break;
26422     case 5:
26423         xprintPrintDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
26424         break;
26425     case 6:
26426         xprintPrintGetScreenOfContext(tvb, pinfo, offsetp, t, byte_order, length);
26427         break;
26428     case 7:
26429         xprintPrintStartJob(tvb, pinfo, offsetp, t, byte_order, length);
26430         break;
26431     case 8:
26432         xprintPrintEndJob(tvb, pinfo, offsetp, t, byte_order, length);
26433         break;
26434     case 9:
26435         xprintPrintStartDoc(tvb, pinfo, offsetp, t, byte_order, length);
26436         break;
26437     case 10:
26438         xprintPrintEndDoc(tvb, pinfo, offsetp, t, byte_order, length);
26439         break;
26440     case 11:
26441         xprintPrintPutDocumentData(tvb, pinfo, offsetp, t, byte_order, length);
26442         break;
26443     case 12:
26444         xprintPrintGetDocumentData(tvb, pinfo, offsetp, t, byte_order, length);
26445         break;
26446     case 13:
26447         xprintPrintStartPage(tvb, pinfo, offsetp, t, byte_order, length);
26448         break;
26449     case 14:
26450         xprintPrintEndPage(tvb, pinfo, offsetp, t, byte_order, length);
26451         break;
26452     case 15:
26453         xprintPrintSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
26454         break;
26455     case 16:
26456         xprintPrintInputSelected(tvb, pinfo, offsetp, t, byte_order, length);
26457         break;
26458     case 17:
26459         xprintPrintGetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
26460         break;
26461     case 18:
26462         xprintPrintSetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
26463         break;
26464     case 19:
26465         xprintPrintGetOneAttributes(tvb, pinfo, offsetp, t, byte_order, length);
26466         break;
26467     case 20:
26468         xprintPrintRehashPrinterList(tvb, pinfo, offsetp, t, byte_order, length);
26469         break;
26470     case 21:
26471         xprintPrintGetPageDimensions(tvb, pinfo, offsetp, t, byte_order, length);
26472         break;
26473     case 22:
26474         xprintPrintQueryScreens(tvb, pinfo, offsetp, t, byte_order, length);
26475         break;
26476     case 23:
26477         xprintPrintSetImageResolution(tvb, pinfo, offsetp, t, byte_order, length);
26478         break;
26479     case 24:
26480         xprintPrintGetImageResolution(tvb, pinfo, offsetp, t, byte_order, length);
26481         break;
26482     /* No need for a default case here, since Unknown is printed above,
26483        and UNDECODED() is taken care of by dissect_x11_request */
26484     }
26485 }
26486
26487 static void register_xprint(void)
26488 {
26489     set_handler("XpExtension", dispatch_xprint, xprint_errors, xprint_events, NULL, xprint_replies);
26490 }
26491
26492 static void xselinuxQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26493 {
26494     proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_client_major, tvb, *offsetp, 1, byte_order);
26495     *offsetp += 1;
26496     proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_client_minor, tvb, *offsetp, 1, byte_order);
26497     *offsetp += 1;
26498 }
26499 static void xselinuxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26500 {
26501     int sequence_number;
26502
26503     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
26504
26505     REPLY(reply);
26506     UNUSED(1);
26507     sequence_number = VALUE16(tvb, *offsetp);
26508     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26509             "%d (xselinux-QueryVersion)", sequence_number);
26510     *offsetp += 2;
26511     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26512     *offsetp += 4;
26513     proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_reply_server_major, tvb, *offsetp, 2, byte_order);
26514     *offsetp += 2;
26515     proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_reply_server_minor, tvb, *offsetp, 2, byte_order);
26516     *offsetp += 2;
26517 }
26518
26519 static void xselinuxSetDeviceCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26520 {
26521     int f_context_len;
26522     f_context_len = VALUE32(tvb, *offsetp);
26523     proto_tree_add_item(t, hf_x11_xselinux_SetDeviceCreateContext_context_len, tvb, *offsetp, 4, byte_order);
26524     *offsetp += 4;
26525     listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetDeviceCreateContext_context, f_context_len, byte_order);
26526     length -= f_context_len * 1;
26527 }
26528
26529 static void xselinuxGetDeviceCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26530 {
26531 }
26532 static void xselinuxGetDeviceCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26533 {
26534     int sequence_number;
26535     int f_context_len;
26536
26537     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceCreateContext");
26538
26539     REPLY(reply);
26540     UNUSED(1);
26541     sequence_number = VALUE16(tvb, *offsetp);
26542     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26543             "%d (xselinux-GetDeviceCreateContext)", sequence_number);
26544     *offsetp += 2;
26545     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26546     *offsetp += 4;
26547     f_context_len = VALUE32(tvb, *offsetp);
26548     proto_tree_add_item(t, hf_x11_xselinux_GetDeviceCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26549     *offsetp += 4;
26550     UNUSED(20);
26551     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetDeviceCreateContext_reply_context, f_context_len, byte_order);
26552 }
26553
26554 static void xselinuxSetDeviceContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26555 {
26556     int f_context_len;
26557     proto_tree_add_item(t, hf_x11_xselinux_SetDeviceContext_device, tvb, *offsetp, 4, byte_order);
26558     *offsetp += 4;
26559     f_context_len = VALUE32(tvb, *offsetp);
26560     proto_tree_add_item(t, hf_x11_xselinux_SetDeviceContext_context_len, tvb, *offsetp, 4, byte_order);
26561     *offsetp += 4;
26562     listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetDeviceContext_context, f_context_len, byte_order);
26563     length -= f_context_len * 1;
26564 }
26565
26566 static void xselinuxGetDeviceContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26567 {
26568     proto_tree_add_item(t, hf_x11_xselinux_GetDeviceContext_device, tvb, *offsetp, 4, byte_order);
26569     *offsetp += 4;
26570 }
26571 static void xselinuxGetDeviceContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26572 {
26573     int sequence_number;
26574     int f_context_len;
26575
26576     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceContext");
26577
26578     REPLY(reply);
26579     UNUSED(1);
26580     sequence_number = VALUE16(tvb, *offsetp);
26581     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26582             "%d (xselinux-GetDeviceContext)", sequence_number);
26583     *offsetp += 2;
26584     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26585     *offsetp += 4;
26586     f_context_len = VALUE32(tvb, *offsetp);
26587     proto_tree_add_item(t, hf_x11_xselinux_GetDeviceContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26588     *offsetp += 4;
26589     UNUSED(20);
26590     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetDeviceContext_reply_context, f_context_len, byte_order);
26591 }
26592
26593 static void xselinuxSetWindowCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26594 {
26595     int f_context_len;
26596     f_context_len = VALUE32(tvb, *offsetp);
26597     proto_tree_add_item(t, hf_x11_xselinux_SetWindowCreateContext_context_len, tvb, *offsetp, 4, byte_order);
26598     *offsetp += 4;
26599     listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetWindowCreateContext_context, f_context_len, byte_order);
26600     length -= f_context_len * 1;
26601 }
26602
26603 static void xselinuxGetWindowCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26604 {
26605 }
26606 static void xselinuxGetWindowCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26607 {
26608     int sequence_number;
26609     int f_context_len;
26610
26611     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetWindowCreateContext");
26612
26613     REPLY(reply);
26614     UNUSED(1);
26615     sequence_number = VALUE16(tvb, *offsetp);
26616     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26617             "%d (xselinux-GetWindowCreateContext)", sequence_number);
26618     *offsetp += 2;
26619     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26620     *offsetp += 4;
26621     f_context_len = VALUE32(tvb, *offsetp);
26622     proto_tree_add_item(t, hf_x11_xselinux_GetWindowCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26623     *offsetp += 4;
26624     UNUSED(20);
26625     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetWindowCreateContext_reply_context, f_context_len, byte_order);
26626 }
26627
26628 static void xselinuxGetWindowContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26629 {
26630     proto_tree_add_item(t, hf_x11_xselinux_GetWindowContext_window, tvb, *offsetp, 4, byte_order);
26631     *offsetp += 4;
26632 }
26633 static void xselinuxGetWindowContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26634 {
26635     int sequence_number;
26636     int f_context_len;
26637
26638     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetWindowContext");
26639
26640     REPLY(reply);
26641     UNUSED(1);
26642     sequence_number = VALUE16(tvb, *offsetp);
26643     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26644             "%d (xselinux-GetWindowContext)", sequence_number);
26645     *offsetp += 2;
26646     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26647     *offsetp += 4;
26648     f_context_len = VALUE32(tvb, *offsetp);
26649     proto_tree_add_item(t, hf_x11_xselinux_GetWindowContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26650     *offsetp += 4;
26651     UNUSED(20);
26652     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetWindowContext_reply_context, f_context_len, byte_order);
26653 }
26654
26655 static int struct_size_xselinux_ListItem(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
26656 {
26657     int size = 0;
26658     int f_data_context_len;
26659     int f_object_context_len;
26660     f_object_context_len = VALUE32(tvb, *offsetp + size + 4);
26661     f_data_context_len = VALUE32(tvb, *offsetp + size + 8);
26662     size += f_object_context_len * 1;
26663     size = (size + 3) & ~3;
26664     size += f_data_context_len * 1;
26665     size = (size + 3) & ~3;
26666     return size + 12;
26667 }
26668
26669 static void struct_xselinux_ListItem(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
26670 {
26671     int i;
26672     for (i = 0; i < count; i++) {
26673         proto_item *item;
26674         proto_tree *t;
26675         int f_object_context_len;
26676         int f_data_context_len;
26677
26678         item = proto_tree_add_item(root, hf_x11_struct_xselinux_ListItem, tvb, *offsetp, struct_size_xselinux_ListItem(tvb, offsetp, byte_order), ENC_NA);
26679         t = proto_item_add_subtree(item, ett_x11_rectangle);
26680         proto_tree_add_item(t, hf_x11_struct_xselinux_ListItem_name, tvb, *offsetp, 4, byte_order);
26681         *offsetp += 4;
26682         f_object_context_len = VALUE32(tvb, *offsetp);
26683         proto_tree_add_item(t, hf_x11_struct_xselinux_ListItem_object_context_len, tvb, *offsetp, 4, byte_order);
26684         *offsetp += 4;
26685         f_data_context_len = VALUE32(tvb, *offsetp);
26686         proto_tree_add_item(t, hf_x11_struct_xselinux_ListItem_data_context_len, tvb, *offsetp, 4, byte_order);
26687         *offsetp += 4;
26688         listOfByte(tvb, offsetp, t, hf_x11_struct_xselinux_ListItem_object_context, f_object_context_len, byte_order);
26689         if (*offsetp % 4) {
26690             UNUSED(4 - *offsetp % 4);
26691         }
26692         listOfByte(tvb, offsetp, t, hf_x11_struct_xselinux_ListItem_data_context, f_data_context_len, byte_order);
26693         if (*offsetp % 4) {
26694             UNUSED(4 - *offsetp % 4);
26695         }
26696     }
26697 }
26698
26699 static void xselinuxSetPropertyCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26700 {
26701     int f_context_len;
26702     f_context_len = VALUE32(tvb, *offsetp);
26703     proto_tree_add_item(t, hf_x11_xselinux_SetPropertyCreateContext_context_len, tvb, *offsetp, 4, byte_order);
26704     *offsetp += 4;
26705     listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetPropertyCreateContext_context, f_context_len, byte_order);
26706     length -= f_context_len * 1;
26707 }
26708
26709 static void xselinuxGetPropertyCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26710 {
26711 }
26712 static void xselinuxGetPropertyCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26713 {
26714     int sequence_number;
26715     int f_context_len;
26716
26717     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPropertyCreateContext");
26718
26719     REPLY(reply);
26720     UNUSED(1);
26721     sequence_number = VALUE16(tvb, *offsetp);
26722     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26723             "%d (xselinux-GetPropertyCreateContext)", sequence_number);
26724     *offsetp += 2;
26725     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26726     *offsetp += 4;
26727     f_context_len = VALUE32(tvb, *offsetp);
26728     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26729     *offsetp += 4;
26730     UNUSED(20);
26731     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyCreateContext_reply_context, f_context_len, byte_order);
26732 }
26733
26734 static void xselinuxSetPropertyUseContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26735 {
26736     int f_context_len;
26737     f_context_len = VALUE32(tvb, *offsetp);
26738     proto_tree_add_item(t, hf_x11_xselinux_SetPropertyUseContext_context_len, tvb, *offsetp, 4, byte_order);
26739     *offsetp += 4;
26740     listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetPropertyUseContext_context, f_context_len, byte_order);
26741     length -= f_context_len * 1;
26742 }
26743
26744 static void xselinuxGetPropertyUseContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26745 {
26746 }
26747 static void xselinuxGetPropertyUseContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26748 {
26749     int sequence_number;
26750     int f_context_len;
26751
26752     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPropertyUseContext");
26753
26754     REPLY(reply);
26755     UNUSED(1);
26756     sequence_number = VALUE16(tvb, *offsetp);
26757     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26758             "%d (xselinux-GetPropertyUseContext)", sequence_number);
26759     *offsetp += 2;
26760     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26761     *offsetp += 4;
26762     f_context_len = VALUE32(tvb, *offsetp);
26763     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyUseContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26764     *offsetp += 4;
26765     UNUSED(20);
26766     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyUseContext_reply_context, f_context_len, byte_order);
26767 }
26768
26769 static void xselinuxGetPropertyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26770 {
26771     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_window, tvb, *offsetp, 4, byte_order);
26772     *offsetp += 4;
26773     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_property, tvb, *offsetp, 4, byte_order);
26774     *offsetp += 4;
26775 }
26776 static void xselinuxGetPropertyContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26777 {
26778     int sequence_number;
26779     int f_context_len;
26780
26781     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPropertyContext");
26782
26783     REPLY(reply);
26784     UNUSED(1);
26785     sequence_number = VALUE16(tvb, *offsetp);
26786     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26787             "%d (xselinux-GetPropertyContext)", sequence_number);
26788     *offsetp += 2;
26789     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26790     *offsetp += 4;
26791     f_context_len = VALUE32(tvb, *offsetp);
26792     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26793     *offsetp += 4;
26794     UNUSED(20);
26795     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyContext_reply_context, f_context_len, byte_order);
26796 }
26797
26798 static void xselinuxGetPropertyDataContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26799 {
26800     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_window, tvb, *offsetp, 4, byte_order);
26801     *offsetp += 4;
26802     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_property, tvb, *offsetp, 4, byte_order);
26803     *offsetp += 4;
26804 }
26805 static void xselinuxGetPropertyDataContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26806 {
26807     int sequence_number;
26808     int f_context_len;
26809
26810     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPropertyDataContext");
26811
26812     REPLY(reply);
26813     UNUSED(1);
26814     sequence_number = VALUE16(tvb, *offsetp);
26815     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26816             "%d (xselinux-GetPropertyDataContext)", sequence_number);
26817     *offsetp += 2;
26818     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26819     *offsetp += 4;
26820     f_context_len = VALUE32(tvb, *offsetp);
26821     proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26822     *offsetp += 4;
26823     UNUSED(20);
26824     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyDataContext_reply_context, f_context_len, byte_order);
26825 }
26826
26827 static void xselinuxListProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26828 {
26829     proto_tree_add_item(t, hf_x11_xselinux_ListProperties_window, tvb, *offsetp, 4, byte_order);
26830     *offsetp += 4;
26831 }
26832 static void xselinuxListProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26833 {
26834     int sequence_number;
26835     int f_properties_len;
26836
26837     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListProperties");
26838
26839     REPLY(reply);
26840     UNUSED(1);
26841     sequence_number = VALUE16(tvb, *offsetp);
26842     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26843             "%d (xselinux-ListProperties)", sequence_number);
26844     *offsetp += 2;
26845     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26846     *offsetp += 4;
26847     f_properties_len = VALUE32(tvb, *offsetp);
26848     proto_tree_add_item(t, hf_x11_xselinux_ListProperties_reply_properties_len, tvb, *offsetp, 4, byte_order);
26849     *offsetp += 4;
26850     UNUSED(20);
26851     struct_xselinux_ListItem(tvb, offsetp, t, byte_order, f_properties_len);
26852 }
26853
26854 static void xselinuxSetSelectionCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26855 {
26856     int f_context_len;
26857     f_context_len = VALUE32(tvb, *offsetp);
26858     proto_tree_add_item(t, hf_x11_xselinux_SetSelectionCreateContext_context_len, tvb, *offsetp, 4, byte_order);
26859     *offsetp += 4;
26860     listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetSelectionCreateContext_context, f_context_len, byte_order);
26861     length -= f_context_len * 1;
26862 }
26863
26864 static void xselinuxGetSelectionCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26865 {
26866 }
26867 static void xselinuxGetSelectionCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26868 {
26869     int sequence_number;
26870     int f_context_len;
26871
26872     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetSelectionCreateContext");
26873
26874     REPLY(reply);
26875     UNUSED(1);
26876     sequence_number = VALUE16(tvb, *offsetp);
26877     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26878             "%d (xselinux-GetSelectionCreateContext)", sequence_number);
26879     *offsetp += 2;
26880     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26881     *offsetp += 4;
26882     f_context_len = VALUE32(tvb, *offsetp);
26883     proto_tree_add_item(t, hf_x11_xselinux_GetSelectionCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26884     *offsetp += 4;
26885     UNUSED(20);
26886     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionCreateContext_reply_context, f_context_len, byte_order);
26887 }
26888
26889 static void xselinuxSetSelectionUseContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26890 {
26891     int f_context_len;
26892     f_context_len = VALUE32(tvb, *offsetp);
26893     proto_tree_add_item(t, hf_x11_xselinux_SetSelectionUseContext_context_len, tvb, *offsetp, 4, byte_order);
26894     *offsetp += 4;
26895     listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetSelectionUseContext_context, f_context_len, byte_order);
26896     length -= f_context_len * 1;
26897 }
26898
26899 static void xselinuxGetSelectionUseContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26900 {
26901 }
26902 static void xselinuxGetSelectionUseContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26903 {
26904     int sequence_number;
26905     int f_context_len;
26906
26907     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetSelectionUseContext");
26908
26909     REPLY(reply);
26910     UNUSED(1);
26911     sequence_number = VALUE16(tvb, *offsetp);
26912     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26913             "%d (xselinux-GetSelectionUseContext)", sequence_number);
26914     *offsetp += 2;
26915     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26916     *offsetp += 4;
26917     f_context_len = VALUE32(tvb, *offsetp);
26918     proto_tree_add_item(t, hf_x11_xselinux_GetSelectionUseContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26919     *offsetp += 4;
26920     UNUSED(20);
26921     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionUseContext_reply_context, f_context_len, byte_order);
26922 }
26923
26924 static void xselinuxGetSelectionContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26925 {
26926     proto_tree_add_item(t, hf_x11_xselinux_GetSelectionContext_selection, tvb, *offsetp, 4, byte_order);
26927     *offsetp += 4;
26928 }
26929 static void xselinuxGetSelectionContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26930 {
26931     int sequence_number;
26932     int f_context_len;
26933
26934     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetSelectionContext");
26935
26936     REPLY(reply);
26937     UNUSED(1);
26938     sequence_number = VALUE16(tvb, *offsetp);
26939     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26940             "%d (xselinux-GetSelectionContext)", sequence_number);
26941     *offsetp += 2;
26942     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26943     *offsetp += 4;
26944     f_context_len = VALUE32(tvb, *offsetp);
26945     proto_tree_add_item(t, hf_x11_xselinux_GetSelectionContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26946     *offsetp += 4;
26947     UNUSED(20);
26948     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionContext_reply_context, f_context_len, byte_order);
26949 }
26950
26951 static void xselinuxGetSelectionDataContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
26952 {
26953     proto_tree_add_item(t, hf_x11_xselinux_GetSelectionDataContext_selection, tvb, *offsetp, 4, byte_order);
26954     *offsetp += 4;
26955 }
26956 static void xselinuxGetSelectionDataContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26957 {
26958     int sequence_number;
26959     int f_context_len;
26960
26961     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetSelectionDataContext");
26962
26963     REPLY(reply);
26964     UNUSED(1);
26965     sequence_number = VALUE16(tvb, *offsetp);
26966     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26967             "%d (xselinux-GetSelectionDataContext)", sequence_number);
26968     *offsetp += 2;
26969     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26970     *offsetp += 4;
26971     f_context_len = VALUE32(tvb, *offsetp);
26972     proto_tree_add_item(t, hf_x11_xselinux_GetSelectionDataContext_reply_context_len, tvb, *offsetp, 4, byte_order);
26973     *offsetp += 4;
26974     UNUSED(20);
26975     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionDataContext_reply_context, f_context_len, byte_order);
26976 }
26977
26978 static void xselinuxListSelections(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
26979 {
26980 }
26981 static void xselinuxListSelections_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
26982 {
26983     int sequence_number;
26984     int f_selections_len;
26985
26986     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListSelections");
26987
26988     REPLY(reply);
26989     UNUSED(1);
26990     sequence_number = VALUE16(tvb, *offsetp);
26991     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
26992             "%d (xselinux-ListSelections)", sequence_number);
26993     *offsetp += 2;
26994     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
26995     *offsetp += 4;
26996     f_selections_len = VALUE32(tvb, *offsetp);
26997     proto_tree_add_item(t, hf_x11_xselinux_ListSelections_reply_selections_len, tvb, *offsetp, 4, byte_order);
26998     *offsetp += 4;
26999     UNUSED(20);
27000     struct_xselinux_ListItem(tvb, offsetp, t, byte_order, f_selections_len);
27001 }
27002
27003 static void xselinuxGetClientContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27004 {
27005     proto_tree_add_item(t, hf_x11_xselinux_GetClientContext_resource, tvb, *offsetp, 4, byte_order);
27006     *offsetp += 4;
27007 }
27008 static void xselinuxGetClientContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27009 {
27010     int sequence_number;
27011     int f_context_len;
27012
27013     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetClientContext");
27014
27015     REPLY(reply);
27016     UNUSED(1);
27017     sequence_number = VALUE16(tvb, *offsetp);
27018     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27019             "%d (xselinux-GetClientContext)", sequence_number);
27020     *offsetp += 2;
27021     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27022     *offsetp += 4;
27023     f_context_len = VALUE32(tvb, *offsetp);
27024     proto_tree_add_item(t, hf_x11_xselinux_GetClientContext_reply_context_len, tvb, *offsetp, 4, byte_order);
27025     *offsetp += 4;
27026     UNUSED(20);
27027     listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetClientContext_reply_context, f_context_len, byte_order);
27028 }
27029 static const value_string xselinux_extension_minor[] = {
27030     { 0, "QueryVersion" },
27031     { 1, "SetDeviceCreateContext" },
27032     { 2, "GetDeviceCreateContext" },
27033     { 3, "SetDeviceContext" },
27034     { 4, "GetDeviceContext" },
27035     { 5, "SetWindowCreateContext" },
27036     { 6, "GetWindowCreateContext" },
27037     { 7, "GetWindowContext" },
27038     { 8, "SetPropertyCreateContext" },
27039     { 9, "GetPropertyCreateContext" },
27040     { 10, "SetPropertyUseContext" },
27041     { 11, "GetPropertyUseContext" },
27042     { 12, "GetPropertyContext" },
27043     { 13, "GetPropertyDataContext" },
27044     { 14, "ListProperties" },
27045     { 15, "SetSelectionCreateContext" },
27046     { 16, "GetSelectionCreateContext" },
27047     { 17, "SetSelectionUseContext" },
27048     { 18, "GetSelectionUseContext" },
27049     { 19, "GetSelectionContext" },
27050     { 20, "GetSelectionDataContext" },
27051     { 21, "ListSelections" },
27052     { 22, "GetClientContext" },
27053     { 0, NULL }
27054 };
27055 const x11_event_info xselinux_events[] = {
27056     { NULL, NULL }
27057 };
27058 static x11_reply_info xselinux_replies[] = {
27059     { 0, xselinuxQueryVersion_Reply },
27060     { 2, xselinuxGetDeviceCreateContext_Reply },
27061     { 4, xselinuxGetDeviceContext_Reply },
27062     { 6, xselinuxGetWindowCreateContext_Reply },
27063     { 7, xselinuxGetWindowContext_Reply },
27064     { 9, xselinuxGetPropertyCreateContext_Reply },
27065     { 11, xselinuxGetPropertyUseContext_Reply },
27066     { 12, xselinuxGetPropertyContext_Reply },
27067     { 13, xselinuxGetPropertyDataContext_Reply },
27068     { 14, xselinuxListProperties_Reply },
27069     { 16, xselinuxGetSelectionCreateContext_Reply },
27070     { 18, xselinuxGetSelectionUseContext_Reply },
27071     { 19, xselinuxGetSelectionContext_Reply },
27072     { 20, xselinuxGetSelectionDataContext_Reply },
27073     { 21, xselinuxListSelections_Reply },
27074     { 22, xselinuxGetClientContext_Reply },
27075     { 0, NULL }
27076 };
27077
27078 static void dispatch_xselinux(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27079 {
27080     int minor, length;
27081     minor = CARD8(xselinux_extension_minor);
27082     length = REQUEST_LENGTH();
27083
27084     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
27085                           val_to_str(minor, xselinux_extension_minor,
27086                                      "<Unknown opcode %d>"));
27087     switch (minor) {
27088     case 0:
27089         xselinuxQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
27090         break;
27091     case 1:
27092         xselinuxSetDeviceCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27093         break;
27094     case 2:
27095         xselinuxGetDeviceCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27096         break;
27097     case 3:
27098         xselinuxSetDeviceContext(tvb, pinfo, offsetp, t, byte_order, length);
27099         break;
27100     case 4:
27101         xselinuxGetDeviceContext(tvb, pinfo, offsetp, t, byte_order, length);
27102         break;
27103     case 5:
27104         xselinuxSetWindowCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27105         break;
27106     case 6:
27107         xselinuxGetWindowCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27108         break;
27109     case 7:
27110         xselinuxGetWindowContext(tvb, pinfo, offsetp, t, byte_order, length);
27111         break;
27112     case 8:
27113         xselinuxSetPropertyCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27114         break;
27115     case 9:
27116         xselinuxGetPropertyCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27117         break;
27118     case 10:
27119         xselinuxSetPropertyUseContext(tvb, pinfo, offsetp, t, byte_order, length);
27120         break;
27121     case 11:
27122         xselinuxGetPropertyUseContext(tvb, pinfo, offsetp, t, byte_order, length);
27123         break;
27124     case 12:
27125         xselinuxGetPropertyContext(tvb, pinfo, offsetp, t, byte_order, length);
27126         break;
27127     case 13:
27128         xselinuxGetPropertyDataContext(tvb, pinfo, offsetp, t, byte_order, length);
27129         break;
27130     case 14:
27131         xselinuxListProperties(tvb, pinfo, offsetp, t, byte_order, length);
27132         break;
27133     case 15:
27134         xselinuxSetSelectionCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27135         break;
27136     case 16:
27137         xselinuxGetSelectionCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
27138         break;
27139     case 17:
27140         xselinuxSetSelectionUseContext(tvb, pinfo, offsetp, t, byte_order, length);
27141         break;
27142     case 18:
27143         xselinuxGetSelectionUseContext(tvb, pinfo, offsetp, t, byte_order, length);
27144         break;
27145     case 19:
27146         xselinuxGetSelectionContext(tvb, pinfo, offsetp, t, byte_order, length);
27147         break;
27148     case 20:
27149         xselinuxGetSelectionDataContext(tvb, pinfo, offsetp, t, byte_order, length);
27150         break;
27151     case 21:
27152         xselinuxListSelections(tvb, pinfo, offsetp, t, byte_order, length);
27153         break;
27154     case 22:
27155         xselinuxGetClientContext(tvb, pinfo, offsetp, t, byte_order, length);
27156         break;
27157     /* No need for a default case here, since Unknown is printed above,
27158        and UNDECODED() is taken care of by dissect_x11_request */
27159     }
27160 }
27161
27162 static void register_xselinux(void)
27163 {
27164     set_handler("SELinux", dispatch_xselinux, xselinux_errors, xselinux_events, NULL, xselinux_replies);
27165 }
27166
27167 static void xtestGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27168 {
27169     proto_tree_add_item(t, hf_x11_xtest_GetVersion_major_version, tvb, *offsetp, 1, byte_order);
27170     *offsetp += 1;
27171     UNUSED(1);
27172     proto_tree_add_item(t, hf_x11_xtest_GetVersion_minor_version, tvb, *offsetp, 2, byte_order);
27173     *offsetp += 2;
27174 }
27175 static void xtestGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27176 {
27177     int sequence_number;
27178
27179     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetVersion");
27180
27181     REPLY(reply);
27182     proto_tree_add_item(t, hf_x11_xtest_GetVersion_reply_major_version, tvb, *offsetp, 1, byte_order);
27183     *offsetp += 1;
27184     sequence_number = VALUE16(tvb, *offsetp);
27185     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27186             "%d (xtest-GetVersion)", sequence_number);
27187     *offsetp += 2;
27188     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27189     *offsetp += 4;
27190     proto_tree_add_item(t, hf_x11_xtest_GetVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
27191     *offsetp += 2;
27192 }
27193
27194 static void xtestCompareCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27195 {
27196     proto_tree_add_item(t, hf_x11_xtest_CompareCursor_window, tvb, *offsetp, 4, byte_order);
27197     *offsetp += 4;
27198     proto_tree_add_item(t, hf_x11_xtest_CompareCursor_cursor, tvb, *offsetp, 4, byte_order);
27199     *offsetp += 4;
27200 }
27201 static void xtestCompareCursor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27202 {
27203     int sequence_number;
27204
27205     col_append_fstr(pinfo->cinfo, COL_INFO, "-CompareCursor");
27206
27207     REPLY(reply);
27208     proto_tree_add_item(t, hf_x11_xtest_CompareCursor_reply_same, tvb, *offsetp, 1, byte_order);
27209     *offsetp += 1;
27210     sequence_number = VALUE16(tvb, *offsetp);
27211     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27212             "%d (xtest-CompareCursor)", sequence_number);
27213     *offsetp += 2;
27214     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27215     *offsetp += 4;
27216 }
27217
27218 static void xtestFakeInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27219 {
27220     proto_tree_add_item(t, hf_x11_xtest_FakeInput_type, tvb, *offsetp, 1, ENC_NA);
27221     *offsetp += 1;
27222     proto_tree_add_item(t, hf_x11_xtest_FakeInput_detail, tvb, *offsetp, 1, ENC_NA);
27223     *offsetp += 1;
27224     UNUSED(2);
27225     proto_tree_add_item(t, hf_x11_xtest_FakeInput_time, tvb, *offsetp, 4, byte_order);
27226     *offsetp += 4;
27227     proto_tree_add_item(t, hf_x11_xtest_FakeInput_root, tvb, *offsetp, 4, byte_order);
27228     *offsetp += 4;
27229     UNUSED(8);
27230     proto_tree_add_item(t, hf_x11_xtest_FakeInput_rootX, tvb, *offsetp, 2, byte_order);
27231     *offsetp += 2;
27232     proto_tree_add_item(t, hf_x11_xtest_FakeInput_rootY, tvb, *offsetp, 2, byte_order);
27233     *offsetp += 2;
27234     UNUSED(7);
27235     proto_tree_add_item(t, hf_x11_xtest_FakeInput_deviceid, tvb, *offsetp, 1, byte_order);
27236     *offsetp += 1;
27237 }
27238
27239 static void xtestGrabControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27240 {
27241     proto_tree_add_item(t, hf_x11_xtest_GrabControl_impervious, tvb, *offsetp, 1, byte_order);
27242     *offsetp += 1;
27243     UNUSED(3);
27244 }
27245 static const value_string xtest_extension_minor[] = {
27246     { 0, "GetVersion" },
27247     { 1, "CompareCursor" },
27248     { 2, "FakeInput" },
27249     { 3, "GrabControl" },
27250     { 0, NULL }
27251 };
27252 const x11_event_info xtest_events[] = {
27253     { NULL, NULL }
27254 };
27255 static x11_reply_info xtest_replies[] = {
27256     { 0, xtestGetVersion_Reply },
27257     { 1, xtestCompareCursor_Reply },
27258     { 0, NULL }
27259 };
27260
27261 static void dispatch_xtest(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27262 {
27263     int minor, length;
27264     minor = CARD8(xtest_extension_minor);
27265     length = REQUEST_LENGTH();
27266
27267     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
27268                           val_to_str(minor, xtest_extension_minor,
27269                                      "<Unknown opcode %d>"));
27270     switch (minor) {
27271     case 0:
27272         xtestGetVersion(tvb, pinfo, offsetp, t, byte_order, length);
27273         break;
27274     case 1:
27275         xtestCompareCursor(tvb, pinfo, offsetp, t, byte_order, length);
27276         break;
27277     case 2:
27278         xtestFakeInput(tvb, pinfo, offsetp, t, byte_order, length);
27279         break;
27280     case 3:
27281         xtestGrabControl(tvb, pinfo, offsetp, t, byte_order, length);
27282         break;
27283     /* No need for a default case here, since Unknown is printed above,
27284        and UNDECODED() is taken care of by dissect_x11_request */
27285     }
27286 }
27287
27288 static void register_xtest(void)
27289 {
27290     set_handler("XTEST", dispatch_xtest, xtest_errors, xtest_events, NULL, xtest_replies);
27291 }
27292
27293 static void struct_xv_Rational(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
27294 {
27295     int i;
27296     for (i = 0; i < count; i++) {
27297         proto_item *item;
27298         proto_tree *t;
27299
27300         item = proto_tree_add_item(root, hf_x11_struct_xv_Rational, tvb, *offsetp, 8, ENC_NA);
27301         t = proto_item_add_subtree(item, ett_x11_rectangle);
27302         proto_tree_add_item(t, hf_x11_struct_xv_Rational_numerator, tvb, *offsetp, 4, byte_order);
27303         *offsetp += 4;
27304         proto_tree_add_item(t, hf_x11_struct_xv_Rational_denominator, tvb, *offsetp, 4, byte_order);
27305         *offsetp += 4;
27306     }
27307 }
27308
27309 static void struct_xv_Format(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
27310 {
27311     int i;
27312     for (i = 0; i < count; i++) {
27313         proto_item *item;
27314         proto_tree *t;
27315
27316         item = proto_tree_add_item(root, hf_x11_struct_xv_Format, tvb, *offsetp, 8, ENC_NA);
27317         t = proto_item_add_subtree(item, ett_x11_rectangle);
27318         proto_tree_add_item(t, hf_x11_struct_xv_Format_visual, tvb, *offsetp, 4, byte_order);
27319         *offsetp += 4;
27320         proto_tree_add_item(t, hf_x11_struct_xv_Format_depth, tvb, *offsetp, 1, byte_order);
27321         *offsetp += 1;
27322         UNUSED(3);
27323     }
27324 }
27325
27326 static int struct_size_xv_AdaptorInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
27327 {
27328     int size = 0;
27329     int f_name_size;
27330     int f_num_formats;
27331     f_name_size = VALUE16(tvb, *offsetp + size + 4);
27332     f_num_formats = VALUE16(tvb, *offsetp + size + 8);
27333     size += f_name_size * 1;
27334     size = (size + 3) & ~3;
27335     size += f_num_formats * 8;
27336     return size + 12;
27337 }
27338
27339 static void struct_xv_AdaptorInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
27340 {
27341     int i;
27342     for (i = 0; i < count; i++) {
27343         proto_item *item;
27344         proto_tree *t;
27345         int f_name_size;
27346         int f_num_formats;
27347
27348         item = proto_tree_add_item(root, hf_x11_struct_xv_AdaptorInfo, tvb, *offsetp, struct_size_xv_AdaptorInfo(tvb, offsetp, byte_order), ENC_NA);
27349         t = proto_item_add_subtree(item, ett_x11_rectangle);
27350         proto_tree_add_item(t, hf_x11_struct_xv_AdaptorInfo_base_id, tvb, *offsetp, 4, byte_order);
27351         *offsetp += 4;
27352         f_name_size = VALUE16(tvb, *offsetp);
27353         proto_tree_add_item(t, hf_x11_struct_xv_AdaptorInfo_name_size, tvb, *offsetp, 2, byte_order);
27354         *offsetp += 2;
27355         proto_tree_add_item(t, hf_x11_struct_xv_AdaptorInfo_num_ports, tvb, *offsetp, 2, byte_order);
27356         *offsetp += 2;
27357         f_num_formats = VALUE16(tvb, *offsetp);
27358         proto_tree_add_item(t, hf_x11_struct_xv_AdaptorInfo_num_formats, tvb, *offsetp, 2, byte_order);
27359         *offsetp += 2;
27360         {
27361             const int* type_bits [] = {
27362                 &hf_x11_struct_xv_AdaptorInfo_type_mask_InputMask,
27363                 &hf_x11_struct_xv_AdaptorInfo_type_mask_OutputMask,
27364                 &hf_x11_struct_xv_AdaptorInfo_type_mask_VideoMask,
27365                 &hf_x11_struct_xv_AdaptorInfo_type_mask_StillMask,
27366                 &hf_x11_struct_xv_AdaptorInfo_type_mask_ImageMask,
27367             };
27368             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xv_AdaptorInfo_type, ett_x11_rectangle, type_bits, byte_order);
27369         }
27370         *offsetp += 1;
27371         UNUSED(1);
27372         listOfByte(tvb, offsetp, t, hf_x11_struct_xv_AdaptorInfo_name, f_name_size, byte_order);
27373         if (*offsetp % 4) {
27374             UNUSED(4 - *offsetp % 4);
27375         }
27376         struct_xv_Format(tvb, offsetp, t, byte_order, f_num_formats);
27377     }
27378 }
27379
27380 static int struct_size_xv_EncodingInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
27381 {
27382     int size = 0;
27383     int f_name_size;
27384     f_name_size = VALUE16(tvb, *offsetp + size + 4);
27385     size += f_name_size * 1;
27386     size = (size + 3) & ~3;
27387     return size + 20;
27388 }
27389
27390 static void struct_xv_EncodingInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
27391 {
27392     int i;
27393     for (i = 0; i < count; i++) {
27394         proto_item *item;
27395         proto_tree *t;
27396         int f_name_size;
27397
27398         item = proto_tree_add_item(root, hf_x11_struct_xv_EncodingInfo, tvb, *offsetp, struct_size_xv_EncodingInfo(tvb, offsetp, byte_order), ENC_NA);
27399         t = proto_item_add_subtree(item, ett_x11_rectangle);
27400         proto_tree_add_item(t, hf_x11_struct_xv_EncodingInfo_encoding, tvb, *offsetp, 4, byte_order);
27401         *offsetp += 4;
27402         f_name_size = VALUE16(tvb, *offsetp);
27403         proto_tree_add_item(t, hf_x11_struct_xv_EncodingInfo_name_size, tvb, *offsetp, 2, byte_order);
27404         *offsetp += 2;
27405         proto_tree_add_item(t, hf_x11_struct_xv_EncodingInfo_width, tvb, *offsetp, 2, byte_order);
27406         *offsetp += 2;
27407         proto_tree_add_item(t, hf_x11_struct_xv_EncodingInfo_height, tvb, *offsetp, 2, byte_order);
27408         *offsetp += 2;
27409         UNUSED(2);
27410         struct_xv_Rational(tvb, offsetp, t, byte_order, 1);
27411         listOfByte(tvb, offsetp, t, hf_x11_struct_xv_EncodingInfo_name, f_name_size, byte_order);
27412         if (*offsetp % 4) {
27413             UNUSED(4 - *offsetp % 4);
27414         }
27415     }
27416 }
27417
27418 static int struct_size_xv_AttributeInfo(tvbuff_t *tvb _U_, int *offsetp _U_, guint byte_order _U_)
27419 {
27420     int size = 0;
27421     int f_size;
27422     f_size = VALUE32(tvb, *offsetp + size + 12);
27423     size += f_size * 1;
27424     size = (size + 3) & ~3;
27425     return size + 16;
27426 }
27427
27428 static void struct_xv_AttributeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
27429 {
27430     int i;
27431     for (i = 0; i < count; i++) {
27432         proto_item *item;
27433         proto_tree *t;
27434         int f_size;
27435
27436         item = proto_tree_add_item(root, hf_x11_struct_xv_AttributeInfo, tvb, *offsetp, struct_size_xv_AttributeInfo(tvb, offsetp, byte_order), ENC_NA);
27437         t = proto_item_add_subtree(item, ett_x11_rectangle);
27438         {
27439             const int* flags_bits [] = {
27440                 &hf_x11_struct_xv_AttributeInfo_flags_mask_Gettable,
27441                 &hf_x11_struct_xv_AttributeInfo_flags_mask_Settable,
27442             };
27443             proto_tree_add_bitmask(t,  tvb, *offsetp, hf_x11_struct_xv_AttributeInfo_flags, ett_x11_rectangle, flags_bits, byte_order);
27444         }
27445         *offsetp += 4;
27446         proto_tree_add_item(t, hf_x11_struct_xv_AttributeInfo_min, tvb, *offsetp, 4, byte_order);
27447         *offsetp += 4;
27448         proto_tree_add_item(t, hf_x11_struct_xv_AttributeInfo_max, tvb, *offsetp, 4, byte_order);
27449         *offsetp += 4;
27450         f_size = VALUE32(tvb, *offsetp);
27451         proto_tree_add_item(t, hf_x11_struct_xv_AttributeInfo_size, tvb, *offsetp, 4, byte_order);
27452         *offsetp += 4;
27453         listOfByte(tvb, offsetp, t, hf_x11_struct_xv_AttributeInfo_name, f_size, byte_order);
27454         if (*offsetp % 4) {
27455             UNUSED(4 - *offsetp % 4);
27456         }
27457     }
27458 }
27459
27460 static void struct_xv_ImageFormatInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
27461 {
27462     int i;
27463     for (i = 0; i < count; i++) {
27464         proto_item *item;
27465         proto_tree *t;
27466
27467         item = proto_tree_add_item(root, hf_x11_struct_xv_ImageFormatInfo, tvb, *offsetp, 128, ENC_NA);
27468         t = proto_item_add_subtree(item, ett_x11_rectangle);
27469         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_id, tvb, *offsetp, 4, byte_order);
27470         *offsetp += 4;
27471         field8(tvb, offsetp, t, hf_x11_struct_xv_ImageFormatInfo_type, byte_order);
27472         field8(tvb, offsetp, t, hf_x11_struct_xv_ImageFormatInfo_byte_order, byte_order);
27473         UNUSED(2);
27474         listOfByte(tvb, offsetp, t, hf_x11_struct_xv_ImageFormatInfo_guid, 16, byte_order);
27475         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_bpp, tvb, *offsetp, 1, byte_order);
27476         *offsetp += 1;
27477         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_num_planes, tvb, *offsetp, 1, byte_order);
27478         *offsetp += 1;
27479         UNUSED(2);
27480         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_depth, tvb, *offsetp, 1, byte_order);
27481         *offsetp += 1;
27482         UNUSED(3);
27483         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_red_mask, tvb, *offsetp, 4, byte_order);
27484         *offsetp += 4;
27485         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_green_mask, tvb, *offsetp, 4, byte_order);
27486         *offsetp += 4;
27487         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_blue_mask, tvb, *offsetp, 4, byte_order);
27488         *offsetp += 4;
27489         field8(tvb, offsetp, t, hf_x11_struct_xv_ImageFormatInfo_format, byte_order);
27490         UNUSED(3);
27491         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_y_sample_bits, tvb, *offsetp, 4, byte_order);
27492         *offsetp += 4;
27493         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_u_sample_bits, tvb, *offsetp, 4, byte_order);
27494         *offsetp += 4;
27495         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_v_sample_bits, tvb, *offsetp, 4, byte_order);
27496         *offsetp += 4;
27497         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_vhorz_y_period, tvb, *offsetp, 4, byte_order);
27498         *offsetp += 4;
27499         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_vhorz_u_period, tvb, *offsetp, 4, byte_order);
27500         *offsetp += 4;
27501         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_vhorz_v_period, tvb, *offsetp, 4, byte_order);
27502         *offsetp += 4;
27503         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_vvert_y_period, tvb, *offsetp, 4, byte_order);
27504         *offsetp += 4;
27505         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_vvert_u_period, tvb, *offsetp, 4, byte_order);
27506         *offsetp += 4;
27507         proto_tree_add_item(t, hf_x11_struct_xv_ImageFormatInfo_vvert_v_period, tvb, *offsetp, 4, byte_order);
27508         *offsetp += 4;
27509         listOfByte(tvb, offsetp, t, hf_x11_struct_xv_ImageFormatInfo_vcomp_order, 32, byte_order);
27510         field8(tvb, offsetp, t, hf_x11_struct_xv_ImageFormatInfo_vscanline_order, byte_order);
27511         UNUSED(11);
27512     }
27513 }
27514
27515 static void xvPortNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
27516 {
27517     UNUSED(1);
27518     CARD16(event_sequencenumber);
27519     proto_tree_add_item(t, hf_x11_xv_PortNotify_time, tvb, *offsetp, 4, byte_order);
27520     *offsetp += 4;
27521     proto_tree_add_item(t, hf_x11_xv_PortNotify_port, tvb, *offsetp, 4, byte_order);
27522     *offsetp += 4;
27523     proto_tree_add_item(t, hf_x11_xv_PortNotify_attribute, tvb, *offsetp, 4, byte_order);
27524     *offsetp += 4;
27525     proto_tree_add_item(t, hf_x11_xv_PortNotify_value, tvb, *offsetp, 4, byte_order);
27526     *offsetp += 4;
27527 }
27528
27529
27530 static void xvQueryExtension(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
27531 {
27532 }
27533 static void xvQueryExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27534 {
27535     int sequence_number;
27536
27537     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryExtension");
27538
27539     REPLY(reply);
27540     UNUSED(1);
27541     sequence_number = VALUE16(tvb, *offsetp);
27542     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27543             "%d (xv-QueryExtension)", sequence_number);
27544     *offsetp += 2;
27545     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27546     *offsetp += 4;
27547     proto_tree_add_item(t, hf_x11_xv_QueryExtension_reply_major, tvb, *offsetp, 2, byte_order);
27548     *offsetp += 2;
27549     proto_tree_add_item(t, hf_x11_xv_QueryExtension_reply_minor, tvb, *offsetp, 2, byte_order);
27550     *offsetp += 2;
27551 }
27552
27553 static void xvQueryAdaptors(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27554 {
27555     proto_tree_add_item(t, hf_x11_xv_QueryAdaptors_window, tvb, *offsetp, 4, byte_order);
27556     *offsetp += 4;
27557 }
27558 static void xvQueryAdaptors_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27559 {
27560     int sequence_number;
27561     int f_num_adaptors;
27562
27563     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryAdaptors");
27564
27565     REPLY(reply);
27566     UNUSED(1);
27567     sequence_number = VALUE16(tvb, *offsetp);
27568     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27569             "%d (xv-QueryAdaptors)", sequence_number);
27570     *offsetp += 2;
27571     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27572     *offsetp += 4;
27573     f_num_adaptors = VALUE16(tvb, *offsetp);
27574     proto_tree_add_item(t, hf_x11_xv_QueryAdaptors_reply_num_adaptors, tvb, *offsetp, 2, byte_order);
27575     *offsetp += 2;
27576     UNUSED(22);
27577     struct_xv_AdaptorInfo(tvb, offsetp, t, byte_order, f_num_adaptors);
27578 }
27579
27580 static void xvQueryEncodings(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27581 {
27582     proto_tree_add_item(t, hf_x11_xv_QueryEncodings_port, tvb, *offsetp, 4, byte_order);
27583     *offsetp += 4;
27584 }
27585 static void xvQueryEncodings_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27586 {
27587     int sequence_number;
27588     int f_num_encodings;
27589
27590     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryEncodings");
27591
27592     REPLY(reply);
27593     UNUSED(1);
27594     sequence_number = VALUE16(tvb, *offsetp);
27595     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27596             "%d (xv-QueryEncodings)", sequence_number);
27597     *offsetp += 2;
27598     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27599     *offsetp += 4;
27600     f_num_encodings = VALUE16(tvb, *offsetp);
27601     proto_tree_add_item(t, hf_x11_xv_QueryEncodings_reply_num_encodings, tvb, *offsetp, 2, byte_order);
27602     *offsetp += 2;
27603     UNUSED(22);
27604     struct_xv_EncodingInfo(tvb, offsetp, t, byte_order, f_num_encodings);
27605 }
27606
27607 static void xvGrabPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27608 {
27609     proto_tree_add_item(t, hf_x11_xv_GrabPort_port, tvb, *offsetp, 4, byte_order);
27610     *offsetp += 4;
27611     field32(tvb, offsetp, t, hf_x11_xv_GrabPort_time, byte_order);
27612 }
27613 static void xvGrabPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27614 {
27615     int sequence_number;
27616
27617     col_append_fstr(pinfo->cinfo, COL_INFO, "-GrabPort");
27618
27619     REPLY(reply);
27620     field8(tvb, offsetp, t, hf_x11_xv_GrabPort_reply_result, byte_order);
27621     sequence_number = VALUE16(tvb, *offsetp);
27622     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27623             "%d (xv-GrabPort)", sequence_number);
27624     *offsetp += 2;
27625     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27626     *offsetp += 4;
27627 }
27628
27629 static void xvUngrabPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27630 {
27631     proto_tree_add_item(t, hf_x11_xv_UngrabPort_port, tvb, *offsetp, 4, byte_order);
27632     *offsetp += 4;
27633     field32(tvb, offsetp, t, hf_x11_xv_UngrabPort_time, byte_order);
27634 }
27635
27636 static void xvPutVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27637 {
27638     proto_tree_add_item(t, hf_x11_xv_PutVideo_port, tvb, *offsetp, 4, byte_order);
27639     *offsetp += 4;
27640     proto_tree_add_item(t, hf_x11_xv_PutVideo_drawable, tvb, *offsetp, 4, byte_order);
27641     *offsetp += 4;
27642     proto_tree_add_item(t, hf_x11_xv_PutVideo_gc, tvb, *offsetp, 4, byte_order);
27643     *offsetp += 4;
27644     proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_x, tvb, *offsetp, 2, byte_order);
27645     *offsetp += 2;
27646     proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_y, tvb, *offsetp, 2, byte_order);
27647     *offsetp += 2;
27648     proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_w, tvb, *offsetp, 2, byte_order);
27649     *offsetp += 2;
27650     proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_h, tvb, *offsetp, 2, byte_order);
27651     *offsetp += 2;
27652     proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_x, tvb, *offsetp, 2, byte_order);
27653     *offsetp += 2;
27654     proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_y, tvb, *offsetp, 2, byte_order);
27655     *offsetp += 2;
27656     proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_w, tvb, *offsetp, 2, byte_order);
27657     *offsetp += 2;
27658     proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_h, tvb, *offsetp, 2, byte_order);
27659     *offsetp += 2;
27660 }
27661
27662 static void xvPutStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27663 {
27664     proto_tree_add_item(t, hf_x11_xv_PutStill_port, tvb, *offsetp, 4, byte_order);
27665     *offsetp += 4;
27666     proto_tree_add_item(t, hf_x11_xv_PutStill_drawable, tvb, *offsetp, 4, byte_order);
27667     *offsetp += 4;
27668     proto_tree_add_item(t, hf_x11_xv_PutStill_gc, tvb, *offsetp, 4, byte_order);
27669     *offsetp += 4;
27670     proto_tree_add_item(t, hf_x11_xv_PutStill_vid_x, tvb, *offsetp, 2, byte_order);
27671     *offsetp += 2;
27672     proto_tree_add_item(t, hf_x11_xv_PutStill_vid_y, tvb, *offsetp, 2, byte_order);
27673     *offsetp += 2;
27674     proto_tree_add_item(t, hf_x11_xv_PutStill_vid_w, tvb, *offsetp, 2, byte_order);
27675     *offsetp += 2;
27676     proto_tree_add_item(t, hf_x11_xv_PutStill_vid_h, tvb, *offsetp, 2, byte_order);
27677     *offsetp += 2;
27678     proto_tree_add_item(t, hf_x11_xv_PutStill_drw_x, tvb, *offsetp, 2, byte_order);
27679     *offsetp += 2;
27680     proto_tree_add_item(t, hf_x11_xv_PutStill_drw_y, tvb, *offsetp, 2, byte_order);
27681     *offsetp += 2;
27682     proto_tree_add_item(t, hf_x11_xv_PutStill_drw_w, tvb, *offsetp, 2, byte_order);
27683     *offsetp += 2;
27684     proto_tree_add_item(t, hf_x11_xv_PutStill_drw_h, tvb, *offsetp, 2, byte_order);
27685     *offsetp += 2;
27686 }
27687
27688 static void xvGetVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27689 {
27690     proto_tree_add_item(t, hf_x11_xv_GetVideo_port, tvb, *offsetp, 4, byte_order);
27691     *offsetp += 4;
27692     proto_tree_add_item(t, hf_x11_xv_GetVideo_drawable, tvb, *offsetp, 4, byte_order);
27693     *offsetp += 4;
27694     proto_tree_add_item(t, hf_x11_xv_GetVideo_gc, tvb, *offsetp, 4, byte_order);
27695     *offsetp += 4;
27696     proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_x, tvb, *offsetp, 2, byte_order);
27697     *offsetp += 2;
27698     proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_y, tvb, *offsetp, 2, byte_order);
27699     *offsetp += 2;
27700     proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_w, tvb, *offsetp, 2, byte_order);
27701     *offsetp += 2;
27702     proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_h, tvb, *offsetp, 2, byte_order);
27703     *offsetp += 2;
27704     proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_x, tvb, *offsetp, 2, byte_order);
27705     *offsetp += 2;
27706     proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_y, tvb, *offsetp, 2, byte_order);
27707     *offsetp += 2;
27708     proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_w, tvb, *offsetp, 2, byte_order);
27709     *offsetp += 2;
27710     proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_h, tvb, *offsetp, 2, byte_order);
27711     *offsetp += 2;
27712 }
27713
27714 static void xvGetStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27715 {
27716     proto_tree_add_item(t, hf_x11_xv_GetStill_port, tvb, *offsetp, 4, byte_order);
27717     *offsetp += 4;
27718     proto_tree_add_item(t, hf_x11_xv_GetStill_drawable, tvb, *offsetp, 4, byte_order);
27719     *offsetp += 4;
27720     proto_tree_add_item(t, hf_x11_xv_GetStill_gc, tvb, *offsetp, 4, byte_order);
27721     *offsetp += 4;
27722     proto_tree_add_item(t, hf_x11_xv_GetStill_vid_x, tvb, *offsetp, 2, byte_order);
27723     *offsetp += 2;
27724     proto_tree_add_item(t, hf_x11_xv_GetStill_vid_y, tvb, *offsetp, 2, byte_order);
27725     *offsetp += 2;
27726     proto_tree_add_item(t, hf_x11_xv_GetStill_vid_w, tvb, *offsetp, 2, byte_order);
27727     *offsetp += 2;
27728     proto_tree_add_item(t, hf_x11_xv_GetStill_vid_h, tvb, *offsetp, 2, byte_order);
27729     *offsetp += 2;
27730     proto_tree_add_item(t, hf_x11_xv_GetStill_drw_x, tvb, *offsetp, 2, byte_order);
27731     *offsetp += 2;
27732     proto_tree_add_item(t, hf_x11_xv_GetStill_drw_y, tvb, *offsetp, 2, byte_order);
27733     *offsetp += 2;
27734     proto_tree_add_item(t, hf_x11_xv_GetStill_drw_w, tvb, *offsetp, 2, byte_order);
27735     *offsetp += 2;
27736     proto_tree_add_item(t, hf_x11_xv_GetStill_drw_h, tvb, *offsetp, 2, byte_order);
27737     *offsetp += 2;
27738 }
27739
27740 static void xvStopVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27741 {
27742     proto_tree_add_item(t, hf_x11_xv_StopVideo_port, tvb, *offsetp, 4, byte_order);
27743     *offsetp += 4;
27744     proto_tree_add_item(t, hf_x11_xv_StopVideo_drawable, tvb, *offsetp, 4, byte_order);
27745     *offsetp += 4;
27746 }
27747
27748 static void xvSelectVideoNotify(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27749 {
27750     proto_tree_add_item(t, hf_x11_xv_SelectVideoNotify_drawable, tvb, *offsetp, 4, byte_order);
27751     *offsetp += 4;
27752     proto_tree_add_item(t, hf_x11_xv_SelectVideoNotify_onoff, tvb, *offsetp, 1, byte_order);
27753     *offsetp += 1;
27754     UNUSED(3);
27755 }
27756
27757 static void xvSelectPortNotify(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27758 {
27759     proto_tree_add_item(t, hf_x11_xv_SelectPortNotify_port, tvb, *offsetp, 4, byte_order);
27760     *offsetp += 4;
27761     proto_tree_add_item(t, hf_x11_xv_SelectPortNotify_onoff, tvb, *offsetp, 1, byte_order);
27762     *offsetp += 1;
27763     UNUSED(3);
27764 }
27765
27766 static void xvQueryBestSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27767 {
27768     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_port, tvb, *offsetp, 4, byte_order);
27769     *offsetp += 4;
27770     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_vid_w, tvb, *offsetp, 2, byte_order);
27771     *offsetp += 2;
27772     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_vid_h, tvb, *offsetp, 2, byte_order);
27773     *offsetp += 2;
27774     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_drw_w, tvb, *offsetp, 2, byte_order);
27775     *offsetp += 2;
27776     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_drw_h, tvb, *offsetp, 2, byte_order);
27777     *offsetp += 2;
27778     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_motion, tvb, *offsetp, 1, byte_order);
27779     *offsetp += 1;
27780     UNUSED(3);
27781 }
27782 static void xvQueryBestSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27783 {
27784     int sequence_number;
27785
27786     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryBestSize");
27787
27788     REPLY(reply);
27789     UNUSED(1);
27790     sequence_number = VALUE16(tvb, *offsetp);
27791     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27792             "%d (xv-QueryBestSize)", sequence_number);
27793     *offsetp += 2;
27794     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27795     *offsetp += 4;
27796     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_reply_actual_width, tvb, *offsetp, 2, byte_order);
27797     *offsetp += 2;
27798     proto_tree_add_item(t, hf_x11_xv_QueryBestSize_reply_actual_height, tvb, *offsetp, 2, byte_order);
27799     *offsetp += 2;
27800 }
27801
27802 static void xvSetPortAttribute(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27803 {
27804     proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_port, tvb, *offsetp, 4, byte_order);
27805     *offsetp += 4;
27806     proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_attribute, tvb, *offsetp, 4, byte_order);
27807     *offsetp += 4;
27808     proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_value, tvb, *offsetp, 4, byte_order);
27809     *offsetp += 4;
27810 }
27811
27812 static void xvGetPortAttribute(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27813 {
27814     proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_port, tvb, *offsetp, 4, byte_order);
27815     *offsetp += 4;
27816     proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_attribute, tvb, *offsetp, 4, byte_order);
27817     *offsetp += 4;
27818 }
27819 static void xvGetPortAttribute_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27820 {
27821     int sequence_number;
27822
27823     col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPortAttribute");
27824
27825     REPLY(reply);
27826     UNUSED(1);
27827     sequence_number = VALUE16(tvb, *offsetp);
27828     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27829             "%d (xv-GetPortAttribute)", sequence_number);
27830     *offsetp += 2;
27831     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27832     *offsetp += 4;
27833     proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_reply_value, tvb, *offsetp, 4, byte_order);
27834     *offsetp += 4;
27835 }
27836
27837 static void xvQueryPortAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27838 {
27839     proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_port, tvb, *offsetp, 4, byte_order);
27840     *offsetp += 4;
27841 }
27842 static void xvQueryPortAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27843 {
27844     int sequence_number;
27845     int f_num_attributes;
27846
27847     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryPortAttributes");
27848
27849     REPLY(reply);
27850     UNUSED(1);
27851     sequence_number = VALUE16(tvb, *offsetp);
27852     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27853             "%d (xv-QueryPortAttributes)", sequence_number);
27854     *offsetp += 2;
27855     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27856     *offsetp += 4;
27857     f_num_attributes = VALUE32(tvb, *offsetp);
27858     proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_reply_num_attributes, tvb, *offsetp, 4, byte_order);
27859     *offsetp += 4;
27860     proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_reply_text_size, tvb, *offsetp, 4, byte_order);
27861     *offsetp += 4;
27862     UNUSED(16);
27863     struct_xv_AttributeInfo(tvb, offsetp, t, byte_order, f_num_attributes);
27864 }
27865
27866 static void xvListImageFormats(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27867 {
27868     proto_tree_add_item(t, hf_x11_xv_ListImageFormats_port, tvb, *offsetp, 4, byte_order);
27869     *offsetp += 4;
27870 }
27871 static void xvListImageFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27872 {
27873     int sequence_number;
27874     int f_num_formats;
27875
27876     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListImageFormats");
27877
27878     REPLY(reply);
27879     UNUSED(1);
27880     sequence_number = VALUE16(tvb, *offsetp);
27881     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27882             "%d (xv-ListImageFormats)", sequence_number);
27883     *offsetp += 2;
27884     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27885     *offsetp += 4;
27886     f_num_formats = VALUE32(tvb, *offsetp);
27887     proto_tree_add_item(t, hf_x11_xv_ListImageFormats_reply_num_formats, tvb, *offsetp, 4, byte_order);
27888     *offsetp += 4;
27889     UNUSED(20);
27890     struct_xv_ImageFormatInfo(tvb, offsetp, t, byte_order, f_num_formats);
27891 }
27892
27893 static void xvQueryImageAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27894 {
27895     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_port, tvb, *offsetp, 4, byte_order);
27896     *offsetp += 4;
27897     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_id, tvb, *offsetp, 4, byte_order);
27898     *offsetp += 4;
27899     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_width, tvb, *offsetp, 2, byte_order);
27900     *offsetp += 2;
27901     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_height, tvb, *offsetp, 2, byte_order);
27902     *offsetp += 2;
27903 }
27904 static void xvQueryImageAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
27905 {
27906     int sequence_number;
27907     int f_num_planes;
27908
27909     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryImageAttributes");
27910
27911     REPLY(reply);
27912     UNUSED(1);
27913     sequence_number = VALUE16(tvb, *offsetp);
27914     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
27915             "%d (xv-QueryImageAttributes)", sequence_number);
27916     *offsetp += 2;
27917     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
27918     *offsetp += 4;
27919     f_num_planes = VALUE32(tvb, *offsetp);
27920     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_num_planes, tvb, *offsetp, 4, byte_order);
27921     *offsetp += 4;
27922     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_data_size, tvb, *offsetp, 4, byte_order);
27923     *offsetp += 4;
27924     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_width, tvb, *offsetp, 2, byte_order);
27925     *offsetp += 2;
27926     proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_height, tvb, *offsetp, 2, byte_order);
27927     *offsetp += 2;
27928     UNUSED(12);
27929     listOfCard32(tvb, offsetp, t, hf_x11_xv_QueryImageAttributes_reply_pitches, hf_x11_xv_QueryImageAttributes_reply_pitches_item, f_num_planes, byte_order);
27930     listOfCard32(tvb, offsetp, t, hf_x11_xv_QueryImageAttributes_reply_offsets, hf_x11_xv_QueryImageAttributes_reply_offsets_item, f_num_planes, byte_order);
27931 }
27932
27933 static void xvPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27934 {
27935     proto_tree_add_item(t, hf_x11_xv_PutImage_port, tvb, *offsetp, 4, byte_order);
27936     *offsetp += 4;
27937     proto_tree_add_item(t, hf_x11_xv_PutImage_drawable, tvb, *offsetp, 4, byte_order);
27938     *offsetp += 4;
27939     proto_tree_add_item(t, hf_x11_xv_PutImage_gc, tvb, *offsetp, 4, byte_order);
27940     *offsetp += 4;
27941     proto_tree_add_item(t, hf_x11_xv_PutImage_id, tvb, *offsetp, 4, byte_order);
27942     *offsetp += 4;
27943     proto_tree_add_item(t, hf_x11_xv_PutImage_src_x, tvb, *offsetp, 2, byte_order);
27944     *offsetp += 2;
27945     proto_tree_add_item(t, hf_x11_xv_PutImage_src_y, tvb, *offsetp, 2, byte_order);
27946     *offsetp += 2;
27947     proto_tree_add_item(t, hf_x11_xv_PutImage_src_w, tvb, *offsetp, 2, byte_order);
27948     *offsetp += 2;
27949     proto_tree_add_item(t, hf_x11_xv_PutImage_src_h, tvb, *offsetp, 2, byte_order);
27950     *offsetp += 2;
27951     proto_tree_add_item(t, hf_x11_xv_PutImage_drw_x, tvb, *offsetp, 2, byte_order);
27952     *offsetp += 2;
27953     proto_tree_add_item(t, hf_x11_xv_PutImage_drw_y, tvb, *offsetp, 2, byte_order);
27954     *offsetp += 2;
27955     proto_tree_add_item(t, hf_x11_xv_PutImage_drw_w, tvb, *offsetp, 2, byte_order);
27956     *offsetp += 2;
27957     proto_tree_add_item(t, hf_x11_xv_PutImage_drw_h, tvb, *offsetp, 2, byte_order);
27958     *offsetp += 2;
27959     proto_tree_add_item(t, hf_x11_xv_PutImage_width, tvb, *offsetp, 2, byte_order);
27960     *offsetp += 2;
27961     proto_tree_add_item(t, hf_x11_xv_PutImage_height, tvb, *offsetp, 2, byte_order);
27962     *offsetp += 2;
27963     listOfByte(tvb, offsetp, t, hf_x11_xv_PutImage_data, (length - 40) / 1, byte_order);
27964 }
27965
27966 static void xvShmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
27967 {
27968     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_port, tvb, *offsetp, 4, byte_order);
27969     *offsetp += 4;
27970     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drawable, tvb, *offsetp, 4, byte_order);
27971     *offsetp += 4;
27972     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_gc, tvb, *offsetp, 4, byte_order);
27973     *offsetp += 4;
27974     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_shmseg, tvb, *offsetp, 4, byte_order);
27975     *offsetp += 4;
27976     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_id, tvb, *offsetp, 4, byte_order);
27977     *offsetp += 4;
27978     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_offset, tvb, *offsetp, 4, byte_order);
27979     *offsetp += 4;
27980     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_x, tvb, *offsetp, 2, byte_order);
27981     *offsetp += 2;
27982     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_y, tvb, *offsetp, 2, byte_order);
27983     *offsetp += 2;
27984     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_w, tvb, *offsetp, 2, byte_order);
27985     *offsetp += 2;
27986     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_h, tvb, *offsetp, 2, byte_order);
27987     *offsetp += 2;
27988     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_x, tvb, *offsetp, 2, byte_order);
27989     *offsetp += 2;
27990     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_y, tvb, *offsetp, 2, byte_order);
27991     *offsetp += 2;
27992     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_w, tvb, *offsetp, 2, byte_order);
27993     *offsetp += 2;
27994     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_h, tvb, *offsetp, 2, byte_order);
27995     *offsetp += 2;
27996     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_width, tvb, *offsetp, 2, byte_order);
27997     *offsetp += 2;
27998     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_height, tvb, *offsetp, 2, byte_order);
27999     *offsetp += 2;
28000     proto_tree_add_item(t, hf_x11_xv_ShmPutImage_send_event, tvb, *offsetp, 1, byte_order);
28001     *offsetp += 1;
28002     UNUSED(3);
28003 }
28004 static const value_string xv_extension_minor[] = {
28005     { 0, "QueryExtension" },
28006     { 1, "QueryAdaptors" },
28007     { 2, "QueryEncodings" },
28008     { 3, "GrabPort" },
28009     { 4, "UngrabPort" },
28010     { 5, "PutVideo" },
28011     { 6, "PutStill" },
28012     { 7, "GetVideo" },
28013     { 8, "GetStill" },
28014     { 9, "StopVideo" },
28015     { 10, "SelectVideoNotify" },
28016     { 11, "SelectPortNotify" },
28017     { 12, "QueryBestSize" },
28018     { 13, "SetPortAttribute" },
28019     { 14, "GetPortAttribute" },
28020     { 15, "QueryPortAttributes" },
28021     { 16, "ListImageFormats" },
28022     { 17, "QueryImageAttributes" },
28023     { 18, "PutImage" },
28024     { 19, "ShmPutImage" },
28025     { 0, NULL }
28026 };
28027 const x11_event_info xv_events[] = {
28028     { "xv-PortNotify", xvPortNotify },
28029     { NULL, NULL }
28030 };
28031 static x11_reply_info xv_replies[] = {
28032     { 0, xvQueryExtension_Reply },
28033     { 1, xvQueryAdaptors_Reply },
28034     { 2, xvQueryEncodings_Reply },
28035     { 3, xvGrabPort_Reply },
28036     { 12, xvQueryBestSize_Reply },
28037     { 14, xvGetPortAttribute_Reply },
28038     { 15, xvQueryPortAttributes_Reply },
28039     { 16, xvListImageFormats_Reply },
28040     { 17, xvQueryImageAttributes_Reply },
28041     { 0, NULL }
28042 };
28043
28044 static void dispatch_xv(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28045 {
28046     int minor, length;
28047     minor = CARD8(xv_extension_minor);
28048     length = REQUEST_LENGTH();
28049
28050     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
28051                           val_to_str(minor, xv_extension_minor,
28052                                      "<Unknown opcode %d>"));
28053     switch (minor) {
28054     case 0:
28055         xvQueryExtension(tvb, pinfo, offsetp, t, byte_order, length);
28056         break;
28057     case 1:
28058         xvQueryAdaptors(tvb, pinfo, offsetp, t, byte_order, length);
28059         break;
28060     case 2:
28061         xvQueryEncodings(tvb, pinfo, offsetp, t, byte_order, length);
28062         break;
28063     case 3:
28064         xvGrabPort(tvb, pinfo, offsetp, t, byte_order, length);
28065         break;
28066     case 4:
28067         xvUngrabPort(tvb, pinfo, offsetp, t, byte_order, length);
28068         break;
28069     case 5:
28070         xvPutVideo(tvb, pinfo, offsetp, t, byte_order, length);
28071         break;
28072     case 6:
28073         xvPutStill(tvb, pinfo, offsetp, t, byte_order, length);
28074         break;
28075     case 7:
28076         xvGetVideo(tvb, pinfo, offsetp, t, byte_order, length);
28077         break;
28078     case 8:
28079         xvGetStill(tvb, pinfo, offsetp, t, byte_order, length);
28080         break;
28081     case 9:
28082         xvStopVideo(tvb, pinfo, offsetp, t, byte_order, length);
28083         break;
28084     case 10:
28085         xvSelectVideoNotify(tvb, pinfo, offsetp, t, byte_order, length);
28086         break;
28087     case 11:
28088         xvSelectPortNotify(tvb, pinfo, offsetp, t, byte_order, length);
28089         break;
28090     case 12:
28091         xvQueryBestSize(tvb, pinfo, offsetp, t, byte_order, length);
28092         break;
28093     case 13:
28094         xvSetPortAttribute(tvb, pinfo, offsetp, t, byte_order, length);
28095         break;
28096     case 14:
28097         xvGetPortAttribute(tvb, pinfo, offsetp, t, byte_order, length);
28098         break;
28099     case 15:
28100         xvQueryPortAttributes(tvb, pinfo, offsetp, t, byte_order, length);
28101         break;
28102     case 16:
28103         xvListImageFormats(tvb, pinfo, offsetp, t, byte_order, length);
28104         break;
28105     case 17:
28106         xvQueryImageAttributes(tvb, pinfo, offsetp, t, byte_order, length);
28107         break;
28108     case 18:
28109         xvPutImage(tvb, pinfo, offsetp, t, byte_order, length);
28110         break;
28111     case 19:
28112         xvShmPutImage(tvb, pinfo, offsetp, t, byte_order, length);
28113         break;
28114     /* No need for a default case here, since Unknown is printed above,
28115        and UNDECODED() is taken care of by dissect_x11_request */
28116     }
28117 }
28118
28119 static void register_xv(void)
28120 {
28121     set_handler("XVideo", dispatch_xv, xv_errors, xv_events, NULL, xv_replies);
28122 }
28123
28124 static void struct_xvmc_SurfaceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
28125 {
28126     int i;
28127     for (i = 0; i < count; i++) {
28128         proto_item *item;
28129         proto_tree *t;
28130
28131         item = proto_tree_add_item(root, hf_x11_struct_xvmc_SurfaceInfo, tvb, *offsetp, 24, ENC_NA);
28132         t = proto_item_add_subtree(item, ett_x11_rectangle);
28133         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_id, tvb, *offsetp, 4, byte_order);
28134         *offsetp += 4;
28135         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_chroma_format, tvb, *offsetp, 2, byte_order);
28136         *offsetp += 2;
28137         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_pad0, tvb, *offsetp, 2, byte_order);
28138         *offsetp += 2;
28139         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_max_width, tvb, *offsetp, 2, byte_order);
28140         *offsetp += 2;
28141         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_max_height, tvb, *offsetp, 2, byte_order);
28142         *offsetp += 2;
28143         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_subpicture_max_width, tvb, *offsetp, 2, byte_order);
28144         *offsetp += 2;
28145         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_subpicture_max_height, tvb, *offsetp, 2, byte_order);
28146         *offsetp += 2;
28147         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_mc_type, tvb, *offsetp, 4, byte_order);
28148         *offsetp += 4;
28149         proto_tree_add_item(t, hf_x11_struct_xvmc_SurfaceInfo_flags, tvb, *offsetp, 4, byte_order);
28150         *offsetp += 4;
28151     }
28152 }
28153
28154 static void xvmcQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
28155 {
28156 }
28157 static void xvmcQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28158 {
28159     int sequence_number;
28160
28161     col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion");
28162
28163     REPLY(reply);
28164     UNUSED(1);
28165     sequence_number = VALUE16(tvb, *offsetp);
28166     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
28167             "%d (xvmc-QueryVersion)", sequence_number);
28168     *offsetp += 2;
28169     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
28170     *offsetp += 4;
28171     proto_tree_add_item(t, hf_x11_xvmc_QueryVersion_reply_major, tvb, *offsetp, 4, byte_order);
28172     *offsetp += 4;
28173     proto_tree_add_item(t, hf_x11_xvmc_QueryVersion_reply_minor, tvb, *offsetp, 4, byte_order);
28174     *offsetp += 4;
28175 }
28176
28177 static void xvmcListSurfaceTypes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28178 {
28179     proto_tree_add_item(t, hf_x11_xvmc_ListSurfaceTypes_port_id, tvb, *offsetp, 4, byte_order);
28180     *offsetp += 4;
28181 }
28182 static void xvmcListSurfaceTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28183 {
28184     int sequence_number;
28185     int f_num;
28186
28187     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListSurfaceTypes");
28188
28189     REPLY(reply);
28190     UNUSED(1);
28191     sequence_number = VALUE16(tvb, *offsetp);
28192     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
28193             "%d (xvmc-ListSurfaceTypes)", sequence_number);
28194     *offsetp += 2;
28195     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
28196     *offsetp += 4;
28197     f_num = VALUE32(tvb, *offsetp);
28198     proto_tree_add_item(t, hf_x11_xvmc_ListSurfaceTypes_reply_num, tvb, *offsetp, 4, byte_order);
28199     *offsetp += 4;
28200     UNUSED(20);
28201     struct_xvmc_SurfaceInfo(tvb, offsetp, t, byte_order, f_num);
28202 }
28203
28204 static void xvmcCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28205 {
28206     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_context_id, tvb, *offsetp, 4, byte_order);
28207     *offsetp += 4;
28208     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_port_id, tvb, *offsetp, 4, byte_order);
28209     *offsetp += 4;
28210     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_surface_id, tvb, *offsetp, 4, byte_order);
28211     *offsetp += 4;
28212     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_width, tvb, *offsetp, 2, byte_order);
28213     *offsetp += 2;
28214     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_height, tvb, *offsetp, 2, byte_order);
28215     *offsetp += 2;
28216     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_flags, tvb, *offsetp, 4, byte_order);
28217     *offsetp += 4;
28218 }
28219 static void xvmcCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28220 {
28221     int sequence_number;
28222     int f_length;
28223
28224     col_append_fstr(pinfo->cinfo, COL_INFO, "-CreateContext");
28225
28226     REPLY(reply);
28227     UNUSED(1);
28228     sequence_number = VALUE16(tvb, *offsetp);
28229     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
28230             "%d (xvmc-CreateContext)", sequence_number);
28231     *offsetp += 2;
28232     f_length = VALUE32(tvb, *offsetp);
28233     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
28234     *offsetp += 4;
28235     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_width_actual, tvb, *offsetp, 2, byte_order);
28236     *offsetp += 2;
28237     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_height_actual, tvb, *offsetp, 2, byte_order);
28238     *offsetp += 2;
28239     proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_flags_return, tvb, *offsetp, 4, byte_order);
28240     *offsetp += 4;
28241     UNUSED(20);
28242     listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateContext_reply_priv_data, hf_x11_xvmc_CreateContext_reply_priv_data_item, f_length, byte_order);
28243 }
28244
28245 static void xvmcDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28246 {
28247     proto_tree_add_item(t, hf_x11_xvmc_DestroyContext_context_id, tvb, *offsetp, 4, byte_order);
28248     *offsetp += 4;
28249 }
28250
28251 static void xvmcCreateSurface(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28252 {
28253     proto_tree_add_item(t, hf_x11_xvmc_CreateSurface_surface_id, tvb, *offsetp, 4, byte_order);
28254     *offsetp += 4;
28255     proto_tree_add_item(t, hf_x11_xvmc_CreateSurface_context_id, tvb, *offsetp, 4, byte_order);
28256     *offsetp += 4;
28257 }
28258 static void xvmcCreateSurface_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28259 {
28260     int sequence_number;
28261     int f_length;
28262
28263     col_append_fstr(pinfo->cinfo, COL_INFO, "-CreateSurface");
28264
28265     REPLY(reply);
28266     UNUSED(1);
28267     sequence_number = VALUE16(tvb, *offsetp);
28268     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
28269             "%d (xvmc-CreateSurface)", sequence_number);
28270     *offsetp += 2;
28271     f_length = VALUE32(tvb, *offsetp);
28272     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
28273     *offsetp += 4;
28274     UNUSED(24);
28275     listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateSurface_reply_priv_data, hf_x11_xvmc_CreateSurface_reply_priv_data_item, f_length, byte_order);
28276 }
28277
28278 static void xvmcDestroySurface(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28279 {
28280     proto_tree_add_item(t, hf_x11_xvmc_DestroySurface_surface_id, tvb, *offsetp, 4, byte_order);
28281     *offsetp += 4;
28282 }
28283
28284 static void xvmcCreateSubpicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28285 {
28286     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_subpicture_id, tvb, *offsetp, 4, byte_order);
28287     *offsetp += 4;
28288     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_context, tvb, *offsetp, 4, byte_order);
28289     *offsetp += 4;
28290     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_xvimage_id, tvb, *offsetp, 4, byte_order);
28291     *offsetp += 4;
28292     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_width, tvb, *offsetp, 2, byte_order);
28293     *offsetp += 2;
28294     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_height, tvb, *offsetp, 2, byte_order);
28295     *offsetp += 2;
28296 }
28297 static void xvmcCreateSubpicture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28298 {
28299     int sequence_number;
28300     int f_length;
28301
28302     col_append_fstr(pinfo->cinfo, COL_INFO, "-CreateSubpicture");
28303
28304     REPLY(reply);
28305     UNUSED(1);
28306     sequence_number = VALUE16(tvb, *offsetp);
28307     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
28308             "%d (xvmc-CreateSubpicture)", sequence_number);
28309     *offsetp += 2;
28310     f_length = VALUE32(tvb, *offsetp);
28311     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
28312     *offsetp += 4;
28313     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_width_actual, tvb, *offsetp, 2, byte_order);
28314     *offsetp += 2;
28315     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_height_actual, tvb, *offsetp, 2, byte_order);
28316     *offsetp += 2;
28317     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_num_palette_entries, tvb, *offsetp, 2, byte_order);
28318     *offsetp += 2;
28319     proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_entry_bytes, tvb, *offsetp, 2, byte_order);
28320     *offsetp += 2;
28321     listOfByte(tvb, offsetp, t, hf_x11_xvmc_CreateSubpicture_reply_component_order, 4, byte_order);
28322     UNUSED(12);
28323     listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateSubpicture_reply_priv_data, hf_x11_xvmc_CreateSubpicture_reply_priv_data_item, f_length, byte_order);
28324 }
28325
28326 static void xvmcDestroySubpicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28327 {
28328     proto_tree_add_item(t, hf_x11_xvmc_DestroySubpicture_subpicture_id, tvb, *offsetp, 4, byte_order);
28329     *offsetp += 4;
28330 }
28331
28332 static void xvmcListSubpictureTypes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
28333 {
28334     proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_port_id, tvb, *offsetp, 4, byte_order);
28335     *offsetp += 4;
28336     proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_surface_id, tvb, *offsetp, 4, byte_order);
28337     *offsetp += 4;
28338 }
28339 static void xvmcListSubpictureTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28340 {
28341     int sequence_number;
28342     int f_num;
28343
28344     col_append_fstr(pinfo->cinfo, COL_INFO, "-ListSubpictureTypes");
28345
28346     REPLY(reply);
28347     UNUSED(1);
28348     sequence_number = VALUE16(tvb, *offsetp);
28349     proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
28350             "%d (xvmc-ListSubpictureTypes)", sequence_number);
28351     *offsetp += 2;
28352     proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
28353     *offsetp += 4;
28354     f_num = VALUE32(tvb, *offsetp);
28355     proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_reply_num, tvb, *offsetp, 4, byte_order);
28356     *offsetp += 4;
28357     UNUSED(20);
28358     struct_xv_ImageFormatInfo(tvb, offsetp, t, byte_order, f_num);
28359 }
28360 static const value_string xvmc_extension_minor[] = {
28361     { 0, "QueryVersion" },
28362     { 1, "ListSurfaceTypes" },
28363     { 2, "CreateContext" },
28364     { 3, "DestroyContext" },
28365     { 4, "CreateSurface" },
28366     { 5, "DestroySurface" },
28367     { 6, "CreateSubpicture" },
28368     { 7, "DestroySubpicture" },
28369     { 8, "ListSubpictureTypes" },
28370     { 0, NULL }
28371 };
28372 const x11_event_info xvmc_events[] = {
28373     { NULL, NULL }
28374 };
28375 static x11_reply_info xvmc_replies[] = {
28376     { 0, xvmcQueryVersion_Reply },
28377     { 1, xvmcListSurfaceTypes_Reply },
28378     { 2, xvmcCreateContext_Reply },
28379     { 4, xvmcCreateSurface_Reply },
28380     { 6, xvmcCreateSubpicture_Reply },
28381     { 8, xvmcListSubpictureTypes_Reply },
28382     { 0, NULL }
28383 };
28384
28385 static void dispatch_xvmc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
28386 {
28387     int minor, length;
28388     minor = CARD8(xvmc_extension_minor);
28389     length = REQUEST_LENGTH();
28390
28391     col_append_fstr(pinfo->cinfo, COL_INFO, "-%s",
28392                           val_to_str(minor, xvmc_extension_minor,
28393                                      "<Unknown opcode %d>"));
28394     switch (minor) {
28395     case 0:
28396         xvmcQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
28397         break;
28398     case 1:
28399         xvmcListSurfaceTypes(tvb, pinfo, offsetp, t, byte_order, length);
28400         break;
28401     case 2:
28402         xvmcCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
28403         break;
28404     case 3:
28405         xvmcDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
28406         break;
28407     case 4:
28408         xvmcCreateSurface(tvb, pinfo, offsetp, t, byte_order, length);
28409         break;
28410     case 5:
28411         xvmcDestroySurface(tvb, pinfo, offsetp, t, byte_order, length);
28412         break;
28413     case 6:
28414         xvmcCreateSubpicture(tvb, pinfo, offsetp, t, byte_order, length);
28415         break;
28416     case 7:
28417         xvmcDestroySubpicture(tvb, pinfo, offsetp, t, byte_order, length);
28418         break;
28419     case 8:
28420         xvmcListSubpictureTypes(tvb, pinfo, offsetp, t, byte_order, length);
28421         break;
28422     /* No need for a default case here, since Unknown is printed above,
28423        and UNDECODED() is taken care of by dissect_x11_request */
28424     }
28425 }
28426
28427 static void register_xvmc(void)
28428 {
28429     set_handler("XVideo-MotionCompensation", dispatch_xvmc, xvmc_errors, xvmc_events, NULL, xvmc_replies);
28430 }
28431 static void register_x11_extensions(void)
28432 {
28433     register_bigreq();
28434     register_composite();
28435     register_damage();
28436     register_dpms();
28437     register_dri2();
28438     register_dri3();
28439     register_ge();
28440     register_glx();
28441     register_present();
28442     register_randr();
28443     register_record();
28444     register_render();
28445     register_res();
28446     register_screensaver();
28447     register_shape();
28448     register_shm();
28449     register_sync();
28450     register_xc_misc();
28451     register_xevie();
28452     register_xf86dri();
28453     register_xf86vidmode();
28454     register_xfixes();
28455     register_xinerama();
28456     register_xinput();
28457     register_xkb();
28458     register_xprint();
28459     register_xselinux();
28460     register_xtest();
28461     register_xv();
28462     register_xvmc();
28463 }