1 /* this is a file autogenerated by spice_codegen.py */
2 /*
3  * Copyright (C) 2013 Red Hat, Inc.
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  */
6 
7 #ifndef _H_SPICE_ENUMS
8 #define _H_SPICE_ENUMS
9 
10 typedef enum SpiceLinkErr {
11     SPICE_LINK_ERR_OK,
12     SPICE_LINK_ERR_ERROR,
13     SPICE_LINK_ERR_INVALID_MAGIC,
14     SPICE_LINK_ERR_INVALID_DATA,
15     SPICE_LINK_ERR_VERSION_MISMATCH,
16     SPICE_LINK_ERR_NEED_SECURED,
17     SPICE_LINK_ERR_NEED_UNSECURED,
18     SPICE_LINK_ERR_PERMISSION_DENIED,
19     SPICE_LINK_ERR_BAD_CONNECTION_ID,
20     SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE,
21 
22     SPICE_LINK_ERR_ENUM_END
23 } SpiceLinkErr;
24 
25 static const value_string spice_link_err_vs[] =  {
26     { SPICE_LINK_ERR_OK, "OK" },
27     { SPICE_LINK_ERR_ERROR, "ERROR" },
28     { SPICE_LINK_ERR_INVALID_MAGIC, "INVALID_MAGIC" },
29     { SPICE_LINK_ERR_INVALID_DATA, "INVALID_DATA" },
30     { SPICE_LINK_ERR_VERSION_MISMATCH, "VERSION_MISMATCH" },
31     { SPICE_LINK_ERR_NEED_SECURED, "NEED_SECURED" },
32     { SPICE_LINK_ERR_NEED_UNSECURED, "NEED_UNSECURED" },
33     { SPICE_LINK_ERR_PERMISSION_DENIED, "PERMISSION_DENIED" },
34     { SPICE_LINK_ERR_BAD_CONNECTION_ID, "BAD_CONNECTION_ID" },
35     { SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE, "CHANNEL_NOT_AVAILABLE" },
36     { 0, NULL } };
37 
38 typedef enum SpiceWarnCode {
39     SPICE_WARN_GENERAL,
40 
41     SPICE_WARN_CODE_ENUM_END
42 } SpiceWarnCode;
43 
44 static const value_string spice_warn_code_vs[] =  {
45     { SPICE_WARN_GENERAL, "WARN_GENERAL" },
46     { 0, NULL } };
47 
48 typedef enum SpiceInfoCode {
49     SPICE_INFO_GENERAL,
50 
51     SPICE_INFO_CODE_ENUM_END
52 } SpiceInfoCode;
53 
54 static const value_string spice_info_code_vs[] =  {
55     { SPICE_INFO_GENERAL, "INFO_GENERAL" },
56     { 0, NULL } };
57 
58 typedef enum SpiceMigrateFlags {
59     SPICE_MIGRATE_NEED_FLUSH = (1 << 0),
60     SPICE_MIGRATE_NEED_DATA_TRANSFER = (1 << 1),
61 
62     SPICE_MIGRATE_FLAGS_MASK = 0x3
63 } SpiceMigrateFlags;
64 
65 static const value_string spice_migrate_flags_vs[] =  {
66     { SPICE_MIGRATE_NEED_FLUSH, "NEED_FLUSH" },
67     { SPICE_MIGRATE_NEED_DATA_TRANSFER, "NEED_DATA_TRANSFER" },
68     { 0, NULL } };
69 
70 typedef enum SpiceCompositeFlags {
71     SPICE_COMPOSITE_OP0 = (1 << 0),
72     SPICE_COMPOSITE_OP1 = (1 << 1),
73     SPICE_COMPOSITE_OP2 = (1 << 2),
74     SPICE_COMPOSITE_OP3 = (1 << 3),
75     SPICE_COMPOSITE_OP4 = (1 << 4),
76     SPICE_COMPOSITE_OP5 = (1 << 5),
77     SPICE_COMPOSITE_OP6 = (1 << 6),
78     SPICE_COMPOSITE_OP7 = (1 << 7),
79     SPICE_COMPOSITE_SRC_FILTER0 = (1 << 8),
80     SPICE_COMPOSITE_SRC_FILTER1 = (1 << 9),
81     SPICE_COMPOSITE_SRC_FILTER2 = (1 << 10),
82     SPICE_COMPOSITE_MASK_FILTER0 = (1 << 11),
83     SPICE_COMPOSITE_MASK_FITLER1 = (1 << 12),
84     SPICE_COMPOSITE_MASK_FILTER2 = (1 << 13),
85     SPICE_COMPOSITE_SRC_REPEAT0 = (1 << 14),
86     SPICE_COMPOSITE_SRC_REPEAT1 = (1 << 15),
87     SPICE_COMPOSITE_MASK_REPEAT0 = (1 << 16),
88     SPICE_COMPOSITE_MASK_REPEAT1 = (1 << 17),
89     SPICE_COMPOSITE_COMPONENT_ALPHA = (1 << 18),
90     SPICE_COMPOSITE_HAS_MASK = (1 << 19),
91     SPICE_COMPOSITE_HAS_SRC_TRANSFORM = (1 << 20),
92     SPICE_COMPOSITE_HAS_MASK_TRANSFORM = (1 << 21),
93     SPICE_COMPOSITE_SOURCE_OPAQUE = (1 << 22),
94     SPICE_COMPOSITE_MASK_OPAQUE = (1 << 23),
95     SPICE_COMPOSITE_DEST_OPAQUE = (1 << 24),
96 
97     SPICE_COMPOSITE_FLAGS_MASK = 0x1ffffff
98 } SpiceCompositeFlags;
99 
100 static const value_string spice_composite_flags_vs[] =  {
101     { SPICE_COMPOSITE_OP0, "OP0" },
102     { SPICE_COMPOSITE_OP1, "OP1" },
103     { SPICE_COMPOSITE_OP2, "OP2" },
104     { SPICE_COMPOSITE_OP3, "OP3" },
105     { SPICE_COMPOSITE_OP4, "OP4" },
106     { SPICE_COMPOSITE_OP5, "OP5" },
107     { SPICE_COMPOSITE_OP6, "OP6" },
108     { SPICE_COMPOSITE_OP7, "OP7" },
109     { SPICE_COMPOSITE_SRC_FILTER0, "SRC_FILTER0" },
110     { SPICE_COMPOSITE_SRC_FILTER1, "SRC_FILTER1" },
111     { SPICE_COMPOSITE_SRC_FILTER2, "SRC_FILTER2" },
112     { SPICE_COMPOSITE_MASK_FILTER0, "MASK_FILTER0" },
113     { SPICE_COMPOSITE_MASK_FITLER1, "MASK_FITLER1" },
114     { SPICE_COMPOSITE_MASK_FILTER2, "MASK_FILTER2" },
115     { SPICE_COMPOSITE_SRC_REPEAT0, "SRC_REPEAT0" },
116     { SPICE_COMPOSITE_SRC_REPEAT1, "SRC_REPEAT1" },
117     { SPICE_COMPOSITE_MASK_REPEAT0, "MASK_REPEAT0" },
118     { SPICE_COMPOSITE_MASK_REPEAT1, "MASK_REPEAT1" },
119     { SPICE_COMPOSITE_COMPONENT_ALPHA, "COMPONENT_ALPHA" },
120     { SPICE_COMPOSITE_HAS_MASK, "HAS_MASK" },
121     { SPICE_COMPOSITE_HAS_SRC_TRANSFORM, "HAS_SRC_TRANSFORM" },
122     { SPICE_COMPOSITE_HAS_MASK_TRANSFORM, "HAS_MASK_TRANSFORM" },
123     { SPICE_COMPOSITE_SOURCE_OPAQUE, "SOURCE_OPAQUE" },
124     { SPICE_COMPOSITE_MASK_OPAQUE, "MASK_OPAQUE" },
125     { SPICE_COMPOSITE_DEST_OPAQUE, "DEST_OPAQUE" },
126     { 0, NULL } };
127 
128 typedef enum SpiceNotifySeverity {
129     SPICE_NOTIFY_SEVERITY_INFO,
130     SPICE_NOTIFY_SEVERITY_WARN,
131     SPICE_NOTIFY_SEVERITY_ERROR,
132 
133     SPICE_NOTIFY_SEVERITY_ENUM_END
134 } SpiceNotifySeverity;
135 
136 static const value_string spice_notify_severity_vs[] =  {
137     { SPICE_NOTIFY_SEVERITY_INFO, "INFO" },
138     { SPICE_NOTIFY_SEVERITY_WARN, "WARN" },
139     { SPICE_NOTIFY_SEVERITY_ERROR, "ERROR" },
140     { 0, NULL } };
141 
142 typedef enum SpiceNotifyVisibility {
143     SPICE_NOTIFY_VISIBILITY_LOW,
144     SPICE_NOTIFY_VISIBILITY_MEDIUM,
145     SPICE_NOTIFY_VISIBILITY_HIGH,
146 
147     SPICE_NOTIFY_VISIBILITY_ENUM_END
148 } SpiceNotifyVisibility;
149 
150 static const value_string spice_notify_visibility_vs[] =  {
151     { SPICE_NOTIFY_VISIBILITY_LOW, "LOW" },
152     { SPICE_NOTIFY_VISIBILITY_MEDIUM, "MEDIUM" },
153     { SPICE_NOTIFY_VISIBILITY_HIGH, "HIGH" },
154     { 0, NULL } };
155 
156 typedef enum SpiceMouseMode {
157     SPICE_MOUSE_MODE_SERVER = (1 << 0),
158     SPICE_MOUSE_MODE_CLIENT = (1 << 1),
159 
160     SPICE_MOUSE_MODE_MASK = 0x3
161 } SpiceMouseMode;
162 
163 static const value_string spice_mouse_mode_vs[] =  {
164     { SPICE_MOUSE_MODE_SERVER, "SERVER" },
165     { SPICE_MOUSE_MODE_CLIENT, "CLIENT" },
166     { 0, NULL } };
167 
168 typedef enum SpicePubkeyType {
169     SPICE_PUBKEY_TYPE_INVALID,
170     SPICE_PUBKEY_TYPE_RSA,
171     SPICE_PUBKEY_TYPE_RSA2,
172     SPICE_PUBKEY_TYPE_DSA,
173     SPICE_PUBKEY_TYPE_DSA1,
174     SPICE_PUBKEY_TYPE_DSA2,
175     SPICE_PUBKEY_TYPE_DSA3,
176     SPICE_PUBKEY_TYPE_DSA4,
177     SPICE_PUBKEY_TYPE_DH,
178     SPICE_PUBKEY_TYPE_EC,
179 
180     SPICE_PUBKEY_TYPE_ENUM_END
181 } SpicePubkeyType;
182 
183 static const value_string spice_pubkey_type_vs[] =  {
184     { SPICE_PUBKEY_TYPE_INVALID, "INVALID" },
185     { SPICE_PUBKEY_TYPE_RSA, "RSA" },
186     { SPICE_PUBKEY_TYPE_RSA2, "RSA2" },
187     { SPICE_PUBKEY_TYPE_DSA, "DSA" },
188     { SPICE_PUBKEY_TYPE_DSA1, "DSA1" },
189     { SPICE_PUBKEY_TYPE_DSA2, "DSA2" },
190     { SPICE_PUBKEY_TYPE_DSA3, "DSA3" },
191     { SPICE_PUBKEY_TYPE_DSA4, "DSA4" },
192     { SPICE_PUBKEY_TYPE_DH, "DH" },
193     { SPICE_PUBKEY_TYPE_EC, "EC" },
194     { 0, NULL } };
195 
196 typedef enum SpiceDataCompressionType {
197     SPICE_DATA_COMPRESSION_TYPE_NONE,
198     SPICE_DATA_COMPRESSION_TYPE_LZ4,
199 
200     SPICE_DATA_COMPRESSION_TYPE_ENUM_END
201 } SpiceDataCompressionType;
202 
203 static const value_string spice_data_compression_type_vs[] =  {
204     { SPICE_DATA_COMPRESSION_TYPE_NONE, "NONE" },
205     { SPICE_DATA_COMPRESSION_TYPE_LZ4, "LZ4" },
206     { 0, NULL } };
207 
208 typedef enum SpiceClipType {
209     SPICE_CLIP_TYPE_NONE,
210     SPICE_CLIP_TYPE_RECTS,
211 
212     SPICE_CLIP_TYPE_ENUM_END
213 } SpiceClipType;
214 
215 static const value_string spice_clip_type_vs[] =  {
216     { SPICE_CLIP_TYPE_NONE, "NONE" },
217     { SPICE_CLIP_TYPE_RECTS, "RECTS" },
218     { 0, NULL } };
219 
220 typedef enum SpicePathFlags {
221     SPICE_PATH_BEGIN = (1 << 0),
222     SPICE_PATH_END = (1 << 1),
223     SPICE_PATH_CLOSE = (1 << 3),
224     SPICE_PATH_BEZIER = (1 << 4),
225 
226     SPICE_PATH_FLAGS_MASK = 0x1b
227 } SpicePathFlags;
228 
229 static const value_string spice_path_flags_vs[] =  {
230     { SPICE_PATH_BEGIN, "BEGIN" },
231     { SPICE_PATH_END, "END" },
232     { SPICE_PATH_CLOSE, "CLOSE" },
233     { SPICE_PATH_BEZIER, "BEZIER" },
234     { 0, NULL } };
235 
236 typedef enum SpiceVideoCodecType {
237     SPICE_VIDEO_CODEC_TYPE_MJPEG = 1,
238     SPICE_VIDEO_CODEC_TYPE_VP8,
239     SPICE_VIDEO_CODEC_TYPE_H264,
240     SPICE_VIDEO_CODEC_TYPE_VP9,
241     SPICE_VIDEO_CODEC_TYPE_H265,
242 
243     SPICE_VIDEO_CODEC_TYPE_ENUM_END
244 } SpiceVideoCodecType;
245 
246 static const value_string spice_video_codec_type_vs[] =  {
247     { SPICE_VIDEO_CODEC_TYPE_MJPEG, "MJPEG" },
248     { SPICE_VIDEO_CODEC_TYPE_VP8, "VP8" },
249     { SPICE_VIDEO_CODEC_TYPE_H264, "H264" },
250     { SPICE_VIDEO_CODEC_TYPE_VP9, "VP9" },
251     { SPICE_VIDEO_CODEC_TYPE_H265, "H265" },
252     { 0, NULL } };
253 
254 typedef enum SpiceStreamFlags {
255     SPICE_STREAM_FLAGS_TOP_DOWN = (1 << 0),
256 
257     SPICE_STREAM_FLAGS_MASK = 0x1
258 } SpiceStreamFlags;
259 
260 static const value_string spice_stream_flags_vs[] =  {
261     { SPICE_STREAM_FLAGS_TOP_DOWN, "TOP_DOWN" },
262     { 0, NULL } };
263 
264 typedef enum SpiceBrushType {
265     SPICE_BRUSH_TYPE_NONE,
266     SPICE_BRUSH_TYPE_SOLID,
267     SPICE_BRUSH_TYPE_PATTERN,
268 
269     SPICE_BRUSH_TYPE_ENUM_END
270 } SpiceBrushType;
271 
272 static const value_string spice_brush_type_vs[] =  {
273     { SPICE_BRUSH_TYPE_NONE, "NONE" },
274     { SPICE_BRUSH_TYPE_SOLID, "SOLID" },
275     { SPICE_BRUSH_TYPE_PATTERN, "PATTERN" },
276     { 0, NULL } };
277 
278 typedef enum SpiceMaskFlags {
279     SPICE_MASK_FLAGS_INVERS = (1 << 0),
280 
281     SPICE_MASK_FLAGS_MASK = 0x1
282 } SpiceMaskFlags;
283 
284 static const value_string spice_mask_flags_vs[] =  {
285     { SPICE_MASK_FLAGS_INVERS, "INVERS" },
286     { 0, NULL } };
287 
288 typedef enum SpiceImageType {
289     SPICE_IMAGE_TYPE_BITMAP,
290     SPICE_IMAGE_TYPE_QUIC,
291     SPICE_IMAGE_TYPE_RESERVED,
292     SPICE_IMAGE_TYPE_LZ_PLT = 100,
293     SPICE_IMAGE_TYPE_LZ_RGB,
294     SPICE_IMAGE_TYPE_GLZ_RGB,
295     SPICE_IMAGE_TYPE_FROM_CACHE,
296     SPICE_IMAGE_TYPE_SURFACE,
297     SPICE_IMAGE_TYPE_JPEG,
298     SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS,
299     SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB,
300     SPICE_IMAGE_TYPE_JPEG_ALPHA,
301     SPICE_IMAGE_TYPE_LZ4,
302 
303     SPICE_IMAGE_TYPE_ENUM_END
304 } SpiceImageType;
305 
306 static const value_string spice_image_type_vs[] =  {
307     { SPICE_IMAGE_TYPE_BITMAP, "BITMAP" },
308     { SPICE_IMAGE_TYPE_QUIC, "QUIC" },
309     { SPICE_IMAGE_TYPE_RESERVED, "RESERVED" },
310     { SPICE_IMAGE_TYPE_LZ_PLT, "LZ_PLT" },
311     { SPICE_IMAGE_TYPE_LZ_RGB, "LZ_RGB" },
312     { SPICE_IMAGE_TYPE_GLZ_RGB, "GLZ_RGB" },
313     { SPICE_IMAGE_TYPE_FROM_CACHE, "FROM_CACHE" },
314     { SPICE_IMAGE_TYPE_SURFACE, "SURFACE" },
315     { SPICE_IMAGE_TYPE_JPEG, "JPEG" },
316     { SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS, "FROM_CACHE_LOSSLESS" },
317     { SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB, "ZLIB_GLZ_RGB" },
318     { SPICE_IMAGE_TYPE_JPEG_ALPHA, "JPEG_ALPHA" },
319     { SPICE_IMAGE_TYPE_LZ4, "LZ4" },
320     { 0, NULL } };
321 
322 typedef enum SpiceImageCompression {
323     SPICE_IMAGE_COMPRESSION_INVALID,
324     SPICE_IMAGE_COMPRESSION_OFF,
325     SPICE_IMAGE_COMPRESSION_AUTO_GLZ,
326     SPICE_IMAGE_COMPRESSION_AUTO_LZ,
327     SPICE_IMAGE_COMPRESSION_QUIC,
328     SPICE_IMAGE_COMPRESSION_GLZ,
329     SPICE_IMAGE_COMPRESSION_LZ,
330     SPICE_IMAGE_COMPRESSION_LZ4,
331 
332     SPICE_IMAGE_COMPRESSION_ENUM_END
333 } SpiceImageCompression;
334 
335 static const value_string spice_image_compression_vs[] =  {
336     { SPICE_IMAGE_COMPRESSION_INVALID, "INVALID" },
337     { SPICE_IMAGE_COMPRESSION_OFF, "OFF" },
338     { SPICE_IMAGE_COMPRESSION_AUTO_GLZ, "AUTO_GLZ" },
339     { SPICE_IMAGE_COMPRESSION_AUTO_LZ, "AUTO_LZ" },
340     { SPICE_IMAGE_COMPRESSION_QUIC, "QUIC" },
341     { SPICE_IMAGE_COMPRESSION_GLZ, "GLZ" },
342     { SPICE_IMAGE_COMPRESSION_LZ, "LZ" },
343     { SPICE_IMAGE_COMPRESSION_LZ4, "LZ4" },
344     { 0, NULL } };
345 
346 typedef enum SpiceImageFlags {
347     SPICE_IMAGE_FLAGS_CACHE_ME = (1 << 0),
348     SPICE_IMAGE_FLAGS_HIGH_BITS_SET = (1 << 1),
349     SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME = (1 << 2),
350 
351     SPICE_IMAGE_FLAGS_MASK = 0x7
352 } SpiceImageFlags;
353 
354 static const value_string spice_image_flags_vs[] =  {
355     { SPICE_IMAGE_FLAGS_CACHE_ME, "CACHE_ME" },
356     { SPICE_IMAGE_FLAGS_HIGH_BITS_SET, "HIGH_BITS_SET" },
357     { SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME, "CACHE_REPLACE_ME" },
358     { 0, NULL } };
359 
360 typedef enum SpiceBitmapFmt {
361     SPICE_BITMAP_FMT_INVALID,
362     SPICE_BITMAP_FMT_1BIT_LE,
363     SPICE_BITMAP_FMT_1BIT_BE,
364     SPICE_BITMAP_FMT_4BIT_LE,
365     SPICE_BITMAP_FMT_4BIT_BE,
366     SPICE_BITMAP_FMT_8BIT,
367     SPICE_BITMAP_FMT_16BIT,
368     SPICE_BITMAP_FMT_24BIT,
369     SPICE_BITMAP_FMT_32BIT,
370     SPICE_BITMAP_FMT_RGBA,
371     SPICE_BITMAP_FMT_8BIT_A,
372 
373     SPICE_BITMAP_FMT_ENUM_END
374 } SpiceBitmapFmt;
375 
376 static const value_string spice_bitmap_fmt_vs[] =  {
377     { SPICE_BITMAP_FMT_INVALID, "INVALID" },
378     { SPICE_BITMAP_FMT_1BIT_LE, "1BIT_LE" },
379     { SPICE_BITMAP_FMT_1BIT_BE, "1BIT_BE" },
380     { SPICE_BITMAP_FMT_4BIT_LE, "4BIT_LE" },
381     { SPICE_BITMAP_FMT_4BIT_BE, "4BIT_BE" },
382     { SPICE_BITMAP_FMT_8BIT, "8BIT" },
383     { SPICE_BITMAP_FMT_16BIT, "16BIT" },
384     { SPICE_BITMAP_FMT_24BIT, "24BIT" },
385     { SPICE_BITMAP_FMT_32BIT, "32BIT" },
386     { SPICE_BITMAP_FMT_RGBA, "RGBA" },
387     { SPICE_BITMAP_FMT_8BIT_A, "8BIT_A" },
388     { 0, NULL } };
389 
390 typedef enum SpiceBitmapFlags {
391     SPICE_BITMAP_FLAGS_PAL_CACHE_ME = (1 << 0),
392     SPICE_BITMAP_FLAGS_PAL_FROM_CACHE = (1 << 1),
393     SPICE_BITMAP_FLAGS_TOP_DOWN = (1 << 2),
394 
395     SPICE_BITMAP_FLAGS_MASK = 0x7
396 } SpiceBitmapFlags;
397 
398 static const value_string spice_bitmap_flags_vs[] =  {
399     { SPICE_BITMAP_FLAGS_PAL_CACHE_ME, "PAL_CACHE_ME" },
400     { SPICE_BITMAP_FLAGS_PAL_FROM_CACHE, "PAL_FROM_CACHE" },
401     { SPICE_BITMAP_FLAGS_TOP_DOWN, "TOP_DOWN" },
402     { 0, NULL } };
403 
404 typedef enum SpiceJpegAlphaFlags {
405     SPICE_JPEG_ALPHA_FLAGS_TOP_DOWN = (1 << 0),
406 
407     SPICE_JPEG_ALPHA_FLAGS_MASK = 0x1
408 } SpiceJpegAlphaFlags;
409 
410 static const value_string spice_jpeg_alpha_flags_vs[] =  {
411     { SPICE_JPEG_ALPHA_FLAGS_TOP_DOWN, "TOP_DOWN" },
412     { 0, NULL } };
413 
414 typedef enum SpiceImageScaleMode {
415     SPICE_IMAGE_SCALE_MODE_INTERPOLATE,
416     SPICE_IMAGE_SCALE_MODE_NEAREST,
417 
418     SPICE_IMAGE_SCALE_MODE_ENUM_END
419 } SpiceImageScaleMode;
420 
421 static const value_string spice_image_scale_mode_vs[] =  {
422     { SPICE_IMAGE_SCALE_MODE_INTERPOLATE, "INTERPOLATE" },
423     { SPICE_IMAGE_SCALE_MODE_NEAREST, "NEAREST" },
424     { 0, NULL } };
425 
426 typedef enum SpiceRopd {
427     SPICE_ROPD_INVERS_SRC = (1 << 0),
428     SPICE_ROPD_INVERS_BRUSH = (1 << 1),
429     SPICE_ROPD_INVERS_DEST = (1 << 2),
430     SPICE_ROPD_OP_PUT = (1 << 3),
431     SPICE_ROPD_OP_OR = (1 << 4),
432     SPICE_ROPD_OP_AND = (1 << 5),
433     SPICE_ROPD_OP_XOR = (1 << 6),
434     SPICE_ROPD_OP_BLACKNESS = (1 << 7),
435     SPICE_ROPD_OP_WHITENESS = (1 << 8),
436     SPICE_ROPD_OP_INVERS = (1 << 9),
437     SPICE_ROPD_INVERS_RES = (1 << 10),
438 
439     SPICE_ROPD_MASK = 0x7ff
440 } SpiceRopd;
441 
442 static const value_string spice_ropd_vs[] =  {
443     { SPICE_ROPD_INVERS_SRC, "INVERS_SRC" },
444     { SPICE_ROPD_INVERS_BRUSH, "INVERS_BRUSH" },
445     { SPICE_ROPD_INVERS_DEST, "INVERS_DEST" },
446     { SPICE_ROPD_OP_PUT, "OP_PUT" },
447     { SPICE_ROPD_OP_OR, "OP_OR" },
448     { SPICE_ROPD_OP_AND, "OP_AND" },
449     { SPICE_ROPD_OP_XOR, "OP_XOR" },
450     { SPICE_ROPD_OP_BLACKNESS, "OP_BLACKNESS" },
451     { SPICE_ROPD_OP_WHITENESS, "OP_WHITENESS" },
452     { SPICE_ROPD_OP_INVERS, "OP_INVERS" },
453     { SPICE_ROPD_INVERS_RES, "INVERS_RES" },
454     { 0, NULL } };
455 
456 typedef enum SpiceLineFlags {
457     SPICE_LINE_FLAGS_START_WITH_GAP = (1 << 2),
458     SPICE_LINE_FLAGS_STYLED = (1 << 3),
459 
460     SPICE_LINE_FLAGS_MASK = 0xc
461 } SpiceLineFlags;
462 
463 static const value_string spice_line_flags_vs[] =  {
464     { SPICE_LINE_FLAGS_START_WITH_GAP, "START_WITH_GAP" },
465     { SPICE_LINE_FLAGS_STYLED, "STYLED" },
466     { 0, NULL } };
467 
468 typedef enum SpiceStringFlags {
469     SPICE_STRING_FLAGS_RASTER_A1 = (1 << 0),
470     SPICE_STRING_FLAGS_RASTER_A4 = (1 << 1),
471     SPICE_STRING_FLAGS_RASTER_A8 = (1 << 2),
472     SPICE_STRING_FLAGS_RASTER_TOP_DOWN = (1 << 3),
473 
474     SPICE_STRING_FLAGS_MASK = 0xf
475 } SpiceStringFlags;
476 
477 static const value_string spice_string_flags_vs[] =  {
478     { SPICE_STRING_FLAGS_RASTER_A1, "RASTER_A1" },
479     { SPICE_STRING_FLAGS_RASTER_A4, "RASTER_A4" },
480     { SPICE_STRING_FLAGS_RASTER_A8, "RASTER_A8" },
481     { SPICE_STRING_FLAGS_RASTER_TOP_DOWN, "RASTER_TOP_DOWN" },
482     { 0, NULL } };
483 
484 typedef enum SpiceSurfaceFlags {
485     SPICE_SURFACE_FLAGS_PRIMARY = (1 << 0),
486     SPICE_SURFACE_FLAGS_STREAMING_MODE = (1 << 1),
487 
488     SPICE_SURFACE_FLAGS_MASK = 0x3
489 } SpiceSurfaceFlags;
490 
491 static const value_string spice_surface_flags_vs[] =  {
492     { SPICE_SURFACE_FLAGS_PRIMARY, "PRIMARY" },
493     { SPICE_SURFACE_FLAGS_STREAMING_MODE, "STREAMING_MODE" },
494     { 0, NULL } };
495 
496 typedef enum SpiceSurfaceFmt {
497     SPICE_SURFACE_FMT_INVALID,
498     SPICE_SURFACE_FMT_1_A,
499     SPICE_SURFACE_FMT_8_A = 8,
500     SPICE_SURFACE_FMT_16_555 = 16,
501     SPICE_SURFACE_FMT_32_xRGB = 32,
502     SPICE_SURFACE_FMT_16_565 = 80,
503     SPICE_SURFACE_FMT_32_ARGB = 96,
504 
505     SPICE_SURFACE_FMT_ENUM_END
506 } SpiceSurfaceFmt;
507 
508 static const value_string spice_surface_fmt_vs[] =  {
509     { SPICE_SURFACE_FMT_INVALID, "INVALID" },
510     { SPICE_SURFACE_FMT_1_A, "1_A" },
511     { SPICE_SURFACE_FMT_8_A, "8_A" },
512     { SPICE_SURFACE_FMT_16_555, "16_555" },
513     { SPICE_SURFACE_FMT_32_xRGB, "32_xRGB" },
514     { SPICE_SURFACE_FMT_16_565, "16_565" },
515     { SPICE_SURFACE_FMT_32_ARGB, "32_ARGB" },
516     { 0, NULL } };
517 
518 typedef enum SpiceAlphaFlags {
519     SPICE_ALPHA_FLAGS_DEST_HAS_ALPHA = (1 << 0),
520     SPICE_ALPHA_FLAGS_SRC_SURFACE_HAS_ALPHA = (1 << 1),
521 
522     SPICE_ALPHA_FLAGS_MASK = 0x3
523 } SpiceAlphaFlags;
524 
525 static const value_string spice_alpha_flags_vs[] =  {
526     { SPICE_ALPHA_FLAGS_DEST_HAS_ALPHA, "DEST_HAS_ALPHA" },
527     { SPICE_ALPHA_FLAGS_SRC_SURFACE_HAS_ALPHA, "SRC_SURFACE_HAS_ALPHA" },
528     { 0, NULL } };
529 
530 typedef enum SpiceResourceType {
531     SPICE_RES_TYPE_INVALID,
532     SPICE_RES_TYPE_PIXMAP,
533 
534     SPICE_RESOURCE_TYPE_ENUM_END
535 } SpiceResourceType;
536 
537 static const value_string spice_resource_type_vs[] =  {
538     { SPICE_RES_TYPE_INVALID, "INVALID" },
539     { SPICE_RES_TYPE_PIXMAP, "PIXMAP" },
540     { 0, NULL } };
541 
542 typedef enum SpiceGlScanoutFlags {
543     SPICE_GL_SCANOUT_FLAGS_Y0TOP = (1 << 0),
544 
545     SPICE_GL_SCANOUT_FLAGS_MASK = 0x1
546 } SpiceGlScanoutFlags;
547 
548 static const value_string spice_gl_scanout_flags_vs[] =  {
549     { SPICE_GL_SCANOUT_FLAGS_Y0TOP, "Y0TOP" },
550     { 0, NULL } };
551 
552 typedef enum SpiceKeyboardModifierFlags {
553     SPICE_KEYBOARD_MODIFIER_FLAGS_SCROLL_LOCK = (1 << 0),
554     SPICE_KEYBOARD_MODIFIER_FLAGS_NUM_LOCK = (1 << 1),
555     SPICE_KEYBOARD_MODIFIER_FLAGS_CAPS_LOCK = (1 << 2),
556 
557     SPICE_KEYBOARD_MODIFIER_FLAGS_MASK = 0x7
558 } SpiceKeyboardModifierFlags;
559 
560 static const value_string spice_keyboard_modifier_flags_vs[] =  {
561     { SPICE_KEYBOARD_MODIFIER_FLAGS_SCROLL_LOCK, "SCROLL_LOCK" },
562     { SPICE_KEYBOARD_MODIFIER_FLAGS_NUM_LOCK, "NUM_LOCK" },
563     { SPICE_KEYBOARD_MODIFIER_FLAGS_CAPS_LOCK, "CAPS_LOCK" },
564     { 0, NULL } };
565 
566 typedef enum SpiceMouseButton {
567     SPICE_MOUSE_BUTTON_INVALID,
568     SPICE_MOUSE_BUTTON_LEFT,
569     SPICE_MOUSE_BUTTON_MIDDLE,
570     SPICE_MOUSE_BUTTON_RIGHT,
571     SPICE_MOUSE_BUTTON_UP,
572     SPICE_MOUSE_BUTTON_DOWN,
573 
574     SPICE_MOUSE_BUTTON_ENUM_END
575 } SpiceMouseButton;
576 
577 static const value_string spice_mouse_button_vs[] =  {
578     { SPICE_MOUSE_BUTTON_INVALID, "INVALID" },
579     { SPICE_MOUSE_BUTTON_LEFT, "LEFT" },
580     { SPICE_MOUSE_BUTTON_MIDDLE, "MIDDLE" },
581     { SPICE_MOUSE_BUTTON_RIGHT, "RIGHT" },
582     { SPICE_MOUSE_BUTTON_UP, "UP" },
583     { SPICE_MOUSE_BUTTON_DOWN, "DOWN" },
584     { 0, NULL } };
585 
586 typedef enum SpiceMouseButtonMask {
587     SPICE_MOUSE_BUTTON_MASK_LEFT = (1 << 0),
588     SPICE_MOUSE_BUTTON_MASK_MIDDLE = (1 << 1),
589     SPICE_MOUSE_BUTTON_MASK_RIGHT = (1 << 2),
590 
591     SPICE_MOUSE_BUTTON_MASK_MASK = 0x7
592 } SpiceMouseButtonMask;
593 
594 static const value_string spice_mouse_button_mask_vs[] =  {
595     { SPICE_MOUSE_BUTTON_MASK_LEFT, "LEFT" },
596     { SPICE_MOUSE_BUTTON_MASK_MIDDLE, "MIDDLE" },
597     { SPICE_MOUSE_BUTTON_MASK_RIGHT, "RIGHT" },
598     { 0, NULL } };
599 
600 typedef enum SpiceCursorType {
601     SPICE_CURSOR_TYPE_ALPHA,
602     SPICE_CURSOR_TYPE_MONO,
603     SPICE_CURSOR_TYPE_COLOR4,
604     SPICE_CURSOR_TYPE_COLOR8,
605     SPICE_CURSOR_TYPE_COLOR16,
606     SPICE_CURSOR_TYPE_COLOR24,
607     SPICE_CURSOR_TYPE_COLOR32,
608 
609     SPICE_CURSOR_TYPE_ENUM_END
610 } SpiceCursorType;
611 
612 static const value_string spice_cursor_type_vs[] =  {
613     { SPICE_CURSOR_TYPE_ALPHA, "ALPHA" },
614     { SPICE_CURSOR_TYPE_MONO, "MONO" },
615     { SPICE_CURSOR_TYPE_COLOR4, "COLOR4" },
616     { SPICE_CURSOR_TYPE_COLOR8, "COLOR8" },
617     { SPICE_CURSOR_TYPE_COLOR16, "COLOR16" },
618     { SPICE_CURSOR_TYPE_COLOR24, "COLOR24" },
619     { SPICE_CURSOR_TYPE_COLOR32, "COLOR32" },
620     { 0, NULL } };
621 
622 typedef enum SpiceCursorFlags {
623     SPICE_CURSOR_FLAGS_NONE = (1 << 0),
624     SPICE_CURSOR_FLAGS_CACHE_ME = (1 << 1),
625     SPICE_CURSOR_FLAGS_FROM_CACHE = (1 << 2),
626 
627     SPICE_CURSOR_FLAGS_MASK = 0x7
628 } SpiceCursorFlags;
629 
630 static const value_string spice_cursor_flags_vs[] =  {
631     { SPICE_CURSOR_FLAGS_NONE, "NONE" },
632     { SPICE_CURSOR_FLAGS_CACHE_ME, "CACHE_ME" },
633     { SPICE_CURSOR_FLAGS_FROM_CACHE, "FROM_CACHE" },
634     { 0, NULL } };
635 
636 typedef enum SpiceAudioDataMode {
637     SPICE_AUDIO_DATA_MODE_INVALID,
638     SPICE_AUDIO_DATA_MODE_RAW,
639     SPICE_AUDIO_DATA_MODE_CELT_0_5_1,
640     SPICE_AUDIO_DATA_MODE_OPUS,
641 
642     SPICE_AUDIO_DATA_MODE_ENUM_END
643 } SpiceAudioDataMode;
644 
645 static const value_string spice_audio_data_mode_vs[] =  {
646     { SPICE_AUDIO_DATA_MODE_INVALID, "INVALID" },
647     { SPICE_AUDIO_DATA_MODE_RAW, "RAW" },
648     { SPICE_AUDIO_DATA_MODE_CELT_0_5_1, "CELT_0_5_1" },
649     { SPICE_AUDIO_DATA_MODE_OPUS, "OPUS" },
650     { 0, NULL } };
651 
652 typedef enum SpiceAudioFmt {
653     SPICE_AUDIO_FMT_INVALID,
654     SPICE_AUDIO_FMT_S16,
655 
656     SPICE_AUDIO_FMT_ENUM_END
657 } SpiceAudioFmt;
658 
659 static const value_string spice_audio_fmt_vs[] =  {
660     { SPICE_AUDIO_FMT_INVALID, "INVALID" },
661     { SPICE_AUDIO_FMT_S16, "S16" },
662     { 0, NULL } };
663 
664 typedef enum SpiceTunnelServiceType {
665     SPICE_TUNNEL_SERVICE_TYPE_INVALID,
666     SPICE_TUNNEL_SERVICE_TYPE_GENERIC,
667     SPICE_TUNNEL_SERVICE_TYPE_IPP,
668 
669     SPICE_TUNNEL_SERVICE_TYPE_ENUM_END
670 } SpiceTunnelServiceType;
671 
672 static const value_string spice_tunnel_service_type_vs[] =  {
673     { SPICE_TUNNEL_SERVICE_TYPE_INVALID, "INVALID" },
674     { SPICE_TUNNEL_SERVICE_TYPE_GENERIC, "GENERIC" },
675     { SPICE_TUNNEL_SERVICE_TYPE_IPP, "IPP" },
676     { 0, NULL } };
677 
678 typedef enum SpiceTunnelIpType {
679     SPICE_TUNNEL_IP_TYPE_INVALID,
680     SPICE_TUNNEL_IP_TYPE_IPv4,
681 
682     SPICE_TUNNEL_IP_TYPE_ENUM_END
683 } SpiceTunnelIpType;
684 
685 static const value_string spice_tunnel_ip_type_vs[] =  {
686     { SPICE_TUNNEL_IP_TYPE_INVALID, "INVALID" },
687     { SPICE_TUNNEL_IP_TYPE_IPv4, "IPv4" },
688     { 0, NULL } };
689 
690 typedef enum SpiceVscMessageType {
691     SPICE_VSC_MESSAGE_TYPE_Init = 1,
692     SPICE_VSC_MESSAGE_TYPE_Error,
693     SPICE_VSC_MESSAGE_TYPE_ReaderAdd,
694     SPICE_VSC_MESSAGE_TYPE_ReaderRemove,
695     SPICE_VSC_MESSAGE_TYPE_ATR,
696     SPICE_VSC_MESSAGE_TYPE_CardRemove,
697     SPICE_VSC_MESSAGE_TYPE_APDU,
698     SPICE_VSC_MESSAGE_TYPE_Flush,
699     SPICE_VSC_MESSAGE_TYPE_FlushComplete,
700 
701     SPICE_VSC_MESSAGE_TYPE_ENUM_END
702 } SpiceVscMessageType;
703 
704 static const value_string spice_vsc_message_type_vs[] =  {
705     { SPICE_VSC_MESSAGE_TYPE_Init, "Init" },
706     { SPICE_VSC_MESSAGE_TYPE_Error, "Error" },
707     { SPICE_VSC_MESSAGE_TYPE_ReaderAdd, "ReaderAdd" },
708     { SPICE_VSC_MESSAGE_TYPE_ReaderRemove, "ReaderRemove" },
709     { SPICE_VSC_MESSAGE_TYPE_ATR, "ATR" },
710     { SPICE_VSC_MESSAGE_TYPE_CardRemove, "CardRemove" },
711     { SPICE_VSC_MESSAGE_TYPE_APDU, "APDU" },
712     { SPICE_VSC_MESSAGE_TYPE_Flush, "Flush" },
713     { SPICE_VSC_MESSAGE_TYPE_FlushComplete, "FlushComplete" },
714     { 0, NULL } };
715 
716 enum {
717     SPICE_CHANNEL_MAIN = 1,
718     SPICE_CHANNEL_DISPLAY,
719     SPICE_CHANNEL_INPUTS,
720     SPICE_CHANNEL_CURSOR,
721     SPICE_CHANNEL_PLAYBACK,
722     SPICE_CHANNEL_RECORD,
723     SPICE_CHANNEL_TUNNEL,
724     SPICE_CHANNEL_SMARTCARD,
725     SPICE_CHANNEL_USBREDIR,
726     SPICE_CHANNEL_PORT,
727     SPICE_CHANNEL_WEBDAV,
728 
729     SPICE_END_CHANNEL
730 };
731 
732 static const value_string channel_types_vs[] = {
733     { SPICE_CHANNEL_MAIN, "MAIN" },
734     { SPICE_CHANNEL_DISPLAY, "DISPLAY" },
735     { SPICE_CHANNEL_INPUTS, "INPUTS" },
736     { SPICE_CHANNEL_CURSOR, "CURSOR" },
737     { SPICE_CHANNEL_PLAYBACK, "PLAYBACK" },
738     { SPICE_CHANNEL_RECORD, "RECORD" },
739     { SPICE_CHANNEL_TUNNEL, "TUNNEL" },
740     { SPICE_CHANNEL_SMARTCARD, "SMARTCARD" },
741     { SPICE_CHANNEL_USBREDIR, "USBREDIR" },
742     { SPICE_CHANNEL_PORT, "PORT" },
743     { SPICE_CHANNEL_WEBDAV, "WEBDAV" },
744 
745     { 0, NULL }
746 };
747 
748 enum {
749     SPICE_MSG_MIGRATE = 1,
750     SPICE_MSG_MIGRATE_DATA,
751     SPICE_MSG_SET_ACK,
752     SPICE_MSG_PING,
753     SPICE_MSG_WAIT_FOR_CHANNELS,
754     SPICE_MSG_DISCONNECTING,
755     SPICE_MSG_NOTIFY,
756     SPICE_MSG_LIST,
757     SPICE_MSG_BASE_LAST = 100,
758 };
759 
760 static const value_string spice_msg_vs[] =  {
761     { SPICE_MSG_MIGRATE, "Server MIGRATE" },
762     { SPICE_MSG_MIGRATE_DATA, "Server MIGRATE_DATA" },
763     { SPICE_MSG_SET_ACK, "Server SET_ACK" },
764     { SPICE_MSG_PING, "Server PING" },
765     { SPICE_MSG_WAIT_FOR_CHANNELS, "Server WAIT_FOR_CHANNELS" },
766     { SPICE_MSG_DISCONNECTING, "Server DISCONNECTING" },
767     { SPICE_MSG_NOTIFY, "Server NOTIFY" },
768     { SPICE_MSG_LIST, "Server LIST" },
769     { SPICE_MSG_BASE_LAST, "Server BASE_LAST" },
770     { 0, NULL }
771 };
772 
773 enum {
774     SPICE_MSGC_ACK_SYNC = 1,
775     SPICE_MSGC_ACK,
776     SPICE_MSGC_PONG,
777     SPICE_MSGC_MIGRATE_FLUSH_MARK,
778     SPICE_MSGC_MIGRATE_DATA,
779     SPICE_MSGC_DISCONNECTING,
780 };
781 
782 static const value_string spice_msgc_vs[] =  {
783     { SPICE_MSGC_ACK_SYNC, "Client ACK_SYNC" },
784     { SPICE_MSGC_ACK, "Client ACK" },
785     { SPICE_MSGC_PONG, "Client PONG" },
786     { SPICE_MSGC_MIGRATE_FLUSH_MARK, "Client MIGRATE_FLUSH_MARK" },
787     { SPICE_MSGC_MIGRATE_DATA, "Client MIGRATE_DATA" },
788     { SPICE_MSGC_DISCONNECTING, "Client DISCONNECTING" },
789     { 0, NULL }
790 };
791 
792 enum {
793     SPICE_MSG_MAIN_MIGRATE_BEGIN = 101,
794     SPICE_MSG_MAIN_MIGRATE_CANCEL,
795     SPICE_MSG_MAIN_INIT,
796     SPICE_MSG_MAIN_CHANNELS_LIST,
797     SPICE_MSG_MAIN_MOUSE_MODE,
798     SPICE_MSG_MAIN_MULTI_MEDIA_TIME,
799     SPICE_MSG_MAIN_AGENT_CONNECTED,
800     SPICE_MSG_MAIN_AGENT_DISCONNECTED,
801     SPICE_MSG_MAIN_AGENT_DATA,
802     SPICE_MSG_MAIN_AGENT_TOKEN,
803     SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST,
804     SPICE_MSG_MAIN_MIGRATE_END,
805     SPICE_MSG_MAIN_NAME,
806     SPICE_MSG_MAIN_UUID,
807     SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS,
808     SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS,
809     SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK,
810     SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK,
811 
812     SPICE_MSG_END_MAIN
813 };
814 
815 static const value_string spice_msg_main_vs[] =  {
816     { SPICE_MSG_MAIN_MIGRATE_BEGIN, "Server MIGRATE_BEGIN" },
817     { SPICE_MSG_MAIN_MIGRATE_CANCEL, "Server MIGRATE_CANCEL" },
818     { SPICE_MSG_MAIN_INIT, "Server INIT" },
819     { SPICE_MSG_MAIN_CHANNELS_LIST, "Server CHANNELS_LIST" },
820     { SPICE_MSG_MAIN_MOUSE_MODE, "Server MOUSE_MODE" },
821     { SPICE_MSG_MAIN_MULTI_MEDIA_TIME, "Server MULTI_MEDIA_TIME" },
822     { SPICE_MSG_MAIN_AGENT_CONNECTED, "Server AGENT_CONNECTED" },
823     { SPICE_MSG_MAIN_AGENT_DISCONNECTED, "Server AGENT_DISCONNECTED" },
824     { SPICE_MSG_MAIN_AGENT_DATA, "Server AGENT_DATA" },
825     { SPICE_MSG_MAIN_AGENT_TOKEN, "Server AGENT_TOKEN" },
826     { SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST, "Server MIGRATE_SWITCH_HOST" },
827     { SPICE_MSG_MAIN_MIGRATE_END, "Server MIGRATE_END" },
828     { SPICE_MSG_MAIN_NAME, "Server NAME" },
829     { SPICE_MSG_MAIN_UUID, "Server UUID" },
830     { SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS, "Server AGENT_CONNECTED_TOKENS" },
831     { SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS, "Server MIGRATE_BEGIN_SEAMLESS" },
832     { SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK, "Server MIGRATE_DST_SEAMLESS_ACK" },
833     { SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK, "Server MIGRATE_DST_SEAMLESS_NACK" },
834     { 0, NULL }
835 };
836 
837 enum {
838     SPICE_MSGC_MAIN_CLIENT_INFO = 101,
839     SPICE_MSGC_MAIN_MIGRATE_CONNECTED,
840     SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR,
841     SPICE_MSGC_MAIN_ATTACH_CHANNELS,
842     SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST,
843     SPICE_MSGC_MAIN_AGENT_START,
844     SPICE_MSGC_MAIN_AGENT_DATA,
845     SPICE_MSGC_MAIN_AGENT_TOKEN,
846     SPICE_MSGC_MAIN_MIGRATE_END,
847     SPICE_MSGC_MAIN_MIGRATE_DST_DO_SEAMLESS,
848     SPICE_MSGC_MAIN_MIGRATE_CONNECTED_SEAMLESS,
849 
850     SPICE_MSGC_END_MAIN
851 };
852 
853 static const value_string spice_msgc_main_vs[] =  {
854     { SPICE_MSGC_MAIN_CLIENT_INFO, "Client CLIENT_INFO" },
855     { SPICE_MSGC_MAIN_MIGRATE_CONNECTED, "Client MIGRATE_CONNECTED" },
856     { SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR, "Client MIGRATE_CONNECT_ERROR" },
857     { SPICE_MSGC_MAIN_ATTACH_CHANNELS, "Client ATTACH_CHANNELS" },
858     { SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST, "Client MOUSE_MODE_REQUEST" },
859     { SPICE_MSGC_MAIN_AGENT_START, "Client AGENT_START" },
860     { SPICE_MSGC_MAIN_AGENT_DATA, "Client AGENT_DATA" },
861     { SPICE_MSGC_MAIN_AGENT_TOKEN, "Client AGENT_TOKEN" },
862     { SPICE_MSGC_MAIN_MIGRATE_END, "Client MIGRATE_END" },
863     { SPICE_MSGC_MAIN_MIGRATE_DST_DO_SEAMLESS, "Client MIGRATE_DST_DO_SEAMLESS" },
864     { SPICE_MSGC_MAIN_MIGRATE_CONNECTED_SEAMLESS, "Client MIGRATE_CONNECTED_SEAMLESS" },
865     { 0, NULL }
866 };
867 
868 enum {
869     SPICE_MSG_DISPLAY_MODE = 101,
870     SPICE_MSG_DISPLAY_MARK,
871     SPICE_MSG_DISPLAY_RESET,
872     SPICE_MSG_DISPLAY_COPY_BITS,
873     SPICE_MSG_DISPLAY_INVAL_LIST,
874     SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS,
875     SPICE_MSG_DISPLAY_INVAL_PALETTE,
876     SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES,
877     SPICE_MSG_DISPLAY_STREAM_CREATE = 122,
878     SPICE_MSG_DISPLAY_STREAM_DATA,
879     SPICE_MSG_DISPLAY_STREAM_CLIP,
880     SPICE_MSG_DISPLAY_STREAM_DESTROY,
881     SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL,
882     SPICE_MSG_DISPLAY_DRAW_FILL = 302,
883     SPICE_MSG_DISPLAY_DRAW_OPAQUE,
884     SPICE_MSG_DISPLAY_DRAW_COPY,
885     SPICE_MSG_DISPLAY_DRAW_BLEND,
886     SPICE_MSG_DISPLAY_DRAW_BLACKNESS,
887     SPICE_MSG_DISPLAY_DRAW_WHITENESS,
888     SPICE_MSG_DISPLAY_DRAW_INVERS,
889     SPICE_MSG_DISPLAY_DRAW_ROP3,
890     SPICE_MSG_DISPLAY_DRAW_STROKE,
891     SPICE_MSG_DISPLAY_DRAW_TEXT,
892     SPICE_MSG_DISPLAY_DRAW_TRANSPARENT,
893     SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND,
894     SPICE_MSG_DISPLAY_SURFACE_CREATE,
895     SPICE_MSG_DISPLAY_SURFACE_DESTROY,
896     SPICE_MSG_DISPLAY_STREAM_DATA_SIZED,
897     SPICE_MSG_DISPLAY_MONITORS_CONFIG,
898     SPICE_MSG_DISPLAY_DRAW_COMPOSITE,
899     SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT,
900     SPICE_MSG_DISPLAY_GL_SCANOUT_UNIX,
901     SPICE_MSG_DISPLAY_GL_DRAW,
902 
903     SPICE_MSG_END_DISPLAY
904 };
905 
906 static const value_string spice_msg_display_vs[] =  {
907     { SPICE_MSG_DISPLAY_MODE, "Server MODE" },
908     { SPICE_MSG_DISPLAY_MARK, "Server MARK" },
909     { SPICE_MSG_DISPLAY_RESET, "Server RESET" },
910     { SPICE_MSG_DISPLAY_COPY_BITS, "Server COPY_BITS" },
911     { SPICE_MSG_DISPLAY_INVAL_LIST, "Server INVAL_LIST" },
912     { SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS, "Server INVAL_ALL_PIXMAPS" },
913     { SPICE_MSG_DISPLAY_INVAL_PALETTE, "Server INVAL_PALETTE" },
914     { SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES, "Server INVAL_ALL_PALETTES" },
915     { SPICE_MSG_DISPLAY_STREAM_CREATE, "Server STREAM_CREATE" },
916     { SPICE_MSG_DISPLAY_STREAM_DATA, "Server STREAM_DATA" },
917     { SPICE_MSG_DISPLAY_STREAM_CLIP, "Server STREAM_CLIP" },
918     { SPICE_MSG_DISPLAY_STREAM_DESTROY, "Server STREAM_DESTROY" },
919     { SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL, "Server STREAM_DESTROY_ALL" },
920     { SPICE_MSG_DISPLAY_DRAW_FILL, "Server DRAW_FILL" },
921     { SPICE_MSG_DISPLAY_DRAW_OPAQUE, "Server DRAW_OPAQUE" },
922     { SPICE_MSG_DISPLAY_DRAW_COPY, "Server DRAW_COPY" },
923     { SPICE_MSG_DISPLAY_DRAW_BLEND, "Server DRAW_BLEND" },
924     { SPICE_MSG_DISPLAY_DRAW_BLACKNESS, "Server DRAW_BLACKNESS" },
925     { SPICE_MSG_DISPLAY_DRAW_WHITENESS, "Server DRAW_WHITENESS" },
926     { SPICE_MSG_DISPLAY_DRAW_INVERS, "Server DRAW_INVERS" },
927     { SPICE_MSG_DISPLAY_DRAW_ROP3, "Server DRAW_ROP3" },
928     { SPICE_MSG_DISPLAY_DRAW_STROKE, "Server DRAW_STROKE" },
929     { SPICE_MSG_DISPLAY_DRAW_TEXT, "Server DRAW_TEXT" },
930     { SPICE_MSG_DISPLAY_DRAW_TRANSPARENT, "Server DRAW_TRANSPARENT" },
931     { SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND, "Server DRAW_ALPHA_BLEND" },
932     { SPICE_MSG_DISPLAY_SURFACE_CREATE, "Server SURFACE_CREATE" },
933     { SPICE_MSG_DISPLAY_SURFACE_DESTROY, "Server SURFACE_DESTROY" },
934     { SPICE_MSG_DISPLAY_STREAM_DATA_SIZED, "Server STREAM_DATA_SIZED" },
935     { SPICE_MSG_DISPLAY_MONITORS_CONFIG, "Server MONITORS_CONFIG" },
936     { SPICE_MSG_DISPLAY_DRAW_COMPOSITE, "Server DRAW_COMPOSITE" },
937     { SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT, "Server STREAM_ACTIVATE_REPORT" },
938     { SPICE_MSG_DISPLAY_GL_SCANOUT_UNIX, "Server GL_SCANOUT_UNIX" },
939     { SPICE_MSG_DISPLAY_GL_DRAW, "Server GL_DRAW" },
940     { 0, NULL }
941 };
942 
943 enum {
944     SPICE_MSGC_DISPLAY_INIT = 101,
945     SPICE_MSGC_DISPLAY_STREAM_REPORT,
946     SPICE_MSGC_DISPLAY_PREFERRED_COMPRESSION,
947     SPICE_MSGC_DISPLAY_GL_DRAW_DONE,
948     SPICE_MSGC_DISPLAY_PREFERRED_VIDEO_CODEC_TYPE,
949 
950     SPICE_MSGC_END_DISPLAY
951 };
952 
953 static const value_string spice_msgc_display_vs[] =  {
954     { SPICE_MSGC_DISPLAY_INIT, "Client INIT" },
955     { SPICE_MSGC_DISPLAY_STREAM_REPORT, "Client STREAM_REPORT" },
956     { SPICE_MSGC_DISPLAY_PREFERRED_COMPRESSION, "Client PREFERRED_COMPRESSION" },
957     { SPICE_MSGC_DISPLAY_GL_DRAW_DONE, "Client GL_DRAW_DONE" },
958     { SPICE_MSGC_DISPLAY_PREFERRED_VIDEO_CODEC_TYPE, "Client PREFERRED_VIDEO_CODEC_TYPE" },
959     { 0, NULL }
960 };
961 
962 enum {
963     SPICE_MSG_INPUTS_INIT = 101,
964     SPICE_MSG_INPUTS_KEY_MODIFIERS,
965     SPICE_MSG_INPUTS_MOUSE_MOTION_ACK = 111,
966 
967     SPICE_MSG_END_INPUTS
968 };
969 
970 static const value_string spice_msg_inputs_vs[] =  {
971     { SPICE_MSG_INPUTS_INIT, "Server INIT" },
972     { SPICE_MSG_INPUTS_KEY_MODIFIERS, "Server KEY_MODIFIERS" },
973     { SPICE_MSG_INPUTS_MOUSE_MOTION_ACK, "Server MOUSE_MOTION_ACK" },
974     { 0, NULL }
975 };
976 
977 enum {
978     SPICE_MSGC_INPUTS_KEY_DOWN = 101,
979     SPICE_MSGC_INPUTS_KEY_UP,
980     SPICE_MSGC_INPUTS_KEY_MODIFIERS,
981     SPICE_MSGC_INPUTS_KEY_SCANCODE,
982     SPICE_MSGC_INPUTS_MOUSE_MOTION = 111,
983     SPICE_MSGC_INPUTS_MOUSE_POSITION,
984     SPICE_MSGC_INPUTS_MOUSE_PRESS,
985     SPICE_MSGC_INPUTS_MOUSE_RELEASE,
986 
987     SPICE_MSGC_END_INPUTS
988 };
989 
990 static const value_string spice_msgc_inputs_vs[] =  {
991     { SPICE_MSGC_INPUTS_KEY_DOWN, "Client KEY_DOWN" },
992     { SPICE_MSGC_INPUTS_KEY_UP, "Client KEY_UP" },
993     { SPICE_MSGC_INPUTS_KEY_MODIFIERS, "Client KEY_MODIFIERS" },
994     { SPICE_MSGC_INPUTS_KEY_SCANCODE, "Client KEY_SCANCODE" },
995     { SPICE_MSGC_INPUTS_MOUSE_MOTION, "Client MOUSE_MOTION" },
996     { SPICE_MSGC_INPUTS_MOUSE_POSITION, "Client MOUSE_POSITION" },
997     { SPICE_MSGC_INPUTS_MOUSE_PRESS, "Client MOUSE_PRESS" },
998     { SPICE_MSGC_INPUTS_MOUSE_RELEASE, "Client MOUSE_RELEASE" },
999     { 0, NULL }
1000 };
1001 
1002 enum {
1003     SPICE_MSG_CURSOR_INIT = 101,
1004     SPICE_MSG_CURSOR_RESET,
1005     SPICE_MSG_CURSOR_SET,
1006     SPICE_MSG_CURSOR_MOVE,
1007     SPICE_MSG_CURSOR_HIDE,
1008     SPICE_MSG_CURSOR_TRAIL,
1009     SPICE_MSG_CURSOR_INVAL_ONE,
1010     SPICE_MSG_CURSOR_INVAL_ALL,
1011 
1012     SPICE_MSG_END_CURSOR
1013 };
1014 
1015 static const value_string spice_msg_cursor_vs[] =  {
1016     { SPICE_MSG_CURSOR_INIT, "Server INIT" },
1017     { SPICE_MSG_CURSOR_RESET, "Server RESET" },
1018     { SPICE_MSG_CURSOR_SET, "Server SET" },
1019     { SPICE_MSG_CURSOR_MOVE, "Server MOVE" },
1020     { SPICE_MSG_CURSOR_HIDE, "Server HIDE" },
1021     { SPICE_MSG_CURSOR_TRAIL, "Server TRAIL" },
1022     { SPICE_MSG_CURSOR_INVAL_ONE, "Server INVAL_ONE" },
1023     { SPICE_MSG_CURSOR_INVAL_ALL, "Server INVAL_ALL" },
1024     { 0, NULL }
1025 };
1026 
1027 enum {
1028     SPICE_MSG_PLAYBACK_DATA = 101,
1029     SPICE_MSG_PLAYBACK_MODE,
1030     SPICE_MSG_PLAYBACK_START,
1031     SPICE_MSG_PLAYBACK_STOP,
1032     SPICE_MSG_PLAYBACK_VOLUME,
1033     SPICE_MSG_PLAYBACK_MUTE,
1034     SPICE_MSG_PLAYBACK_LATENCY,
1035 
1036     SPICE_MSG_END_PLAYBACK
1037 };
1038 
1039 static const value_string spice_msg_playback_vs[] =  {
1040     { SPICE_MSG_PLAYBACK_DATA, "Server DATA" },
1041     { SPICE_MSG_PLAYBACK_MODE, "Server MODE" },
1042     { SPICE_MSG_PLAYBACK_START, "Server START" },
1043     { SPICE_MSG_PLAYBACK_STOP, "Server STOP" },
1044     { SPICE_MSG_PLAYBACK_VOLUME, "Server VOLUME" },
1045     { SPICE_MSG_PLAYBACK_MUTE, "Server MUTE" },
1046     { SPICE_MSG_PLAYBACK_LATENCY, "Server LATENCY" },
1047     { 0, NULL }
1048 };
1049 
1050 enum {
1051     SPICE_MSG_RECORD_START = 101,
1052     SPICE_MSG_RECORD_STOP,
1053     SPICE_MSG_RECORD_VOLUME,
1054     SPICE_MSG_RECORD_MUTE,
1055 
1056     SPICE_MSG_END_RECORD
1057 };
1058 
1059 static const value_string spice_msg_record_vs[] =  {
1060     { SPICE_MSG_RECORD_START, "Server START" },
1061     { SPICE_MSG_RECORD_STOP, "Server STOP" },
1062     { SPICE_MSG_RECORD_VOLUME, "Server VOLUME" },
1063     { SPICE_MSG_RECORD_MUTE, "Server MUTE" },
1064     { 0, NULL }
1065 };
1066 
1067 enum {
1068     SPICE_MSGC_RECORD_DATA = 101,
1069     SPICE_MSGC_RECORD_MODE,
1070     SPICE_MSGC_RECORD_START_MARK,
1071 
1072     SPICE_MSGC_END_RECORD
1073 };
1074 
1075 static const value_string spice_msgc_record_vs[] =  {
1076     { SPICE_MSGC_RECORD_DATA, "Client DATA" },
1077     { SPICE_MSGC_RECORD_MODE, "Client MODE" },
1078     { SPICE_MSGC_RECORD_START_MARK, "Client START_MARK" },
1079     { 0, NULL }
1080 };
1081 
1082 enum {
1083     SPICE_MSG_TUNNEL_INIT = 101,
1084     SPICE_MSG_TUNNEL_SERVICE_IP_MAP,
1085     SPICE_MSG_TUNNEL_SOCKET_OPEN,
1086     SPICE_MSG_TUNNEL_SOCKET_FIN,
1087     SPICE_MSG_TUNNEL_SOCKET_CLOSE,
1088     SPICE_MSG_TUNNEL_SOCKET_DATA,
1089     SPICE_MSG_TUNNEL_SOCKET_CLOSED_ACK,
1090     SPICE_MSG_TUNNEL_SOCKET_TOKEN,
1091 
1092     SPICE_MSG_END_TUNNEL
1093 };
1094 
1095 static const value_string spice_msg_tunnel_vs[] =  {
1096     { SPICE_MSG_TUNNEL_INIT, "Server INIT" },
1097     { SPICE_MSG_TUNNEL_SERVICE_IP_MAP, "Server SERVICE_IP_MAP" },
1098     { SPICE_MSG_TUNNEL_SOCKET_OPEN, "Server SOCKET_OPEN" },
1099     { SPICE_MSG_TUNNEL_SOCKET_FIN, "Server SOCKET_FIN" },
1100     { SPICE_MSG_TUNNEL_SOCKET_CLOSE, "Server SOCKET_CLOSE" },
1101     { SPICE_MSG_TUNNEL_SOCKET_DATA, "Server SOCKET_DATA" },
1102     { SPICE_MSG_TUNNEL_SOCKET_CLOSED_ACK, "Server SOCKET_CLOSED_ACK" },
1103     { SPICE_MSG_TUNNEL_SOCKET_TOKEN, "Server SOCKET_TOKEN" },
1104     { 0, NULL }
1105 };
1106 
1107 enum {
1108     SPICE_MSGC_TUNNEL_SERVICE_ADD = 101,
1109     SPICE_MSGC_TUNNEL_SERVICE_REMOVE,
1110     SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK,
1111     SPICE_MSGC_TUNNEL_SOCKET_OPEN_NACK,
1112     SPICE_MSGC_TUNNEL_SOCKET_FIN,
1113     SPICE_MSGC_TUNNEL_SOCKET_CLOSED,
1114     SPICE_MSGC_TUNNEL_SOCKET_CLOSED_ACK,
1115     SPICE_MSGC_TUNNEL_SOCKET_DATA,
1116     SPICE_MSGC_TUNNEL_SOCKET_TOKEN,
1117 
1118     SPICE_MSGC_END_TUNNEL
1119 };
1120 
1121 static const value_string spice_msgc_tunnel_vs[] =  {
1122     { SPICE_MSGC_TUNNEL_SERVICE_ADD, "Client SERVICE_ADD" },
1123     { SPICE_MSGC_TUNNEL_SERVICE_REMOVE, "Client SERVICE_REMOVE" },
1124     { SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK, "Client SOCKET_OPEN_ACK" },
1125     { SPICE_MSGC_TUNNEL_SOCKET_OPEN_NACK, "Client SOCKET_OPEN_NACK" },
1126     { SPICE_MSGC_TUNNEL_SOCKET_FIN, "Client SOCKET_FIN" },
1127     { SPICE_MSGC_TUNNEL_SOCKET_CLOSED, "Client SOCKET_CLOSED" },
1128     { SPICE_MSGC_TUNNEL_SOCKET_CLOSED_ACK, "Client SOCKET_CLOSED_ACK" },
1129     { SPICE_MSGC_TUNNEL_SOCKET_DATA, "Client SOCKET_DATA" },
1130     { SPICE_MSGC_TUNNEL_SOCKET_TOKEN, "Client SOCKET_TOKEN" },
1131     { 0, NULL }
1132 };
1133 
1134 enum {
1135     SPICE_MSG_SMARTCARD_DATA = 101,
1136 
1137     SPICE_MSG_END_SMARTCARD
1138 };
1139 
1140 static const value_string spice_msg_smartcard_vs[] =  {
1141     { SPICE_MSG_SMARTCARD_DATA, "Server DATA" },
1142     { 0, NULL }
1143 };
1144 
1145 enum {
1146     SPICE_MSGC_SMARTCARD_HEADER = 101,
1147 
1148     SPICE_MSGC_END_SMARTCARD
1149 };
1150 
1151 static const value_string spice_msgc_smartcard_vs[] =  {
1152     { SPICE_MSGC_SMARTCARD_HEADER, "Client HEADER" },
1153     { 0, NULL }
1154 };
1155 
1156 enum {
1157     SPICE_MSG_SPICEVMC_DATA = 101,
1158     SPICE_MSG_SPICEVMC_COMPRESSED_DATA,
1159 
1160     SPICE_MSG_END_SPICEVMC
1161 };
1162 
1163 static const value_string spice_msg_spicevmc_vs[] =  {
1164     { SPICE_MSG_SPICEVMC_DATA, "Server DATA" },
1165     { SPICE_MSG_SPICEVMC_COMPRESSED_DATA, "Server COMPRESSED_DATA" },
1166     { 0, NULL }
1167 };
1168 
1169 enum {
1170     SPICE_MSGC_SPICEVMC_DATA = 101,
1171     SPICE_MSGC_SPICEVMC_COMPRESSED_DATA,
1172 
1173     SPICE_MSGC_END_SPICEVMC
1174 };
1175 
1176 static const value_string spice_msgc_spicevmc_vs[] =  {
1177     { SPICE_MSGC_SPICEVMC_DATA, "Client DATA" },
1178     { SPICE_MSGC_SPICEVMC_COMPRESSED_DATA, "Client COMPRESSED_DATA" },
1179     { 0, NULL }
1180 };
1181 
1182 enum {
1183     SPICE_MSG_PORT_INIT = 201,
1184     SPICE_MSG_PORT_EVENT,
1185 
1186     SPICE_MSG_END_PORT
1187 };
1188 
1189 static const value_string spice_msg_port_vs[] =  {
1190     { SPICE_MSG_PORT_INIT, "Server INIT" },
1191     { SPICE_MSG_PORT_EVENT, "Server EVENT" },
1192     { 0, NULL }
1193 };
1194 
1195 enum {
1196     SPICE_MSGC_PORT_EVENT = 201,
1197 
1198     SPICE_MSGC_END_PORT
1199 };
1200 
1201 static const value_string spice_msgc_port_vs[] =  {
1202     { SPICE_MSGC_PORT_EVENT, "Client EVENT" },
1203     { 0, NULL }
1204 };
1205 
1206 #endif /* _H_SPICE_ENUMS */
1207